# -*- coding: utf-8 -*-
import asyncio
import logging
from telethon import types
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class PMLogMod(loader.Module):
"""Logs unwanted PMs to a channel"""
strings = {
"name": "PM Logger",
"start": "Your conversation is now being logged",
"not_pm": "You can't log a group",
"stopped": "Your conversation is no longer being logged",
"log_group_cfg_doc": "Group or channel ID where to send the logged PMs",
}
def __init__(self):
self.config = loader.ModuleConfig(
"LOG_GROUP", None, lambda m: self.strings("log_group_cfg_doc", m)
)
async def logpmcmd(self, message):
"""Begins logging PMs"""
if (
not message.is_private
or message.to_id.user_id == (await message.client.get_me(True)).user_id
):
await utils.answer(message, self.strings("not_pm", message))
return
self._db.set(
__name__,
"users",
list(set(self._db.get(__name__, "users", []) + [message.to_id.user_id])),
)
msgs = await utils.answer(message, self.strings("start", message))
await asyncio.sleep(1)
await message.client.delete_messages(message.to_id, msgs)
async def unlogpmcmd(self, message):
"""Stops logging PMs"""
if (
not message.is_private
or message.to_id.user_id == (await message.client.get_me(True)).user_id
):
await utils.answer(message, self.strings("not_pm", message))
return
self._db.set(
__name__,
"users",
list(
set(self._db.get(__name__, "users", [])).difference(
[message.to_id.user_id]
)
),
)
await utils.answer(message, self.strings("stopped", message))
async def watcher(self, message):
if not message.is_private or not isinstance(message, types.Message):
return
if self.config["LOG_GROUP"] and utils.get_chat_id(message) in self._db.get(
__name__, "users", []
):
await message.forward_to(self.config["LOG_GROUP"])
async def client_ready(self, client, db):
self._db = db