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

Python版Discord机器人无法在服务器内响应问题排查

问题分析与解决方案

你的机器人无法在服务器内响应指令,核心原因有两个:意图权限配置不全,以及Token格式错误。

1. 修复Discord开发者门户的特权意图设置

Discord从v8版本开始,读取消息内容需要显式开启特权意图:

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

2. 修正代码中的Intents配置

当前代码只开启了guilds意图,缺少读取消息所需的权限,修改Intents部分:

intents = discord.Intents.default()
intents.guilds = True
intents.messages = True
intents.message_content = True  # 关键:开启消息内容读取权限(discord.py v2.x 必需)

3. 修复Token格式错误

你的client.run中的Token包含多余换行,会导致认证失败,确保Token是完整的一行字符串,无空格或换行:

client.run('你的完整机器人Token')

优化后的完整代码

import discord
import logging

intents = discord.Intents.default()
intents.guilds = True
intents.messages = True
intents.message_content = True

client = discord.Client(intents=intents)

# 日志配置
logging.basicConfig(filename='bot.log', level=logging.INFO,
                    format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

@client.event
async def on_ready():
    logging.info('Bot is ready.')
    print('Bot is ready.')

@client.event
async def on_message(message):
    # 忽略机器人自身发送的消息,避免循环
    if message.author.bot:
        return
    if message.content == '!hello':
        await message.channel.send('Hello!')
        logging.info(f'"{message.author}" sent "!hello" in "{message.channel}"')
        print(f'"{message.author}" sent "!hello" in "{message.channel}"')

client.run('你的完整机器人Token')

额外建议

如果后续要扩展更多指令,推荐使用discord.ext.commands.Bot框架,它提供了更便捷的指令注册方式,示例片段:

from discord.ext import commands

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command()
async def hello(ctx):
    await ctx.send('Hello!')
    logging.info(f'"{ctx.author}" used "!hello" in "{ctx.channel}"')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:15:10