Discord.Py机器人能接收消息但无响应问题求助
问题分析与解决方案
你的机器人能接收消息但无法响应,核心问题有两个:
1. 未启用message_content意图
Discord.py v2.0及以上版本中,Intents.default()默认不包含读取消息内容的权限,必须显式开启该意图,同时还要在Discord开发者后台开启对应权限。
代码修改:
在定义intents的代码块中添加一行:
intents.message_content = True
开发者后台操作:
进入你的机器人应用页面,切换到「Bot」标签页,找到「Privileged Gateway Intents」区域,开启「Message Content Intent」后保存更改。
2. client.close()的异步调用问题
client.close()是异步方法,必须用await修饰调用,否则会触发运行时错误。
修改后的完整代码
import discord import os from discord.ext import commands 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): content = message.content user = message.author if user == client.user: return print("Received a message:", content) if content.strip() == "$hello": await message.channel.send("Hi!") if content.strip() == "$die": await message.channel.send("No you") await client.close() # 异步调用关闭方法 client.run(os.environ['Token'])
完成上述修改后,重新启动机器人即可正常响应消息。
内容的提问来源于stack exchange,提问作者TheCentry
相关产品推荐
相关产品推荐

