Логирование войс активности discord.js?

Всем доброго времени суток, у меня есть слушатель событий voiceStateUpdate, мне необходимо добавлять в таблицу пользователя время, которое он провёл в голосовом канале. (каждые 5 секунд). Но есть несколько проблем:

  1. Функция addVoiceTime выполняется не только при подключении пользователя к голосовому каналу, но и при попытке выключить/включить микрофон, наушники.

  2. При отключении пользователя от голосового канала эта функция не должна больше выполнятся, setInterval(или может что-то другое) должен очищаться.

    if (
    (oldState.channelId === null && newState.channelId !== null) ||
    (oldState.channelId && newState.channelId !== null)) {
    async function addVoiceTime() {
        if (!newState.channelId) return
        //if (newState.channel.members.size < 2) return
        if (newState.selfMute == true) return
        if (newState.selfDeaf == true) return
    
        await dbQuery(
            `INSERT INTO users (user_id) VALUES ($1) ON CONFLICT (user_id) DO UPDATE SET voice_time = users.voice_time + 5000`,
            (values = [`${newState.id}`])
        )
        console.log(`Added Voice Time For ${newState.id}`)
    }
    
    setInterval(addVoiceTime, 5000)
    

    }


Ответы (0 шт):