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

Python开发的Discord Bot无法读取消息问题求助

Discord Bot无法读取消息内容的解决方案

问题说明

  • Bot可正常启动并加入服务器,能触发on_message事件,但无法读取消息内容,日志仅输出Received message:,无具体消息文本
  • 已尝试赋予管理员权限、重新添加机器人,问题未得到解决
  • 原实现代码:
import discord
import os

intents = discord.Intents.default()
intents.members = True
intents.presences = 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):
  print('Received message:', message.content)
  if message.author == client.user:
    print('cancelled message')
    return
  
  if message.content.startswith('hello'):
    print('sent message')
    await message.channel.send('pls work')

client.run(MY_TOKEN)

问题根源

Discord API v9及后续版本中,消息内容(Message Content)权限默认处于禁用状态。原代码未启用message_content这一intent,同时未在开发者后台开启对应权限,导致Bot无法读取消息内容。

修复步骤

1. 更新代码中的Intent配置

在代码中添加intents.message_content = True,启用消息内容读取权限:

import discord
import os

intents = discord.Intents.default()
intents.members = True
intents.presences = True
# 新增:启用消息内容读取权限
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):
  print('Received message:', message.content)
  if message.author == client.user:
    print('cancelled message')
    return
  
  if message.content.startswith('hello'):
    print('sent message')
    await message.channel.send('pls work')

client.run(MY_TOKEN)

2. 在Discord开发者后台开启消息内容权限

  • 登录Discord开发者后台,进入你的Bot应用页面
  • 切换到Bot标签页
  • 在Privileged Gateway Intents区域,找到Message Content Intent并开启对应开关
  • 保存设置后,重新启动Bot

完成以上操作后,Bot即可正常读取消息内容,触发对应回复逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:32:12