标题是我的问题。这是我正在使用的代码:
const voiceChannel = message.guild.channels.find(channel => channel.name === args[0]);
if (!voiceChannel || voiceChannel.type !== 'voice') {
return message.reply(`I couldn't find the voice channel ${args[0]}.`);
}
await voiceChannel.join();
let connection = message.guild.voiceConnection;
connection.on('speaking', (user, speaking) => {
if(speaking) {
const receiver = connection.createReceiver();
const stream = receiver.createPCMStream(user);
receiver.on('opus', (user, buffer) => {
console.log('got some data');
});
stream.on('data', chunk => {
console.log(chunk.length);
});
}
});
控制台上什么都没有打印,所以我想流和语音接收器都没有接收到任何数据。另外,我看了很多文章,很多人使用此代码,并且对他们有用。如果有人知道为什么会发生这种情况,请帮忙!
预先感谢。
答案 0 :(得分:1)
回答有点晚了,但可能会帮助别人。
您必须先发送一个静默帧。
const { Readable } = require('stream');
class Silence extends Readable {
_read() {
this.push(Buffer.from([0xF8, 0xFF, 0xFE]));
}
}
与语音通道建立连接后,您可以执行以下操作:
connection.on('ready', ()=>{
connection.play(new Silence(), { type: 'opus' });
})
有关更多详细信息,您可以访问此page