Tengo este código aquí mismo que detecta si el bot es expulsado del chat de voz.

const serverQueue = message.client.queue.get(message.guild.id);
const botvc = message.guild.me.voice.channel;
if (botvc === null) {
 if (serverQueue === undefined) {
  const queueConstruct = {
   connection: null,
   songs: [],
   volume: 2,
   playing: true,
  };
  message.client.queue.set(message.guild.id, queueConstruct);
  const newqueue = message.client.queue.get(message.guild.id);
  if (newqueue.songs[0] !== undefined) {
   newqueue.songs[0].looped = 0;
   message.client.queue.delete(message.guild.id);
  } else {
   message.client.queue.delete(message.guild.id);
  }
 } else {
  serverQueue.songs[0].looped = 0;
  serverQueue.songs = [];
  message.client.queue.delete(message.guild.id);
 }
}

Es un evento voicestateupdate en discord.js que está en un controlador de eventos.

¿Hay algún problema con el código o algo que solucione la pérdida de memoria?

0
NOURNOT 30 ago. 2020 a las 20:14

1 respuesta

La mejor respuesta

Probablemente tengas otros oyentes voiceStateUpdate en tu código o tu código está agregando el oyente (llamando a client.on('voiceStateUpdate', listener)) más de una vez. La advertencia (que se produce para todos los EventEmitter s, no solo para Discord. js 'Client) le está diciendo que agregar demasiados oyentes para un evento (el valor predeterminado es 10) es posiblemente un error.

Intente agregar un punto de interrupción en client.on('voiceStateUpdate', ...) al depurar para averiguar cuándo se agrega el oyente. Alternativamente, intente usar la marca --trace-warnings para ver el seguimiento de la pila para el advertencia de fuga de memoria.

Si necesita más de 10 voiceStateUpdate oyentes (lo cual es poco probable), use setMaxListeners para cambiar el número máximo de oyentes para un evento:

// Changes the maximum number of listeners for an event to 11
client.setMaxListeners(11)
0
cherryblossom 31 ago. 2020 a las 00:19