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

discord.py self-bot仅回复自身消息 无法响应其他账号消息问题

问题根因
  • 初始化bot实例时未正确配置intents权限,默认配置下selfbot仅能捕获自身账号触发的事件,无法接收频道内其他账号发送的消息,这是其他账号发消息无响应的核心原因。
  • 代码存在冗余逻辑:每次触发事件都硬编码调用bot.get_channel()获取频道对象,既没必要,还可能因为缓存问题取不到正确的频道实例。
  • 缺少防循环判断:如果不做过滤,selfbot发送的"hi!"也会触发on_message事件,极易造成无限发消息的循环。
  • 额外提示:Discord官方服务条款明确禁止使用selfbot,使用过程中存在账号被封禁的风险。
修复步骤
  1. 先配置正确的intents再初始化bot,注意跑selfbot请使用专门适配selfbot的衍生库(如discord.py-self),原版官方discord.py对selfbot做了使用限制,会出现功能异常。初始化代码参考:
import discord
# 适配selfbot的衍生库导入写法和官方discord.py一致
intents = discord.Intents.default()
intents.message_content = True # 开启消息内容读取权限
intents.guild_messages = True # 开启服务器公共频道消息接收权限
# 初始化bot时传入配置好的intents
bot = discord.Client(intents=intents)
# 如果使用commands.Bot扩展,初始化时同样传入intents参数即可
  1. 修正on_message事件的处理逻辑,修复后代码如下:
@bot.event
async def on_message(message):
    # 过滤自身发送的消息,避免无限回复循环
    if message.author == bot.user:
        return
    # 匹配消息内容
    if message.content == "hello":
        # 直接使用消息所属的频道对象发送回复,不需要硬编码查询频道
        await message.channel.send("hi!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:09:19