如何让Discord.js机器人每10秒循环切换在线状态?
实现Discord.js机器人循环切换在线状态
你可以通过定时器循环调用setPresence方法,维护一个状态列表来实现循环切换。核心逻辑是用setInterval定时更新机器人的status字段,同时通过索引取模实现状态的循环遍历。
修改后的完整代码
替换你当前的ready事件处理代码即可:
bot.on("ready", () => { // 定义需要循环的状态顺序 const statusCycle = ['online', 'idle', 'dnd']; let currentIndex = 0; // 初始化首次状态 bot.user.setPresence({ activity: { name: 'IN REWORK!' }, status: statusCycle[currentIndex] }) .then(() => console.log(`初始状态已设置: ${statusCycle[currentIndex]}`)) .catch(console.error); // 启动10秒间隔的状态循环 setInterval(() => { // 更新索引,超出数组长度时回到开头 currentIndex = (currentIndex + 1) % statusCycle.length; const targetStatus = statusCycle[currentIndex]; bot.user.setPresence({ activity: { name: 'IN REWORK!' }, status: targetStatus }) .then(() => console.log(`状态切换为: ${targetStatus}`)) .catch(console.error); }, 10000); // 10000毫秒 = 10秒 });
额外说明
- 如果你需要非精确的10秒间隔(比如9-11秒随机波动),可以把定时器的
10000替换为Math.floor(Math.random() * 2000) + 9000,实现间隔浮动效果 setPresence方法的status参数直接控制机器人的在线状态,支持的有效值包括online、idle、dnd、invisible,这里按你的需求只循环前三个
内容的提问来源于stack exchange,提问作者SD H
相关产品推荐
相关产品推荐

