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

Discord bot无法识别用户消息 新手开发消息触发回复功能故障求助

问题排查与修复
  • 事件函数拼写错误:你定义的消息处理函数名为on_messsage,比正确的事件名on_message多了一个s,导致Discord事件触发时无法调用到你的处理逻辑,这是最直接的不响应原因。
  • 缺少消息内容意图配置:discord.py v1.5及以上版本强制要求显式声明消息内容意图,你需要同时在代码和Discord开发者后台开启该权限,否则无法读取用户发送的消息文本。
  • 触发词匹配不匹配需求:你预期用户发hi就触发问候,但当前代码仅匹配了hello,所以发送hi不会触发对应回复。
修复后代码
import os
import discord

# 显式声明并开启消息内容意图
intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
  print("We are {0.user} and we are on a cruise".format(client))

# 修正函数名拼写
@client.event
async def on_message(message):
  username = str(message.author).split('#')[0]
  user_message = str(message.content)
  channel = str(message.channel.name)
  print(f'{username}: {user_message} ({channel})')

  if message.author == client.user:
    return
  
  if channel == 'general':
     # 新增hi的匹配规则
     if user_message.lower() in ['hello', 'hi']:
      await message.channel.send(f'Hello {username}')
      return
     elif user_message.lower() == 'bye':
      await message.channel.send(f'Bye {username}')
      return

client.run(os.environ['taisho-secret'])
操作校验项
  • 登录Discord开发者平台,进入对应机器人的设置页,在「Privileged Gateway Intents」分类下开启Message Content Intent开关
  • 确认你测试消息的频道名称确实为general,若频道名不同可修改代码中的匹配规则

内容的提问来源于stack exchange,提问作者Meteo Serpent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:27:04