# --------------------------------------------------------------------------------- #░█▀▄░▄▀▀▄░█▀▄░█▀▀▄░█▀▀▄░█▀▀▀░▄▀▀▄░░░█▀▄▀█ #░█░░░█░░█░█░█░█▄▄▀░█▄▄█░█░▀▄░█░░█░░░█░▀░█ #░▀▀▀░░▀▀░░▀▀░░▀░▀▀░▀░░▀░▀▀▀▀░░▀▀░░░░▀░░▒▀ # Name: ModulesList. # Description: Channels of modules for userbot Hikka. # Author: @codrago # --------------------------------------------------------------------------------- # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # meta developer: @codrago_m # meta banner: https://raw.githubusercontent.com/coddrago/modules/refs/heads/main/banner.png # meta pic: https://envs.sh/HJH.webp # --------------------------------------------------------------------------------- from telethon.types import Message from .. import loader, utils from datetime import datetime as dt import datetime import json import requests @loader.tds class ModulesList(loader.Module): """Модуль для быстрого доступа к каналам с модулями""" strings = { "name": "ModList", "setted": "Text successfully added", "added": "Chat {} added", "chat_added": "Chat already added!", "channels": ( "🌘 Community-made modules\n" ), "officialChannels": ( "🌘 Community-made modules\n" "\n🦋 @morisummermods" "\n💚 @nalinormods" "\n🤩 @AstroModules" "\n💪 @vsecoder_m" "\n☺️ @mm_mods" "\n😈 @apodiktum_modules" "\n😇 @wilsonmods" "\n👑 @DorotoroMods" "\n✌️ @HikkaFTGmods" "\n🎈 @nercymods" "\n😐 @sqlmerr_m" "\n🥰 @AuroraModules" "\n📢 @codrago_m" ), } strings_ru = { "name": "ModList", "setted": "Текст успешно поставлен", "added": "Чат {} добавлен", "chat_added": "Чат уже добавлен!", } async def client_ready(self, client, db): self.db = db self._text = self.get("text", self.strings["channels"]) self._offtext = self.get("offtext", self.strings["officialChannels"]) self._floodwait: dict = self.get("floodwait", {}) def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "ids", [0], lambda: "айди где будет работать заметка BOT API ID REQUIRED", validator=loader.validators.Union( loader.validators.Series(), loader.validators.TelegramID() ), ), loader.ConfigValue( "linktodata", "https://github.com/coddrago/modules/raw/main/modules.json", lambda: 'link for modules', validator=loader.validators.Link() ), ) self._ids: list = self.config["ids"] def get_data(self, official: bool=False, unofficial: bool=False): if official: data: dict = json.loads( requests.get(self.config['linktodata']).text )['official'] elif unofficial: data: dict = json.loads( requests.get(self.config['linktodata']).text )['unofficial'] developers = [] for username, emoji in data.items(): developers.append(f'{emoji} @{username}') return developers @loader.watcher() async def watcher_modules(self, message: Message): self._floodwait: dict = self.get("floodwait", {}) if message.chat_id in self.config["ids"] and message.raw_text == "#modules": if message.from_id not in self._floodwait.keys(): await message.reply(self._offtext) now = dt.now() fw_time = now + datetime.timedelta(seconds=3.5) self._floodwait.update({message.from_id: fw_time}) else: time = self._floodwait.get(message.from_id) if dt.now() > time: self._floodwait.pop(message.from_id) else: return @loader.command(alias="mlist", ru_doc=" | Быстрый доступ к каналам с модулями ") async def modlist(self, message: Message): """ | Quick access to channels with modules""" devs_unoff = self.get_data(unofficial=True) devs_off = self.get_data(official=True) await utils.answer(message, '\n'.join(devs_off + devs_unoff)) @loader.command(alias="offmlist", ru_doc=" | Оффициальные каналы с модулями ") async def offmodlist(self, message: Message): """ | Official channel with modules""" devs = self.get_data(official=True) await utils.answer(message, '\n'.join(devs)) @loader.command(rudoc="[BOT API ID] | Добавить чат") async def addmchat(self, message: Message): """[BOT API ID] | add chat""" if message.chat_id not in self.config["ids"]: self.config["ids"].append(message.chat_id) await utils.answer(message, self.strings["added"].format(message.chat_id)) else: await utils.answer(message, self.strings["chat_added"])