Discord机器人执行斜杠命令后显示“应用未响应”问题求助
问题原因及解决办法
你的核心问题是没有完成Discord斜杠命令的交互响应流程:Discord要求斜杠命令必须通过特定方法告知平台“命令已处理完成”,你现在只调用了ctx.channel.send()发送消息,但这个操作不会标记命令交互完成,平台超时后就会显示“应用未响应”,哪怕机器人已经发了消息。
两种可行的解决方式
方式1:直接回复命令发起者(推荐)
用ctx.response.send_message()替代ctx.channel.send(),这个方法会同时完成交互确认和消息发送,直接在命令下方显示回复:
@tree.command(name="test", description="test", guild=discord.Object(id=idnu)) async def lal(ctx, last: str): response = "strresponse" await ctx.response.send_message(response)
如果想让回复仅命令发起者可见,可以加参数:await ctx.response.send_message(response, ephemeral=True)
方式2:先确认交互,再发送频道消息
如果一定要在频道公开发送消息,先调用defer()临时确认交互(避免超时),再发送消息:
@tree.command(name="test", description="test", guild=discord.Object(id=idnu)) async def lal(ctx, last: str): response = "strresponse" # 先告知Discord正在处理,避免超时提示 await ctx.response.defer(ephemeral=False) # 发送频道消息 await ctx.channel.send(response) # 可选:后续还能发送跟进消息 await ctx.followup.send("命令已执行完毕")
关键说明
ctx.channel.send()只是普通的频道消息操作,和斜杠命令的交互确认是两个独立的流程——必须通过ctx.response下的方法(send_message/defer等)来完成命令的闭环,Discord才会移除“应用未响应”的提示。
内容的提问来源于stack exchange,提问作者JNC4
相关产品推荐
相关产品推荐

