Python开发的Discord Bot无法读取消息问题求助
Discord Bot无法读取消息内容的解决方案
问题说明
- Bot可正常启动并加入服务器,能触发
on_message事件,但无法读取消息内容,日志仅输出Received message:,无具体消息文本 - 已尝试赋予管理员权限、重新添加机器人,问题未得到解决
- 原实现代码:
import discord import os intents = discord.Intents.default() intents.members = True intents.presences = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('Logged in as {0.user}'.format(client)) @client.event async def on_message(message): print('Received message:', message.content) if message.author == client.user: print('cancelled message') return if message.content.startswith('hello'): print('sent message') await message.channel.send('pls work') client.run(MY_TOKEN)
问题根源
Discord API v9及后续版本中,消息内容(Message Content)权限默认处于禁用状态。原代码未启用message_content这一intent,同时未在开发者后台开启对应权限,导致Bot无法读取消息内容。
修复步骤
1. 更新代码中的Intent配置
在代码中添加intents.message_content = True,启用消息内容读取权限:
import discord import os intents = discord.Intents.default() intents.members = True intents.presences = True # 新增:启用消息内容读取权限 intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('Logged in as {0.user}'.format(client)) @client.event async def on_message(message): print('Received message:', message.content) if message.author == client.user: print('cancelled message') return if message.content.startswith('hello'): print('sent message') await message.channel.send('pls work') client.run(MY_TOKEN)
2. 在Discord开发者后台开启消息内容权限
- 登录Discord开发者后台,进入你的Bot应用页面
- 切换到Bot标签页
- 在Privileged Gateway Intents区域,找到Message Content Intent并开启对应开关
- 保存设置后,重新启动Bot
完成以上操作后,Bot即可正常读取消息内容,触发对应回复逻辑。
内容的提问来源于stack exchange,提问作者cur
相关产品推荐
相关产品推荐

