Python Discord Bot - 在不同的服务器中获取用户角色

Python Discord Bot - Get a users roles in a different server

所以我可以使用以下代码检查用户在服务器中的角色:

        #Check Admin:
        playerRoles = []
        for x in message.author.roles:
            playerRoles.append(str(x))
        if "Admin" in playerRoles:

但我希望机器人能够检测到它们在 与发出命令的服务器不同的服务器中的角色。我希望命令能够通过 DMing 发送给机器人,所以显然我不能使用 message.author.roles 因为用户在 DM 中没有角色,他在服务器中扮演角色。

这是我尝试过的:

        #Check Roles:
        playerRoles = []
        #target the user manually to get his roles in the event of a DM
        pepeServer = client.get_guild(guildID)
        targetUser = discord.utils.get(pepeServer.members, id=userID)
        for x in targetUser.roles:
            playerRoles.append(str(x))

这个returns一个错误就行了"for x in targetUser.roles:"

AttributeError: 'NoneType' 对象没有属性 'roles'

我猜它得到的"targetUser"不是那种有角色的。感觉不好的人。如何从 DM 中发出的命令获取用户在服务器中的角色?

感谢帮助

AttributeError: 'NoneType' object has no attribute 'roles' 表示 targetUserNone.

所以你的 discord.utils.get(pepeServer.members, id=userID) 没有 return 任何东西。

检查服务器和用户 ID。