- Show current options in module config
- Add new validators: `loader.validators.Union`, `loader.validators.NoneType`
pull/1/head
hikariatama 2022-06-06 16:54:31 +00:00
parent 3725d6ed25
commit ac8e7371e9
4 changed files with 64 additions and 6 deletions

View File

@ -29,7 +29,7 @@ class HikkaConfigMod(loader.Module):
strings = {
"name": "HikkaConfig",
"configure": "🎚 <b>Here you can configure your modules' configs</b>",
"configuring_mod": "🎚 <b>Choose config option for mod</b> <code>{}</code>",
"configuring_mod": "🎚 <b>Choose config option for mod</b> <code>{}</code>\n\n<b>Current options:</b>\n\n{}",
"configuring_option": "🎚 <b>Configuring option </b><code>{}</code><b> of mod </b><code>{}</code>\n<i> {}</i>\n\n<b>Default: </b><code>{}</code>\n\n<b>Current: </b><code>{}</code>\n\n{}",
"option_saved": "🎚 <b>Option </b><code>{}</code><b> of mod </b><code>{}</code><b> saved!</b>\n<b>Current: </b><code>{}</code>",
"option_reset": "♻️ <b>Option </b><code>{}</code><b> of mod </b><code>{}</code><b> has been reset to default</b>\n<b>Current: </b><code>{}</code>",
@ -38,7 +38,7 @@ class HikkaConfigMod(loader.Module):
"no_option": "🚫 <b>Configuration option doesn't exist</b>",
"validation_error": "🚫 <b>You entered incorrect config value. \nError: {}</b>",
"try_again": "🔁 Try again",
"typehint": "🕵️ <b>Must be a {}</b>",
"typehint": "🕵️ <b>Must be the {}</b>",
"set": "set",
"set_default_btn": "♻️ Reset default",
"enter_value_btn": "✍️ Enter value",
@ -53,7 +53,7 @@ class HikkaConfigMod(loader.Module):
strings_ru = {
"configure": "🎚 <b>Здесь можно управлять настройками модулей</b>",
"configuring_mod": "🎚 <b>Выбери параметр для модуля</b> <code>{}</code>",
"configuring_mod": "🎚 <b>Выбери параметр для модуля</b> <code>{}</code>\n\n<b>Текущие настройки:</b>\n\n{}",
"configuring_option": "🎚 <b>Управление параметром </b><code>{}</code><b> модуля </b><code>{}</code>\n<i> {}</i>\n\n<b>Стандартное: </b><code>{}</code>\n\n<b>Текущее: </b><code>{}</code>\n\n{}",
"option_saved": "🎚 <b>Параметр </b><code>{}</code><b> модуля </b><code>{}</code><b> сохранен!</b>\n<b>Текущее: </b><code>{}</code>",
"option_reset": "♻️ <b>Параметр </b><code>{}</code><b> модуля </b><code>{}</code><b> сброшен до значения по умолчанию</b>\n<b>Текущее: </b><code>{}</code>",
@ -500,7 +500,15 @@ class HikkaConfigMod(loader.Module):
]
await call.edit(
self.strings("configuring_mod").format(utils.escape_html(mod)),
self.strings("configuring_mod").format(
utils.escape_html(mod),
"\n".join(
[
f"▫️ <code>{utils.escape_html(key)}</code>: <code>{self.prep_value(value)}</code>"
for key, value in self.lookup(mod).config.items()
]
),
),
reply_markup=list(utils.chunks(btns, 2))
+ [
[

View File

@ -67,7 +67,10 @@ class HikkaInfoMod(loader.Module):
"custom_button",
["🌘 Support chat", "https://t.me/hikka_talks"],
lambda: self.strings("_cfg_cst_btn"),
validator=loader.validators.Series(fixed_len=2),
validator=loader.validators.Union(
loader.validators.Series(fixed_len=2),
loader.validators.NoneType(),
),
),
loader.ConfigValue(
"disable_banner",

View File

@ -451,3 +451,50 @@ def TelegramID() -> Validator:
"Telegram ID",
_internal_id="TelegramID",
)
def _Union(value: Any, /, *, validators: list):
for validator in validators:
try:
return validator.validate(value)
except ValidationError:
pass
raise ValidationError(f"Passed value ({value}) is not valid")
def Union(*validators) -> Validator:
doc = {
"en": "one of the following:\n",
"ru": "одним из следующего:\n",
}
case = lambda x: x[0].upper() + x[1:]
for validator in validators:
doc["en"] += f"- {case(validator.doc['en'])}\n"
doc["ru"] += f"- {case(validator.doc['ru'])}\n"
doc["en"] = doc["en"].strip()
doc["ru"] = doc["ru"].strip()
return Validator(
functools.partial(_Union, validators=validators),
doc,
_internal_id="Union",
)
def _NoneType(value: Any, /) -> None:
if value not in {None, False, ""}:
raise ValidationError(f"Passed value ({value}) is not None")
return None
def NoneType() -> Validator:
return Validator(
_NoneType,
"`None`",
_internal_id="NoneType",
)

View File

@ -1,2 +1,2 @@
"""Represents current userbot version"""
__version__ = (1, 2, 3)
__version__ = (1, 2, 4)