Я отвечу в ответе, потому что в вашем коде много ошибок, и их трудно добавить в комментарий. Вы можете оставить комментарий под этой записью, если получите еще одну ошибку.
role = discord.utils.get(discord.Guild.roles, name="Member")
Ошибка, когда вы получаете роль по имени Участник. Лучше получить роль по идентификатору, вы можете сделать это, используя member.guild.get_role(630533613947060244)
. Ошибка в том, что discord.Guild.roles
не является итеративным свойством.
nick = discord.utils.get(str(member.nick))
Не уверен, что вы там собираетесь, вы можете использовать nick = member.nick
, чтобы получить строку с псевдонимом участника.
Для редактирования псевдонима вы должны использовать:
await member.edit(nick=f"[0] {member.display_name}")
AttributeError: у объекта 'User' нет атрибута 'top_role'
Вы получаете эту ошибку, потому что хотите получить доступ к атрибуту top_role
в экземпляре discord.User
, но только для этого атрибута определен только discord.Member
. Когда кто-то покидает сервер, вы получаете экземпляр User вместо экземпляра Member.
if isinstance(message.author, discord.Member):
top_role = message.author.top_role
else:
top_role = None # top role not available, user has no roles