0

出于某种原因,我的代码突然无法按预期工作。它仅在几周前工作,但现在它拒绝工作。我忘记了我是如何篡改它的,但我很确定它不会太多。加入语音频道后,我的机器人尝试通过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?

4

0 回答 0