Discord.py 2.2.2版本Bot仅被提及才响应问题求助
问题解决方案
核心原因
Discord.py 2.0+版本对消息相关的意图做了拆分,原有的messages=True参数已被弃用,需要显式启用**message_content特权意图**才能接收普通消息内容。你当前的代码只开启了messages和guilds意图,缺少关键的message_content,导致bot无法获取普通消息的内容,仅能在被@或回复时触发响应。
具体修复步骤
1. 修改代码中的意图设置
将原有的客户端初始化代码:
client = discord.Client(intents=discord.Intents(messages=True, guilds=True))
替换为以下两种方式之一:
方式一(推荐,使用默认意图+开启消息内容):
# 初始化默认意图,再开启message_content intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents)
方式二(直接指定所需意图):
client = discord.Client(intents=intents=discord.Intents(guilds=True, message_content=True))
2. 确认Discord开发者门户的权限设置
即使代码中开启了意图,还需要在Discord开发者门户中启用对应的特权意图:
- 登录Discord开发者门户,进入你的Bot应用页面
- 切换到Bot选项卡
- 向下滚动到Privileged Gateway Intents区域
- 确保Message Content Intent选项处于开启状态,点击页面底部的"Save Changes"保存设置。
额外代码修复提示
你的代码中custchannel = client.get_channel('CHANNEL ID HERE')存在问题,get_channel需要传入整数类型的频道ID,而非字符串,应修改为:
custchannel = client.get_channel(123456789012345678) # 替换为实际的数字频道ID
内容的提问来源于stack exchange,提问作者fuzzyexoskills
相关产品推荐
相关产品推荐

