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

如何实现Chrome扩展发送信息给Discord bot并转发给指定用户?

该需求完全可实现,整体实现逻辑为:Chrome扩展采集到价格数据后,通过HTTP请求将数据发送给Discord Bot侧的轻量接口,Bot收到数据后调用Discord API向指定用户推送私信。

Discord Bot 侧代码修改

首先执行npm install express cors安装HTTP服务所需依赖,完整可运行代码如下:

const discord = require('discord.js');
const express = require('express');
const cors = require('cors');

// 配置项,按实际情况替换
const BOT_TOKEN = 'xxx'; // 你的Bot token
const TARGET_USER_ID = '1234567890'; // 接收私信的用户Discord ID,开启Discord开发者模式后右键头像可复制
const API_SECRET = 'your_custom_secret_key'; // 自定义接口校验密钥,防止恶意调用
const PORT = 3000; // 服务监听端口

const bot = new discord.Client({ 
  intents: [
    discord.Intents.FLAGS.GUILDS, 
    discord.Intents.FLAGS.GUILD_MESSAGES, 
    discord.Intents.FLAGS.DIRECT_MESSAGES
  ] 
});
const app = express();

// 跨域配置,测试阶段可使用*通配,上线建议替换为你的Chrome扩展地址:chrome-extension://<你的扩展ID>
app.use(cors({ origin: '*' }));
app.use(express.json());

// 接收Chrome扩展数据的接口
app.post('/send-price', async (req, res) => {
  // 校验请求合法性
  if (req.headers['x-api-secret'] !== API_SECRET) {
    return res.status(403).json({ msg: '非法请求' });
  }

  const { productName, price, url } = req.body;
  if (!productName || !price) {
    return res.status(400).json({ msg: '参数缺失' });
  }

  try {
    // 获取目标用户并发送私信
    const user = await bot.users.fetch(TARGET_USER_ID);
    await user.send(`价格监控提醒:
商品名称:${productName}
当前价格:${price}
商品链接:${url || '无'}`);
    res.status(200).json({ msg: '发送成功' });
  } catch (err) {
    console.error('发送私信失败:', err);
    res.status(500).json({ msg: '发送失败', error: err.message });
  }
});

bot.login(BOT_TOKEN);

bot.on('ready', () => {
  console.log('Bot started');
  // Bot登录成功后再启动HTTP服务
  app.listen(PORT, () => {
    console.log(`接口服务已启动,监听端口${PORT}`);
  });
});
Chrome 扩展侧修改
  • 首先修改manifest.json配置,增加网络访问权限(以V3版本manifest为例):
{
  "manifest_version": 3,
  "name": "价格监控扩展",
  "version": "1.0",
  "host_permissions": [
    "https://your-bot-domain.com/*" // 替换为你Bot服务的公网域名
  ],
  // 其他原有配置保持不变
}
  • 修改原有输出逻辑,把原来打印到console、输出到div的逻辑替换为HTTP请求:
// 示例:采集到价格数据后调用接口推送
const monitorResult = {
  productName: '你监控的商品名称',
  price: '¥199',
  url: 'https://xxx.com/goods/123'
};

fetch('https://your-bot-domain.com/send-price', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-secret': 'your_custom_secret_key' // 和Bot侧配置的密钥保持一致
  },
  body: JSON.stringify(monitorResult)
}).then(res => res.json())
  .then(data => console.log('推送结果:', data))
  .catch(err => console.error('推送失败:', err));
注意事项
  • Bot服务需要部署到公网可访问的服务器,Chrome扩展无法直接访问本地运行的服务
  • 接收私信的用户必须和Bot在同一个Discord服务器,否则Bot无法发起私信
  • 上线前请将CORS的允许源修改为你的Chrome扩展对应的chrome-extension://<扩展ID>地址,避免接口被恶意调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:30:01