【问题标题】:check if an user is in a specific guild discord.js检查用户是否在特定的公会中 discord.js
【发布时间】:2021-04-27 09:19:47
【问题描述】:

我不知道这是否可能,但我正在尝试让我的机器人返回它与用户共享的所有服务器

所以我从 bot 所在的公会那里获得了所有 id,以及来自用户的 id。

而且我不知道如何检查每个公会是否有用户的 id。

我尝试过这样做:

let user_id = message.author.id;

let guild_list = [];

client.guilds.cache.forEach(guild => {
    guild_list.push(guild.id);
    })

for (let i = 0; i < guild_list.length; i++){

    let thisGuild = client.guilds.cache.get(guild_list[i]);

    if(thisGuild.member(user_id)){

        message.channel.send("Shared server : " + guild_list[i]);

    }

}

但是Guildmember 类只检查运行命令的服务器上的用户ID。 我不知道这是否可能,而且我在文档中找不到任何可以帮助我的东西。

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    很有可能……

    我们可以为此使用Collector#filter 方法,因为我们想要过滤机器人和作者所在的公会。

    const mutualGuilds = client.guilds.cache.filter((guild) => {
       return guild.members.cache.has(message.author.id);
    });
    
        // This will log the mutual guild(s) the bot and the author is in, of course you can change it however you'd like.
    console.log(mutualGuilds);
    

    就这么简单。

    【讨论】:

    • 并非所有用户都在成员缓存中。因此,该用户可能不在缓存中,并且机器人没有返回任何公会。我会推荐 fetch,它返回一个 Promise。
    • 这行得通。但是没有办法只返回公会的ID吗?它正在返回某种包含太多信息的对象。
    • 你可以映射mutualGuilds。
    猜你喜欢
    • 2023-03-03
    • 2021-10-28
    • 2021-10-25
    • 2021-07-20
    • 2021-08-12
    • 1970-01-01
    • 2020-07-05
    • 2020-12-25
    • 2022-01-09
    相关资源
    最近更新 更多