2017-09-08 1 views
3

Je tente d'itérer sur la sortie de discord.Server.roles afin de sortir chaque rôle sur le serveur auquel je me connecte.Quelle est la bonne opération pour renvoyer un itérable de rôles de serveur?

Les états de documentation pour cette déclaration:

rôles

Une liste de Role que le serveur dispose.

Cependant, il semble que la sortie résultante est un class appelé member_descriptor qui est non itérables.

Voir mon exemple ci-dessous:

import discord 
import asyncio 

client = discord.Client() 

@client.event 
async def on_ready(): 
    print(type(discord.Server.roles)) 
    try: 
     for i in discord.Server.roles: 
      print(i) 
    except: 
     print("Object is not iterable") 

client.run(MY_SESSION_KEY) 

qui le sait s'il est possible de retourner une liste de rôles qu'un serveur a pour cette déclaration ne retourne pas une liste mais une classe?

+2

Vous ne l'avez pas dit votre programme avec le serveur pour afficher les rôles de, 'discord.Server' est juste une classe de descripteur, vous avez besoin utiliser un serveur réel. – abccd

Répondre

3

Vous avez besoin d'un objet serveur réalisé, pas seulement de la définition de classe.

En fait, au lieu d'utiliser discord.Server, vous devez utiliser client.get_server("ID of server")

def on_ready(): 
    server = client.get_server("id") 
    for r in server.roles: 
     print(r.name)