koishi-plugin-parenthesis-balancer
Version:
A plugin for Koishi to balance parentheses in messages
66 lines (65 loc) • 3.24 kB
text/typescript
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',
// },
// },
// ],
// })
// }
// }
// }
});
}