返回可迭代的服务器角色的正确操作是什么?

What is the correct operation for returning an iterable of server roles?

我正在尝试迭代 discord.Server.roles 的输出,以便在我连接的服务器上输出每个角色。

文档声明了这一点:

roles

A list of Role that the server has available.

然而,结果输出似乎是一个名为 member_descriptorclass,它是不可迭代的。

请参阅下面的示例:

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)

是否有人知道是否可以 return 服务器具有的角色列表,因为此声明不是 return 列表而是 class?

您需要一个已实现的服务器对象,而不仅仅是 class 定义。

基本上,您应该使用 client.get_server("ID of server")

而不是 discord.Server
def on_ready():
    server = client.get_server("id")
    for r in server.roles:
        print(r.name)