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

使用discord.py开发斜杠命令时应用无响应但仍输出结果

问题原因与解决方案

核心问题

Discord的斜杠命令有3秒响应超时限制,你的代码仅通过ctx.channel.send()发送消息,没有向Discord平台发送命令已被接收/处理的响应信号,导致客户端判定“应用无响应”,但机器人实际能正常发送消息(只是跳过了Discord要求的斜杠命令响应流程)。

解决方法

斜杠命令必须使用Discord指定的响应方法来完成流程,有两种常用方式:

方式1:直接发送响应消息(适合快速完成的命令)

用ctx.response.send_message()替代ctx.channel.send(),这是斜杠命令的标准响应方式,会同时完成平台的响应确认和消息发送:

@bot.tree.command(name="ping", description="Check bot's latency.")
async def ping(ctx):
    await ctx.response.send_message(f"``Pong! {round(bot.latency * 1000)}ms``  📡")

方式2:先延迟响应再发送结果(适合需要耗时操作的命令)

如果命令处理时间可能超过3秒,先调用defer()告知Discord“正在处理”,避免超时提示,之后用followup.send()发送最终结果:

@bot.tree.command(name="ping", description="Check bot's latency.")
async def ping(ctx):
    # 发送延迟响应,阻止超时提示
    await ctx.response.defer()
    # 这里可以添加耗时操作(比如数据查询、计算等)
    latency = round(bot.latency * 1000)
    # 发送后续结果消息
    await ctx.followup.send(f"``Pong! {latency}ms``  📡")

为什么原代码会出现异常?

ctx.channel.send()只是普通的频道消息发送方法,不属于Discord斜杠命令的响应流程范畴。Discord没收到命令处理的确认信号,就会在客户端显示“应用无响应”,但机器人的消息仍能正常发送到频道中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:15:28