Вылет 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". Бот работает в дабл режиме (отвечает на одну команду два раза).

При использовании данного решения тоже отсутствует результат. Возможно, в данном решении делаю что-то не так.

Если у кого-то есть идеи/готовые решения как заставить бота не выходить из голосового канала, то надеюсь на вашу помощь


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