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

如何通过Discord API实现类似WidgetBot的聊天消息推送至Discord服务器

问题:聊天框消息推送Discord失败,Bot调用API异常

我正在开发一款聊天框,期望实现用户发送的消息直接推送至Discord服务器,效果和WidgetBot一致。尝试通过Bot携带access_token调用Discord API,但无法正常运行,代码如下:

var axios = require('axios');
var data = JSON.stringify({
  "content": "HELLO",
  "access_token":"user_access_token"
});

var config = {
  method: 'post',
  url: 'https://discord.com/api/v9/channels/channleId/messages',
  headers: { 
    'Authorization': 'Bot botId', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

问题排查

  1. 身份验证冲突:Discord API不允许同一次请求混合Bot令牌和用户access_token身份验证方式。使用Bot令牌时,请求体不需要携带access_token参数。
  2. URL拼写错误:请求URL中的channleId是拼写错误,正确应为channelId。
  3. Bot权限缺失:你的Bot需要在目标Discord频道拥有SendMessages权限,否则会返回权限不足的错误。

可行解决方案

如果是要实现类似WidgetBot的「Bot转发用户消息」效果,推荐使用Bot身份发送消息,无需用户access_token,调整后的代码如下:

var axios = require('axios');

var data = JSON.stringify({
  "content": "HELLO" // 替换为用户实际发送的消息内容
});

var config = {
  method: 'post',
  url: 'https://discord.com/api/v9/channels/你的频道ID/messages', // 修正channelId拼写
  headers: { 
    'Authorization': 'Bot 你的Bot令牌', 
    'Content-Type': 'application/json'
  },
  data: data
};

axios(config)
.then(function (response) {
  console.log('消息发送成功:', JSON.stringify(response.data));
})
.catch(function (error) {
  // 打印详细错误信息便于排查
  console.error('发送失败:', error.response?.data || error.message);
});

补充说明

  • 若需以用户身份发送消息(用用户账号直接发消息),需将请求头的Authorization改为Bearer 用户的access_token,同时移除请求体中的access_token参数,且确保用户token拥有messages.send权限。
  • 检查Bot权限:进入目标Discord服务器的「设置→角色」,找到Bot对应的角色,确认开启「发送消息」权限,且Bot已被邀请至该服务器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:40:32