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

Discord.py Cog代码报错NoneType object has no attribute 'send'如何解决

错误原因及修复方案

错误原因

  • 你在Cog文件的全局作用域额外实例化了一个discord.Client()对象,该对象从未启动登录、没有和Discord服务器建立连接,也没有任何频道缓存,使用它调用get_channel()无法获取到对应频道,返回值为None,调用None.send()就触发了NoneType object has no attribute 'send'报错。
  • 你在Cog的__init__方法中已经将主文件传入的、正常运行的client实例存储为self.bot,但实际获取频道时没有使用这个有效实例,反而调用了全局的无效实例。

修复步骤

  1. 删除Cog文件中全局声明的client = discord.Client()行,该声明完全冗余,Cog不需要单独实例化客户端。
  2. 将on_message_delete监听器中获取频道的代码替换为使用self.bot实例:
    修改前:
channel = client.get_channel(888600482317213786)

修改后:

channel = self.bot.get_channel(888600482317213786)

额外优化建议

可以增加频道存在性判断,避免频道ID错误、bot无频道访问权限时出现同类报错:

channel = self.bot.get_channel(888600482317213786)
if channel is not None:
    deleted.add_field(name="Message", value=message.content)
    deleted.timestamp = message.created_at
    await channel.send(embed=deleted)

内容的提问来源于stack exchange,提问作者lancetabler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:27:02