Entonces, han sido dos largos días tratando de averiguar qué está pasando... Estoy creando un bot en mi canal de Discord que reproduce un audio.mp3 cuando se escribe un comando, como !ríe, entonces el bot debería ingresar al canal de voz y reproducir risa.mp3. Lo he intentado de muchas maneras diferentes, pero el bot sigue entrando en el canal, el círculo verde aparece rápidamente pero no se reproduce ningún sonido...
const { join } = require('path'); const { joinVoiceChannel, createAudioPlayer, createAudioResource, getVoiceConnection, entersState, StreamType, AudioPlayerStatus, VoiceConnectionStatus, AudioResource } = require("@discordjs/voice"); module.exports = { name: 'laugh', aliases: ["l"], run: async(client, message, args) => { const player = createAudioPlayer() const connection = joinVoiceChannel({ channelId: message.member.voice.channel.id, guildId: message.guild.id, adapterCreator: message.guild.voiceAdapterCreator }).subscribe(player) let resource = createAudioResource(join('./som/', 'laugh.mp3')); player.play(resource) player.on(AudioPlayerStatus.AutoPaused, () => { player.stop(); }); } }Ya intenté detectar un error, pero aparentemente no pasa nada, ya tengo todas las intenciones en mi index.js.
Entonces, ¿alguien podría ayudarme a encontrar una solución?
Pasado el tercer día, resolví encontrar otra biblioteca que pudiera usar para resolver el problema, ¡resulta que encontré una solución usando FS !
En lugar de solo intentar reproducir el archivo, he creado una secuencia y luego solo reproduzco la secuencia... En términos de rendimiento, esa no es la mejor solución, ¡pero funciona!
Así es como va:
const {createReadStream } = require('fs') const { join } = require('path'); const { joinVoiceChannel, createAudioPlayer, createAudioResource, getVoiceConnection, entersState, StreamType, AudioPlayerStatus, VoiceConnectionStatus, AudioResource } = require("@discordjs/voice"); module.exports = { name: 'laugh', aliases: ["l"], run: async(client, message, args) => { const player = createAudioPlayer(); const connection = joinVoiceChannel({ channelId: message.member.voice.channel.id, guildId: message.guild.id, adapterCreator: message.guild.voiceAdapterCreator, selfDeaf: false, }).subscribe(player); let resource = createAudioResource(createReadStream(join(__dirname, 'som/laugh.mp3')), { inlineVolume : true }); resource.volume.setVolume(0.9); console.log(join(__dirname, 'som/laugh.mp3')); player.play(resource) player.on(AudioPlayerStatus.AutoPaused, () => { player.stop(); }); Algo que debo advertir es que Replit no resuelve correctamente Node.js 17 y otras dependencias, por lo que para que su Bot funcione las 24 horas del día, los 7 días de la semana, use Heroku y GitHub. Para terminar, se requiere establecer las intenciones de GUILD_VOICE_STATES , estaba usando 32767 pero de alguna manera esto no funcionaba.
¡Eso es todo!