# ---------------------------------------------------------------------------------
#░█▀▄░▄▀▀▄░█▀▄░█▀▀▄░█▀▀▄░█▀▀▀░▄▀▀▄░░░█▀▄▀█
#░█░░░█░░█░█░█░█▄▄▀░█▄▄█░█░▀▄░█░░█░░░█░▀░█
#░▀▀▀░░▀▀░░▀▀░░▀░▀▀░▀░░▀░▀▀▀▀░░▀▀░░░░▀░░▒▀
# 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"])