From 388572a126d687b118efd288a50ba448a218595b Mon Sep 17 00:00:00 2001 From: Chris Lovering Date: Fri, 21 Jun 2024 21:41:30 +0100 Subject: [PATCH] Update internal eval & latex to use the new paste service API --- bot/exts/core/internal_eval/_internal_eval.py | 18 ++++++++--------- bot/exts/fun/latex.py | 20 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/bot/exts/core/internal_eval/_internal_eval.py b/bot/exts/core/internal_eval/_internal_eval.py index 39ce558a1f..15db8d40df 100644 --- a/bot/exts/core/internal_eval/_internal_eval.py +++ b/bot/exts/core/internal_eval/_internal_eval.py @@ -4,6 +4,7 @@ import discord from discord.ext import commands from pydis_core.utils.logging import get_logger +from pydis_core.utils.paste_service import PasteFile, PasteTooLongError, PasteUploadError, send_to_paste_service from bot.bot import Bot from bot.constants import Client, Roles @@ -86,17 +87,16 @@ def shorten_output( async def _upload_output(self, output: str) -> str | None: """Upload `internal eval` output to our pastebin and return the url.""" data = self.shorten_output(output, max_length=MAX_LENGTH) + file = PasteFile(content=data, lexer="text") try: - async with self.bot.http_session.post( - "https://paste.pythondiscord.com/documents", data=data, raise_for_status=True - ) as resp: - data = await resp.json() - - if "key" in data: - return f"https://paste.pythondiscord.com/{data['key']}" - except Exception: - # 400 (Bad Request) means there are too many characters + resp = await send_to_paste_service( + files=[file], + http_session=self.bot.http_session, + ) + return resp.link + except (PasteTooLongError, PasteUploadError): log.exception("Failed to upload `internal eval` output to paste service!") + return None async def _send_output(self, ctx: commands.Context, output: str) -> None: """Send the `internal eval` output to the command invocation context.""" diff --git a/bot/exts/fun/latex.py b/bot/exts/fun/latex.py index 13b3c5030a..5ce60fa163 100644 --- a/bot/exts/fun/latex.py +++ b/bot/exts/fun/latex.py @@ -8,9 +8,10 @@ import discord from PIL import Image -from aiohttp import client_exceptions, web +from aiohttp import client_exceptions from discord.ext import commands from pydis_core.utils.logging import get_logger +from pydis_core.utils.paste_service import PasteFile, PasteTooLongError, PasteUploadError, send_to_paste_service from bot.bot import Bot from bot.constants import Channels, WHITELISTED_CHANNELS @@ -100,17 +101,16 @@ async def _generate_image(self, query: str, out_file: BinaryIO) -> None: async def _upload_to_pastebin(self, text: str) -> str | None: """Uploads `text` to the paste service, returning the url if successful.""" + file = PasteFile(content=text, lexer="text") try: - async with self.bot.http_session.post( - PASTEBIN_URL + "/documents", - data=text, - raise_for_status=True - ) as response: - response_json = await response.json() - if "key" in response_json: - return f"{PASTEBIN_URL}/{response_json['key']}.txt?noredirect" - except web.HTTPClientError as e: + resp = await send_to_paste_service( + files=[file], + http_session=self.bot.http_session, + ) + return resp.link + except (PasteTooLongError, PasteUploadError) as e: log.info("Error when uploading latex output to pastebin. %s", e) + return None async def _prepare_error_embed(self, err: InvalidLatexError | LatexServerError | None) -> discord.Embed: title = "Server encountered an issue, please retry later."