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

使用Python Requests调用Discord斜杠命令遇400错误求助

排查Discord斜杠命令接口400错误的常见原因

核心问题本质

调用/interactions接口返回400,说明请求参数完全不符合Discord API的规范——你之前把JSON里的true/null改成带引号的字符串是错误操作,JSON的布尔值、空值不需要加引号,直接用true、null才是正确格式。

常见错误点及修复方案

  • 请求头缺失Content-Type
    Discord的interactions接口要求必须携带Content-Type: application/json请求头,否则API无法正确解析JSON格式的请求体,这是最容易遗漏的关键项。
  • 请求体核心字段缺失或格式错误
    斜杠命令的请求体必须包含以下必填字段:
    • type: 固定为2(代表应用命令交互类型)
    • application_id: 你的Discord应用/机器人的ID(不是用户Token对应的账号ID)
    • guild_id、channel_id: 目标服务器和频道的ID,必须与实际环境匹配
    • data: 需包含name(斜杠命令名称,比如rank),无参数时options传空数组[]
      注意:所有字段类型必须严格匹配,比如type是数字而非字符串,null不能写成"null"。
  • Token权限不足
    确保Token对应的账号有权限在目标频道使用该斜杠命令,同时你的Discord应用已安装到目标服务器,权限范围包含applications.commands。
  • 接口版本或URL错误
    确认使用的API版本(v9是可用的),URL必须严格为https://discord.com/api/v9/interactions,不能添加额外路径。

修正后的示例代码

import requests
import json

def send_slash_command(token: str, application_id: str, guild_id: str, channel_id: str, command_name: str):
    url = "https://discord.com/api/v9/interactions"
    payload = {
        "type": 2,
        "application_id": application_id,
        "guild_id": guild_id,
        "channel_id": channel_id,
        "data": {
            "name": command_name,
            "options": []
        }
    }
    headers = {
        "Authorization": token,
        "Content-Type": "application/json"
    }
    response = requests.post(url, data=json.dumps(payload), headers=headers)
    print(response.status_code)
    print(response.text)  # 打印响应内容,获取具体错误提示

高效排查技巧

调用接口后一定要打印response.text,Discord的400错误通常会返回具体的错误细节(比如"message": "Invalid Form Body", "errors": {...}),根据提示调整参数比盲目试错效率高得多。

内容的提问来源于stack exchange,提问作者Mateo de Moya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:03:32