You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我开发的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:54:03