How do I make a list of all members in a discord server using discord.py?

妖精的绣舞 提交于 2019-12-18 09:02:52

问题


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


来源:https://stackoverflow.com/questions/47733376/how-do-i-make-a-list-of-all-members-in-a-discord-server-using-discord-py

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!