【发布时间】:2021-06-01 08:15:46
【问题描述】:
我一直在尝试使用电子通过不和谐机器人播放声音。但是,我遇到了三个问题。
第一个是我通常用来播放声音文件的代码,尽管 discord 返回一个错误,指出我缺少 opus.node 和 opusscript。这不应该发生,因为我已经安装了@discordjs/opus,并且在电子实例之外运行相同的代码工作得很好。
message.member.voice.channel.join().then((connection) => {
const dispatcher = connection.play(ytdl("https://www.youtube.com/watch?v=ZlAU_w7-Xp8", { quality: "highestaudio" }));
dispatcher.on("finish", () => {
console.log("Song is finished.");
});
});
为了解决这个错误,我安装了 opusscript。然而,这是第二个问题出现的地方。我能够运行声音 - 前 9 次。第九次后,机器人发出以下错误:
(node:21064) UnhandledPromiseRejectionWarning: RangeError: offset is out of bounds
at Uint16Array.set (<anonymous>)
at OpusScript.encode (C:\Users\spiralio\Desktop\sb\node_modules\opusscript\index.js:67:16)
at Encoder._encode (C:\Users\spiralio\Desktop\sb\node_modules\prism-media\src\opus\Opus.js:60:25)
at Encoder._transform (C:\Users\spiralio\Desktop\sb\node_modules\prism-media\src\opus\Opus.js:157:30)
at Encoder.Transform._read (_stream_transform.js:191:10)
at Encoder.Transform._write (_stream_transform.js:179:12)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at Encoder.Writable.write (_stream_writable.js:318:11)
at VolumeTransformer.ondata (_stream_readable.js:716:22)
仅当我正在播放的声音文件与自身重叠 9 次时才会出现此错误。如果我让它在此错误播放之前完成,我可以继续播放声音就好了。但是,一旦出现错误,无论等待多久,声音都不再播放。
我尝试的一个解决方案是让机器人在渲染器进程而不是主进程中运行。但是,这会提示我机器人无法从浏览器连接到语音通道的问题。
【问题讨论】:
标签: node.js electron discord.js opus