简体   繁体   中英

get server-display-nickname from every User on Discord - Python Api Bot

Sorry, my english is not that good. I have a problem: my own discord bot in python should return all members (.nick, not the discord login-in username) on a specific discord server. But at the moment my discord bot, on a normal chanel (text-chanel, the bot has all available permissions), returns me only an empty list. Only in a Voice-Chanel it returns a members-list.

So Jungs, für unsere Deutschen: wir brauchen eine Liste aller Members mit ihren jeweiligen Nicknamen auf einem Discord-Server. Wir haben bereits versucht einen Member zu erstellen, jedoch klappt es nicht so ganz, da wir entweder keinen gültigen Member erzeugen (Rückgabewert = None) oder kein Nick angezeigt wird und wir nur einen User rausbekommen. Problem ist auch, sobald wir versuchen über Text-Channel die Members abzurufen, bekommen wir nur eine leere Liste aller Members, aber innerhalb eines Voice-Channels bekommen wir eine gültige Liste aller Members, die sich zu diesem Zeitpunkt in dem Voice-Channel befinden.

Sorry, erklären ist auch nicht unsere Stärke. Danke für Eure Verständnis!

Maybe you tried to use .users[i].name? for eg.

client = discord.Client()
for i in range(len(client.users)):
    print(client.users[i].name)

A list consisting of strings with users nicknames if they exist, else user names is easy to create with

names = [x.display_name for x in guild.members]

in case you want more data with it, you can do something one the lines of

data = [{"id": x.id, "name": x.name, "nick": x.nick} for x in guild.members]

which would give you a list of dictionaries containing the user name, id and nick (if exists, else that will be None )

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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