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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:50:27