Tengo un servidor de discordia que usa un bot que usa la biblioteca discord.io para Node.js. El bot ha estado funcionando durante más de un año sin problemas reales, pero recientemente se ha estado rompiendo y me cuesta entender por qué.
Una de las cosas que hace el bot es cambiar periódicamente el nombre del servidor de discordia. Esto funciona bien por un tiempo, pero cada dos horas Discord desconectará el bot y el bot se volverá a conectar automáticamente, y después de que esto suceda, los intentos del bot de cambiar el nombre del servidor fallarán. No se producen mensajes de error y el bot continúa registrando mensajes como si estuviera cambiando el nombre del servidor. Otras funciones del bot siguen funcionando con normalidad.
La única forma que encontré para solucionar este problema es ingresar manualmente a la configuración del servidor y cambiar el nombre del servidor mientras se ejecuta el bot. Después de hacer esto, el bot podrá cambiar el nombre del servidor con éxito hasta la próxima desconexión, momento en el que se interrumpirá nuevamente.
Simplemente reiniciar el bot no soluciona el problema, y cambiar el nombre del servidor manualmente mientras el bot no se está ejecutando tampoco soluciona el problema (es decir, el bot se rompe -> forzar la salida del bot -> cambiar el nombre del servidor manualmente -> reiniciar el bot - no arreglalo).
Estas son algunas de las partes relevantes del código:
var Discord = require('discord.io'); var logger = require('winston'); var auth = require('./auth.json'); var bot = new Discord.Client({ token: auth.token, autorun: true }); function renameServer(){ var myName = generateName(); bot.editServer({serverID: myserverID, name: myName}); logString('Server name changed to: ' + myName); currentName = myName; } bot.on('ready', function (evt) { logger.info('Connected'); if (!intervalSet){ renameInterval = setInterval(renameServer, renameTimer); intervalSet = true; } logger.info('renameTimer set to default of ' + renameTimer + ' milliseconds'); }); bot.on('disconnect', function (errMsg, code) { logger.info('Disconnected, attempting to reconnect...'); bot.connect(); logger.info(errMsg); //errMsg = "Reconnect requested by Discord" });Nuevamente, este código se ejecutó sin problemas durante un año y recientemente comenzó a fallar recientemente. No estoy muy seguro de cómo comenzar a solucionar este problema, y la experimentación puede ser incómoda cuando tengo que esperar varias horas para desconectarme cada vez. ¿Alguna idea de qué puede estar causando esto?