Вылет Discord бота из голосового канала
Создала дискорд бота для прослушивания музыки 24/7 в голосовом канале. Всё работает, отвечает на все команды, проигрывает музыку, всегда онлайн (за счет pm2). Но, есть одна проблема - дискорд выкидывает бота из голосового через N-времени (интервал всегда разный).
Если рассматривать полную ситуацию то: бот, работая в голосовом канале, шлет запросы на бразильский айпишник дискорда, последний ему отвечает, но после перестаёт - бот сначала замолкает, а потом выходит из голосового. Приходится командой снова запускать бота в канал, т.е. приходится следить за его вылетами.
Основная задача: найти способ, который позволит боту быть всё время в голосовом канале.
Сначала думала, что проблема во всяких discord js и т.п. Всё время обновляла до последней версии всё что можно было. И добавляла тоже. Результат - отсутствовал.
Через время нашла решение умельцев, они пишут, что это особенность Discord Api, поэтому рекомендуют использовать pm2 с автоматическим рестартом. В их решении также есть отдельный скрипт - restart.js
restart.js :
const { exec } = require('child_process');
const CronJob = require('cron').CronJob;
const restartCommand = "pm2 restart index.js";
const listCommand = "pm2 list";
console.log("Starting bot restart process.");
const restartApp = function () {
exec(restartCommand, (err, stdout, stderr) => {
if (!err && !stderr) {
console.log(new Date(), `App restarted.`);
listApps();
} else if (err || stderr) {
console.log(new Date(), `Error in executing ${restartCommand}`, err || stderr);
}
});
}
function listApps() {
exec(listCommand, (err, stdout, stderr) => {
console.log(`pm2 list`);
console.log(`${stdout}`);
});
}
new CronJob('0 0 */3 * * *', restartApp(), null, true, 'Europe/Moscow');
И запуск бота должен происходить через эту команду:
pm2 start index.js --name Bot --log bot.log --time --restart-delay 5000 & pm2 start restart.js --name Restart
После данной команды запускается два процесса: "Bot" и "Restart". Бот работает в дабл режиме (отвечает на одну команду два раза).
При использовании данного решения тоже отсутствует результат. Возможно, в данном решении делаю что-то не так.
Если у кого-то есть идеи/готовые решения как заставить бота не выходить из голосового канала, то надеюсь на вашу помощь