Discord.js 启用GUILD_PRESENCES后setPresence无法正常生效问题
故障根因
你使用的是Discord.js v13及以上版本,setPresence方法的入参结构相比旧版本有不兼容更新,你当前使用的是旧版本参数结构,因此活动配置不生效。
错误明细:
- 旧版本单对象
activity字段已废弃,替换为支持配置多个活动的activities数组字段 type属性属于单个活动的配置项,不能与activities、status平级放置- 额外校验项:你已在代码中声明
GUILD_PRESENCES意图,需同步确认Discord开发者平台对应机器人的特权网关意图配置中,已开启Presence Intent开关,否则状态相关配置也会失效。
修复后代码
const { Client, Intents } = require('discord.js'); const bot = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] }); bot.on('ready', () => { console.log(`Logged in as ${bot.user.tag}!\n`); bot.user.setPresence({ activities: [{ name: 'LOADING ... ', type: 'WATCHING' }], status: 'idle' }) })
后续排查
如果修改后仍然无法正常显示活动,检查机器人在对应服务器是否有设置状态的权限,同时确认没有其他业务逻辑覆盖此处的在线状态配置。
内容的提问来源于stack exchange,提问作者picocode
相关产品推荐
相关产品推荐

