Discord Bot仅响应私信不响应服务器问题排查求助
Discord Bot服务器内指令失效问题排查与修复
问题根源
你的Bot在服务器内无法响应指令,核心原因是未开启Message Content Intent。Discord从v2.0版本开始,要求显式声明该权限才能读取服务器内的消息内容,而默认的discord.Intents.default()并不包含这个权限。私聊能正常工作是因为私聊场景下权限限制更宽松,但严格来说也需要该Intent支持。
修复步骤
1. 在Discord开发者门户开启权限
- 登录Discord开发者门户,进入你的Bot应用
- 切换到「Bot」标签页,找到「Privileged Gateway Intents」区域
- 开启「Message Content Intent」开关
2. 修改代码中的Intents配置
将Bot.py里的客户端初始化代码修改为:
intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents)
3. 检查服务器内Bot权限
确保你的Bot在目标服务器中拥有以下基础权限:
- 查看频道
- 发送消息
- 读取消息历史
完整修正后的Bot.py代码示例
import discord import responses async def send_message(message, user_message, is_private): try: response = responses.handle_respsonse(user_message) await message.author.send(response) if is_private else await message.channel.send(response) except Exception as e: print(e) def run_discord_bot(): TOKEN = "你的Discord Bot Token" # 替换为实际Token intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print(f'{client.user} is now running!') @client.event async def on_message(message): if message.author == client.user: return username = str(message.author) user_message = str(message.content) channel = str(message.channel) print(f'{username} said: {user_message} ({channel})') if user_message.startswith('?'): user_message = user_message[1:] await send_message(message, user_message, is_private=True) else: await send_message(message, user_message, is_private=False) client.run(TOKEN)
内容的提问来源于stack exchange,提问作者Fran_CS
相关产品推荐
相关产品推荐

