Added highest role check #391
This commit is contained in:
parent
d91c76467d
commit
a9c9880fd4
@ -1,3 +1,5 @@
|
||||
from typing import Optional
|
||||
|
||||
import discord
|
||||
from cpl_core.configuration import ConfigurationABC
|
||||
from cpl_core.logging import LoggerABC
|
||||
@ -41,7 +43,11 @@ class ShortRoleNameService:
|
||||
before = ""
|
||||
after = ""
|
||||
new_nick = member.nick if member.nick is not None else member.name
|
||||
role_ids = List(discord.Role, member.roles).select(lambda x: x.id)
|
||||
member_roles = List(discord.Role, member.roles)
|
||||
highest_role: Optional[discord.Role] = (
|
||||
member_roles.last_or_default() if settings.short_role_name_only_set_highest_role else None
|
||||
)
|
||||
member_role_ids = member_roles.select(lambda x: x.id)
|
||||
|
||||
server = self._server.get_server_by_discord_id(member.guild.id)
|
||||
for short_role_name in self._short_role_names.get_short_role_names_by_server_id(server.id):
|
||||
@ -51,7 +57,11 @@ class ShortRoleNameService:
|
||||
new_nick = new_nick.replace(f"[{short_role_name.short_name}] ", "")
|
||||
new_nick = new_nick.replace(f"[{short_role_name.short_name}]", "")
|
||||
|
||||
if short_role_name.role_id not in role_ids:
|
||||
if (
|
||||
short_role_name.role_id not in member_role_ids
|
||||
or highest_role
|
||||
and highest_role.id != short_role_name.role_id
|
||||
):
|
||||
continue
|
||||
|
||||
if short_role_name.position == ShortRoleNamePositionEnum.before:
|
||||
|
Loading…
Reference in New Issue
Block a user