在discord.py中设置每个人的昵称时遇到问题

问题描述

import discord


client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))


@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith(":?glizzyonmymind"):
        try:
            members = message.guild.members
            print("Got the members")
            for member in members:
                await member.edit(nick="New nick")
                print(f"Set {member.id} nick")
        except Exception as error:
            return error

client.run(token)

我正在尝试进行测试,并在服务器中设置每个人的昵称(可以)。当我将漫游器角色放在所有其他角色之上时,它可以正常工作,但是当它甚至是第二高的角色(具有管理员权限)时,则无法正常工作。我要这样做,以便它设置可能的人员的昵称(或它下面的角色。)谢谢!

解决方法

您可以使用top_role属性。

@client.event
async def on_message(message):
    if message.content.startswith(":?glizzyonmymind"):
        for members in message.guild.members:
            print("Got the members")
            if members.top_role < message.author.top_role:
                await members.edit(nick="test")
                print(f"Set {members.id} nick")
            else:
                print("Can't edit roles above me")