# @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", [])