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

能否用discord-rpc实现discord.js机器人RPC?无流添加按钮方案

关于Discord机器人Rich Presence添加按钮的问题

核心结论:机器人账号无法实现带按钮的Rich Presence

Discord官方API存在限制:仅普通用户账号的Rich Presence支持配置交互按钮,机器人账号的RPC接口并未开放按钮权限,因此无论使用discord.js还是discord-rpc库,都无法给机器人的Rich Presence添加按钮。

替代方案:用普通用户账号实现带按钮的Rich Presence(无需流媒体)

如果需要展示带按钮的Rich Presence效果,可以使用普通Discord账号(非机器人)通过discord-rpc库实现,无需开启流媒体,具体步骤如下:

1. 安装依赖

先安装discord-rpc库:

npm install discord-rpc

2. 代码实现示例

const RPC = require('discord-rpc');
// 替换为你在Discord开发者门户创建的应用ID
const clientId = '你的应用ID';

const rpc = new RPC.Client({ transport: 'ipc' });

async function setRichPresence() {
  if (!rpc) return;

  rpc.setActivity({
    details: '自定义详情内容',
    state: '自定义状态描述',
    startTimestamp: new Date(),
    largeImageKey: 'big-image', // 对应Discord应用资产里上传的大图片名称
    largeImageText: '鼠标悬停大图片时显示的文本',
    smallImageKey: 'small-image', // 对应Discord应用资产里上传的小图片名称
    smallImageText: '鼠标悬停小图片时显示的文本',
    // 配置按钮,最多支持2个
    buttons: [
      { label: '访问示例网站1', url: 'https://example.com' },
      { label: '访问示例网站2', url: 'https://example.org' }
    ]
  });
}

rpc.on('ready', () => {
  setRichPresence();
  // 每15分钟刷新一次状态(Discord要求定期更新以维持在线状态)
  setInterval(setRichPresence, 15 * 60 * 1000);
});

// 登录RPC客户端,需确保本地Discord已登录你的普通用户账号
rpc.login({ clientId }).catch(console.error);

关键注意事项

  • 需先在Discord开发者门户创建应用,并上传对应的图片资产,代码中largeImageKey和smallImageKey要和资产名称完全匹配。
  • 按钮的URL必须是合法的HTTPS链接,Discord不支持HTTP地址。
  • 该脚本依赖本地运行的Discord客户端,需确保客户端已登录你的普通用户账号,无需手动输入账号token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:11