我尝试使用discord.js v13实时检测语音频道中每个成员是否在发言。
换句话说,我想在我的应用程序中复制discord的绿色圆圈。
然而,我无法找到合适的代码示例或文章。
你能给我一些建议吗?
编辑:
根据建议,我成功解决了这个问题。 Recorder BOT示例 很有用。 下面是一个代码示例。
编辑:
根据建议,我成功解决了这个问题。 Recorder BOT示例 很有用。 下面是一个代码示例。
const { Client, Intents, VoiceChannel } = require('discord.js')
const { joinVoiceChannel, getVoiceConnection, entersState, VoiceConnectionStatus } = require('@discordjs/voice');
const client = new Client({ intents: ['GUILD_VOICE_STATES', 'GUILD_MESSAGES', 'GUILDS'] });
client.on("messageCreate", async (message) => {
if(message.content.toLowerCase() === "test") {
var connection = getVoiceConnection(message.guildId)
if(!connection){
connection = joinVoiceChannel({
channelId: message.member.voice.channelId,
guildId: message.guildId,
adapterCreator: message.guild.voiceAdapterCreator,
selfDeaf: false,
selfMute: true,
});
}
try {
await entersState(connection, VoiceConnectionStatus.Ready, 20e3);
connection.receiver.speaking.on("start", (userId) => {
console.log( `${userId} start` );
});
connection.receiver.speaking.on("end", (userId) => {
console.log( `${userId} end` );
});
console.log( "Ready" );
} catch (error) {
console.warn(error);
}
}
});
client.login('YOUR-TOKEN')