You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

机器人对sendmessage命令无响应,替换为message_handler后报错如何解决?

修复机器人sendmessage命令无响应及后续错误的方法

原命令无响应的问题修复

原代码存在两个关键错误:

  • @bot.command(command=['sendmessage']) 参数使用错误:discord.py 中command装饰器指定命令名需用name参数,而非command
  • await 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:45:33