【发布时间】:2022-02-09 03:20:33
【问题描述】:
我正在尝试使用 discord.js 创建一个既能播放音乐又能播放音效的 discord 机器人。
机器人可以正确播放音乐,但在音乐播放过程中尝试播放音效时,音效永远不会开始/结束。
我有以下代码用于播放音效。
function play(guildID, serverQueue, resource){
const newAudioPlayer = createAudioPlayer();
const oldAudioPlayer = serverQueue.audioPlayer;
const connection = getVoiceConnection(guildID)
oldAudioPlayer.pause();
connection.subscribe(newAudioPlayer);
newAudioPlayer.on(AudioPlayerStatus.Idle, () => {
console.log("Done playing");
connection.subscribe(oldAudioPlayer);
oldAudioPlayer.unpause();
newAudioPlayer.stop();
}).on('error', err => {
console.log("Something went wrong when trying to play sound effect");
console.log(err);
connection.subscribe(oldAudioPlayer);
oldAudioPlayer.unpause();
newAudioPlayer.stop();
})
newAudioPlayer.play(resource);
console.log("Trying to play");
}
我意识到语音连接一次只能订阅一个音频播放器,而音频播放器一次只能播放一个资源。这就是为什么我创建了一个名为“newAudioPlayer”的新临时音频播放器来播放短音效。然后我暂停旧的音频播放器并订阅与新音频播放器的连接。
只要 oldAudioPlayer 之前没有被用于播放资源,声音效果就会正确播放。一旦使用 oldAudioPlayer 播放资源,newAudioPlayer 就永远不会开始播放资源。我已经为 newAudioPlayer 检查了所有不同的 AudioPlayerStates,但没有一个被触发。
serverQueue.audioPlayer 在加入语音通道时初始化,并始终设置。
程序确实打印“尝试播放”,但听不到任何声音。
【问题讨论】:
标签: node.js discord discord.js