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

@@ -17,7 +17,7 @@ from meta.monitor import ComponentMonitor, ComponentStatus, StatusLevel
from utils.lib import utc_now, error_embed
from utils.ui import Confirm
from utils.data import MULTIVALUE_IN, MEMBERS
from wards import low_management_ward
from wards import high_management_ward
from core.data import CoreData
from data import NULL, ORDER
from modules.economy.data import TransactionType
@@ -118,7 +118,7 @@ class ScheduleCog(LionCog):
await self.settings.SessionChannels.setup(self.bot)
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)
if self.bot.is_ready():
await self.initialise()
@@ -1090,7 +1090,7 @@ class ScheduleCog(LionCog):
@appcmds.describe(
**{param: option._desc for param, option in config_params.items()}
)
@low_management_ward
@high_management_ward
async def configure_schedule_command(self, ctx: LionContext,
session_lobby: Optional[discord.TextChannel | discord.VoiceChannel] = None,
session_room: Optional[discord.VoiceChannel] = None,

View File

@@ -11,6 +11,7 @@ from meta import conf
from meta.errors import UserInputError
from meta.sharding import THIS_SHARD
from meta.logger import log_wrap
from wards import low_management_iward, high_management_iward
from babel.translator import ctx_translator
@@ -63,7 +64,8 @@ class ScheduleSettings(SettingGroup):
class SessionLobby(ModelData, ChannelSetting):
setting_id = 'session_lobby'
_event = 'guildset_session_lobby'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = high_management_iward
_display_name = _p('guildset:session_lobby', "session_lobby")
_desc = _p(
@@ -119,7 +121,8 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class SessionRoom(ModelData, ChannelSetting):
setting_id = 'session_room'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = high_management_iward
_display_name = _p('guildset:session_room', "session_room")
_desc = _p(
@@ -163,6 +166,7 @@ class ScheduleSettings(SettingGroup):
class SessionChannels(ListData, ChannelListSetting):
setting_id = 'session_channels'
_write_ward = high_management_iward
_display_name = _p('guildset:session_channels', "session_channels")
_desc = _p(
@@ -238,7 +242,8 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class ScheduleCost(ModelData, CoinSetting):
setting_id = 'schedule_cost'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = low_management_iward
_display_name = _p('guildset:schedule_cost', "schedule_cost")
_desc = _p(
@@ -283,7 +288,8 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class AttendanceReward(ModelData, CoinSetting):
setting_id = 'attendance_reward'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = low_management_iward
_display_name = _p('guildset:attendance_reward', "attendance_reward")
_desc = _p(
@@ -327,7 +333,8 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class AttendanceBonus(ModelData, CoinSetting):
setting_id = 'attendance_bonus'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = low_management_iward
_display_name = _p('guildset:attendance_bonus', "group_attendance_bonus")
_desc = _p(
@@ -370,7 +377,8 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class MinAttendance(ModelData, IntegerSetting):
setting_id = 'min_attendance'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = low_management_iward
_display_name = _p('guildset:min_attendance', "min_attendance")
_desc = _p(
@@ -437,8 +445,9 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class BlacklistRole(ModelData, RoleSetting):
setting_id = 'schedule_blacklist_role'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_event = 'guildset_schedule_blacklist_role'
_write_ward = high_management_iward
_display_name = _p('guildset:schedule_blacklist_role', "schedule_blacklist_role")
_desc = _p(
@@ -495,7 +504,8 @@ class ScheduleSettings(SettingGroup):
@ScheduleConfig.register_model_setting
class BlacklistAfter(ModelData, IntegerSetting):
setting_id = 'schedule_blacklist_after'
_set_cmd = 'configure schedule'
_set_cmd = 'admin config schedule'
_write_ward = low_management_iward
_display_name = _p('guildset:schedule_blacklist_after', "schedule_blacklist_after")
_desc = _p(

View File

@@ -78,6 +78,7 @@ class ScheduleSettingUI(ConfigUI):
# TODO: Setting value checks
await selection.response.defer()
setting = self.get_instance(ScheduleSettings.SessionLobby)
await setting.interaction_check(setting.parent_id, selection)
setting.value = selected.values[0] if selected.values else None
await setting.write()
@@ -95,6 +96,7 @@ class ScheduleSettingUI(ConfigUI):
async def room_menu(self, selection: discord.Interaction, selected: ChannelSelect):
await selection.response.defer()
setting = self.get_instance(ScheduleSettings.SessionRoom)
await setting.interaction_check(setting.parent_id, selection)
setting.value = selected.values[0] if selected.values else None
await setting.write()
@@ -113,6 +115,7 @@ class ScheduleSettingUI(ConfigUI):
# TODO: Consider XORing input
await selection.response.defer()
setting = self.get_instance(ScheduleSettings.SessionChannels)
await setting.interaction_check(setting.parent_id, selection)
setting.value = selected.values
await setting.write()
@@ -158,6 +161,7 @@ class ScheduleSettingUI(ConfigUI):
async def blacklist_role_menu(self, selection: discord.Interaction, selected: RoleSelect):
await selection.response.defer()
setting = self.get_instance(ScheduleSettings.BlacklistRole)
await setting.interaction_check(setting.parent_id, selection)
setting.value = selected.values[0] if selected.values else None
# TODO: Warning for insufficient permissions?
await setting.write()
@@ -227,7 +231,7 @@ class ScheduleSettingUI(ConfigUI):
class ScheduleDashboard(DashboardSection):
section_name = _p(
'dash:schedule|title',
"Scheduled Session Configuration ({commands[configure schedule]})"
"Scheduled Session Configuration ({commands[admin config schedule]})"
)
_option_name = _p(
"dash:schedule|dropdown|placeholder",
@@ -248,7 +252,7 @@ class ScheduleDashboard(DashboardSection):
page.add_field(
name=t(_p(
'dash:schedule|section:schedule_channels|name',
"Scheduled Session Channels ({commands[configure schedule]})",
"Scheduled Session Channels ({commands[admin config schedule]})",
)).format(commands=self.bot.core.mention_cache),
value=table,
inline=False
@@ -258,7 +262,7 @@ class ScheduleDashboard(DashboardSection):
page.add_field(
name=t(_p(
'dash:schedule|section:schedule_rewards|name',
"Scheduled Session Rewards ({commands[configure schedule]})",
"Scheduled Session Rewards ({commands[admin config schedule]})",
)).format(commands=self.bot.core.mention_cache),
value=table,
inline=False
@@ -268,7 +272,7 @@ class ScheduleDashboard(DashboardSection):
page.add_field(
name=t(_p(
'dash:schedule|section:schedule_blacklist|name',
"Scheduled Session Blacklist ({commands[configure schedule]})",
"Scheduled Session Blacklist ({commands[admin config schedule]})",
)).format(commands=self.bot.core.mention_cache),
value=table,
inline=False