You need to enable JavaScript to run this app. Discord机器人运行触发AttributeError: 'NoneType'无'send'属性故障排查求助
优惠活动
大模型
产品
解决方案
定价
更多

Discord机器人运行触发AttributeError: 'NoneType'无'send'属性故障排查求助

故障根因定位
  • 触发AttributeError的直接原因:client.get_channel() 方法必须传入目标频道的整数ID作为入参,当前代码调用时括号内为空,方法会直接返回None,后续对None类型对象执行.send()操作就会抛出对应异常
  • 导致消息无法推送的连带问题:代码中client.run('')未填入Discord开发者平台申请的机器人真实访问Token,机器人无法正常连接Discord服务完成身份校验
  • 潜在兼容问题:使用discord.py 2.0及以上版本时,未显式声明所需网关意图,会导致机器人启动后无法拉取完整的服务器频道缓存,即便填入正确的频道ID,也可能出现get_channel()返回None的情况
修正后可正常运行的核心代码
import discord

# 适配2.0+版本,显式声明默认网关意图
intents = discord.Intents.default()
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    # 替换为目标频道的真实整数ID,可通过Discord开发者模式右键频道复制获取
    target_channel_id = 0000000000000000000
    general_channel = client.get_channel(target_channel_id)
    
    # 增加空值判断,避免触发无意义异常
    if not general_channel:
        print("未成功获取目标频道,请检查频道ID、机器人所在权限是否匹配")
        return
    
    await general_channel.send('yo')

# 替换为个人申请的机器人真实Token
client.run('你的机器人访问Token')
调试注意事项
  • 开启Discord客户端的开发者模式后,可通过右键目标频道直接复制对应频道的整数ID,无需手动计算
  • 确保邀请机器人加入服务器时,勾选了「发送消息」的权限,且机器人在服务器中的角色权限覆盖目标频道的访问限制
  • 不要将真实的机器人Token硬编码提交到公开代码仓库,避免身份被冒用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 08:24:08