使用指令
在BotRoute
中注册
和事件响应
中的handler
一样,我们也需要将指令
,通过BotRoute
注册之后,才能跑起来
配置和handler
类似
@as_command()
class MyCommand:
pass
bot.apply_routes([
BotRoute(
friends=None,
groups={
"onebot": ["123456"]
},
handlers=[],
commands = [MyCommand],
)
])
通过装饰器形式定义指令
@as_command()
class MyCommand:
pass
手动“调用”装饰器,将同一个class
注册为多个指令
当我们从社区获取指令时,有时,指令的作者并没有对指令应用as_command,而是将这一步讲给了我们来实现
这样,我们就能通过配置as_command
的参数,来实现不同的效果
我们已经可以获取到指令的class
,但是似乎没有办法在这个class
上使用装饰器了,因为这个class
定义好了
这时候,我们就可以手动调用as_command
,来将这个class
注册为指令
因为as_command
装饰器的本质,就是一个函数,这个函数,会返回第二个函数,这个第二个函数,接受一个class
,将其注册为指令
所以
@as_command()
class MyCommand:
pass
等价于
as_command()(MyCommand)
因为我们之后要将注册完成的class
,再应用到BotRoute
中,所以,我们可以将这个class
,赋值给一个变量
my_command = as_command()(MyCommand)
bot.apply_routes([
BotRoute(
friends=None,
groups={
"onebot": ["123456"]
},
handlers=[],
commands = [my_command],
)
])