You need to enable JavaScript to run this app. selfbot中message.content或ctx.content无法正常运行问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

selfbot中message.content或ctx.content无法正常运行问题咨询

故障诱因
  • 核心原因是Discord API v10及更高版本默认关闭消息内容访问权限,未显式配置message_content权限的情况下,所有消息的content字段都会返回空字符串,普通机器人和用户SelfBot都会触发该限制。
  • 代码存在潜在逻辑问题:channel变量仅在获取到指定ID的服务器时才会被赋值,若代码运行环境不在目标服务器中,channel未定义会直接抛出运行错误,也可能间接导致消息内容读取相关逻辑执行异常。
  • 变量名使用不规范:on_message事件的默认接收参数为消息对象message,ctx通常为命令框架的上下文对象,虽然变量名本身不影响属性取值,但如果同时使用discord.py的命令扩展功能,可能出现对象混淆导致属性读取失败。
修复方案
  • 第一步:版本适配与权限开启
    1. 若使用discord.py v1.x及更低版本,先升级到v2.0及以上版本,升级命令:pip install -U discord.py
    2. 普通机器人前往Discord开发者后台,在对应应用的「Bot」设置页打开「Message Content Intent」开关;SelfBot无需后台操作,直接在代码中配置intents即可。
    3. 初始化Client时显式声明启用message_content权限,参考代码:
    import discord
    intents = discord.Intents.default()
    intents.message_content = True
    intents.guilds = True
    intents.messages = True
    
    client = discord.Client(intents=intents)
    
  • 第二步:修正事件代码逻辑缺陷,补全非空判断,规范变量命名,修正后的代码如下:
@client.event
async def on_message(message):
    if message.author == client.user:
        return
    # 提前校验目标服务器和频道是否存在,避免运行报错
    target_guild = client.get_guild(544102306740699136)
    target_channel = client.get_channel(875779623638663192)
    if not target_guild or not target_channel:
        return
  
    await target_channel.send(f"{message.author.mention} just send message in channel {message.channel.mention}: {message.content}")
  • 补充提示:SelfBot属于Discord官方明确禁止的使用方式,持续使用存在账号被永久封禁的风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:18:03