TypeError: Cannot read property 'interval' of undefined
У меня есть бот дискорд, который выдаёт 200 монет за каждую минуту, проведённую в войс канале (только с включенным микро) монеты хранятся в coins.json, но бот крашается когда кто-то выходит из войс канала после запуска бота, то если человек сидел в войс канале когда бот был оффлайн, потом я запускаю бота, и человек выходит из канала (замученный или нет без разницы) бот крашается
let voiceStates = {}
bot.on('voiceStateUpdate', (oldState, newState) => {
let coins = require("./coins.json");
let { id } = oldState;
if (!oldState.channel) {
console.log('user joined voice channel');
voiceStates[id] = { joined: new Date() };
if(!newState.selfMute) {
voiceStates[id].interval = bot.setInterval(() => {
coinAmt = 200;
console.log('user earned 200 coins');
if(coinAmt){
coins[newState.id] = {
coins: coins[newState.id].coins + coinAmt
}
}
}, 60000);
}
} else if (!newState.channel || newState.selfMute) {
console.log('left channel')
if (voiceStates[id].interval) {
bot.clearInterval(voiceStates[id].interval);
voiceStates[id].interval = 60000;
}
} else if (!oldState.channel || newState.selfMute) {
console.log('left channel')
if (voiceStates[id].interval) {
bot.clearInterval(voiceStates[id].interval);
voiceStates[id].interval = 60000;
}
} else if (!oldState.channel || !newState.selfMute) {
console.log('left channel')
voiceStates[id] = { joined: new Date() };
if(!newState.selfMute) {
voiceStates[id].interval = bot.setInterval(() => {
coinAmt = 60000;
console.log('user earned 200 coins');
if(coinAmt){
coins[newState.id] = {
coins: coins[newState.id].coins + coinAmt
}
}
}, 60000);
}
}
});
