Discord机器人不播放音频 discord.js v13

6

我正在尝试制作一个可以在语音频道中播放mp3文件的Discord机器人...但它似乎没有按照预期工作。


            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!');

它成功加入了语音频道,但根本没有播放任何声音。

机器人已经加入了语音频道

我已经通过控制台记录了 join(__dirname, 'resources/try.mp3') 确认目录名称正确。

我还尝试检查 discord.js v13 播放音频所需的依赖项。

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

console.log(generateDependencyReport());

以下是输出结果:

--------------------------------------------------
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
--------------------------------------------------

我认为discord.js v13文档中提到它只需要每个核心(Core),Opus,加密(Encryption)和FFmpeg依赖项中的任何一个(如有错误请指正)。

我是否遗漏了什么?

提前致谢。

3个回答

6

谢谢,它起作用了!

实际上我在我的问题中没有展示这行:

我改变了

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

致:

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

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

现在,它按预期播放声音。

机器人播放声音


3

1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

0

Discord.js 版本 14 的更新。在查看版本 14 文档后,我使用以下代码使其在版本 14 中正常工作:

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

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

请参阅Discordjs指南页面中的意图部分进行参考: https://discordjs.guide/popular-topics/intents.html#privileged-intents


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接