from .. import loader, utils # pylint: disable=relative-beyond-top-level
import logging
import pygments
from pygments.lexers import Python3Lexer
from pygments.formatters import ImageFormatter
import os
logger = logging.getLogger(__name__)
def register(cb):
cb(py2pngMod())
@loader.tds
class py2pngMod(loader.Module):
"""Uploader"""
strings = {
"name": "pypng"
}
async def client_ready(self, client, db):
self.client = client
@loader.sudo
async def pypngcmd(self, message):
"""reply to text code or py file"""
await message.edit("Py to PNG")
reply = await message.get_reply_message()
if not reply:
await message.edit("reply to file.py")
return
media = reply.media
if not media:
await message.edit("reply to file.py")
return
file = await message.client.download_file(media)
text = file.decode('utf-8')
pygments.highlight(text, Python3Lexer(), ImageFormatter(font_name='DejaVu Sans Mono', line_numbers=True), 'out.png')
await message.client.send_file(message.to_id, 'out.png', force_document=True)
os.remove("out.png")
await message.delete()