How do I make a list of all members in a discord s

2020-02-14 06:18发布

问题:

Hi guys I am writing a discord bot and I came across this error when trying to pull all the members from a server with the command !members in on_message event:

elif message.content.startswith('!members'):
    x = server.Server.members
    for member in x:
        print(member)

I want this command to pull all members and print them out in the console but I get the error TypeError: 'property' object is not iterable

when I type the command in the discord channel. Could anyone help me make a list of all members in the channel that I can have for further use?

回答1:

You need an instance of a server to get the members list from it.

Assuming this code appears in on_message(message), you should be able to change your

x = server.Server.members

to

x = message.server.members

Note that using Server with a capital S will return the class definition, whereas using the server property (lowercase s) from the message will retrieve an instance of Server.

If you're using a version >= 1.0.0, this will be

x = message.guild.members

instead.



回答2:

elif message.content.startswith('!members'):
    x = message.server.members
    for member in x:
        print(member.name) # you'll just print out Member objects your way.


回答3:

I think you can do it so that the code is shorter

elif message.content.startswith('!members'):
    print(", ".join([member.name for member in message.server.members])) #You do the list with names of roles and print this without cycle