Skip to content

Commit

Permalink
carbon 代码截图
Browse files Browse the repository at this point in the history
  • Loading branch information
omg-xtao authored Feb 9, 2024
1 parent 856840d commit aa352a0
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions carbon/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import os
from io import BytesIO


from pagermaid.enums import AsyncClient, Message
from pagermaid.listener import listener
from pagermaid.utils import lang


async def make_carbon(code: str, client: AsyncClient) -> BytesIO:
url = "https://carbonara.solopov.dev/api/cook"
resp = await client.post(url, json={"code": code}, timeout=60.0)
image = BytesIO(resp.read())
image.name = "carbon.png"
return image


async def get_from_file(message: Message) -> str:
msg = None
reply = message.reply_to_message
if message.document and message.document.mime_type.startswith("text"):
msg = message
elif reply.document and reply.document.mime_type.startswith("text"):
msg = reply
if msg:
path = await msg.download()
try:
with open(path, "r", encoding="utf-8") as f:
text = f.read()
except UnicodeDecodeError:
return ""
finally:
os.remove(path)
return text


@listener(command="carbon", description="Take an image of code snippet.", parameters="code")
async def carbon_func(client: AsyncClient, message: Message):
code = await get_from_file(message)
if not code:
code = message.obtain_message()
if not code:
return await message.edit(lang("arg_error"))
message = await message.edit("`Preparing Carbon . . .`")
carbon = await make_carbon(code, client)
message = await message.edit("`Uploading . . .`")
await message.reply_photo(carbon, quote=False)
await message.safe_delete()

0 comments on commit aa352a0

Please sign in to comment.