feat(config): Split mod and admin config.

This commit is contained in:
2023-10-16 21:43:54 +03:00
parent d9c58806cf
commit ab39ceee71
44 changed files with 227 additions and 102 deletions

View File

@@ -140,7 +140,7 @@ class RankCog(LionCog):
self.bot.core.guild_config.register_model_setting(self.settings.DMRanks)
configcog = self.bot.get_cog('ConfigCog')
self.crossload_group(self.configure_group, configcog.configure_group)
self.crossload_group(self.configure_group, configcog.admin_config_group)
def ranklock(self, guildid):
lock = self._rank_locks.get(guildid, None)
@@ -926,7 +926,6 @@ class RankCog(LionCog):
dm_ranks=RankSettings.DMRanks._desc,
rank_channel=RankSettings.RankChannel._desc,
)
@appcmds.default_permissions(administrator=True)
@high_management_ward
async def configure_ranks_cmd(self, ctx: LionContext,
rank_type: Optional[Transformed[RankTypeChoice, AppCommandOptionType.string]] = None,

View File

@@ -4,6 +4,7 @@ from settings.setting_types import BoolSetting, ChannelSetting, EnumSetting
from core.data import RankType, CoreData
from babel.translator import ctx_translator
from wards import high_management_iward
from . import babel
@@ -40,7 +41,8 @@ class RankSettings(SettingGroup):
setting_id = 'rank_type'
_event = 'guildset_rank_type'
_set_cmd = 'configure ranks'
_set_cmd = 'admin config ranks'
_write_ward = high_management_iward
_display_name = _p('guildset:rank_type', "rank_type")
_desc = _p(
@@ -98,7 +100,8 @@ class RankSettings(SettingGroup):
If DMRanks is set, this will only be used when the target user has disabled DM notifications.
"""
setting_id = 'rank_channel'
_set_cmd = 'configure ranks'
_set_cmd = 'admin config ranks'
_write_ward = high_management_iward
_display_name = _p('guildset:rank_channel', "rank_channel")
_desc = _p(
@@ -148,7 +151,8 @@ class RankSettings(SettingGroup):
Whether to DM rank notifications.
"""
setting_id = 'dm_ranks'
_set_cmd = 'configure ranks'
_set_cmd = 'admin config ranks'
_write_ward = high_management_iward
_display_name = _p('guildset:dm_ranks', "dm_ranks")
_desc = _p(

View File

@@ -69,6 +69,7 @@ class RankConfigUI(ConfigUI):
async def type_menu(self, selection: discord.Interaction, selected: Select):
await selection.response.defer(thinking=True)
setting = self.instances[0]
await setting.interaction_check(setting.parent_id, selection)
value = selected.values[0]
data = RankType((value,))
setting.data = data
@@ -117,6 +118,7 @@ class RankConfigUI(ConfigUI):
async def channel_menu(self, selection: discord.Interaction, selected: ChannelSelect):
await selection.response.defer()
setting = self.instances[2]
await setting.interaction_check(setting.parent_id, selection)
setting.value = selected.values[0] if selected.values else None
await setting.write()
@@ -168,7 +170,7 @@ class RankConfigUI(ConfigUI):
class RankDashboard(DashboardSection):
section_name = _p(
'dash:rank|title',
"Rank Configuration ({commands[configure ranks]})",
"Rank Configuration ({commands[admin config ranks]})",
)
_option_name = _p(
"dash:rank|dropdown|placeholder",

View File

@@ -430,7 +430,7 @@ class RankOverviewUI(MessageUI):
"Ranks are determined by *all-time* statistics.\n"
"To reward ranks from a later time (e.g. to have monthly/quarterly/yearly ranks) "
"set the `season_start` with {stats_cmd}"
)).format(stats_cmd=self.bot.core.mention_cmd('configure statistics'))
)).format(stats_cmd=self.bot.core.mention_cmd('admin config statistics'))
if self.rank_type is RankType.VOICE:
addendum = t(_p(
'ui:rank_overview|embed|field:note|value|voice_addendum',