discord.js 机器人在没有声音的情况下播放音频

Posted

技术标签:

【中文标题】discord.js 机器人在没有声音的情况下播放音频【英文标题】:discord.js bot playing audio without sound 【发布时间】:2021-11-22 10:49:54 【问题描述】:

我正在使用 discord.js v13 并尝试使用 @discordjs/voice 播放音频文件。我的问题是机器人会正确地做所有事情,但是当指示声音来自机器人的绿色圆圈出现时,我什么也听不到。我认为这不是我的耳机的音频问题,因为我可以听到其他所有声音,包括其他不和谐的人。

这是我的代码:

const  getVoiceConnection, joinVoiceChannel, AudioPlayerStatus, createAudioResource, getNextResource, createAudioPlayer, NoSubscriberBehavior  = require('@discordjs/voice');

module.exports = 
    name: "play",
    category: "music",
    description: "plays audio",
    usage: "<id | mention>",
    run: async (client, message, args) => 
        
        const voiceChannel =  message.member.voice.channel;
        
        const connection = joinVoiceChannel(
            channelId: voiceChannel.id,
            guildId: message.guild.id,
            adapterCreator: message.guild.voiceAdapterCreator
        );
        
        const audioPlayer = createAudioPlayer();
        connection.subscribe(audioPlayer);
        audioPlayer.play(createAudioResource('./sound/audio.mp3'));
    

感谢任何帮助。

【问题讨论】:

尝试在audioPlayer.play(...)之前写console.log(createAudioResource('./sound/audio.mp3').readable),看看音频资源是否可以播放 控制台在日志上显示为true 嗯,试试createAudioResource(createReadStream('./sound/audio.mp3'), inlineVolume: true )(带&,如果不工作,不带inlineVolume : true 解决了这个问题,谢谢 删除或添加 inlineVolume 会改变什么吗? 【参考方案1】:

简单地编写createAudioResource('./sound/audio.mp3') 不是获取您拥有的mp3 文件的音频资源的正确语法,您唯一错过的是createReadStream(),它将在将其转换为音频资源之前创建一个可读流。很明显,只是改变

  audioPlayer.play(createAudioResource('./sound/audio.mp3'));

  audioPlayer.play(createAudioResource(createReadStream('./sound/audio.mp3')));

如果这仍然不能解决您的问题,可以尝试添加 inlineVolume 等选项作为第二个参数:

  audioPlayer.play(createAudioResource(createReadStream('./sound/audio.mp3')),
     inlineVolume: true );

【讨论】:

以上是关于discord.js 机器人在没有声音的情况下播放音频的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 播放声音文件但没有声音出来

是否可以通过安装在 Heroku 上的不和谐机器人播放音乐/声音?

如何在没有数组的情况下附加到 JSON?

discord.js 不播放音频文件

Discord Bot 不播放音频 discord.js v13

Discord.js v13,@discordjs/voice 播放音乐命令