# `7MMM. ,MMF'`7MMM. ,MMF' `7MMM. ,MMF' `7MM
# MMMb dPMM MMMb dPMM MMMb dPMM MM
# M YM ,M MM M YM ,M MM M YM ,M MM ,pW"Wq. ,M""bMM ,pP"Ybd
# M Mb M' MM M Mb M' MM M Mb M' MM 6W' `Wb ,AP MM 8I `"
# M YM.P' MM M YM.P' MM mmmmm M YM.P' MM 8M M8 8MI MM `YMMMa.
# M `YM' MM M `YM' MM M `YM' MM YA. ,A9 `Mb MM L. I8
# .JML. `' .JMML..JML. `' .JMML. .JML. `' .JMML.`Ybmd9' `Wbmd"MML.M9mmmP'
#
# (c) 2023 — licensed under Apache 2.0 — https://www.apache.org/licenses/LICENSE-2.0
# meta pic: https://img.icons8.com/stickers/344/block.png
# meta developer: @mm_mods
__version__ = "1.0.0"
import asyncio
from .. import loader, utils
import telethon as tt
from telethon.tl.types import Message
import logging
logger = logging.getLogger(__name__)
@loader.tds
class MMASMod(loader.Module):
"""Protects your account from spam if anyone accessed your account/session."""
strings = {
"name": "MMAS",
"found": "Spam found!\nText: {}",
"limit_set": "Limit set to {}",
"limit_get": "Limit is {}",
"on": "Enabled.",
"off": "Disabled.",
}
strings_ru = {
"name": "MMAS",
"found": "Спам найден!\nТекст: {}",
"limit_set": "Лимит установлен на {}",
"limit_get": "Лимит равен {}",
"on": "Включено.",
"off": "Выключено.",
"_cls_doc": "Защищает ваш аккаунт от спама, если кто-то получил доступ к вашей учетной записи/сеансу.",
"_cmd_doc_mmas": "Включить/выключить модуль.",
"_cmd_doc_mmaslimit": "Получить или установить лимит одинаковых сообщений, отправленных вами.",
}
strings_de = {
"name": "MMAS",
"found": "Spam gefunden!\nText: {}",
"limit_set": "Limit auf {} gesetzt",
"limit_get": "Limit ist {}",
"on": "Aktiviert.",
"off": "Deaktiviert.",
"_cls_doc": "Schützt dein Konto vor Spam, wenn jemand auf dein Konto/zur Sitzung zugreift.",
"_cmd_doc_mmas": "Aktiviere/Deaktiviere das Modul.",
"_cmd_doc_mmaslimit": "Erhalte oder setze das Limit für die Anzahl der gleichen Nachrichten, die du "
"gesendet hast.",
}
strings_tr = {
"name": "MMAS",
"found": "Spam bulundu!\nMetin: {}",
"limit_set": "Sınır {} olarak ayarlandı",
"limit_get": "Sınır {}",
"on": "Açık.",
"off": "Kapalı.",
"_cls_doc": "Hesabınızı kimse erişemezse spam koruması.",
"_cmd_doc_mmas": "Modülü aç/kapat.",
"_cmd_doc_mmaslimit": "Aynı mesajı kaç kere gönderdiğinizi alın veya ayarlayın.",
}
async def client_ready(self, client, db):
self._client = client
self._db = db
if not self.get("limit", False):
self.set("limit", 5)
if not self.get("on", False):
self.set("on", True)
if not self.get("lat", False):
self.set("lat", '')
if not self.get("count", False):
self.set("count", 0)
if not self.get("logged", False):
self.set("logged", False)
async def mmascmd(self, message: Message):
"""Toggle the module."""
if self.get("on", False):
self.set("on", False)
await utils.answer(message, self.strings("off"))
else:
self.set("on", True)
await utils.answer(message, self.strings("on"))
async def mmaslimitcmd(self, message: Message):
"""Get or set the limit of same messages sent by you."""
args = utils.get_args_raw(message)
if not args:
await utils.answer(message, self.strings("limit_get").format(self.get("limit")))
return
try:
if int(args) < 2:
await utils.answer(message, self.strings("limit_set").format(2))
self.set("limit", 2)
return
self.set("limit", int(args))
await utils.answer(message, self.strings("limit_set").format(self.get("limit")))
except ValueError:
await utils.answer(message, self.strings("limit_get").format(self.get("limit")))
async def watcher(self, message: Message):
if not self.get("on", False):
return
if not message.text:
return
if not message.out:
return
if message.raw_text != self.get("lat", False):
self.set("lat", message.raw_text)
self.set("count", 1)
return
else:
self.set("count", self.get("count") + 1)
if self.get("count") >= self.get("limit"):
await message.delete()
if not self.get("logged", False):
self.set("logged", True)
logging.warning(self.strings("found").format(message.raw_text))
return