ChronoAero
ChronoAero

Reputation: 135

Discord Bot Not Playing Audio discord.js v13

I'm trying to make a discord bot that can play mp3 files in a voice channel.. but it doesn't seem to work as intended


            connection = joinVoiceChannel({
                channelId: voice.channelId,
                guildId: interaction.guildId,
                adapterCreator: voice.channel.guild.voiceAdapterCreator,
            });
            
            
            let resource = createAudioResource(createReadStream(join(__dirname, 'resources/try.mp3')), {
                inlineVolume : true
            });

            resource.volume.setVolume(0.2);

            console.log(join(__dirname, 'resources/try.mp3'));
            
            const player = createAudioPlayer();

            connection.subscribe(player);
            player.play(resource)
            console.log("done");

            await interaction.reply('I have joined the voice channel!');

It successfully joined the voice channel, but it does not play any sound at all

The bot joined the voice channel

I have made sure that the directory name is correct by console.logging join(__dirname, 'resources/try.mp3')

I have also tried to check the required dependency for playing audios in discord.js v13

const { generateDependencyReport } = require('@discordjs/voice');

console.log(generateDependencyReport());

here's the output:

--------------------------------------------------
Core Dependencies
- @discordjs/voice: 0.6.0
- prism-media: 1.3.2

Opus Libraries
- @discordjs/opus: 0.5.3
- opusscript: not found

Encryption Libraries
- sodium: not found
- libsodium-wrappers: 0.7.9
- tweetnacl: not found

FFmpeg
- version: 4.4-essentials_build-www.gyan.dev
- libopus: yes
--------------------------------------------------

I think the discord.js v13 docs said that it only requires any one of each Core , Opus, Encryption, and FFmpeg Dependencies (Correct me if I'm wrong)

Did I miss anything?

Thank you in advance

Upvotes: 6

Views: 8342

Answers (3)

Joel Youngberg
Joel Youngberg

Reputation: 544

Update for Discord.js version 14. After checking the version 14 documentation, I was able to get this working in version 14 with the following:

const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({ intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildVoiceStates,
  ], 
});

See the Discordjs guide page on intents for reference: https://discordjs.guide/popular-topics/intents.html#privileged-intents

Upvotes: 1

ChronoAero
ChronoAero

Reputation: 135

Thanks, It worked!

I actually didn't show this line in my question:

I changed

const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

to:

const myIntents = new Intents();
myIntents.add(Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_VOICE_STATES);

const client = new Client({ intents: myIntents });

It plays sound as intended now

Bot plays sound

Upvotes: 6

Mapetr
Mapetr

Reputation: 46

Happened the exact same to me. The problem is in the intents you set in the new Discord.js. More is in the reddit thread link.

https://www.reddit.com/r/Discordjs/comments/pprpit/voice_connection_stuck_in_the_signalling_state/

Upvotes: 3

Related Questions