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

Discord Bot仅响应私信不响应服务器问题排查求助

Discord Bot服务器内指令失效问题排查与修复

问题根源

你的Bot在服务器内无法响应指令,核心原因是未开启Message Content Intent。Discord从v2.0版本开始,要求显式声明该权限才能读取服务器内的消息内容,而默认的discord.Intents.default()并不包含这个权限。私聊能正常工作是因为私聊场景下权限限制更宽松,但严格来说也需要该Intent支持。

修复步骤

1. 在Discord开发者门户开启权限

  • 登录Discord开发者门户,进入你的Bot应用
  • 切换到「Bot」标签页,找到「Privileged Gateway Intents」区域
  • 开启「Message Content Intent」开关

2. 修改代码中的Intents配置

将Bot.py里的客户端初始化代码修改为:

intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

3. 检查服务器内Bot权限

确保你的Bot在目标服务器中拥有以下基础权限:

  • 查看频道
  • 发送消息
  • 读取消息历史

完整修正后的Bot.py代码示例

import discord
import responses

async def send_message(message, user_message, is_private):
    try:
        response = responses.handle_respsonse(user_message)
        await message.author.send(response) if is_private else await message.channel.send(response)
    except Exception as e:
        print(e)

def run_discord_bot():
    TOKEN = "你的Discord Bot Token"  # 替换为实际Token
    intents = discord.Intents.default()
    intents.message_content = True
    client = discord.Client(intents=intents)

    @client.event
    async def on_ready():
        print(f'{client.user} is now running!')

    @client.event
    async def on_message(message):
        if message.author == client.user:
            return

        username = str(message.author)
        user_message = str(message.content)
        channel = str(message.channel)

        print(f'{username} said: {user_message} ({channel})')

        if user_message.startswith('?'):
            user_message = user_message[1:]
            await send_message(message, user_message, is_private=True)
        else:
            await send_message(message, user_message, is_private=False)

    client.run(TOKEN)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:15:52