diff --git a/fiksofficial/python-modules/README.md b/fiksofficial/python-modules/README.md index fdaa62c..305e38a 100644 --- a/fiksofficial/python-modules/README.md +++ b/fiksofficial/python-modules/README.md @@ -1,2 +1,19 @@ # Модули канала [@PyModule](https://pymodule.t.me) -На все модули распространяется [лицензия "GNU General Public License v3.0"](https://github.com/fiksofficial/python-modules/blob/main/LICENSE) +На все модули распространяется [лицензия "GNU General Public License v3.0"](LICENSE) + +## Как установить модуль? +Для начала надо добавить репозиторий +``` +.addrepo python-modules.vervel.app +``` +Потом пишете ```.dlm {название модуля}``` и вы успешно установили модуль. + +> [!TIP] +> Если вы не хотите добавлять репозиторий то напишите ```.dlm python-modules.vervel.app/{название модуля}.py``` + +### Список задач +- [x] Попасть в FHeta +- [x] Попасть в Limoka +- [x] Попасть в команду верефицированных разработчиков модулей Heroku +- [] Soon... + diff --git a/fiksofficial/python-modules/full.txt b/fiksofficial/python-modules/full.txt index cfdb2b6..d49f815 100644 --- a/fiksofficial/python-modules/full.txt +++ b/fiksofficial/python-modules/full.txt @@ -16,4 +16,5 @@ githubinfo qrgen wiki checkhost -createavatarspack \ No newline at end of file +createavatarspack +multiunloadmodule \ No newline at end of file diff --git a/fiksofficial/python-modules/multiunloadmodule.py b/fiksofficial/python-modules/multiunloadmodule.py new file mode 100644 index 0000000..5560600 --- /dev/null +++ b/fiksofficial/python-modules/multiunloadmodule.py @@ -0,0 +1,68 @@ +# ______ ___ ___ _ _ +# ____ | ___ \ | \/ | | | | | +# / __ \| |_/ / _| . . | ___ __| |_ _| | ___ +# / / _` | __/ | | | |\/| |/ _ \ / _` | | | | |/ _ \ +# | | (_| | | | |_| | | | | (_) | (_| | |_| | | __/ +# \ \__,_\_| \__, \_| |_/\___/ \__,_|\__,_|_|\___| +# \____/ __/ | +# |___/ + +# На модуль распространяется лицензия "GNU General Public License v3.0" +# https://github.com/all-licenses/GNU-General-Public-License-v3.0 + +# meta developer: @pymodule +# requires: asyncio + +from .. import loader, utils +import asyncio + + +@loader.tds +class MultiUnloadModule(loader.Module): + """Unloads several modules at once with one command""" + + strings = { + "name": "MultiUnloadModule", + "processing": "Выгружаю модули...", + "done": "Выгрузка завершена.", + "no_modules": "Укажите хотя бы один модуль.", + "progress": "Выгружаю ({current}/{total}): {module}", + "error": "Ошибка при выгрузке {mod}: {e}", + } + + strings_ru = { + "processing": "Выгружаю модули...", + "done": "Выгрузка завершена.", + "no_modules": "Укажите хотя бы один модуль.", + "progress": "Выгружаю ({current}/{total}): {module}", + "error": "Error unloading {mod}: {e}", + } + + @loader.command(ru_doc="{модули через запятую} — выгрузить несколько модулей") + async def mulm(self, message): + """{modules separated by commas} - unload multiple modules""" + args = utils.get_args_raw(message) + if not args: + await utils.answer(message, self.strings("no_modules")) + return + + modules = [m.strip() for m in args.split(",") if m.strip()] + if not modules: + await utils.answer(message, self.strings("no_modules")) + return + + total = len(modules) + + for i, mod in enumerate(modules, start=1): + await message.edit(self.strings("progress").format( + current=i, + total=total, + module=mod + )) + try: + await self.invoke("unloadmod", mod, message=message) + except ValueError as e: + await message.edit(self.strings("error").format(mod=mod, e=e)) + await asyncio.sleep(1) + + await message.edit(self.strings("done")) \ No newline at end of file diff --git a/mead0wsss/mead0wsMods/AutomaticTranslator.py b/mead0wsss/mead0wsMods/AutomaticTranslator.py deleted file mode 100644 index 777acb8..0000000 --- a/mead0wsss/mead0wsMods/AutomaticTranslator.py +++ /dev/null @@ -1,92 +0,0 @@ -__version__ = (1, 0, 0) - -# ███╗░░░███╗███████╗░█████╗░██████╗░░█████╗░░██╗░░░░░░░██╗░██████╗░██████╗ -# ████╗░████║██╔════╝██╔══██╗██╔══██╗██╔══██╗░██║░░██╗░░██║██╔════╝██╔════╝ -# ██╔████╔██║█████╗░░███████║██║░░██║██║░░██║░╚██╗████╗██╔╝╚█████╗░╚█████╗░ -# ██║╚██╔╝██║██╔══╝░░██╔══██║██║░░██║██║░░██║░░████╔═████║░░╚═══██╗░╚═══██╗ -# ██║░╚═╝░██║███████╗██║░░██║██████╔╝╚█████╔╝░░╚██╔╝░╚██╔╝░██████╔╝██████╔╝ -# ╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░░╚═════╝░╚═════╝░ -# © Copyright 2025 -# ✈ https://t.me/mead0wssMods - -# scope: hikka_only -# scope: hikka_min 1.3.3 -# meta developer: @mead0wssMods -# meta banner: https://x0.at/GgLO.png - -import requests -from .. import loader, utils -from telethon import events - -@loader.tds -class AutomaticTranslator(loader.Module): - """Модуль для автоматического перевода сообщений на язык. Создан ради забавы.""" - strings = {"name": "AutomaticTranslator"} - - def __init__(self): - self.config = loader.ModuleConfig( - loader.ConfigValue( - "target_language", - "", - lambda: "Язык, на который будет производиться перевод (например, 'English').", - validator=loader.validators.String() - ), - loader.ConfigValue( - "enabled", - True, - lambda: "Включить или выключить автоматический перевод.", - validator=loader.validators.Boolean() - ) - ) - self.ignore_commands = ['off', 'on', 'cfg'] - - async def translate_text(self, text, target_language): - api_key = 'Bearer sk-l4HU4KwZt6bF8gOwwKCOMpfpIKvR9YhDHvTFIGJ6tJ5rPKXE' - data = { - "model": "deepseek-v3", - "messages": [ - {"role": "user", "content": f"Please translate the following text to {target_language}, no extra text, just translation: {text}"} - ] - } - - response = requests.post("https://cablyai.com/v1/chat/completions", headers={ - 'Authorization': f'Bearer {api_key}', - 'Content-Type': 'application/json', - }, json=data) - - if response.status_code == 200: - return response.json()["choices"][0]["message"]["content"] - else: - return None - - @loader.command() - async def oncmd(self, event): - """Включить автоматический перевод.""" - self.config["enabled"] = True - await event.edit("✅ Автоматический перевод включен.") - - @loader.command() - async def offcmd(self, event): - """Выключить автоматический перевод.""" - self.config["enabled"] = False - await event.edit("❌ Автоматический перевод выключен.") - - @loader.watcher(out=True) - async def message_watcher(self, message): - if not self.config["enabled"]: - return - - if message.raw_text.startswith(tuple(self.ignore_commands)): - return - - target_language = self.config["target_language"] - if not target_language: - return - - translated_text = await self.translate_text(message.raw_text, target_language) - - if translated_text: - await message.edit(translated_text) - else: - await message.edit("❌ Ошибка при переводе сообщения.") -# артемко лох