From e946bf0c24222371ec23c49c00f2058bb8c5f7f3 Mon Sep 17 00:00:00 2001 From: derpystuff <3515180-derpystuff@users.noreply.gitlab.com> Date: Thu, 7 Dec 2023 22:16:51 +0100 Subject: [PATCH] latex command --- commands/message/utils/latex.js | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 commands/message/utils/latex.js diff --git a/commands/message/utils/latex.js b/commands/message/utils/latex.js new file mode 100644 index 0000000..f13f4e3 --- /dev/null +++ b/commands/message/utils/latex.js @@ -0,0 +1,51 @@ +const { paginator } = require("../../../labscore/client"); +const { createEmbed, page, formatPaginationEmbeds } = require("../../../labscore/utils/embed"); +const { codeblock } = require("../../../labscore/utils/markdown"); +const { editOrReply } = require("../../../labscore/utils/message"); + +const { Permissions } = require("detritus-client/lib/constants"); + +const TEX_REGEX = /(\$.*?\$)/g +const TEX_URL = `https://latex.codecogs.com/png.image?\\inline&space;\\huge&space;\\dpi{200}&space;\\color{white}` + +module.exports = { + name: 'latex', + aliases: ['tex'], + label: 'content', + metadata: { + description: 'Renders LaTeX expressions.\nReply to a message to render TeX from it.', + description_short: 'LaTeX preview.', + category: 'utils', + usage: 'latex ' + }, + permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS], + run: async (context, args) => { + context.triggerTyping(); + + let content = args.content + if (context.message.messageReference) { + let msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId) + if(msg.content && msg.content.length) content = msg.content + if(msg.embeds?.length) for(const e of msg.embeds) if(e[1].description?.length) { content += '\n' + e[1].description; break; } + } + + let texBlocks = content.match(TEX_REGEX); + + let pages = []; + for(const t of texBlocks){ + let description; + if(args.content.includes('-i')) description = codeblock("tex", [t]) + pages.push(page(createEmbed("default", context, { + description, + image: { + url: TEX_URL + encodeURIComponent(t.substr(1,t.length - 2)) + } + }))) + } + + return await paginator.createPaginator({ + context, + pages: formatPaginationEmbeds(pages) + }); + }, +}; \ No newline at end of file