求助:无法获取Discord中机器人发送的消息内容
无法捕获其他Discord机器人发送的消息内容排查方案
排查点1:确认消息类型是否为普通文本
如果其他机器人发送的是嵌入消息(Embed)、附件或仅含表情的消息,message.content会返回空字符串。你可以修改代码打印更多字段验证:
@bot.event async def on_message(message): print(f"发送者ID: {message.author.id}, 是否为机器人: {message.author.bot}") print(f"消息内容: {message.content}") print(f"是否包含嵌入: {len(message.embeds) > 0}") print(f"是否包含附件: {len(message.attachments) > 0}") # 使用commands.Bot时必须添加此行,否则命令无法正常触发 await bot.process_commands(message)
排查点2:确认Discord开发者门户的Intents完全启用
即使代码中配置了Intents,仍需在Discord开发者门户对应机器人的Bot页面,确保Privileged Gateway Intents区域的以下开关全部启用:
- Server Members Intent
- Message Content Intent
排查点3:检查机器人的频道权限
确保你的机器人在目标频道拥有以下核心权限:
- 查看频道(View Channel)
- 读取消息历史(Read Message History)
排查点4:优化代码中的Intents冗余设置
你当前代码里intents = discord.Intents.all()已经包含所有权限,后续单独设置intents.members = True和intents.message_content = True属于冗余操作,可简化为:
intents = discord.Intents.default() intents.members = True intents.message_content = True
内容的提问来源于stack exchange,提问作者mrkoloev
相关产品推荐
相关产品推荐

