uniborg/stdplugins/ninja.py

45 lines
1.3 KiB
Python

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import asyncio
from telethon import events
import telethon.utils
from uniborg import util
async def get_target_message(event):
if event.is_reply and (await event.reply_message).from_id == borg.uid:
return event.reply_message
async for message in borg.iter_messages(await event.input_chat, limit=20):
if message.out:
return message
async def await_read(chat, message):
chat = telethon.utils.get_peer_id(chat)
async def read_filter(read_event):
return (telethon.utils.get_peer_id(await read_event.input_chat) == chat
and read_event.is_read(message))
fut = borg.await_event(events.MessageRead(inbox=False), read_filter)
if await util.is_read(borg, chat, message):
fut.cancel()
return
await fut
@borg.on(util.admin_cmd(r"^\.del(ete)?$"))
async def delete(event):
await event.delete()
target = await get_target_message(event)
if target:
chat = await event.input_chat
await await_read(chat, target)
await asyncio.sleep(.5)
await borg.delete_messages(chat, target)