Discord机器人此前可响应命令,现无响应问题排查求助
解决Discord机器人无法响应消息命令的问题
核心原因:消息内容权限未开启
你的机器人采用的是基于on_message事件的关键词触发逻辑,但Discord从2022年4月起默认关闭了消息内容意图(Message Content Intent)。如果未手动开启该权限,机器人将无法读取服务器内的消息内容,自然无法触发命令响应。
修复步骤
- 打开Discord开发者门户,进入你的机器人应用页面
- 切换到「Bot」标签页,找到「Privileged Gateway Intents」区域
- 开启「Message Content Intent」选项并保存更改
- 重新生成邀请链接(需包含
SendMessages、ReadMessageHistory等基础文本权限),将机器人重新邀请至服务器
关于邀请权限显示的说明
你看到的“允许开发者:在你的服务器中创建命令”是针对Slash命令(/开头的命令)的权限,和你当前基于消息关键词的机器人逻辑无关。那个正常运行的旧机器人因为创建时间较早,当时Discord尚未强制要求开启消息内容意图,所以能正常工作。
代码调整提示
开启消息内容意图后,需要在初始化Client时传入对应配置,同时可删除冗余代码:
import discord import os from keep_alive import keep_alive # 配置消息内容意图 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('We have logged in as {0.user}'.format(client)) @client.event async def on_message(message): if message.author == client.user: return if "p.h" in message.content: await message.channel.send('Hello!') keep_alive() client.run(os.getenv('TOKEN'))
内容的提问来源于stack exchange,提问作者Carnelian
相关产品推荐
相关产品推荐

