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

使用Python登录Discord并发送Slash Command报错求助

使用Discord API通过个人账号触发斜杠命令的正确方式

你遇到的问题核心在于:

  1. 直接发送带/前缀的文本只是普通消息,Discord不会将其解析为斜杠命令;
  2. 原来的代码用了普通频道消息的API端点发送命令结构,接口不识别这种格式,所以返回"空消息"错误。

要触发其他Bot的斜杠命令,必须使用Discord的交互接口,而非普通消息接口,且请求体需要严格符合格式要求。

关键参数准备

需要先获取以下参数:

  • AUTH_TOKEN:你的个人账号授权token(即原代码中的token);
  • APPLICATION_ID:目标斜杠命令所属Bot的ID(比如Midjourney的Bot ID是936929561302675456);
  • GUILD_ID:目标服务器的ID;
  • CHANNEL_ID:目标频道的ID;
  • COMMAND_ID:imagine命令的专属ID(获取方法见下文)。

修正后的代码示例

import requests
import uuid

# 替换为你的实际参数
AUTH_TOKEN = "你的个人账号token"
APPLICATION_ID = "936929561302675456"  # Midjourney Bot的ID
GUILD_ID = "你的服务器ID"
CHANNEL_ID = "你的频道ID"
COMMAND_ID = "imagine命令的ID"

url = "https://discord.com/api/v9/interactions"
headers = {
    "authorization": AUTH_TOKEN,
    "Content-Type": "application/json"
}

payload = {
    "type": 2,  # 固定值,表示应用命令交互类型
    "application_id": APPLICATION_ID,
    "guild_id": GUILD_ID,
    "channel_id": CHANNEL_ID,
    "session_id": str(uuid.uuid4()),  # 生成随机会话ID,每次请求可不同
    "data": {
        "version": "1",  # 命令版本号,一般用1即可,抓包可看到具体值
        "id": COMMAND_ID,
        "name": "imagine",
        "type": 1,  # 固定值,表示全局命令
        "options": [
            {
                "name": "prompt",
                "type": 3,  # 固定值,表示字符串类型参数
                "value": "a cat"
            }
        ]
    }
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

如何获取COMMAND_ID

最简单的方式是通过Discord网页版抓包:

  1. 打开Discord网页版,进入目标服务器和频道;
  2. 按F12打开开发者工具,切换到「Network」标签;
  3. 在聊天框输入/imagine a cat并发送,找到类型为POST、URL包含interactions的请求;
  4. 查看该请求的「Payload」,里面data.id的值就是COMMAND_ID。

重要提醒

用个人账号通过自动化方式调用Discord API,可能违反Discord的服务条款,存在账号被封禁的风险,请谨慎操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:33:14