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

如何正确调用Discord API发起Create DM请求?

错误原因
  • 请求体格式错误:原代码将序列化后的JSON字符串嵌套在带data键的字典中,实际Discord API要求请求体直接为包含recipient_id字段的JSON对象,服务器无法识别到正确参数返回400错误。
  • 令牌格式问题:若使用机器人账号调用接口,Authorization请求头需要添加Bot 前缀,格式为Bot 你的实际令牌值,个人账户令牌不需要添加此前缀。
  • API版本过旧:v6版本Discord API已停止维护,建议使用当前稳定的v10版本接口。
正确代码实现

推荐直接使用requests库内置的json参数,自动处理序列化和请求头配置:

import requests

url = 'https://discord.com/api/v10/users/@me/channels'
# 机器人令牌需要加Bot前缀,个人账户直接填token即可
token = 'Bot 你的实际令牌'
body = {
    'recipient_id': '123456789'
}

headers = {
    "Authorization": token
}

# 直接传json参数,requests会自动设置Content-Type为application/json
r = requests.post(url, json=body, headers=headers)
print(r.status_code)
print(r.json())

如果需要手动序列化JSON,正确写法如下,不要嵌套多余的字典:

import requests
import json

url = 'https://discord.com/api/v10/users/@me/channels'
token = 'Bot 你的实际令牌'
body = {
    'recipient_id': '123456789'
}

headers = {
    "Authorization": token,
    "Content-Type": "application/json"
}

# data参数直接传序列化后的JSON字符串即可,不要套额外的字典
r = requests.post(url, data=json.dumps(body), headers=headers)
print(r.status_code)
print(r.json())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:07