#
# @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@
# @@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@@
# @@! @@@ !@@ @@! @@! @@@ @@! @@@ @@! @@! @@! @@! @@@ @@! @@@ @@! @@@ @@! @@! !@@
# !@! @!@ !@! !@! !@! @!@ !@! @!@ !@! !@! !@! !@! @!@ !@! @!@ !@! @!@ !@! !@! !@!
# @!@!@!@! !!@@!! @!! @!@!!@! @!@ !@! @!! !!@ @!@ @!@ !@! @!@ !@! @!@ !@! @!! @!!!:! !!@@!!
# !!!@!!!! !!@!!! !!! !!@!@! !@! !!! !@! ! !@! !@! !!! !@! !!! !@! !!! !!! !!!!!: !!@!!!
# !!: !!! !:! !!: !!: :!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!! !!: !!: !:!
# :!: !:! !:! :!: :!: !:! :!: !:! :!: :!: :!: !:! :!: !:! :!: !:! :!: :!: !:!
# :: ::: :::: :: :: :: ::: ::::: :: ::: :: ::::: :: :::: :: ::::: :: :: :::: :: :::: :::: ::
# : : : :: : : : : : : : : : : : : : : :: : : : : : : :: : : : :: :: :: : :
#
# © Copyright 2024
#
# https://t.me/Den4ikSuperOstryyPer4ik
# and
# https://t.me/ToXicUse
#
# 🔒 Licensed under the GNU AGPLv3
# https://www.gnu.org/licenses/agpl-3.0.html
#
# meta developer: @AstroModules
# meta banner: https://raw.githubusercontent.com/Den4ikSuperOstryyPer4ik/Astro-modules/main/Banners/DialogsManager.jpg
import random
from telethon import functions
from telethon.tl.types import Message
from .. import loader
from ..utils import answer, get_args_raw
premium_emojies = [
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️",
"⭐️"
]
@loader.tds
class DialogsManagerMod(loader.Module):
'''
Check your all info for dialogs, chats, PMs
Delete definite dialog,
delete all dialogs by arguments,
leave the chats, ids/usernames which you specify
Dialogs Manager!
'''
strings = {
'name': 'DialogsManager',
'dialogs_info': "All Dialogs info:\n\n👤 All users PM ➪ {}\n👥 All chats ➪ {}\n📢 All channels ➪ {}\n🤖 All bots PM ➪ {}\n\n👤 Users(PM):\n\n 🚫 Fake ➪ {}\n 🚫 Scam ➪ {}\n {} Premium ➪ {}\n ✅️ Verified ➪ {}\n 🗑 Deleted ➪ {}\n\n👥 Chats:\n\n ✅ Megagroups ➪ {}\n\n ☑️ Gigagroups ➪ {}\n\n 🚫 Fake ➪ {}\n 🚫 Scam ➪ {}\n ✅️ Verified ➪ {}\n\n📢 Channels:\n 🚫 Fake ➪ {}\n 🚫 Scam ➪ {}\n ✅️ Verified ➪ {}\n\n🤖 Bots(PM):\n 🚫 Fake ➪ {}\n 🚫 Scam ➪ {}\n✅️ Verified ➪ {}",
"waiting_dinfo": "Please wait, loading information...",
}
strings_ru = {
"waiting_dinfo": "Пожалуйста подождите, идёт загрузка данных...",
}
@loader.command(
ru_doc="➪ полная информация о ваших диалогах, чатах лс и т.д.",
alias='dinfo'
)
async def dialogsinfo(self, message: Message):
"""➪ all info for your dialogs, chats, PMs..."""
msg = await answer(message, self.strings('waiting_dinfo'))
chats, users, scam_bots, scam_users, scam_chats, scam_channels, fake_users, fake_chats, fake_bots, fake_channels, bots, channels, premium, deleted, verified_users, verified_chats, verified_bots, verified_channels, gigagroups, megagroups = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
async for dialog in self._client.iter_dialogs():
ent = dialog.entity
if dialog.is_user:
if ent.bot:
bots += 1
if ent.scam:
scam_bots += 1
elif ent.verified:
verified_bots += 1
elif ent.fake:
fake_bots += 1
elif not ent.bot:
users += 1
if ent.deleted:
deleted += 1
elif ent.scam:
scam_users += 1
elif ent.verified:
verified_users += 1
elif ent.fake:
fake_users += 1
elif ent.premium:
premium += 1
elif dialog.is_group:
chats += 1
elif dialog.is_channel:
if ent.megagroup or ent.gigagroup:
if ent.megagroup:
megagroups += 1
elif ent.gigagroup:
gigagroups += 1
if ent.fake:
fake_chats += 1
elif ent.scam:
scam_chats += 1
elif ent.verified:
verified_chats += 1
elif not ent.megagroup and not ent.gigagroup:
channels += 1
if ent.fake:
fake_channels += 1
elif ent.scam:
scam_channels += 1
elif ent.verified:
verified_channels += 1
textik = self.strings('dialogs_info').format(
users, chats, channels, bots,
fake_users, scam_users,
random.choice(premium_emojies),
premium, verified_users, deleted,
megagroups, gigagroups, fake_chats,
scam_chats, verified_chats, fake_channels,
scam_channels, verified_channels, fake_bots,
scam_bots, verified_bots
)
await answer(msg, textik)
@loader.command(
ru_doc=" ➪ удалить чат(диалог) с юзером"
)
async def dialog_clear(self, message: Message):
""" ➪ delete dialog with user"""
args = get_args_raw(message)
try:
await self._client.delete_dialog(args)
except:
await answer(message, 'Кажется произошла ошибка...')
return
await answer(message, f'Чат с юзером «{args}» был удален успешно!')
@loader.command(
ru_doc="➪ алиас для команды 'dialogs_clear'"
)
async def dclear(self, message: Message):
"""➪ alias for command 'dialog_clear'"""
await self.dialog_clear(message)
@loader.command(
ru_doc="""Аргументы:
-deleted ➪ очистить все ЛС с удаленными аккаунтами
-fake ➪ очистить все ЛС с аккаунтами с пометкой "FAKE"
-scam ➪ очистить все ЛС со скам аккаунтами
-bots ➪ очистить все ЛС с ботами
-allpms ➪ очистить ВСЕ АБСОЛЮТНО ЛС(ОПАСНО)
-prem ➪ очистить все ЛС с юзерами, обладающими Premium⭐️
"""
)
async def all_dialogs_clear(self, message: Message):
"""
Arguments:
-deleted ➪ delete all dialogs PM with deleted accounts
-fake ➪ delete all dialogs PM with fake accounts
-scam ➪ delete all dialogs PM with scam accounts
-bots ➪ delete all dialog with bots
-allpms ➪ delete all dialogs PM
-prem ➪ delete all dialogs PM with PREMIUM⭐️ users
"""
await self.clear_dialogs(message)
async def clear_dialogs(self, message):
msg = await answer(message, "Пожалуйста подождите, выполняется очистка...")
args = get_args_raw(message)
deleted_dialogs = 0
async for chat in self._client.iter_dialogs():
if chat.is_user:
ent = chat.entity
if args == '-deleted' and ent.deleted:
await self._client.delete_dialog(chat.id)
deleted_dialogs += 1
elif args == '-fake' and ent.fake:
await self._client.delete_dialog(chat.id)
deleted_dialogs += 1
elif args == '-scam' and ent.scam:
await self._client.delete_dialog(chat.id)
deleted_dialogs += 1
elif args == '-bots' and ent.bot:
await self._client.delete_dialog(chat.id)
deleted_dialogs += 1
elif args == '-allpms' and chat.id != (await self._client.get_me()).id:
await self._client.delete_dialog(chat.id)
deleted_dialogs += 1
elif args == '-prem' and ent.premium:
await self._client.delete_dialog(chat.id)
deleted_dialogs += 1
#else:
# await answer(message, self.strings('args-wrong'))
# return
await answer(msg, f"Было успешно удалено {deleted_dialogs} чатов ЛС.")
@loader.command(
ru_doc="@chat_username1, @chat_username2, ... ➪ покинуть чаты, с определенными @username"
)
async def leave_chats(self, message: Message):
"""@chat_username1, @chat_username2, ... ➪ leave chats, with usernames in arguments"""
args = get_args_raw(message)
if not args:
await answer(message, 'Не было указано аргументов.')
return
msg = await answer(message, 'Пожалуйста подождите, процесс выполняется...')
dd = args.split(', ')
leave_chatsss = 0
for id in dd:
await self._client(functions.channels.LeaveChannelRequest(channel=id))
leave_chatsss += 1
await answer(msg, f'Работа завершена.\nВы успешно покинули {leave_chatsss} чата(-ов)!')