rewrite: New 'Member Admin' module.

This commit is contained in:
2023-08-13 08:10:39 +03:00
parent 66e0641aab
commit 2eece69760
16 changed files with 1183 additions and 16 deletions

View File

@@ -56,6 +56,10 @@ class ConfigUI(LeoUI):
def page_instances(self):
return self.instances
def get_instance(self, setting_cls):
setting_id = setting_cls.setting_id
return next(instance for instance in self.instances if instance.setting_id == setting_id)
async def interaction_check(self, interaction: discord.Interaction):
"""
Default requirement for a Config UI is low management (i.e. manage_guild permissions).
@@ -102,7 +106,7 @@ class ConfigUI(LeoUI):
instances = self.page_instances
items = [setting.input_field for setting in instances]
# Filter out settings which don't have input fields
items = [item for item in items if item]
items = [item for item in items if item][:5]
strings = [item.value for item in items]
modal = ConfigEditor(*items, title=t(self.edit_modal_title))
@@ -313,8 +317,11 @@ class DashboardSection:
)
def make_table(self):
return self._make_table(self.instances)
def _make_table(self, instances):
rows = []
for setting in self.instances:
for setting in instances:
name = setting.display_name
value = setting.formatted
rows.append((name, value, setting.desc))

View File

@@ -12,8 +12,6 @@ from discord.ui.text_input import TextInput, TextStyle
from meta import conf, LionBot
from meta.errors import UserInputError, ResponseTimedOut
from utils.lib import error_embed
from babel.translator import ctx_translator, LazyStr
from ..lib import MessageArgs, utc_now
@@ -49,8 +47,14 @@ class MsgEditor(MessageUI):
# ----- API -----
async def format_data(self, data):
"""
Format a MessageData dict for rendering.
May be extended or overridden for custom formatting.
By default, uses the provided `formatter` callback (if provided).
"""
if self._formatter is not None:
self._formatter(data)
await self._formatter(data)
def copy_data(self):
return copy.deepcopy(self.history[-1])
@@ -567,12 +571,13 @@ class MsgEditor(MessageUI):
style=TextStyle.short,
required=True,
max_length=256,
default='True',
)
modal = MsgEditorInput(
position_field,
name_field,
value_field,
position_field,
inline_field,
title=t(_p('ui:msg_editor|modal:add_field|title', "Add Embed Field"))
)
@@ -1005,6 +1010,7 @@ class MsgEditor(MessageUI):
async def cont_button(interaction: discord.Interaction, pressed):
await interaction.response.defer()
await interaction.message.delete()
nonlocal stopped
stopped = True
# TODO: Clean up this mess. It works, but needs to be refactored to a timeout confirmation mixin.
# TODO: Consider moving the message to the interaction response