feat(admin): Implement admin role.

This commit is contained in:
2023-10-16 10:39:11 +03:00
parent acf1a8bc1c
commit d9c58806cf
4 changed files with 103 additions and 8 deletions

View File

@@ -18,9 +18,10 @@ _p = babel._p
class ModerationSettingUI(ConfigUI):
setting_classes = (
ModerationSettings.ModRole,
ModerationSettings.AdminRole,
ModerationSettings.TicketLog,
ModerationSettings.AlertChannel,
ModerationSettings.ModRole,
)
def __init__(self, bot: LionBot, guildid: int, channelid, **kwargs):
@@ -103,6 +104,31 @@ class ModerationSettingUI(ConfigUI):
"Select Moderator Role"
))
# Admin Role Selector
@select(
cls=RoleSelect,
placeholder="ADMINROLE_MENU_PLACEHOLDER",
min_values=0, max_values=1
)
async def adminrole_menu(self, selection: discord.Interaction, selected: RoleSelect):
"""
Single role selector for the `admin_role` setting.
"""
await selection.response.defer(thinking=True, ephemeral=True)
setting = self.get_instance(ModerationSettings.AdminRole)
setting.value = selected.values[0] if selected.values else None
await setting.write()
await selection.delete_original_response()
async def adminrole_menu_refresh(self):
menu = self.adminrole_menu
t = self.bot.translator.t
menu.placeholder = t(_p(
'ui:moderation_config|menu:adminrole|placeholder',
"Select Admin Role"
))
# ----- UI Flow -----
async def make_message(self) -> MessageArgs:
t = self.bot.translator.t
@@ -133,13 +159,15 @@ class ModerationSettingUI(ConfigUI):
self.ticket_log_menu_refresh(),
self.alert_channel_menu_refresh(),
self.modrole_menu_refresh(),
self.adminrole_menu_refresh(),
)
await asyncio.gather(*component_refresh)
self.set_layout(
(self.adminrole_menu,),
(self.modrole_menu,),
(self.ticket_log_menu,),
(self.alert_channel_menu,),
(self.modrole_menu,),
(self.edit_button, self.reset_button, self.close_button,)
)