机器人对sendmessage命令无响应,替换为message_handler后报错如何解决?
修复机器人sendmessage命令无响应及后续错误的方法
原命令无响应的问题修复
原代码存在两个关键错误:
@bot.command(command=['sendmessage'])参数使用错误:discord.py 中command装饰器指定命令名需用name参数,而非commandawait channel.send(str)调用错误:这里的str是Python内置类型,应该使用函数接收的message变量
修正后的代码:
@bot.command(name='sendmessage') async def sendmessage(ctx, *, message: str): channel = ctx.message.channel await channel.send(message)
注:参数里加*是为了让机器人能接收带空格的完整消息,否则只能读取输入的第一个单词
替换message_handler后报错的原因
换成message_handler后出现TypeError: 'NoneType' object is not callable,主要是因为:
- 可能未正确导入
message_handler装饰器(比如用错库、导入语句有误) message_handler和command的定位完全不同:前者是用来匹配消息内容的工具,不是定义命令的方式,硬替换必然出错。如果只是实现命令功能,用command装饰器就足够,没必要切换。
内容的提问来源于stack exchange,提问作者RainWon
相关产品推荐
相关产品推荐

