From 6207352ecc115b3dc030693c82ebfc4920453525 Mon Sep 17 00:00:00 2001 From: ChrisJL Date: Thu, 4 Jul 2024 23:54:25 +0100 Subject: Update internal eval & latex to use the new paste service API (#1558) --- 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 39ce558a..15db8d40 100644 --- a/bot/exts/core/internal_eval/_internal_eval.py +++ b/bot/exts/core/internal_eval/_internal_eval.py @@ -4,6 +4,7 @@ import textwrap 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 @@ class InternalEval(commands.Cog): 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 13b3c503..5ce60fa1 100644 --- a/bot/exts/fun/latex.py +++ b/bot/exts/fun/latex.py @@ -8,9 +8,10 @@ from typing import BinaryIO 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 @@ class Latex(commands.Cog): 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." -- cgit v1.2.3