Added and updated repositories 2025-07-11 08:27:20

This commit is contained in:
github-actions[bot]
2025-07-11 08:27:20 +00:00
parent 35e8befc45
commit e328cd957a
320 changed files with 37419 additions and 33510 deletions

View File

@@ -1,59 +1,59 @@
from hikkatl.types import Message
from .. import loader, utils
import string, random
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Module name
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class PasswordUtils(loader.Module):
"""Ваш помощник в безопасных паролях"""
strings = {"name": "PasswordUtils"}
@loader.command(ru_doc=" - [Пароль] - Проверить пароль на безопасность")
async def passwordchecker(self, message: Message):
"""- [Password] - Check the password for security"""
args = utils.get_args_raw(message)
symbols = "!@#$%^&*-+"
balls = 0
has_lower = any(c in args for c in string.ascii_lowercase)
has_upper = any(c in args for c in string.ascii_uppercase)
has_digit = any(c in args for c in string.digits)
has_symbol = any(c in args for c in symbols)
if has_lower:
balls += 1
if has_upper:
balls += 1
if has_digit:
balls += 1
if has_symbol:
balls += 1
await utils.answer(message, f"Balls: {balls}/4")
@loader.command(ru_doc=" - Генерация пароля")
async def passwordgen(self, message):
"""- Gen password"""
symbols = ["!", "@", "#", "$", "%", "^", "&", "*", "-", "+"]
letters = string.ascii_lowercase + string.ascii_uppercase
password = "".join(
random.choice(letters) + random.choice(symbols) for i in range(8)
)
await utils.answer(message, password)
from hikkatl.types import Message
from .. import loader, utils
import string, random
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Module name
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class PasswordUtils(loader.Module):
"""Ваш помощник в безопасных паролях"""
strings = {"name": "PasswordUtils"}
@loader.command(ru_doc=" - [Пароль] - Проверить пароль на безопасность")
async def passwordchecker(self, message: Message):
"""- [Password] - Check the password for security"""
args = utils.get_args_raw(message)
symbols = "!@#$%^&*-+"
balls = 0
has_lower = any(c in args for c in string.ascii_lowercase)
has_upper = any(c in args for c in string.ascii_uppercase)
has_digit = any(c in args for c in string.digits)
has_symbol = any(c in args for c in symbols)
if has_lower:
balls += 1
if has_upper:
balls += 1
if has_digit:
balls += 1
if has_symbol:
balls += 1
await utils.answer(message, f"Balls: {balls}/4")
@loader.command(ru_doc=" - Генерация пароля")
async def passwordgen(self, message):
"""- Gen password"""
symbols = ["!", "@", "#", "$", "%", "^", "&", "*", "-", "+"]
letters = string.ascii_lowercase + string.ascii_uppercase
password = "".join(
random.choice(letters) + random.choice(symbols) for i in range(8)
)
await utils.answer(message, password)

View File

@@ -1,117 +1,117 @@
from hikkatl.types import Message, PeerUser, PeerChat, PeerChannel
import hikkatl.utils as TelethonUtils
from .. import loader, utils
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
PinMoreChats
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class PinMoreChats(loader.Module):
async def client_ready(self, db, client):
self.db = db
self._chats = self.pointer("chats", [])
strings = {
"name": "PinMoreChats",
"_cls_doc": " - Allows you to bookmark more than 5 or 10 chats (WARNING! IT DOES NOT PIN CHATS IN TELEGRAM, IT JUST MAKES A LIST OF YOUR CHATS ANCHORED BY THIS MODULE, REMINDER, USERBOT CAN NO MORE THAN YOU CAN)",
"added": "<b> <emoji document_id=5197688912457245639>✅</emoji> Added chat <code>{}</code> <code>{}</code> </b>",
"aleardy_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> This chat is already in the pinned</b>",
"aleardy_not_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> This chat is not in the pinned</b>",
"deleted": "<b> <emoji document_id=5447644880824181073>⚠️</emoji> Chat removed from pinned</b>",
"pinned": "<b>Pinned chats:</b>\n\n",
}
strings_ru = {
"_cls_doc": "Позволяет закрепить больше чем 5 или 10 чатов (ПРЕДУПРЕЖДЕНИЕ! ОНО НЕ ЗАКРЕПЛЯЕТ ЧАТЫ В ТЕЛЕГРАММЕ, А ПРОСТО ДЕЛАЕТ СПИСОК ИЗ ВАШИХ ЧАТОВ ЗАКРЕПЛЁННЫМ ЭТИМ МОДУЛЕМ, НАПОМИНАЮ, ЮЗЕРБОТ МОЖЕТ НЕ БОЛЬШЕ ЧЕМ ВЫ<)",
"added": "<b> <emoji document_id=5197688912457245639>✅</emoji> Добавлен чат <code>{}</code> <code>{}</code> </b>",
"aleardy_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> Этот чат уже есть в закрепленных</b>",
"aleardy_not_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> Этого чата нет в закрепленных</b>",
"deleted": "<b> <emoji document_id=5447644880824181073>⚠️</emoji> Чат удалён из закреплённых</b>",
"pinned": "<b>Закреплённые чаты:</b>\n\n",
}
@loader.command(
ru_doc=" - Добавить чат в закреплённых",
)
async def pinchat(self, message: Message):
"""- Add chat to pinned"""
peer = TelethonUtils.get_peer(message.peer_id)
added = "maybe error in code, but i dont care"
if message.chat_id in self._chats:
await utils.answer(message, self.strings("aleardy_in"))
return
self._chats.append(message.chat_id)
entity = await self.client.get_entity(message.chat_id)
if isinstance(peer, PeerUser):
added = self.strings("added").format(message.chat_id, entity.first_name)
elif isinstance(peer, PeerChat) or isinstance(peer, PeerChannel):
added = self.strings("added").format(message.chat_id, entity.title)
await utils.answer(message, added)
@loader.command(ru_doc=" - Удалить чат из закреплённых")
async def unpinchat(self, message):
"""- Remove chat from pinned"""
if message.chat_id not in self._chats:
await utils.answer(message, self.strings("aleardy_not_in"))
return
self._chats.remove(message.chat_id)
await utils.answer(message, self.strings("deleted"))
@loader.command(ru_doc=" - Посмотреть закреплённые чаты")
async def listpinchats(self, message):
"""- View pinned chats"""
name = ""
chats = ""
for chat in self._chats:
peer = TelethonUtils.get_peer(chat)
chat_id = ""
try:
entity = await self.client.get_entity(int(chat))
except ValueError:
name = "Чат не найден"
try:
chat_id = chat.replace(
-100,
)
except Exception:
pass # просто если нету -100 то и не надо
try:
if isinstance(peer, PeerUser):
name = entity.first_name
elif isinstance(peer, PeerChat):
name = entity.title
elif isinstance(peer, PeerChannel):
name = entity.title
else:
name = entity.title
except Exception:
pass
messages = await self.client.get_messages(chat_id, limit=1)
max_message_id = messages[0].id
chats += f"<a href=tg://privatepost?channel={chat}&post={max_message_id}>{name}</a>\n"
await utils.answer(
message, self.strings("pinned") + chats
) # Почему через плюс? Потому что f-string ругается SyntaxError: f-string: unmatched '('
@loader.command(ru_doc=" - FAQ по модулю")
async def pmcfaq(self, message):
"""- FAQ for module"""
from hikkatl.types import Message, PeerUser, PeerChat, PeerChannel
import hikkatl.utils as TelethonUtils
from .. import loader, utils
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
PinMoreChats
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class PinMoreChats(loader.Module):
async def client_ready(self, db, client):
self.db = db
self._chats = self.pointer("chats", [])
strings = {
"name": "PinMoreChats",
"_cls_doc": " - Allows you to bookmark more than 5 or 10 chats (WARNING! IT DOES NOT PIN CHATS IN TELEGRAM, IT JUST MAKES A LIST OF YOUR CHATS ANCHORED BY THIS MODULE, REMINDER, USERBOT CAN NO MORE THAN YOU CAN)",
"added": "<b> <emoji document_id=5197688912457245639>✅</emoji> Added chat <code>{}</code> <code>{}</code> </b>",
"aleardy_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> This chat is already in the pinned</b>",
"aleardy_not_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> This chat is not in the pinned</b>",
"deleted": "<b> <emoji document_id=5447644880824181073>⚠️</emoji> Chat removed from pinned</b>",
"pinned": "<b>Pinned chats:</b>\n\n",
}
strings_ru = {
"_cls_doc": "Позволяет закрепить больше чем 5 или 10 чатов (ПРЕДУПРЕЖДЕНИЕ! ОНО НЕ ЗАКРЕПЛЯЕТ ЧАТЫ В ТЕЛЕГРАММЕ, А ПРОСТО ДЕЛАЕТ СПИСОК ИЗ ВАШИХ ЧАТОВ ЗАКРЕПЛЁННЫМ ЭТИМ МОДУЛЕМ, НАПОМИНАЮ, ЮЗЕРБОТ МОЖЕТ НЕ БОЛЬШЕ ЧЕМ ВЫ<)",
"added": "<b> <emoji document_id=5197688912457245639>✅</emoji> Добавлен чат <code>{}</code> <code>{}</code> </b>",
"aleardy_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> Этот чат уже есть в закрепленных</b>",
"aleardy_not_in": "<b> <emoji document_id=5440660757194744323>‼️</emoji> Этого чата нет в закрепленных</b>",
"deleted": "<b> <emoji document_id=5447644880824181073>⚠️</emoji> Чат удалён из закреплённых</b>",
"pinned": "<b>Закреплённые чаты:</b>\n\n",
}
@loader.command(
ru_doc=" - Добавить чат в закреплённых",
)
async def pinchat(self, message: Message):
"""- Add chat to pinned"""
peer = TelethonUtils.get_peer(message.peer_id)
added = "maybe error in code, but i dont care"
if message.chat_id in self._chats:
await utils.answer(message, self.strings("aleardy_in"))
return
self._chats.append(message.chat_id)
entity = await self.client.get_entity(message.chat_id)
if isinstance(peer, PeerUser):
added = self.strings("added").format(message.chat_id, entity.first_name)
elif isinstance(peer, PeerChat) or isinstance(peer, PeerChannel):
added = self.strings("added").format(message.chat_id, entity.title)
await utils.answer(message, added)
@loader.command(ru_doc=" - Удалить чат из закреплённых")
async def unpinchat(self, message):
"""- Remove chat from pinned"""
if message.chat_id not in self._chats:
await utils.answer(message, self.strings("aleardy_not_in"))
return
self._chats.remove(message.chat_id)
await utils.answer(message, self.strings("deleted"))
@loader.command(ru_doc=" - Посмотреть закреплённые чаты")
async def listpinchats(self, message):
"""- View pinned chats"""
name = ""
chats = ""
for chat in self._chats:
peer = TelethonUtils.get_peer(chat)
chat_id = ""
try:
entity = await self.client.get_entity(int(chat))
except ValueError:
name = "Чат не найден"
try:
chat_id = chat.replace(
-100,
)
except Exception:
pass # просто если нету -100 то и не надо
try:
if isinstance(peer, PeerUser):
name = entity.first_name
elif isinstance(peer, PeerChat):
name = entity.title
elif isinstance(peer, PeerChannel):
name = entity.title
else:
name = entity.title
except Exception:
pass
messages = await self.client.get_messages(chat_id, limit=1)
max_message_id = messages[0].id
chats += f"<a href=tg://privatepost?channel={chat}&post={max_message_id}>{name}</a>\n"
await utils.answer(
message, self.strings("pinned") + chats
) # Почему через плюс? Потому что f-string ругается SyntaxError: f-string: unmatched '('
@loader.command(ru_doc=" - FAQ по модулю")
async def pmcfaq(self, message):
"""- FAQ for module"""

View File

@@ -1,62 +1,62 @@
from hikkatl.types import Message
from .. import loader, utils
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
SearchersGenQuery
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class GoogleQueryGen(loader.Module):
"""- Create links for search engines query"""
strings = {"name": "GoogleQueryGen"}
strings_ru = {"_cls_doc": " - Создаёт ссылки для поисковых запросов"}
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для гугл запроса")
async def GoogleQueryGen(self, message: Message):
"""- [Args] - Gen link for google query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://google.com/search?q={args}")
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для яндекс запроса")
async def YandexQueryGen(self, message: Message):
"""- [Args] - Gen link for yandex query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://yandex.ru/search/?text={args}")
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для бинг запроса")
async def BingQueryGen(self, message: Message):
"""- [Args] - Gen link for bing query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://bing.com/search?q={args}")
@loader.command(
ru_doc=" - [Аргументы] - Генерирует ссылку для УткаУткаВперёд запроса"
)
async def DDGQueryGen(self, message: Message):
"""- [Args] - Gen link for DuckDuckGo query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://duckduckgo.com/?q={args}")
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для яху запроса")
async def YahooQueryGen(self, message: Message):
"""- [Args] - Gen link for yahoo query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://search.yahoo.com/search?p={args}")
from hikkatl.types import Message
from .. import loader, utils
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
SearchersGenQuery
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class GoogleQueryGen(loader.Module):
"""- Create links for search engines query"""
strings = {"name": "GoogleQueryGen"}
strings_ru = {"_cls_doc": " - Создаёт ссылки для поисковых запросов"}
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для гугл запроса")
async def GoogleQueryGen(self, message: Message):
"""- [Args] - Gen link for google query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://google.com/search?q={args}")
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для яндекс запроса")
async def YandexQueryGen(self, message: Message):
"""- [Args] - Gen link for yandex query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://yandex.ru/search/?text={args}")
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для бинг запроса")
async def BingQueryGen(self, message: Message):
"""- [Args] - Gen link for bing query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://bing.com/search?q={args}")
@loader.command(
ru_doc=" - [Аргументы] - Генерирует ссылку для УткаУткаВперёд запроса"
)
async def DDGQueryGen(self, message: Message):
"""- [Args] - Gen link for DuckDuckGo query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://duckduckgo.com/?q={args}")
@loader.command(ru_doc=" - [Аргументы] - Генерирует ссылку для яху запроса")
async def YahooQueryGen(self, message: Message):
"""- [Args] - Gen link for yahoo query"""
args_raw = utils.get_args_split_by(message, " ")
args = "+".join(args_raw)
await utils.answer(message, f"https://search.yahoo.com/search?p={args}")

View File

@@ -1,122 +1,122 @@
from telethon.tl.types import Message
from .. import loader, utils
__version__ = (0, 19, 9)
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
AutoReader
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class Autoreader(loader.Module):
"""Для автоматического читания в чатах и лс"""
strings = {"name": "Autoreader"}
async def client_ready(self, client, db):
self.db = db
self._chats = self.pointer("chats", [])
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"read_new_msg_new_users",
False,
"Читать сообщения от новых пользователей по-улмолчанию пока не работает :(",
validator=loader.validators.Boolean(),
)
)
@loader.watcher()
async def watcher(self, message):
try:
if message.chat_id in self._chats:
message_id = message.id
await self.client.send_read_acknowledge(
message.chat_id, clear_mentions=True
)
except Exception:
pass
@loader.command()
async def autoread(self, message: Message):
"""- Добавить / Удалить чат из авто читаемых"""
added = None
removed = None
if message.chat_id not in self._chats:
self._chats.append(message.chat_id)
added = True
elif message.chat_id in self._chats:
self._chats.remove(message.chat_id)
removed = True
if added:
await utils.answer(message, "Чат добавлен в авто читаемые")
elif removed:
await utils.answer(message, "Чат удалён из авто читаемых")
@loader.command()
async def list_autoread(self, message):
"""- Чаты которые читаются"""
chats_wha = self.get("chats", [])
r = str(chats_wha).replace("[", "")
m = r.replace("]", "")
ov = m.replace(" ", "")
hg = ov.replace(",", "\n")
chats = f"👁 <b>Авто просматриваемые чаты:</b>\n{hg}"
await utils.answer(message, chats)
@loader.command()
async def set_autoread(self, message):
"""- [Айди] Добавить / Удалить чат из списка авто читаемых
p.s -100 к началу айди у каналов и чатов"""
value = 0
args = utils.get_args_raw(message)
try:
value = int(str(args).strip())
except Exception:
await utils.answer(message, "Неверный айди!")
if str(args).startswith("-100"):
args = int(str(value)[4:])
elif args > 2**64 - 1 or args < 0:
await utils.answer(message, "Неверный айди!")
else:
await self.client.send_read_acknowledge(int(args), clear_mentions=True)
@loader.command()
async def read(self, message):
"""- [Айди \ Ничего] Прочитать все сообщения в чате"""
value = 0
args = int(utils.get_args_raw(message))
if args != "":
try:
value = int(str(args.strip()))
except Exception:
await utils.answer(message, "Неверный айди!")
if str(args).startswith("-100"):
value = int(str(args)[4:])
elif args > 2**64 - 1 or args < 0:
await utils.answer(message, "Неверный айди!")
else:
await self.client.send_read_acknowledge(int(args), clear_mentions=True)
else:
await self.client.send_read_acknowledge(
message.chat_id, clear_mentions=True
)
await message.delete()
from telethon.tl.types import Message
from .. import loader, utils
__version__ = (0, 19, 9)
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
AutoReader
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class Autoreader(loader.Module):
"""Для автоматического читания в чатах и лс"""
strings = {"name": "Autoreader"}
async def client_ready(self, client, db):
self.db = db
self._chats = self.pointer("chats", [])
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"read_new_msg_new_users",
False,
"Читать сообщения от новых пользователей по-улмолчанию пока не работает :(",
validator=loader.validators.Boolean(),
)
)
@loader.watcher()
async def watcher(self, message):
try:
if message.chat_id in self._chats:
message_id = message.id
await self.client.send_read_acknowledge(
message.chat_id, clear_mentions=True
)
except Exception:
pass
@loader.command()
async def autoread(self, message: Message):
"""- Добавить / Удалить чат из авто читаемых"""
added = None
removed = None
if message.chat_id not in self._chats:
self._chats.append(message.chat_id)
added = True
elif message.chat_id in self._chats:
self._chats.remove(message.chat_id)
removed = True
if added:
await utils.answer(message, "Чат добавлен в авто читаемые")
elif removed:
await utils.answer(message, "Чат удалён из авто читаемых")
@loader.command()
async def list_autoread(self, message):
"""- Чаты которые читаются"""
chats_wha = self.get("chats", [])
r = str(chats_wha).replace("[", "")
m = r.replace("]", "")
ov = m.replace(" ", "")
hg = ov.replace(",", "\n")
chats = f"👁 <b>Авто просматриваемые чаты:</b>\n{hg}"
await utils.answer(message, chats)
@loader.command()
async def set_autoread(self, message):
"""- [Айди] Добавить / Удалить чат из списка авто читаемых
p.s -100 к началу айди у каналов и чатов"""
value = 0
args = utils.get_args_raw(message)
try:
value = int(str(args).strip())
except Exception:
await utils.answer(message, "Неверный айди!")
if str(args).startswith("-100"):
args = int(str(value)[4:])
elif args > 2**64 - 1 or args < 0:
await utils.answer(message, "Неверный айди!")
else:
await self.client.send_read_acknowledge(int(args), clear_mentions=True)
@loader.command()
async def read(self, message):
"""- [Айди \ Ничего] Прочитать все сообщения в чате"""
value = 0
args = int(utils.get_args_raw(message))
if args != "":
try:
value = int(str(args.strip()))
except Exception:
await utils.answer(message, "Неверный айди!")
if str(args).startswith("-100"):
value = int(str(args)[4:])
elif args > 2**64 - 1 or args < 0:
await utils.answer(message, "Неверный айди!")
else:
await self.client.send_read_acknowledge(int(args), clear_mentions=True)
else:
await self.client.send_read_acknowledge(
message.chat_id, clear_mentions=True
)
await message.delete()

View File

@@ -1,45 +1,45 @@
from hikkatl.types import Message
from .. import loader, utils
import aiohttp
import os
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Compliments
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
# requires: aiohttp
@loader.tds
class compliments(loader.Module):
"""Генерирует комплименты"""
strings = {"name": "Compliments"}
@loader.command()
async def gen_compliment(self, message: Message):
"""- Генерирует комлпимент"""
async with aiohttp.ClientSession() as session:
async with session.get("http://complimentr.com/api") as response:
data = await response.json()
await utils.answer(
message,
await self._client.translate(
message.peer_id,
message,
"ru",
raw_text=data["compliment"],
entities=message.entities,
),
)
from hikkatl.types import Message
from .. import loader, utils
import aiohttp
import os
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Compliments
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
# requires: aiohttp
@loader.tds
class compliments(loader.Module):
"""Генерирует комплименты"""
strings = {"name": "Compliments"}
@loader.command()
async def gen_compliment(self, message: Message):
"""- Генерирует комлпимент"""
async with aiohttp.ClientSession() as session:
async with session.get("http://complimentr.com/api") as response:
data = await response.json()
await utils.answer(
message,
await self._client.translate(
message.peer_id,
message,
"ru",
raw_text=data["compliment"],
entities=message.entities,
),
)

View File

@@ -1,172 +1,172 @@
from .. import loader, utils
from telethon.types import Message, MessageService
import asyncio
import logging
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
ControlSpam
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
logger = logging.getLogger(__name__)
@loader.tds
class ControlSpam(loader.Module):
"""Не просто спамь, а контролируй"""
strings = {"name": "ControlSpam", "hello": "Hello world!"}
strings_ru = {"hello": "Привет мир!"}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"status",
True,
lambda: "Просто статус спама",
validator=loader.validators.Boolean(),
),
loader.ConfigValue(
"ids",
[],
lambda: "Список айди сообщений",
validator=loader.validators.Series()
)
)
async def client_ready(self, client, db):
self._common = await self.import_lib(
"https://raw.githubusercontent.com/MuRuLOSE/HikkaModulesRepo/main/libaries/common.py",
suspend_on_error=True
)
self.client = client
@loader.command()
async def spam(self, message: Message):
"""[количество спама] [текст / реплай] - Начать спам"""
args = utils.get_args_raw(message).split(maxsplit=1) # Разделяем на количество и текст
reply = await message.get_reply_message()
text = "Something went wrong"
topic_id = None
spam_id = len(self.config["ids"])
new_spam_id = spam_id + 1
self.config["ids"].append(
{
"data": {
"id": new_spam_id,
"message": text,
"count": 0,
"status": True
}
}
)
try:
count = int(args[0]) if args else 0 # Количество сообщений
if reply:
text = reply.text
topic_id = await self._common._topic_resolver(message)
elif len(args) > 1:
text = args[1] # Берем текст после количества
else:
await message.edit("Укажите текст или сделайте реплай")
return
except (ValueError, IndexError):
await message.edit("Укажите корректное количество и текст")
return
sent = 0
self.config["ids"][spam_id]["data"]["text"] = text
await utils.answer(message, f"Я начал спамить с сообщением айди: {new_spam_id}")
while sent < count:
self.config["ids"][spam_id]["data"]["count"] += 1
status = self.config["ids"][spam_id]["data"]["status"]
text = self.config["ids"][spam_id]["data"]["text"]
if topic_id:
await self.client.send_message(message.chat_id, text, reply_to=topic_id)
else:
await self.client.send_message(message.chat_id, text)
if status is False:
break
sent += 1
@loader.command()
async def delayspam(self, message: Message):
"""[количество спама] [Задержка в секундах] [текст / реплай] - Начать спам"""
args = utils.get_args_raw(message).split(maxsplit=2) # Разделяем на количество и текст
reply = await message.get_reply_message()
text = "Something went wrong"
topic_id = None
spam_id = len(self.config["ids"])
new_spam_id = spam_id
self.config["ids"].append(
{
"data": {
"id": new_spam_id,
"message": text,
"count": 0,
"status": True
}
}
)
try:
count = int(args[0]) if args else 0 # Количество сообщений
if reply:
text = reply.text
topic_id = await self._common._topic_resolver(message)
elif len(args) > 1:
text = args[2] # Берем текст после количества
else:
await message.edit("Укажите текст или сделайте реплай")
return
except (ValueError, IndexError):
await message.edit("Укажите корректное количество и текст")
return
sent = 0
self.config["ids"][spam_id]["data"]["text"] = text
await utils.answer(message, f"Я начал спамить с сообщением айди: {new_spam_id}")
while sent < count:
self.config["ids"][spam_id]["data"]["count"] += 1
status = self.config["ids"][spam_id]["data"]["status"]
text = self.config["ids"][spam_id]["data"]["text"]
await asyncio.sleep(int(args[1]))
if topic_id:
await self.client.send_message(message.chat_id, text, reply_to=topic_id)
else:
await self.client.send_message(message.chat_id, text)
if status is False:
break
sent += 1
@loader.command()
async def spam_stop(self, message: Message):
"""- [id] Закончить спам"""
args = utils.get_args_raw(message)
self.config["ids"][int(args)-1]["data"]["status"] = False
await utils.answer(message, "Я закончил спамить")
from .. import loader, utils
from telethon.types import Message, MessageService
import asyncio
import logging
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
ControlSpam
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
logger = logging.getLogger(__name__)
@loader.tds
class ControlSpam(loader.Module):
"""Не просто спамь, а контролируй"""
strings = {"name": "ControlSpam", "hello": "Hello world!"}
strings_ru = {"hello": "Привет мир!"}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"status",
True,
lambda: "Просто статус спама",
validator=loader.validators.Boolean(),
),
loader.ConfigValue(
"ids",
[],
lambda: "Список айди сообщений",
validator=loader.validators.Series()
)
)
async def client_ready(self, client, db):
self._common = await self.import_lib(
"https://raw.githubusercontent.com/MuRuLOSE/HikkaModulesRepo/main/libaries/common.py",
suspend_on_error=True
)
self.client = client
@loader.command()
async def spam(self, message: Message):
"""[количество спама] [текст / реплай] - Начать спам"""
args = utils.get_args_raw(message).split(maxsplit=1) # Разделяем на количество и текст
reply = await message.get_reply_message()
text = "Something went wrong"
topic_id = None
spam_id = len(self.config["ids"])
new_spam_id = spam_id + 1
self.config["ids"].append(
{
"data": {
"id": new_spam_id,
"message": text,
"count": 0,
"status": True
}
}
)
try:
count = int(args[0]) if args else 0 # Количество сообщений
if reply:
text = reply.text
topic_id = await self._common._topic_resolver(message)
elif len(args) > 1:
text = args[1] # Берем текст после количества
else:
await message.edit("Укажите текст или сделайте реплай")
return
except (ValueError, IndexError):
await message.edit("Укажите корректное количество и текст")
return
sent = 0
self.config["ids"][spam_id]["data"]["text"] = text
await utils.answer(message, f"Я начал спамить с сообщением айди: {new_spam_id}")
while sent < count:
self.config["ids"][spam_id]["data"]["count"] += 1
status = self.config["ids"][spam_id]["data"]["status"]
text = self.config["ids"][spam_id]["data"]["text"]
if topic_id:
await self.client.send_message(message.chat_id, text, reply_to=topic_id)
else:
await self.client.send_message(message.chat_id, text)
if status is False:
break
sent += 1
@loader.command()
async def delayspam(self, message: Message):
"""[количество спама] [Задержка в секундах] [текст / реплай] - Начать спам"""
args = utils.get_args_raw(message).split(maxsplit=2) # Разделяем на количество и текст
reply = await message.get_reply_message()
text = "Something went wrong"
topic_id = None
spam_id = len(self.config["ids"])
new_spam_id = spam_id
self.config["ids"].append(
{
"data": {
"id": new_spam_id,
"message": text,
"count": 0,
"status": True
}
}
)
try:
count = int(args[0]) if args else 0 # Количество сообщений
if reply:
text = reply.text
topic_id = await self._common._topic_resolver(message)
elif len(args) > 1:
text = args[2] # Берем текст после количества
else:
await message.edit("Укажите текст или сделайте реплай")
return
except (ValueError, IndexError):
await message.edit("Укажите корректное количество и текст")
return
sent = 0
self.config["ids"][spam_id]["data"]["text"] = text
await utils.answer(message, f"Я начал спамить с сообщением айди: {new_spam_id}")
while sent < count:
self.config["ids"][spam_id]["data"]["count"] += 1
status = self.config["ids"][spam_id]["data"]["status"]
text = self.config["ids"][spam_id]["data"]["text"]
await asyncio.sleep(int(args[1]))
if topic_id:
await self.client.send_message(message.chat_id, text, reply_to=topic_id)
else:
await self.client.send_message(message.chat_id, text)
if status is False:
break
sent += 1
@loader.command()
async def spam_stop(self, message: Message):
"""- [id] Закончить спам"""
args = utils.get_args_raw(message)
self.config["ids"][int(args)-1]["data"]["status"] = False
await utils.answer(message, "Я закончил спамить")

View File

@@ -1,76 +1,76 @@
from hikkatl.types import Message
from .. import loader, utils
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Filters
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class TextFilters(loader.Module):
"""- Module for filter text"""
async def client_ready(self, db, client):
self.db = db
self.set("filter", "Dont care")
strings = {
"name": "TextFilters",
"wrong": "Wrong Argument. \n\nupper - Capitalize\ncapitalize - Starts with a capital letter and the rest are small.\nlower - Reduces all letters\noff - Disable filters",
"correct": "Filter changed to {}",
}
strings_ru = {
"wrong": "Неверный аргумент. \n\nupper - Большие буквы\ncapitalize - Начинает с большой буквы, а остальные маленькие\nlower - Уменьшает все буквы\noff - Выключить фильтры",
"correct": "Фильтр сменён на {}",
}
@loader.watcher()
async def watcher(self, message):
me = await self.client.get_me(id)
try:
if message.from_id == me.user_id and message.text:
filter_txt = self.get("filter", "Dont care")
if filter_txt == "lower":
try:
await message.edit(message.text.lower())
except Exception:
pass
elif filter_txt == "upper":
try:
await message.edit(message.text.upper())
except Exception:
pass
elif filter_txt == "capitalize":
try:
await message.edit(message.text.capitalize())
except Exception:
pass
elif filter_txt == "off":
pass # Ну а чо делать
except AttributeError:
pass # Ну это херня с ивентами, поэтому да
@loader.command(ru_doc=" - [lower / capitalize / upper / off] - Выбрать фильтр")
async def filter_ch(self, message: Message):
"""- [lower / capitalize / upper / off] - Chose filter"""
args = utils.get_args_raw(message)
if args.lower() not in ["lower", "capitalize", "upper", "off"]:
await utils.answer(message, self.strings("wrong"))
else:
await utils.answer(message, self.strings("correct").format(args))
self.set("filter", args.lower())
from hikkatl.types import Message
from .. import loader, utils
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Filters
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class TextFilters(loader.Module):
"""- Module for filter text"""
async def client_ready(self, db, client):
self.db = db
self.set("filter", "Dont care")
strings = {
"name": "TextFilters",
"wrong": "Wrong Argument. \n\nupper - Capitalize\ncapitalize - Starts with a capital letter and the rest are small.\nlower - Reduces all letters\noff - Disable filters",
"correct": "Filter changed to {}",
}
strings_ru = {
"wrong": "Неверный аргумент. \n\nupper - Большие буквы\ncapitalize - Начинает с большой буквы, а остальные маленькие\nlower - Уменьшает все буквы\noff - Выключить фильтры",
"correct": "Фильтр сменён на {}",
}
@loader.watcher()
async def watcher(self, message):
me = await self.client.get_me(id)
try:
if message.from_id == me.user_id and message.text:
filter_txt = self.get("filter", "Dont care")
if filter_txt == "lower":
try:
await message.edit(message.text.lower())
except Exception:
pass
elif filter_txt == "upper":
try:
await message.edit(message.text.upper())
except Exception:
pass
elif filter_txt == "capitalize":
try:
await message.edit(message.text.capitalize())
except Exception:
pass
elif filter_txt == "off":
pass # Ну а чо делать
except AttributeError:
pass # Ну это херня с ивентами, поэтому да
@loader.command(ru_doc=" - [lower / capitalize / upper / off] - Выбрать фильтр")
async def filter_ch(self, message: Message):
"""- [lower / capitalize / upper / off] - Chose filter"""
args = utils.get_args_raw(message)
if args.lower() not in ["lower", "capitalize", "upper", "off"]:
await utils.answer(message, self.strings("wrong"))
else:
await utils.answer(message, self.strings("correct").format(args))
self.set("filter", args.lower())

View File

@@ -1,177 +1,177 @@
from hikkatl.types import Message
from .. import loader, utils
__version__ = (3.14, 16, 18)
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Module name
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class Morse(loader.Module):
"""- Decode and Encode morse code"""
strings = {"name": "Morse"}
strings_ru = {"_cls_doc": " - Зашифровывает и расшифровывает азбуку морзе"}
@loader.command(ru_doc=" - [Текст] - Переводит в азбуку морзе")
async def decode_morse(self, message: Message):
"""- [Text] - Translates into morse code"""
args = utils.get_args_raw(message)
morse_code = {
"A": ".-",
"B": "-...",
"C": "-.-.",
"D": "-..",
"E": ".",
"F": "..-.",
"G": "--.",
"H": "....",
"I": "..",
"J": ".---",
"K": "-.-",
"L": ".-..",
"M": "--",
"N": "-.",
"O": "---",
"P": ".--.",
"Q": "--.-",
"R": ".-.",
"S": "...",
"T": "-",
"U": "..-",
"V": "...-",
"W": ".--",
"X": "-..-",
"Y": "-.--",
"Z": "--..",
"А": ".-",
"Б": "-...",
"В": ".--",
"Г": "--.",
"Д": "-..",
"Е": ".",
"Ж": "...-",
"З": "--..",
"И": "..",
"Й": ".---",
"К": "-.-",
"Л": ".-..",
"М": "--",
"Н": "-.",
"О": "---",
"П": ".--.",
"Р": ".-.",
"С": "...",
"Т": "-",
"У": "..-",
"Ф": "..-.",
"Х": "....",
"Ц": "-.-.",
"Ч": "---.",
"Ш": "----",
"Щ": "--.-",
"Ъ": "--.--",
"Ы": "-.--",
"Ь": "-..-",
"Э": "..-..",
"Ю": "..--",
"Я": ".-.-",
}
text = args.upper()
result = []
for char in text:
if char in morse_code:
result.append(morse_code[char])
else:
result.append(char)
await utils.answer(message, " ".join(result))
@loader.command(ru_doc=" - [Текст] - Переводит из азбуки морзе в текст")
async def encode_morse(self, message):
"""- [Text] - Translates from morse code"""
args = utils.get_args_raw(message)
morse_code = {
".-": "A",
"-...": "B",
"-.-.": "C",
"-..": "D",
".": "E",
"..-.": "F",
"--.": "G",
"....": "H",
"..": "I",
".---": "J",
"-.-": "K",
".-..": "L",
"--": "M",
"-.": "N",
"---": "O",
".--.": "P",
"--.-": "Q",
".-.": "R",
"...": "S",
"-": "T",
"..-": "U",
"...-": "V",
".--": "W",
"-..-": "X",
"-.--": "Y",
"--..": "Z",
" ": " ",
".-": "А",
"-...": "Б",
".--": "В",
"--.": "Г",
"-..": "Д",
".": "Е",
"...-": "Ж",
"--..": "З",
"..": "И",
".---": "Й",
"-.-": "К",
".-..": "Л",
"--": "М",
"-.": "Н",
"---": "О",
".--.": "П",
".-.": "Р",
"...": "С",
"-": "Т",
"..-": "У",
"..-.": "Ф",
"....": "Х",
"-.-.": "Ц",
"---.": "Ч",
"----": "Ш",
"--.-": "Щ",
"--.--": "Ъ",
"-.--": "Ы",
"-..-": "Ь",
"..-..": "Э",
"..--": "Ю",
".-.-": "Я",
}
morse_chars = args.split(" ")
result = []
for morse_char in morse_chars:
if morse_char in morse_code:
result.append(morse_code[morse_char])
else:
result.append(morse_char)
await utils.answer(message, "".join(result))
from hikkatl.types import Message
from .. import loader, utils
__version__ = (3.14, 16, 18)
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Module name
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class Morse(loader.Module):
"""- Decode and Encode morse code"""
strings = {"name": "Morse"}
strings_ru = {"_cls_doc": " - Зашифровывает и расшифровывает азбуку морзе"}
@loader.command(ru_doc=" - [Текст] - Переводит в азбуку морзе")
async def decode_morse(self, message: Message):
"""- [Text] - Translates into morse code"""
args = utils.get_args_raw(message)
morse_code = {
"A": ".-",
"B": "-...",
"C": "-.-.",
"D": "-..",
"E": ".",
"F": "..-.",
"G": "--.",
"H": "....",
"I": "..",
"J": ".---",
"K": "-.-",
"L": ".-..",
"M": "--",
"N": "-.",
"O": "---",
"P": ".--.",
"Q": "--.-",
"R": ".-.",
"S": "...",
"T": "-",
"U": "..-",
"V": "...-",
"W": ".--",
"X": "-..-",
"Y": "-.--",
"Z": "--..",
"А": ".-",
"Б": "-...",
"В": ".--",
"Г": "--.",
"Д": "-..",
"Е": ".",
"Ж": "...-",
"З": "--..",
"И": "..",
"Й": ".---",
"К": "-.-",
"Л": ".-..",
"М": "--",
"Н": "-.",
"О": "---",
"П": ".--.",
"Р": ".-.",
"С": "...",
"Т": "-",
"У": "..-",
"Ф": "..-.",
"Х": "....",
"Ц": "-.-.",
"Ч": "---.",
"Ш": "----",
"Щ": "--.-",
"Ъ": "--.--",
"Ы": "-.--",
"Ь": "-..-",
"Э": "..-..",
"Ю": "..--",
"Я": ".-.-",
}
text = args.upper()
result = []
for char in text:
if char in morse_code:
result.append(morse_code[char])
else:
result.append(char)
await utils.answer(message, " ".join(result))
@loader.command(ru_doc=" - [Текст] - Переводит из азбуки морзе в текст")
async def encode_morse(self, message):
"""- [Text] - Translates from morse code"""
args = utils.get_args_raw(message)
morse_code = {
".-": "A",
"-...": "B",
"-.-.": "C",
"-..": "D",
".": "E",
"..-.": "F",
"--.": "G",
"....": "H",
"..": "I",
".---": "J",
"-.-": "K",
".-..": "L",
"--": "M",
"-.": "N",
"---": "O",
".--.": "P",
"--.-": "Q",
".-.": "R",
"...": "S",
"-": "T",
"..-": "U",
"...-": "V",
".--": "W",
"-..-": "X",
"-.--": "Y",
"--..": "Z",
" ": " ",
".-": "А",
"-...": "Б",
".--": "В",
"--.": "Г",
"-..": "Д",
".": "Е",
"...-": "Ж",
"--..": "З",
"..": "И",
".---": "Й",
"-.-": "К",
".-..": "Л",
"--": "М",
"-.": "Н",
"---": "О",
".--.": "П",
".-.": "Р",
"...": "С",
"-": "Т",
"..-": "У",
"..-.": "Ф",
"....": "Х",
"-.-.": "Ц",
"---.": "Ч",
"----": "Ш",
"--.-": "Щ",
"--.--": "Ъ",
"-.--": "Ы",
"-..-": "Ь",
"..-..": "Э",
"..--": "Ю",
".-.-": "Я",
}
morse_chars = args.split(" ")
result = []
for morse_char in morse_chars:
if morse_char in morse_code:
result.append(morse_code[morse_char])
else:
result.append(morse_char)
await utils.answer(message, "".join(result))

View File

@@ -1,38 +1,38 @@
from hikkatl.types import Message
from .. import loader, utils
import asyncio
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Timer
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class timer(loader.Module):
"""Модуль который запускает таймер до события"""
strings = {"name": "timer"}
@loader.command()
async def start_timer(self, message: Message):
"""[Таймер на секунды] [Текст напоминания] - Запустить таймер (Сообщения будет отправляться инлайн ботом с вашим упоминанием)"""
args = utils.get_args_raw(message)
msg = " ".join(args.split()[1:])
time = int(args.split(" ", 2)[0])
await utils.answer(message, "Таймер поставлен")
await asyncio.sleep(time)
for _ in range(10):
me = await self.client.get_me()
await self.inline.bot.send_message(self.tg_id, f"@{me.username} {msg}")
from hikkatl.types import Message
from .. import loader, utils
import asyncio
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
Timer
📜 Licensed under the GNU AGPLv3
"""
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class timer(loader.Module):
"""Модуль который запускает таймер до события"""
strings = {"name": "timer"}
@loader.command()
async def start_timer(self, message: Message):
"""[Таймер на секунды] [Текст напоминания] - Запустить таймер (Сообщения будет отправляться инлайн ботом с вашим упоминанием)"""
args = utils.get_args_raw(message)
msg = " ".join(args.split()[1:])
time = int(args.split(" ", 2)[0])
await utils.answer(message, "Таймер поставлен")
await asyncio.sleep(time)
for _ in range(10):
me = await self.client.get_me()
await self.inline.bot.send_message(self.tg_id, f"@{me.username} {msg}")