为什么我开发的Discord Bot无法回复我在Discord中发送的消息?
问题原因
- 第一个错误是消息处理事件命名错误:你定义的函数名是
in_message,但discord.py的标准消息接收事件回调名为on_message,命名不匹配会导致该函数永远不会被触发,自然不会回复消息。 - 第二个错误是格式化字符串缺少
f前缀:你回复消息的语句中使用了占位符{message.author.mention},但字符串前没有加f标识,就算触发回复也只会输出原始占位符内容,不会正常解析为用户提及。 - 如果你使用的是discord.py 2.0及以上版本,还存在权限配置问题:Discord官方要求必须手动开启消息内容意图才能读取用户发送的普通消息内容,需要同时在Discord开发者后台和代码中开启对应的权限。
修正后的完整代码
import discord import os # 声明并开启消息内容读取意图 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('Online as {0.user}'.format(client)) # 修正为正确的事件回调名 @client.event async def on_message(message): if message.author == client.user: return if message.content.startswith('Hello'): # 字符串前加f前缀启用变量插值 await message.channel.send(f'Hello! {message.author.mention}') client.run(os.getenv('TOKEN'))
补充配置说明
如果是v2.x版本,还需要先进入Discord Developer Portal对应应用的「Bot」设置页面,手动打开Message Content Intent的开关,否则代码依然无法读取消息内容。
内容的提问来源于stack exchange,提问作者EkteFrokostNam
相关产品推荐
相关产品推荐

