简体   繁体   English

如何获取所有非机器人成员的列表,重写 Discord.py?

[英]How to get a list of all non-bot members, rewriting Discord.py?

I'm making a bot that scales a number, based on the number of members in the guild.我正在制作一个根据公会成员数量来缩放数字的机器人。 However, I don't want to include bots.但是,我不想包括机器人。

My Code:我的代码:

members = []
for member in client.get_all_members():
    if str(member.type) != 'bot':
        members.append(member)
print(members)
number = 10 * len(members)

You can use a list comprehension to make a list of all users where member.bot is False .您可以使用列表推导来制作member.botFalse的所有用户的列表。

members = [member for member in client.get_all_members() if not member.bot]
print(len(members))

This takes the client.get_all_members() generator and makes a new list in one line where all the users are not bots.这需要client.get_all_members()生成器并在所有用户都不是机器人的一行中创建一个新列表。

Then, we just print the length of that list, which you can use as needed.然后,我们只打印该列表的长度,您可以根据需要使用它。

Theres already a feature in discord api library. discord api 库中已经有一个功能。

client.users

Returns a list of all the users the bot can see.返回机器人可以看到的所有用户的列表。

Simply use只需使用

len(client.users)

Note that a member may be bot, but user is never a bot.请注意,成员可能是机器人,但用户绝不是机器人。

I found the problem, I was using the wrong format, all member objects have a boolean value called bot i just had to query it for false我发现了问题,我使用了错误的格式,所有成员对象都有一个名为 bot 的 boolean 值,我只需要查询它是否为 false

        members = []
        for member in client.get_all_members():
            if member.bot == False:
                members.append(member)
        print(members)
        number = 10 * len(members)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM