# @Sekai_Yoneya from .. import loader, utils import datetime, time from telethon import functions, types @loader.tds class AntiPMMod(loader.Module): strings = {"name": "Anti-PM", "pm_off": "Теперь вы принимаете сообщения от всех пользователей.", "pm_on": "Вы перестали принимать сообщения от пользователей.", "pm_go_away": "Здравствуй! К сожалению, я не принимаю личные сообщения." "\n\nСвяжитесь со мной в @sekai_pmbot, или ожидайте пока я одобрю вас.", "pm_allowed": "Я разрешил {} писать мне.", "pm_deny": "Я запретил {} писать мне.", "blocked": "{} был(-а) занесен(-а) в Черный Список.", "unblocked": "{} удален(-а) из Черного Списка.", "addcontact": "{} был(-а) добавлен(-а) в контакты.", "delcontact": "{} был(-а) удален(-а) из контактов.", "who_to_allow": "Кому разрешить писать в личку ?", "who_to_deny": "Кому запретить писать в личку ?", "who_to_block": "Укажите, кого блокировать.", "who_to_unblock": "Укажите, кого разблокировать.", "who_to_contact": "Укажите, кого добавить в контакт.", "who_to_delcontact": "Укажите, кого удалить из контактов."} def __init__(self): self.me = None async def client_ready(self, message, db): self.db=db self.client = client self.me = await client.get_me(True) async def pmcmd(self, message): """Используй: .pm : чтобы включить/отключить авто ответ на личные сообщения.""" pm = self.db.get("Anti-PM", "pm") if pm is not True: await utils.answer(message, self.strings["pm_off"]) self.db.set("Anti-PM", "pm", True) else: await utils.answer(message, self.strings["pm_on"]) self.db.set("Anti-PM", "pm", False) async def allowcmd(self, message): """Используй: .allow чтобы разрешить этому пользователю писать вам в личку.""" try: if message.is_private: user = await message.client.get_entity(message.chat_id) else: return except: return await message.edit("Это не лс.") self.db.set("Anti-PM", "allowed", list(set(self.db.get("Anti-PM", "allowed", [])).union({user.id}))) await utils.answer(message, self.strings["pm_allowed"].format(user.first_name)) async def denycmd(self, message): """Используй: .deny чтобы запретить этому пользователю писать вам в личку.""" args = utils.get_args_raw(message) reply = await message.get_reply_message() if not args and not reply: return await message.edit("Нет аргументов или реплая.") try: if message.is_private: user = await message.client.get_entity(message.chat_id) if args: if args.isnumeric(): user = await message.client.get_entity(int(args)) else: user = await message.client.get_entity(args) else: user = await message.client.get_entity(reply.sender_id) except: return await message.edit("Взлом жопы.") self.db.set("Anti-PM", "allowed", list(set(self.db.get("Anti-PM", "allowed", [])).difference({user.id}))) await utils.answer(message, self.strings["pm_deny"].format(user.first_name)) async def allowedcmd(self, message): """Используй: .allowed : чтобы посмотреть список пользователей которым вы разрешили писать в личку.""" await message.edit("ща покажу") allowed = self.db.get("Anti-PM", "allowed", []) number = 0 users = "" try: for _ in allowed: number += 1 try: user = await message.client.get_entity(int(_)) except: pass if not user.deleted: users += f"{number}. {user.first_name} | [{user.id}]\n" else: users += f"{number} • Удалённый аккаунт ID: [{user.id}]\n" await utils.answer(message, "Список пользователей которым я разрешил писать в личку:\n" + users) except: return await message.edit("Какой то айди из списка не правильный :/") async def blockcmd(self, message): """Используй: .block чтобы заблокировать этого пользователя.""" args = utils.get_args_raw(message) reply = await message.get_reply_message() if message.is_private: user = await message.client.get_entity(message.chat_id) else: if reply: user = await message.client.get_entity(reply.sender_id) else: user = await message.client.get_entity(int(args) if args.isnumeric() else args) if not user: await utils.answer(message, self.strings["who_to_block"]) return await message.client(functions.contacts.BlockRequest(user)) await utils.answer(message, self.strings["blocked"].format(user.first_name)) async def unblockcmd(self, message): """Используй: .unblock чтобы разблокировать этого пользователя.""" args = utils.get_args_raw(message) reply = await message.get_reply_message() if message.is_private: user = await message.client.get_entity(message.chat_id) else: if reply: user = await message.client.get_entity(reply.sender_id) else: user = await message.client.get_entity(int(args) if args.isnumeric() else args) if not user: await utils.answer(message, self.strings["who_to_unblock"]) return await message.client(functions.contacts.UnblockRequest(user)) await utils.answer(message, self.strings["unblocked"].format(user.first_name)) async def addcontcmd(self, message): """Используй: .addcont чтобы добавить пользователя в свои контакты.""" args = utils.get_args_raw(message) reply = await message.get_reply_message() if message.is_private: user = await message.client.get_entity(message.chat_id) else: if reply: user = await message.client.get_entity(reply.sender_id) else: user = await message.client.get_entity(int(args) if args.isnumeric() else args) if not user: await utils.answer(message, self.strings["who_to_contact"]) return await message.client(functions.contacts.AddContactRequest(id=user.id, first_name=user.first_name, last_name=' ', phone='seen', add_phone_privacy_exception=False)) await utils.answer(message, self.strings["addcontact"].format(user.first_name)) async def delcontcmd(self, message): """Используй: .delcont чтобы удалить пользователя из своих контактов.""" args = utils.get_args_raw(message) reply = await message.get_reply_message() if message.is_private: user = await message.client.get_entity(message.chat_id) else: if reply: user = await message.client.get_entity(reply.sender_id) else: user = await message.client.get_entity(int(args) if args.isnumeric() else args) if not user: await utils.answer(message, self.strings["who_to_delcontact"]) return await message.client(functions.contacts.DeleteContactsRequest(id=[user.id])) await utils.answer(message, self.strings["delcontact"].format(user.first_name)) async def renamecmd(self, message): args = utils.get_args_raw(message) reply = await message.get_reply_message() if not args: return await message.edit("Нету аргументов.") if not reply: return await message.edit("Где реплай?") else: user = await message.client.get_entity(reply.sender_id) try: await message.client(functions.contacts.AddContactRequest(id=user.id, first_name=args, last_name=' ', phone='мобила', add_phone_privacy_exception=False)) await message.edit(f"{user.id} переименован(-а) на {args}") except: return await message.edit("Что то пошло не так...") async def watcher(self, message): try: user = await utils.get_user(message) pm = self.db.get("Anti-PM", "pm") if message.sender_id == (await message.client.get_me()).id: return if pm is not True: if message.is_private: if not self.get_allowed(message.from_id): if user.bot or user.verified: return await utils.answer(message, self.strings["pm_go_away"]) except: pass def get_allowed(self, id): return id in self.db.get("Anti-PM", "allowed", [])