Для начала убедитесь, что у вас есть интент
GUILD_VOICE_STATES
в опциях клиента.
Теперь создайте
Map
для интервалов перед регистрацией ивента
const intervals = new Map();
Далее при подключении к каналу создавайте интервал и записывайте в только что созданный
Map
client.on("voiceStateUpdate", (oldState, newState) => {
function addVoiceTime() {}
if (!oldState.channelId && newState.channelId) {
intervals.set(newState.id, setInterval(addVoiceTime, 5000));
}
});
А при отключении отчищайте
client.on("voiceStateUpdate", (oldState, newState) => {
if (oldState.channelId && !newState.channelId) {
clearInterval(intervals.get(newState.id));
intervals.delete(newState.id);
}
});
Результирующий код
const intervals = new Map();
client.on("voiceStateUpdate", (oldState, newState) => {
function addVoiceTime() {}
if (!oldState.channelId && newState.channelId) {
intervals.set(newState.id, setInterval(addVoiceTime, 5000));
}
if (oldState.channelId && !newState.channelId) {
clearInterval(intervals.get(newState.id));
intervals.delete(newState.id);
}
});