跳到主要内容

使用指令

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],
)
])