【发布时间】:2019-09-04 10:30:05
【问题描述】:
所以基本上我希望我的机器人具有每 5 秒更改一次的动态状态,并显示我的机器人当前正在帮助的用户数量。状态变化部分不是问题,问题是用户帮助计数不会在不重新启动我的机器人的情况下发生变化,考虑到它是托管在许多服务器上的,这并不理想,没有必要一直重新启动只是为了用户计数准确的。
我尝试的是包含一个间隔计时器,该计时器将更新 userCount 变量,以使其准确地反映它正在帮助的用户数量。似乎正在发生的事情是,当用户加入服务器时,变量将相应更新并显示与之前帮助的用户数量相关的 +1。但是,当用户离开时,它不会从计数中减去一个,而是将其保留在之前的计数中。我添加了console.log(userCount) 只是为了更容易在控制台中每 10 秒查看一次数字,而不必等待机器人的状态更改为正确的状态。
bot.on('ready', function() {
let userCount = bot.users.size
setInterval(() => {
userCount = bot.users.size
console.log(userCount)
}, 10000);
setInterval(async () => {
let statuslist = [
'blah',
"blah'",
'blah ' + ` ${userCount} Users`
];
const random = Math.floor(Math.random() * statuslist.length);
try {
await bot.user.setPresence({
game: {
name: `${statuslist[random]}`,
type: "Playing"
},
status: "online"
});
} catch (error) {
console.error(error);
}
}, 5000);
console.log("Logged in as " + bot.user.username);
});
我觉得这似乎不是库问题,因为我对创建检查更改的代码的能力不是很有信心。理想情况下,它将根据用户加入/离开机器人所在的服务器以及公会邀请/从公会中删除机器人来显示准确的数字。我不确定我是否应该为此使用事件,即使我要这样做,我也不知道该怎么做。
【问题讨论】:
标签: javascript node.js visual-studio-code discord discord.js