Поэтому я хочу, чтобы у моего бота был динамический статус, который меняется каждые 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);
});
Мне кажется, что это не проблема библиотеки, потому что я не очень уверен в своей способности создавать код, который проверяет изменения. В идеале, он будет отображать точное число в зависимости от пользователей, которые присоединяются / покидают серверы, на которых работает бот, а также от гильдий, приглашающих / удаляющих бота из гильдии. Я не уверен, должен ли я использовать события для этого, и даже если бы я был, я не знаю, как я мог.