# █▀▀ ▄▀█   █▀▄▀█ █▀█ █▀▄ █▀ # █▀░ █▀█   █░▀░█ █▄█ █▄▀ ▄█ # https://t.me/famods # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # --------------------------------------------------------------------------------- # Name: HetaLib # Description: Модуль для работы с heta # meta developer: @FAmods # meta banner: https://github.com/FajoX1/FAmods/blob/main/assets/banners/hetalib.png?raw=true # requires: heta==1.0.2 requests # --------------------------------------------------------------------------------- import heta import asyncio import requests import logging from .. import loader, utils logger = logging.getLogger(__name__) @loader.tds class HetaLib(loader.Module): """Модуль для работы с heta""" strings = { "name": "HetaLib", "no_q": " Должно быть {}hsearch [запрос]", "no_hh": " Должно быть {}decode_hhash [хэш]", "no_repo": " Должно быть {}mods_repo [ссылка_на_репозиторий]", "invalid_hh": "😕 Неверный хэш", "invalid_repo": "😕 Неверный репозиторий модулей", "no_modules_in_repo": "😕 Нету модулей в репозитории", "searching": "🔄 Поиск модулей...", "receiving_modules": "🔄 Получаю модули...", "decoding": "🔄 Декодирую хэш...", } app_name = "famods Hetalib" def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "search_limit_result", 5, lambda: "Максимум результатов поиска будет при поиске модулей.", ), ) async def client_ready(self, client, db): self.db = db self._client = client @loader.command() async def hsearch(self, message): """Поиск модуля в heta""" q = utils.get_args_raw(message) if not q: return await utils.answer(message, self.strings["no_q"].format(self.get_prefix())) await utils.answer(message, self.strings['searching']) smods = heta.search(query=q, limit=self.config["search_limit_result"], app_name=self.app_name) mtext = f"""⛩ Heta search ⛩ 🔎 Запрос: {q} """ for mod in smods: mtext += f"""🖥 {mod['module']['name']} (source) by {mod['module']['dev']} ℹ️ {mod['module']['cls_doc']} {self.get_prefix()}dlh {mod['module']['hash']} —— """ await utils.answer(message, mtext) @loader.command() async def decode_hhash(self, message): """Декодировать heta hash""" hhash = utils.get_args_raw(message) if not hhash: return await utils.answer(message, self.strings["no_hh"].format(self.get_prefix())) await utils.answer(message, self.strings['decoding']) try: hh_info = heta.decode_hash(mhash=hhash, app_name=self.app_name) except requests.exceptions.JSONDecodeError: return await utils.answer(message, self.strings['invalid_hh']) await utils.answer(message, f""" 🖥 {hh_info['name']} (source) {self.get_prefix()}dlh {hhash} """) @loader.command() async def mods_repo(self, message): """Получить модули с репозитория""" rep = utils.get_args_raw(message) if not rep: return await utils.answer(message, self.strings["no_repo"].format(self.get_prefix())) await utils.answer(message, self.strings['receiving_modules']) try: mods = heta.repo.get_modules(repo=rep) except requests.exceptions.MissingSchema: return await utils.answer(message, self.strings['invalid_repo']) if mods == "no modules": return await utils.answer(message, self.strings['no_modules_in_repo']) mdsrepo = f""" 🖥 Модули из этого репозитория """ for mod in mods: mdsrepo += f"{mod['name']} (ссылка)\n" await utils.answer(message, mdsrepo)