能否用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
相关产品推荐
相关产品推荐

