From bef9968a7454ed7d03c7986c4733ca8662269c2e Mon Sep 17 00:00:00 2001 From: hikariatama Date: Tue, 2 Aug 2022 22:29:33 +0000 Subject: [PATCH] 1.2.13 - Remove stupid db lock in `.e` - Allow `.security` and `.inlinesec` only to owner by default --- CHANGELOG.md | 2 ++ hikka/modules/hikka_security.py | 2 ++ hikka/modules/python.py | 57 +-------------------------------- hikka/modules/test.py | 9 +----- 4 files changed, 6 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9c4697..71b1569 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ - Add uptime to `.info` - Refactor `.help`, add version to single mod help message - Fix TypeError in `.e` when returning tl class instead of object +- Remove stupid db lock in `.e` +- Allow `.security` and `.inlinesec` only to owner by default ## 🌑 Hikka 1.2.12 diff --git a/hikka/modules/hikka_security.py b/hikka/modules/hikka_security.py index b138b66..27ead5a 100755 --- a/hikka/modules/hikka_security.py +++ b/hikka/modules/hikka_security.py @@ -360,6 +360,7 @@ class HikkaSecurityMod(loader.Module): return self._perms_map(config, is_inline) + @loader.owner async def securitycmd(self, message: Message): """[command] - Configure command's security settings""" args = utils.get_args_raw(message).lower().strip() @@ -385,6 +386,7 @@ class HikkaSecurityMod(loader.Module): ttl=5 * 60, ) + @loader.owner async def inlineseccmd(self, message: Message): """[command] - Configure inline command's security settings""" args = utils.get_args_raw(message).lower().strip() diff --git a/hikka/modules/python.py b/hikka/modules/python.py index 87ff126..e29899c 100755 --- a/hikka/modules/python.py +++ b/hikka/modules/python.py @@ -20,22 +20,11 @@ from telethon.errors.rpcerrorlist import MessageIdInvalidError from telethon.tl.types import Message from .. import loader, main, utils -from ..inline.types import InlineCall from ..log import HikkaException logger = logging.getLogger(__name__) -class FakeDbException(Exception): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - -class FakeDb: - def __getattr__(self, *args, **kwargs): - raise FakeDbException("Database read-write permission required") - - @loader.tds class PythonMod(loader.Module): """Evaluates python code""" @@ -44,27 +33,11 @@ class PythonMod(loader.Module): "name": "Python", "eval": "🎬 Code:\n{}\n🪄 Result:\n{}", "err": "🎬 Code:\n{}\n\n🚫 Error:\n{}", - "db_permission": ( - "⚠️ Do not use db.set, db.get " - "and other db operations. You have core modules to control anything you " - "want\n\nTheses commands may crash your userbot or " - "even make it unusable! Do it on your own risk\n\n" - "If you issue any errors after allowing this option, you will not " - "get any help in support chat!" - ), } strings_ru = { "eval": "🎬 Код:\n{}\n🪄 Результат:\n{}", "err": "🎬 Код:\n{}\n\n🚫 Ошибка:\n{}", - "db_permission": ( - "⚠️ Не используй db.set, db.get" - " и другие операции с базой данных. У тебя есть встроенные модуля для" - " управления ей\n\nЭти команды могут нарушить работу" - " юзербота, или вообще сломать его! Используй эти команды на" - " свой страх и риск\n\nЕсли появятся какие-либо проблемы, вызванные" - " после этой команды, ты не получишь помощи в чате!" - ), "_cmd_doc_eval": "Алиас для команды .e", "_cmd_doc_e": "Выполняет Python кодировка", "_cls_doc": "Выполняет Python код", @@ -78,11 +51,6 @@ class PythonMod(loader.Module): """Alias for .e command""" await self.ecmd(message) - async def inline__allow(self, call: InlineCall): - await call.answer("Now you can access db through .e command", show_alert=True) - self._db.set(main.__name__, "enable_db_eval", True) - await call.delete() - @loader.owner async def ecmd(self, message: Message): """Evaluates python code""" @@ -93,21 +61,6 @@ class PythonMod(loader.Module): globals(), **await self.getattrs(message), ) - except FakeDbException: - await self.inline.form( - self.strings("db_permission"), - message=message, - reply_markup=[ - [ - { - "text": "✅ Allow", - "callback": self.inline__allow, - }, - {"text": "🚫 Cancel", "action": "close"}, - ] - ], - ) - return except Exception: item = HikkaException.from_exc_info(*sys.exc_info()) exc = ( @@ -192,16 +145,8 @@ class PythonMod(loader.Module): "m": message, "lookup": self.lookup, "self": self, + "db": self.db, }, - **( - { - "db": self._db, - } - if self._db.get(main.__name__, "enable_db_eval", False) - else { - "db": FakeDb(), - } - ), } def get_sub(self, obj: Any, _depth: int = 1) -> dict: diff --git a/hikka/modules/test.py b/hikka/modules/test.py index 651f4d4..aa6c543 100755 --- a/hikka/modules/test.py +++ b/hikka/modules/test.py @@ -48,7 +48,7 @@ class TestMod(loader.Module): "logs_caption": ( "🌘 Hikka logs with verbosity {}\n\n👩‍🎤 Hikka" " version: {}.{}.{}{}\n⏱ Uptime:" - " {}\n{}\n\n{}\n\n{} NoNick\n{} Grep\n{}" + " {}\n{}\n\n{} NoNick\n{} Grep\n{}" " InlineLogs" ), "suspend_invalid_time": "🚫 Invalid time to suspend", @@ -71,8 +71,6 @@ class TestMod(loader.Module): " ignore this warning" ), "choose_loglevel": "💁‍♂️ Choose log level", - "database_unlocked": "🚫 DB eval unlocked", - "database_locked": "✅ DB eval locked", "bad_module": "🚫 Module not found", "debugging_enabled": ( "🧑‍💻 Debugging mode enabled for module {0}\nGo to" @@ -92,8 +90,6 @@ class TestMod(loader.Module): " {}.{}.{}{}\n⏱ Uptime: {}\n{}\n\n{}\n\n{}" " NoNick\n{} Grep\n{} InlineLogs" ), - "database_unlocked": "🚫 База скомпрометирована", - "database_locked": "✅ База защищена", "bad_module": "🚫 Модуль не найден", "debugging_enabled": ( "🧑‍💻 Режим разработчика включен для модуля" @@ -428,9 +424,6 @@ class TestMod(loader.Module): else "", utils.formatted_uptime(), utils.get_named_platform(), - self.strings( - f"database_{'un' if self._db.get(main.__name__, 'enable_db_eval', False) else ''}locked" - ), "✅" if self._db.get(main.__name__, "no_nickname", False) else "🚫", "✅" if self._db.get(main.__name__, "grep", False) else "🚫", "✅" if self._db.get(main.__name__, "inlinelogs", False) else "🚫",