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

Discord.Net Slash命令返回组件时显示“应用未响应”问题求助

解决Discord机器人Slash命令“应用未响应”问题

问题根源是Discord要求Slash命令必须在3秒内完成初始交互确认,如果代码发送菜单时存在调度延迟或耗时操作,就会触发超时提示。以下是具体修复方案:

修改FAQ命令代码

将原有的直接ReplyAsync改为先调用DeferAsync立即确认交互,再替换初始消息为带选择菜单的内容:

<SlashCommand("faq", "View frequently asked questions")>
Public Async Function FAQ() As Task
    Dim FAQMenu As New SelectMenuBuilder
    Dim FAQSelect As New ComponentBuilder

    With FAQMenu
        .WithPlaceholder("What's your question?")
        .WithCustomId("faq_menu")
        .WithMinValues(1)
        .WithMaxValues(1)
        .AddOption("Question #1?", "faq1")
        .AddOption("Question #2?", "faq2")
        .AddOption("Question #3?", "faq3")
        .AddOption("Question #4?", "faq4")
    End With

    FAQSelect.WithSelectMenu(FAQMenu)

    ' 1. 立即发送延迟响应,告知Discord已收到命令,避免超时
    Await DeferAsync(ephemeral:=False)
    ' 2. 替换初始延迟消息为带选择菜单的内容
    Await ModifyOriginalResponseAsync(Sub(msg)
                                         msg.Content = "Select one of the following Frequently Asked Questions:"
                                         msg.Components = FAQSelect.Build
                                     End Sub)
End Function

方案说明

  • DeferAsync会立刻向Discord返回交互确认,彻底规避3秒超时限制,不会再出现“应用未响应”提示。
  • ModifyOriginalResponseAsync会替换Discord默认的“机器人正在思考”临时提示,直接展示目标菜单内容,保持用户体验连贯。

额外验证

你的HandleMenu方法逻辑正常,用户选择选项时Selection.RespondAsync能正确处理组件交互,无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:05:16