discord.py获取消息content始终为空,跨设备运行无报错求助
解决discord.py中message.content始终为空的问题
核心原因
你的代码使用discord.Intents.default()初始化权限,但Discord API v9及之后,消息内容权限(Message Content Intent)不再包含在默认权限组内,必须显式启用。跨设备运行异常的本质是两台设备的discord.py版本不一致:笔记本可能是v1.x旧版本,对Intents要求宽松;当前PC是v2.0+版本,严格遵循新的权限规则,无报错是因为权限缺失属于合法状态,不会触发异常。
解决方案
1. 在Discord开发者平台开启权限
- 登录Discord开发者平台,进入你的机器人应用页面
- 切换到「Bot」标签页
- 在「Privileged Gateway Intents」区域,开启「Message Content Intent」
2. 修改代码中的Intents配置
更新代码,显式启用消息内容权限,同时建议添加机器人自消息过滤(避免处理自身发送的消息):
import nest_asyncio nest_asyncio.apply() import discord TOKEN = "TOKEN" # 初始化Intents,启用消息内容权限 intents = discord.Intents.default() 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): # 跳过机器人自身的消息 if message.author == client.user: return username = str(message.author).split("#")[0] user_message = message.content channel = str(message.channel.name) print(f"{username}: {user_message} ({channel})") client.run(TOKEN)
3. 统一设备间的discord.py版本
运行以下命令确保当前PC的discord.py为最新版本:
pip install --upgrade discord.py
内容的提问来源于stack exchange,提问作者Ghoast
相关产品推荐
相关产品推荐

