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

Discord.py Echo命令无响应且无报错,寻求修复帮助

修复你的Discord.py Self-Bot Echo命令

我帮你排查了代码里的几个关键问题,这些应该就是导致echo命令既无响应也不报错的原因,下面逐一拆解并给出修复方案:

1. 未正确注册on_ready事件

你的on_ready函数缺少@client.event装饰器,Discord.py无法识别这个事件处理逻辑,会导致机器人无法完成初始化流程(比如移除默认help命令、设置在线状态),甚至间接影响命令的加载。

修复方法:给on_ready加上事件装饰器,同时添加日志输出确认机器人状态:

@client.event
async def on_ready():
    client.remove_command('help')
    await client.change_presence(status=discord.Status.online, activity=discord.Game("TEST"))
    print(f"成功登录为 {client.user}")  # 控制台输出确认机器人已上线

2. 命令逻辑的健壮性优化

虽然你的echo命令逻辑框架没问题,但可以添加错误捕获机制,避免无响应的“静默失败”,同时确认ID检查的准确性:

  • 确保你填写的作者ID是自己的Discord用户ID(不是机器人ID)
  • 添加异常捕获,把错误信息打印到控制台或发送给自己,方便排查

优化后的echo命令:

@client.command()
async def echo(ctx, *, content):
    try:
        # 替换为你自己的用户ID
        if ctx.author.id == 782258096210051102:
            await ctx.send(content)
            await ctx.message.delete()
        else:
            await ctx.send("仅Bot开发者可使用 :<")
    except Exception as e:
        print(f"Echo命令出错:{str(e)}")
        # 可选:给自己发私信通知错误
        await ctx.author.send(f"Echo命令执行失败:{str(e)}")

3. Self-Bot的重要提醒

⚠️ 注意:Discord官方服务条款明确禁止使用Self-Bot(用个人用户令牌登录的机器人),一旦被检测到,可能会导致你的Discord账号被封禁。如果是开发测试,建议使用正规的机器人账号(将client.run里的bot=False改为bot=True)。

完整修复后的代码

import discord, os, keep_alive, asyncio, datetime, pytz, requests
from discord.ext import tasks, commands

client = commands.Bot(command_prefix=':', self_bot=True)

@client.event
async def on_ready():
    client.remove_command('help')
    await client.change_presence(status=discord.Status.online, activity=discord.Game("TEST"))
    print(f"成功登录为 {client.user}")

@client.command()
async def echo(ctx, *, content):
    try:
        if ctx.author.id == 782258096210051102:
            await ctx.send(content)
            await ctx.message.delete()
        else:
            await ctx.send("仅Bot开发者可使用 :<")
    except Exception as e:
        print(f"Echo命令出错:{str(e)}")
        await ctx.author.send(f"Echo命令执行失败:{str(e)}")

keep_alive.keep_alive()
client.run(os.getenv("TOKEN"), bot=False)

额外排查步骤

如果修复后仍无响应,可以按以下步骤排查:

  • 确认环境变量TOKEN已正确设置,且是有效的个人用户令牌
  • 查看控制台是否有成功登录为...的输出,确认机器人已正常上线
  • 发送命令时确保使用了正确的前缀:(比如输入:echo 测试内容)
  • 检查发送命令的频道是否允许你发送消息(即使是Self-Bot,频道权限也可能限制操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:24:23