discord.py 如何获取用户连接的所有服务器的列表?

Posted

技术标签:

【中文标题】discord.py 如何获取用户连接的所有服务器的列表?【英文标题】:discord.py How do I get a list of all the servers a user is connected to? 【发布时间】:2021-06-19 18:13:28 【问题描述】:

discord.py 如何获取用户加入的所有服务器的列表?

我试过了,但失败了

await ctx.send(str(ctx.author.guilds))

但是,失败了……

如何获取用户加入的所有服务器的列表?

【问题讨论】:

【参考方案1】:

可能不是最快的方法,但一种方法是检查你的机器人所在的每个公会,然后检查 ctx.author 是否在该公会中。如果作者在该公会中,则该公会会附加到您的列表中,在这种情况下为shared_guilds

@client.command()
async def test(ctx):
    shared_guilds = []
    for guild in client.guilds:
        if ctx.author in guild.members:
            shared_guilds.append(guild)

    # This is just a clean way to send the message
    message = ""
    for guild in shared_guilds:
        message += f"`guild.name` \n"

    await ctx.send(f"Guilds I share with ctx.author: \nmessage")

上面的代码如下所示:

如果上述方法不起作用,您可能需要启用 intents。 You can view how to do this here.

编辑

discord.py 版本 1.7+ 有 User.mutual_guilds 属性:

@client.command()
async def test(ctx):
    shared_guilds = ctx.author.mutual_guilds

    # This is just a clean way to send the message
    message = ""
    for guild in shared_guilds:
        message += f"`guild.name` \n"

    await ctx.send(f"Guilds I share with ctx.author: \nmessage")

版本1.7尚未发布,你可以等到发布,或者直接从github安装。

【讨论】:

值得一提的是,在 discord.py 1.7+ 中有 User.mutual_guilds 属性 这是真的,我会在我的回答中添加如何做到这一点™ 编辑:自己不知道怎么做,如果可以请提供这个例子 只需ctx.author.mutual_guilds

以上是关于discord.py 如何获取用户连接的所有服务器的列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ID discord.py 中获取成员对象

如何使用 discord.py 获取不和谐用户的用户 ID

如何使用 discord.py 获取所有文本频道?

Discord.py:如何从 UserID 获取用户?

如何使用用户帐户获取/获取消息 (discord.py)

如何通过 discord.py 重写从提到的用户那里获取输入?