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

我的Discord机器人无法响应任何命令,该如何排查?

Discord机器人仅on_ready生效,命令无响应且无报错

我之前开发过几个Discord机器人,一直运行正常,但某天其中一个突然停止响应。我写了一个极简测试机器人(代码如下),但除了on_ready能正常触发输出"Bot online."之外,所有命令(包括自带的help命令)都完全没反应,控制台也没有任何报错信息。

我已经在Discord开发者门户开启了message content意图,也尝试过调整门户设置和代码,都没用。另外之前用Ctrl+C关闭机器人时会出现"Runtime error: 事件循环已关闭"的提示,现在关闭时连这个报错都没有了。

测试代码:

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True
intents.members = True

client = commands.Bot(command_prefix = commands.when_mentioned_or('!'), 
description = 'The simplest and stupidest bot.', intents = intents)

@client.event
async def on_ready():
     print('Bot online.')

@client.command()
async def ping(ctx:commands.Context):
     await ctx.reply(f'My latency is {round(client.latency, 3)} ms.')

client.run('Token')

可能的解决步骤

1. 验证令牌有效性

  • 确认机器人令牌未过期、未被重置,可前往Discord开发者门户重新生成令牌,替换代码中的'Token'后重试。
  • 注意令牌需保密,不要直接暴露在公开代码中。

2. 检查服务器权限

  • 确保机器人在目标服务器拥有发送消息、读取消息内容、使用应用命令等核心权限,可临时分配管理员权限排查权限问题。
  • 确认机器人的角色位置高于其他限制权限的角色,避免权限被覆盖。

3. 再次核对意图配置

  • 重新检查开发者门户Privileged Gateway Intents下的Message Content Intent是否处于启用状态,并确认设置已保存。
  • 确保代码中intents.message_content = True未被注释或误写,门户设置与代码配置完全匹配。

4. 排查命令触发逻辑

  • 测试时严格使用!ping或@机器人+ping的格式触发命令,避免漏写前缀。
  • 可临时将前缀改为单一的'!',排除when_mentioned_or的逻辑冲突。

5. 测试消息接收能力

  • 添加on_message事件验证机器人是否能接收消息,注意自定义该事件时必须调用process_commands才能触发命令:
@client.event
async def on_message(message):
    print(f"Received message: {message.content}")
    await client.process_commands(message)

如果on_message无输出,说明机器人未接收到消息,大概率是意图或权限问题;如果有输出但命令无响应,就是未调用process_commands导致的。

6. 确认Discord API状态

  • 排查是否存在Discord官方API服务波动,部分区域的API故障会导致机器人无法正常接收事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:54:22