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

Lambda+API Gateway构建Discord机器人斜杠命令执行报错求助

Discord斜杠命令交互失败问题排查与修复建议

问题描述

使用Lambda和API Gateway构建Discord机器人,通过INTERACTIONS ENDPOINT URL与Discord集成,已通过以下脚本配置斜杠命令:

import json
import requests

APPLICATION_ID = "x"
BOT_TOKEN = "x"
GUILD_ID = "x"

HEADERS = {"Authorization": f"Bot {BOT_TOKEN}"}

URL = f"https://discord.com/api/v10/applications/{APPLICATION_ID}/guilds/{GUILD_ID}/commands"

json_file = {
        "name": "hello",
        "type": 1,
        "description": "replies with bar;/"
}

r = requests.post(URL, headers=HEADERS, json=data)

机器人已部署并与Discord同步正常,服务器显示已连接,但执行/hello命令时出现错误:

Cosmic Cat:
This interaction failed

查看Lambda函数日志无错误记录,日志显示命令已正常执行:

2022-12-13T14:59:34.807-03:00   START RequestId: 58f5bfc7-a85a-494c-a92b-9f746d401ce9 Version: $LATEST
2022-12-13T14:59:34.808-03:00   event: {'rawBody': '{"app_permissions":"...'resource-path': '/discord'}}
2022-12-13T14:59:34.808-03:00   [*] running command...
2022-12-13T14:59:34.808-03:00   command hello
2022-12-13T14:59:34.808-03:00   [*] detected hello. Executing...
2022-12-13T14:59:34.809-03:00   END RequestId: 58f5bfc7-a85a-494c-a92b-9f746d401ce9

已尝试重新邀请机器人、增加Lambda日志、重新配置API Gateway作为交互端点等操作,问题仍未解决。

修复建议

  • 检查Lambda返回格式是否符合Discord要求
    Discord要求交互端点必须在3秒内返回规范响应:

    • 同步响应需返回type:4的JSON结构,示例:
      {
        "type": 4,
        "data": {
          "content": "bar;/"
        }
      }
      
    • 若需异步处理,需先返回type:5的延迟响应。
    • 确保API Gateway将Lambda返回值原样传递,且响应头设置Content-Type: application/json。
  • 修正命令注册脚本的变量错误
    脚本中定义了json_file但请求时传入data,会导致命令注册失败(可能之前正确执行过才显示同步正常)。修正请求参数:

    r = requests.post(URL, headers=HEADERS, json=json_file)
    

    执行修正后的脚本重新注册命令。

  • 验证Discord交互签名
    Discord会对每个交互请求签名,需在Lambda中实现签名验证逻辑:

    • 使用Discord提供的公钥,验证请求头X-Signature-Ed25519和X-Signature-Timestamp,确保请求来自Discord。
    • 签名验证失败时,Discord会拒绝认可交互结果,导致显示失败。
  • 检查Lambda与机器人权限

    • 确保Lambda超时时间设置≥3秒,避免未返回响应就被终止。
    • 确认机器人在服务器中拥有发送消息的权限,无权限会导致响应无法送达(日志不会报错)。
  • 排查API Gateway配置

    • 确认API Gateway为HTTP API或正确配置的REST API,已部署到对应阶段。
    • 查看API Gateway日志,检查是否存在请求转发失败、响应格式被修改等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:10:45