From a16b4dcb172c7059780b58bc78c2751f6433c5df Mon Sep 17 00:00:00 2001 From: fzzinchemical Date: Wed, 26 Mar 2025 19:24:38 +0100 Subject: [PATCH] Refactor message handling by creating dedicated handlers for rule34 and yandere plugins, and add default string utility function --- deno.json | 4 +- src/bot.ts | 4 +- src/defaultString.ts | 3 + src/messages.ts | 104 +++----------------------------- src/plugins/rule34/messages.ts | 44 ++++++++++++++ src/plugins/yandere/messages.ts | 69 +++++++++++++++++++++ 6 files changed, 128 insertions(+), 100 deletions(-) create mode 100644 src/defaultString.ts create mode 100644 src/plugins/rule34/messages.ts create mode 100644 src/plugins/yandere/messages.ts diff --git a/deno.json b/deno.json index 452da91..c621ca1 100755 --- a/deno.json +++ b/deno.json @@ -16,6 +16,8 @@ "imports": { "@discordeno": "npm:@discordeno@18.0.1", "@std/assert": "jsr:@std/assert@1", - "@types/node": "npm:@types/node@^22.5.4" + "@types/node": "npm:@types/node@^22.5.4", + + "@root/" : "./src/" } } diff --git a/src/bot.ts b/src/bot.ts index 26b8d52..c1985ce 100755 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,5 +1,5 @@ import { createBot, Intents, startBot } from "npm:discordeno@18.0.1"; -import { messagehandler } from "./messages.ts"; +import { yandereMessageHandler } from "./messages.ts"; const BOT_TOKEN = Deno.env.get("BOT_TOKEN") ?? ""; if (!BOT_TOKEN) { @@ -14,7 +14,7 @@ const bot = createBot({ console.log("Bot is ready!"); }, async messageCreate(bot, message) { - await messagehandler(bot, message); + await yandereMessageHandler(bot, message); } } }); diff --git a/src/defaultString.ts b/src/defaultString.ts new file mode 100644 index 0000000..abc3c5a --- /dev/null +++ b/src/defaultString.ts @@ -0,0 +1,3 @@ +export function defaultString(s: string): string { + return s === "" ? "ERROR: Tried to send empty message" : s; +} \ No newline at end of file diff --git a/src/messages.ts b/src/messages.ts index a7d90f7..d6dd433 100755 --- a/src/messages.ts +++ b/src/messages.ts @@ -1,7 +1,6 @@ import { Bot, Message } from "npm:discordeno@18.0.1"; -import { drop5, r34test, refresh } from "./plugins/rule34/api.ts"; -import { logMessage } from "./logging.ts"; -import { dropYandere, dropYandere5, getPage, setPage } from "./plugins/yandere/api.ts"; +import { yandereMessageHandler } from "@root/plugins/yandere/messages.ts"; +import { rule34MessageHandler } from "@root/plugins/rule34/messages.ts"; const prefix = Deno.env.get("BOT_PREFIX") ?? ""; if (!prefix) { @@ -11,103 +10,14 @@ if (!prefix) { export async function messagehandler(bot: Bot, message: Message) { const command = message.content.split(" ")[0]; - const args = message.content.split(" ").slice(1); + // const args = message.content.split(" ").slice(1); switch (command) { case `${prefix}rule`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - bot.helpers.sendMessage(message.channelId, { - content: defaultString(await r34test()), - }); - } - break; - case `${prefix}rule5`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - bot.helpers.sendMessage(message.channelId, { - content: defaultString(await drop5()), - }); - } - break; - case `${prefix}refresh`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - await refresh(); - bot.helpers.sendMessage(message.channelId, { - content: "Refreshed", - }); - } - break; + rule34MessageHandler(bot, message) + break case `${prefix}yande`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - await refresh(); - bot.helpers.sendMessage(message.channelId, { - content: defaultString(await dropYandere()), - }); - } - break; - case `${prefix}yande5`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - await refresh(); - bot.helpers.sendMessage(message.channelId, { - content: defaultString(await dropYandere5()), - }); - } - break; - case `${prefix}yandepage`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - if (args[0] === undefined) { - bot.helpers.sendMessage(message.channelId, { - content: "Please provide a page number", - }); - } else if (isNaN(parseInt(args[0]))) { - bot.helpers.sendMessage(message.channelId, { - content: "Please provide a valid number", - }); - } else { - await setPage(parseInt(args[0])); - bot.helpers.sendMessage(message.channelId, { - content: "Page set to " + args[0], - }); - } - } - break; - case `${prefix}yandegetpage`: - logMessage(message); - if ( - message.channelId === 754338073101205524n || - message.guildId === undefined - ) { - bot.helpers.sendMessage(message.channelId, { - content: "Page is " + getPage(), - }); - } - break; - // TODO Add exception for when the ollama api is down + yandereMessageHandler(bot, message) + break } } -function defaultString(s: string): string { - return s === "" ? "ERROR: Tried to send empty message" : s; -} \ No newline at end of file diff --git a/src/plugins/rule34/messages.ts b/src/plugins/rule34/messages.ts new file mode 100644 index 0000000..4a9c671 --- /dev/null +++ b/src/plugins/rule34/messages.ts @@ -0,0 +1,44 @@ +import { Bot, Message } from "npm:discordeno@18.0.1"; +import { drop5, r34test, refresh } from "./api.ts"; +import { logMessage } from "@root/logging.ts"; +import { defaultString } from "@root/defaultString.ts"; + +export async function rule34MessageHandler(bot: Bot, message: Message) { + const command = message.content.split(" ").slice(1).join(" "); + switch (command) { + case `drop`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + bot.helpers.sendMessage(message.channelId, { + content: defaultString(await r34test()), + }); + } + break; + case `drop5`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + bot.helpers.sendMessage(message.channelId, { + content: defaultString(await drop5()), + }); + } + break; + case `refresh`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + await refresh(); + bot.helpers.sendMessage(message.channelId, { + content: "Refreshed", + }); + } + break; + } +} diff --git a/src/plugins/yandere/messages.ts b/src/plugins/yandere/messages.ts new file mode 100644 index 0000000..95407ca --- /dev/null +++ b/src/plugins/yandere/messages.ts @@ -0,0 +1,69 @@ +import { Bot, Message } from "npm:discordeno@18.0.1"; +import { dropYandere, dropYandere5, getPage, refresh, setPage } from "./api.ts"; +import { defaultString } from "@root/defaultString.ts"; +import { logMessage } from "@root/logging.ts"; + +export async function yandereMessageHandler(bot: Bot, message: Message) { + const command = message.content.split(" ").slice(1).join(" "); + const args = message.content.split(" ").slice(1); + + switch (command) { + case `drop`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + await refresh(); + bot.helpers.sendMessage(message.channelId, { + content: defaultString(await dropYandere()), + }); + } + break; + case `drop 5`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + await refresh(); + bot.helpers.sendMessage(message.channelId, { + content: defaultString(await dropYandere5()), + }); + } + break; + case `page`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + if (args[0] === undefined) { + bot.helpers.sendMessage(message.channelId, { + content: "Please provide a page number", + }); + } else if (isNaN(parseInt(args[0]))) { + bot.helpers.sendMessage(message.channelId, { + content: "Please provide a valid number", + }); + } else { + await setPage(parseInt(args[0])); + bot.helpers.sendMessage(message.channelId, { + content: "Page set to " + args[0], + }); + } + } + break; + case `getpage`: + logMessage(message); + if ( + message.channelId === 754338073101205524n || + message.guildId === undefined + ) { + bot.helpers.sendMessage(message.channelId, { + content: "Page is " + getPage(), + }); + } + break; + } +}