gpt4 book ai didi

javascript - 如何使用 Discord.js v13 实时获取发言状态

转载 作者:行者123 更新时间:2023-12-05 05:48:45 24 4
gpt4 key购买 nike

我尝试使用 discord.js v13 实时检测每个成员是否在语音 channel 上讲话。换句话说,我想在我的应用程序中重现不和谐的绿色圆圈。但是,我找不到合适的代码示例或文章。你能给我一些建议吗?

编辑:

根据建议,我能够解决它。 The example of 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')

最佳答案

搜索这个似乎表明这曾经是可能的,但众所周知被破坏了,因为事件不会触发,或者只会触发一次。

client.voiceStateUpdate 事件曾经为您提供一个具有说话属性的 VoiceState,它会告诉您是否有人在说话(这似乎从未真正起作用)。

VoiceState 的当前 discord.js 文档显示此属性不再存在,并且您不能单独使用 discord.js 来完成您要问的事情。

编辑:根据下面 MrMythical 的评论,discord.js/voice 有 voiceRecievers,它公开了 voiceReciever.speakingMap.users ,当前正在说话的用户的 map 。你可以通过注册一个监听器来获取它的事件。

关于javascript - 如何使用 Discord.js v13 实时获取发言状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70770884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com