mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-16 14:34:17 +02:00
Added and updated repositories 2025-07-11 08:27:20
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"""
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -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, "Я закончил спамить")
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user