UNPKG

koishi-plugin-parenthesis-balancer

Version:

A plugin for Koishi to balance parentheses in messages

66 lines (65 loc) 3.24 kB
import { Context } from "koishi"; import { balanceParenthesis, PairCannotMatchError } from "./balancer"; import { balancePusheen, cannotBalance } from "./pusheen"; export function apply(ctx: Context) { ctx.middleware(async (session, next) => { if (false && session.content?.includes('sticker')) { // TODO wait for https://github.com/satorijs/satori/pull/347 const t = session.event._data.message const retStickerFileID = balancePusheen(session.content) if (retStickerFileID) { session.send('<sticker id=' + retStickerFileID + '>') } else if (cannotBalance(session.content)) { session.send(`<reply id=${session.messageId}>🍓 IN CRISIS, CANNOT balance your Pusheen!`); } } else if (session.content) { try { const responseText = balanceParenthesis(session.content!) if (responseText) session.send(responseText) } catch (e) { if (e instanceof PairCannotMatchError) { session.send(e.message) } else { throw new Error(`Exception ${e} when handling message ${JSON.stringify(session.content, null, 2)}`) } } } await next(); // else if ('inline_query' in reqBody && 'query' in reqBody.inline_query) { // const queryID = reqBody.inline_query.id // const queryText = reqBody.inline_query.query // try { // const balancedText = queryText + balanceParenthesis(queryText) // await botRequest('answerInlineQuery', { // inline_query_id: queryID, // results: [ // { // type: 'article', // id: Math.random(), // title: balancedText, // input_message_content: { // message_text: balancedText, // }, // }, // ], // }) // } catch (e) { // if (e instanceof PairCannotMatchError) { // await botRequest('answerInlineQuery', { // inline_query_id: queryID, // results: [ // { // type: 'article', // id: Math.random(), // title: 'CANNOT balance your parenthesis', // input_message_content: { // message_text: 'CANNOT balance your parenthesis', // }, // }, // ], // }) // } // } // } }); }