Tengo dos comandos: unirse y desconectarse. La función de unión hace que el bot se una al canal de voz mediante el método joinVoiceChannel, mientras que el comando de desconexión elimina el bot del canal mediante el método getVoiceConnection:
unirse.js
const Command = require('../handlers/Command.js'); const { joinVoiceChannel } = require('@discordjs/voice'); module.exports = new Command({ name: "join", description: "Joins voice channel", async run(message, args, client) { const channel = message.member.voice.channel; if (!channel) return message.channel.send('You need to be in a voice channel.'); const permissions = channel.permissionsFor(message.client.user); if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) return message.channel.send("You don't have the right permission."); const connection = joinVoiceChannel({ channelId: channel.id, guildId: channel.guild.id, adapterCreator: channel.guild.voiceAdapterCreator, }); } });desconectar.js
const Command = require('../handlers/Command.js'); const { getVoiceConnection } = require('@discordjs/voice'); module.exports = new Command({ name: "disconnect", description: "Disconnects from the voice channel", async run(message, args, client) { try { const channel = message.member.voice.channel; const connection = getVoiceConnection(channel.guild.id); connection.destroy(); } catch (error) { } } });¿Puedo importar de alguna manera la constante de conexión de join.js a desconectar.js para evitar el uso de otros métodos?
2 formas sencillas de acceder a la connection sin necesidad de exportar y requerir:
connection siempre que tenga acceso a su cliente de Discord (normalmente por client o message.client ). Por supuesto, esto solo estará disponible una vez que el comando join.js se ejecute al menos una vez, antes de que eso suceda, client.connection no estará undefined const connection = joinVoiceChannel({ channelId: channel.id, guildId: channel.guild.id, adapterCreator: channel.guild.voiceAdapterCreator, }); client.connection = connection; // You can now use client.connection in any file that has client definedglobal . Similar al n. ° 1, sin embargo, la variable de connection se eleva con el objeto global del entorno al que pueden acceder todos los archivos JavaScript en el entorno del nodo. const connection = joinVoiceChannel({ channelId: channel.id, guildId: channel.guild.id, adapterCreator: channel.guild.voiceAdapterCreator, }); global.connection = connection;