出于某种原因,我的代码突然无法按预期工作。它仅在几周前工作,但现在它拒绝工作。我忘记了我是如何篡改它的,但我很确定它不会太多。加入语音频道后,我的机器人尝试通过ytdl()
from 函数提供的流创建 AudioResource ytdl-core
。之后,我在 AudioPlayer 中播放了资源并订阅了它。
...问题是,当机器人以绿色亮起(表示它正在说话)时,没有声音。它继续停留在那里,我认为这是我在离开前通过的流的持续时间。我有理由相信这部分有问题:
const songQueue = queue.get(message.guild.id);
let songPlayer = Voice.createAudioPlayer();
const waterMark = song.duration.seconds * 16384;
let source = await ytdl(song.url, {
filter: 'audioonly',
type: 'opus',
highWaterMark: waterMark,
requestOptions: {
headers: {
cookie: process.env.COOKIE
}
}
})
let stream = Voice.createAudioResource(source, {
inputType: Voice.StreamType.Arbitrary
})
try {
await songPlayer.play(stream);
} catch(err) {
console.log(err);
console.log(songPlayer);
}
当我尝试查看pipe()
结果时,它确实被写入了一个文件。问题是当我播放几秒钟时,它会一直播放到最后。这让我相信流可能存在问题......我是否因为等待或不等待某些代码行而搞砸了?
我知道ytdl
流是PassThrough
- 但似乎有一个问题。是否有替代方案,或者问题在于不和谐而不是 ytdl?