Added and updated repositories 2025-08-16 01:05:28

This commit is contained in:
github-actions[bot]
2025-08-16 01:05:28 +00:00
parent af1067bc25
commit a2e69809b3
4 changed files with 88 additions and 94 deletions

View File

@@ -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...

View File

@@ -16,4 +16,5 @@ githubinfo
qrgen
wiki
checkhost
createavatarspack
createavatarspack
multiunloadmodule

View File

@@ -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": "<b>Выгружаю модули...</b>",
"done": "<b>Выгрузка завершена.</b>",
"no_modules": "<b>Укажите хотя бы один модуль.</b>",
"progress": "<b>Выгружаю ({current}/{total}):</b> <code>{module}</code>",
"error": "<b>Ошибка при выгрузке {mod}:</b> {e}",
}
strings_ru = {
"processing": "<b>Выгружаю модули...</b>",
"done": "<b>Выгрузка завершена.</b>",
"no_modules": "<b>Укажите хотя бы один модуль.</b>",
"progress": "<b>Выгружаю ({current}/{total}):</b> <code>{module}</code>",
"error": "<b>Error unloading {mod}:</b> {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"))

View File

@@ -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("❌ Ошибка при переводе сообщения.")
# артемко лох