Files
limoka/unneyon/hikka-mods/deleter.py
2025-07-10 21:02:34 +03:00

141 lines
3.8 KiB
Python

__version__ = (1, 0, 0)
# █▄▀ ▄▀█ █▀▄▀█ █▀▀ █▄▀ █ █ █▀█ █▀█
# █ █ █▀█ █ ▀ █ ██▄ █ █ ▀▄▄▀ █▀▄ █▄█ ▄
# © Copyright 2025
# ✈ https://t.me/kamekuro
# 🔒 Licensed under CC-BY-NC-ND 4.0 unless otherwise specified.
# 🌐 https://creativecommons.org/licenses/by-nc-nd/4.0
# + attribution
# + non-commercial
# + no-derivatives
# You CANNOT edit, distribute or redistribute this file without direct permission from the author.
# meta banner: https://raw.githubusercontent.com/kamekuro/hikka-mods/main/banners/deleter.png
# meta pic: https://raw.githubusercontent.com/kamekuro/hikka-mods/main/icons/deleter.png
# meta developer: @kamekuro_hmods
# scope: hikka_only
# scope: hikka_min 1.6.3
import logging
from telethon import types
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class DeleterMod(loader.Module):
"""Module for delete your messages"""
strings = {
"name": "Deleter",
"_cfg_trigger": "Trigger for delete messages",
"_cfg_edit_msgs": "Is need to edit messages before delete them?",
"_cfg_edit_text": "Text for edit messages"
}
strings_ru = {
"_cfg_trigger": "Триггер-команда для удаления сообщений",
"_cfg_edit_msgs": "Нужно ли редактировать сообщения перед удалением?",
"_cfg_edit_text": "Текст для редактирования сообщений",
"_cls_doc": "Модуль для удаления своих сообщений"
}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"trigger",
"дд",
lambda: self.strings["_cfg_trigger"]
),
loader.ConfigValue(
"edit_msgs",
True,
lambda: self.strings["_cfg_edit_msgs"],
validator=loader.validators.Boolean()
),
loader.ConfigValue(
"edit_text",
"\xad",
lambda: self.strings["_cfg_edit_text"]
)
)
@loader.command(
ru_doc="[число] 👉 Удалить сообщения (можно использовать значение из конфига: «{значение}{число}», без пробела!)"
)
async def delmsgcmd(self, message: types.Message):
"""[count] 👉 Delete messages (you can use your trigger from config: «{value}{count}» and write them only together!)"""
args = utils.get_args(message)
count = 1
if args:
count = int(args[0]) if args[0].isnumeric() else 1
dmsgs = []
msgs = await self._client.get_messages(
message.chat_id, limit=50+count
)
for i in msgs:
if i.id == message.id:
continue
if i.sender_id == self._client.tg_id:
dmsgs.append(i)
if self.config["edit_msgs"]:
await message.edit(self.config["edit_text"])
await message.delete()
for i in dmsgs:
if count == 0:
break
if self.config["edit_msgs"]:
try:
await i.edit(self.config["edit_text"])
except:
pass
await i.delete()
count -= 1
@loader.tag(
only_messages=True, no_media=True, no_inline=True,
out=True
)
async def watcher(self, message: types.Message):
if not message.raw_text.startswith(self.config['trigger']):
return
p = message.raw_text.partition(self.config['trigger'])[2]
count = int(p) if p.isdigit() else 1
dmsgs = []
msgs = await self._client.get_messages(
message.chat_id, limit=50+count
)
for i in msgs:
if i.id == message.id:
continue
if i.sender_id == self._client.tg_id:
dmsgs.append(i)
if self.config["edit_msgs"]:
await message.edit(self.config["edit_text"])
await message.delete()
for i in dmsgs:
if count == 0:
break
if self.config["edit_msgs"]:
try:
await i.edit(self.config["edit_text"])
except:
pass
await i.delete()
count -= 1