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

@@ -16,7 +16,7 @@ from utils.ui import Confirm
from constants import MAX_COINS
from core.data import CoreData
from wards import low_management_ward
from wards import high_management_ward
from . import babel, logger
from .data import RoomData
@@ -47,7 +47,7 @@ class RoomCog(LionCog):
self.bot.core.guild_config.register_model_setting(setting)
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()
@@ -414,7 +414,7 @@ class RoomCog(LionCog):
t(_p(
'cmd:room_rent|error:not_setup',
"The private room system has not been set up! "
"A private room category needs to be set first with `/configure rooms`."
"A private room category needs to be set first with `/admin config rooms`."
))
), ephemeral=True
)
@@ -987,8 +987,7 @@ class RoomCog(LionCog):
@appcmds.describe(
**{setting.setting_id: setting._desc for setting in RoomSettings.model_settings}
)
@appcmds.default_permissions(manage_guild=True)
@low_management_ward
@high_management_ward
async def configure_rooms_cmd(self, ctx: LionContext,
rooms_category: Optional[discord.CategoryChannel] = None,
rooms_price: Optional[Range[int, 0, MAX_COINS]] = None,

View File

@@ -5,6 +5,7 @@ from settings.setting_types import ChannelSetting, IntegerSetting, BoolSetting
from meta import conf
from core.data import CoreData
from babel.translator import ctx_translator
from wards import low_management_iward, high_management_iward
from . import babel
@@ -15,7 +16,8 @@ class RoomSettings(SettingGroup):
class Category(ModelData, ChannelSetting):
setting_id = 'rooms_category'
_event = 'guildset_rooms_category'
_set_cmd = 'configure rooms'
_set_cmd = 'admin config rooms'
_write_ward = high_management_iward
_display_name = _p(
'guildset:room_category', "rooms_category"
@@ -70,7 +72,8 @@ class RoomSettings(SettingGroup):
class Rent(ModelData, IntegerSetting):
setting_id = 'rooms_price'
_event = 'guildset_rooms_price'
_set_cmd = 'configure rooms'
_set_cmd = 'admin config rooms'
_write_ward = low_management_iward
_display_name = _p(
'guildset:rooms_price', "room_rent"
@@ -107,7 +110,8 @@ class RoomSettings(SettingGroup):
class MemberLimit(ModelData, IntegerSetting):
setting_id = 'rooms_slots'
_event = 'guildset_rooms_slots'
_set_cmd = 'configure rooms'
_set_cmd = 'admin config rooms'
_write_ward = low_management_iward
_display_name = _p('guildset:rooms_slots', "room_member_cap")
_desc = _p(
@@ -141,7 +145,8 @@ class RoomSettings(SettingGroup):
class Visible(ModelData, BoolSetting):
setting_id = 'rooms_visible'
_event = 'guildset_rooms_visible'
_set_cmd = 'configure rooms'
_set_cmd = 'admin config rooms'
_write_ward = high_management_iward
_display_name = _p('guildset:rooms_visible', "room_visibility")
_desc = _p(

View File

@@ -29,6 +29,7 @@ class RoomSettingUI(ConfigUI):
async def category_menu(self, selection: discord.Interaction, selected: ChannelSelect):
await selection.response.defer()
setting = self.instances[0]
await setting.interaction_check(setting.parent_id, selection)
setting.value = selected.values[0] if selected.values else None
await setting.write()
@@ -42,6 +43,7 @@ class RoomSettingUI(ConfigUI):
async def visible_button(self, press: discord.Interaction, pressed: Button):
await press.response.defer()
setting = next(inst for inst in self.instances if inst.setting_id == RoomSettings.Visible.setting_id)
await setting.interaction_check(setting.parent_id, press)
setting.value = not setting.value
await setting.write()
@@ -95,7 +97,7 @@ class RoomSettingUI(ConfigUI):
class RoomDashboard(DashboardSection):
section_name = _p(
'dash:rooms|title',
"Private Room Configuration ({commands[configure rooms]})"
"Private Room Configuration ({commands[admin config rooms]})"
)
_option_name = _p(
"dash:economy|dropdown|placeholder",