# # @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@ # @@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@@ # @@! @@@ !@@ @@! @@! @@@ @@! @@@ @@! @@! @@! @@! @@@ @@! @@@ @@! @@@ @@! @@! !@@ # !@! @!@ !@! !@! !@! @!@ !@! @!@ !@! !@! !@! !@! @!@ !@! @!@ !@! @!@ !@! !@! !@! # @!@!@!@! !!@@!! @!! @!@!!@! @!@ !@! @!! !!@ @!@ @!@ !@! @!@ !@! @!@ !@! @!! @!!!:! !!@@!! # !!!@!!!! !!@!!! !!! !!@!@! !@! !!! !@! ! !@! !@! !!! !@! !!! !@! !!! !!! !!!!!: !!@!!! # !!: !!! !:! !!: !!: :!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!! !!: !!: !:! # :!: !:! !:! :!: :!: !:! :!: !:! :!: :!: :!: !:! :!: !:! :!: !:! :!: :!: !:! # :: ::: :::: :: :: :: ::: ::::: :: ::: :: ::::: :: :::: :: ::::: :: :: :::: :: :::: :::: :: # : : : :: : : : : : : : : : : : : : : :: : : : : : : :: : : : :: :: :: : : # # © 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} чата(-ов)!')