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

调用Discord API自动添加消息表情反应出现404错误求助

问题:Discord API 添加消息表情反应返回404错误

我尝试用Python自动给Discord服务器消息添加表情反应,代码如下:

import requests
import emoji
headers = {
    "authorization": token
}
em = emoji.emojize(':thumbs_up:')
r=requests.put(f"https://discord.com/api/v10/channels/{server_ID}/messages/{channel_ID}/reactions/{em}/%40me",
              headers=headers)
print(r.status_code)

我已经确认token、频道ID和服务器ID都正确,但请求一直返回404状态码,推测是API链接有误,试过用urllib.parse对表情编码,代码如下,还是没解决:

import requests
import emoji
import urllib.parse
headers = {
    "authorization": token
}
em = emoji.emojize(':thumbs_up:')
em = urllib.parse.quote(em)
r=requests.put(f"https://discord.com/api/v10/channels/{server_ID}/messages/{channel_ID}/reactions/{em}/%40me",
              headers=headers)
print(r.status_code)

想问下是不是有其他可用的API链接,或者我漏了什么配置?


解决方案:修正API路径参数顺序

你的核心问题是API路径的参数顺序错误,正确的Discord添加反应接口路径应该是:
https://discord.com/api/v10/channels/{频道ID}/messages/{消息ID}/reactions/{表情}/@me

你错误地把服务器ID放在了channels/后面,实际上channels/后应该跟频道ID,且这个接口根本不需要服务器ID。另外看你的变量名,疑似把消息ID写成了channel_ID,需要核对变量命名是否混淆。

修正后的代码示例:

import requests
import emoji
import urllib.parse

headers = {
    "authorization": "Bot " + token  # 机器人令牌必须带"Bot "前缀,用户令牌无需(但不推荐用用户令牌)
}
em = emoji.emojize(':thumbs_up:')
encoded_em = urllib.parse.quote(em)
# 修正路径结构:channels/{频道ID}/messages/{消息ID}
r = requests.put(
    f"https://discord.com/api/v10/channels/{channel_ID}/messages/{message_ID}/reactions/{encoded_em}/@me",
    headers=headers
)
print(r.status_code)
print(r.text)  # 打印响应内容,方便排查其他权限/参数问题

额外注意事项:

  • 机器人令牌必须添加Bot 前缀,否则会权限验证失败
  • 确保机器人已加入目标服务器,且在目标频道拥有添加反应的权限
  • 确认message_ID是目标消息的正确ID,而非频道ID

如果仍有问题,查看r.text的返回内容,Discord API会给出具体错误描述,帮助进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:15:22