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

如何使用discord.js向Roblox发送POST请求完成Discord机器人对接

正确实现方案

原有代码核心问题

  • 路由重复注册:每次触发命令就新增一次app.post('/post')监听,会导致逻辑冲突、内存泄漏
  • 服务启停逻辑错误:不需要每次触发命令就启停HTTP服务,频繁启停会导致端口占用、请求丢失
  • 需求理解偏差:你要实现的是Discord向Roblox发POST请求,原有代码是搭建本地服务等待Roblox请求,逻辑方向完全相反

两种适用场景实现

根据你的实际需求选择对应方案即可:

场景1:Roblox主动拉取Discord侧消息

如果需要Roblox定期来拉取最新消息,保留HTTP服务,改为常驻启动即可:

初始化代码(放在Discord机器人启动逻辑中)

const express = require('express');
const app = express();
const port = 8000;
// 存储最新同步到Roblox的消息
let latestRobloxMsg = '';
// 全局解析POST请求体
app.use(express.json());
// 常驻路由,Roblox请求该接口获取最新消息
app.post('/post', (req, res) => {
  console.log('收到Roblox侧请求,请求体:', req.body);
  res.send(latestRobloxMsg);
});
// 机器人启动完成后一次性启动HTTP服务
client.on('ready', () => {
  app.listen(port, () => {
    console.log(`HTTP服务已启动,监听端口:${port}`);
  });
  console.log('Discord机器人上线成功');
});

命令处理代码

if (command == "robloxmessage") {
  if (args[0] && args.length <= 1) {
    // 直接更新存储的消息即可,无需修改服务逻辑
    latestRobloxMsg = args[0];
    return message.channel.send(`已更新同步到Roblox的消息:${args[0]}`);
  }
  return message.channel.send(`请提供正确的参数,使用!help查看用法`);
}

场景2:Discord主动向Roblox推送消息(符合你描述的需求)

不需要自己搭建HTTP服务,直接调用Roblox侧的公开接口发POST请求即可:
首先安装依赖:npm i axios

完整命令处理代码

const axios = require('axios');
if (command == "robloxmessage") {
  if (args[0] && args.length <= 1) {
    (async () => {
      try {
        // 替换为你Roblox侧的公开接口地址
        const robloxRes = await axios.post('https://你的Roblox接口地址', {
          content: args[0]
        }, {
          headers: {
            'Content-Type': 'application/json',
            // 如有Roblox接口鉴权要求,在此处补充请求头,比如API密钥
            // 'Roblox-API-Key': '你的密钥内容'
          }
        });
        console.log('推送到Roblox成功,返回内容:', robloxRes.data);
        return message.channel.send(`已成功推送消息到Roblox:${args[0]}`);
      } catch (err) {
        console.error('推送到Roblox失败:', err);
        return message.reply('发送失败,请稍后重试或联系管理员');
      }
    })();
  }
  return message.channel.send(`请提供正确的参数,使用!help查看用法`);
}

注意事项

  • 场景1使用时需要将本地8000端口暴露到公网,Roblox才能正常访问
  • 场景2使用时需要提前在Roblox侧部署好接收POST请求的公开接口,配置好跨域和鉴权规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:27:05