【问题标题】:Discord.js How to know that user are in voice chat or not? [duplicate]Discord.js 如何知道用户是否在语音聊天中? [复制]
【发布时间】:2021-10-11 12:40:57
【问题描述】:

我的问题是我想让我的机器人检查用户是否在语音聊天中或不在第 8 行,但我不知道如何检查 以及如何获取用户所在的语音聊天 ID?

我应该使用什么或做什么?

这是我的代码

if (CMD_NAME === 'poke' && msg.channel.type != 'dm') {
    const channel = client.channels.cache.get(msg.author.lastMessageChannelID);
    msg.delete();
    if (args[0] != null) {
        var Target = msg.guild.member(msg.mentions.users.first() || msg.guild.members.fetch(args[0]))
        var GuildMember = msg.guild.members.cache.get(Target.user.id)

        if (Target && GuildMember && msg.member.voice.channel != null && // Check that users are in voice chat //) {
            var MainChannel = // The ID of voice chat that users are in //
            var ChannelID = []
            var server = msg.guild;
            var i = 0
                    
            if (args[1] == null) {
                args[1] = 5
            }
                    
            var Time = args[1]
    
            for (const channel of server.channels.cache.array()) {
                if (channel.type == 'voice' && channel.id != MainChannel) {
                    ChannelID.push(channel.id);
                }
                    
            }
    
            if (Time > 5) {
                Time = 5
            }
    
            function Move() {
                setTimeout(function() {
                    if (GuildMember != null && MainChannel != null) {
                        GuildMember.voice.setChannel(ChannelID[getRandomInt(0, ChannelID.length)])
                        i++;
                        if (i <= Time) {
                            Move()
                        } else if (i > Time && GuildMember != null && MainChannel != null) {
                            GuildMember.voice.setChannel(MainChannel)
                        }
                    }
                }, 900)
            }
                    
            Move();
        }
    }
}

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    GuildMembers 有一个voice 属性(参见here),它返回一个VoiceState 的实例。如果成员未连接到语音,VoiceState.channel 将返回 null

    //member is an instance of GuildMember
    if(!member.voice.channel) {
    //member not connected to voice
    }
    

    要查看特定语音频道中的用户,请使用VoiceChannel.members

    //vchannel is an instance of VoiceChannel
    const { members } = vchannel
    //members is now a collection of members in the vc
    

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2019-10-21
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 2019-12-07
      • 2014-10-24
      相关资源
      最近更新 更多