__version__ = (1, 2, 0)
"""
█▀▄▀█ █▀█ █▀█ █ █▀ █ █ █▀▄▀█ █▀▄▀█ █▀▀ █▀█
█ ▀ █ █▄█ █▀▄ █ ▄█ █▄█ █ ▀ █ █ ▀ █ ██▄ █▀▄
Copyright 2022 t.me/morisummermods
Licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
"""
# meta developer: @morisummermods
import logging
from telethon.tl.functions.channels import JoinChannelRequest
from telethon.tl.types import Message
from telethon.utils import get_display_name
from .. import loader, utils
logger = logging.getLogger(__name__)
class PicsaverMod(loader.Module):
""" "Automatic Self-destructing media saver to Saved Messages"""
strings = {"name": "Picsaver"}
async def client_ready(self, client, db) -> None:
self.enable = db.get(self.strings["name"], "enable", True)
if hasattr(self, "hikka"):
return
self.db = db
self.client = client
try:
await client(
JoinChannelRequest(await self.client.get_entity("t.me/morisummermods"))
)
except Exception:
logger.error("Can't join morisummermods")
async def watcher(self, message: Message) -> None:
if (
getattr(message, "media", False)
and getattr(message.media, "ttl_seconds", False)
and self.enable
and not message.out
):
media = await self.client.download_media(message.media)
name = get_display_name(await self.client.get_entity(message.sender_id))
return await self.client.send_file(
"me",
media,
caption=f"Self-destructing media from {name}",
)
async def spcmd(self, message: Message):
"""Reply to self-destructing media to save"""
reply = await message.get_reply_message()
if (
not reply
or not getattr(reply, "media", False)
or not getattr(reply.media, "ttl_seconds", False)
):
return await message.edit("Reply for self-destructing media !")
await message.delete()
media = await self.client.download_media(reply.media)
name = get_display_name(await self.client.get_entity(reply.sender_id))
return await self.client.send_file(
"me",
media,
caption=f"Self-destructing media from {name}",
)
async def pscmd(self, message: Message):
"""Enable/disable automatic self-destructing media save"""
if self.enable:
self.enable = False
self.db.set(self.strings["name"], "enable", False)
return await utils.answer(message, "Autosave is disabled")
else:
self.enable = True
self.db.set(self.strings["name"], "enable", True)
return await utils.answer(message, "Autosave is enabled")