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("❌ Ошибка при переводе сообщения.")
-# артемко лох
diff --git a/modules.json b/modules.json
index 6d0e489..bd93185 100644
--- a/modules.json
+++ b/modules.json
@@ -22435,6 +22435,33 @@
"Chat"
]
},
+ "fiksofficial/python-modules/multiunloadmodule.py": {
+ "name": "MultiUnloadModule",
+ "description": "Unloads several modules at once with one command",
+ "meta": {
+ "pic": null,
+ "banner": null,
+ "developer": "@pymodule"
+ },
+ "commands": [
+ {
+ "mulm": "{modules separated by commas} - unload multiple modules {модули через запятую} — выгрузить несколько модулей"
+ }
+ ],
+ "new_commands": [
+ {
+ "mulm": {
+ "ru_doc": "{модули через запятую} — выгрузить несколько модулей",
+ "en_doc": null,
+ "doc": "{modules separated by commas} - unload multiple modules"
+ }
+ }
+ ],
+ "category": [
+ "Tools",
+ "Chat"
+ ]
+ },
"fiksofficial/python-modules/ai.py": {
"name": "AIModule",
"description": "Module for interacting with AI",
@@ -29113,43 +29140,6 @@
"Chat"
]
},
- "mead0wsss/mead0wsMods/AutomaticTranslator.py": {
- "name": "AutomaticTranslator",
- "description": "Модуль для автоматического перевода сообщений на язык. Создан ради забавы.",
- "meta": {
- "pic": null,
- "banner": "https://x0.at/GgLO.png",
- "developer": "@mead0wssMods"
- },
- "commands": [
- {
- "oncmd": "Включить автоматический перевод."
- },
- {
- "offcmd": "Выключить автоматический перевод."
- }
- ],
- "new_commands": [
- {
- "on": {
- "ru_doc": null,
- "en_doc": null,
- "doc": "Включить автоматический перевод."
- }
- },
- {
- "off": {
- "ru_doc": null,
- "en_doc": null,
- "doc": "Выключить автоматический перевод."
- }
- }
- ],
- "category": [
- "Chat",
- "Tools"
- ]
- },
"mead0wsss/mead0wsMods/DDNetStats.py": {
"name": "DDNetStats",
"description": "Модуль для просмотра статистики игрока DDNet через ddstats.tw",