feat: implement embed message handling and create Embed structure for improved message formatting

This commit is contained in:
fzzinchemical
2025-04-01 22:54:49 +02:00
parent 2a7a172f62
commit 2fcc67dbd7
3 changed files with 86 additions and 7 deletions

View File

@@ -1,16 +1,20 @@
import { Bot, Message } from "npm:discordeno@18.0.1";
import { Bot, Message} from "npm:discordeno@18.0.1";
import { drop, help, requestWorker } from "./plugin.ts";
import { logMessage } from "@root/logging.ts";
import { defaultString } from "@root/defaultString.ts";
import { Embed } from "@root/structures/embeds.ts";
export async function rule34MessageHandler(bot: Bot, message: Message) {
const command = message.content.trim().split(" ").slice(1).join(" ");
if (command.startsWith("[") && command.endsWith("]")) {
logMessage(message);
bot.helpers.sendMessage(message.channelId, {
content: defaultString(await requestWorker(command)),
});
const generatedEmbeds: Embed[] = await requestWorker(command)
for (const embed of generatedEmbeds) {
bot.helpers.sendMessage(message.channelId, {
embeds: [embed]
});
}
} else if (command === "help") {
logMessage(message);
bot.helpers.sendMessage(message.channelId, {

View File

@@ -1,5 +1,7 @@
import { assert } from "@std/assert/assert";
import {requestJSON, postUrl, ImageResponse} from "./api.ts"
import { Embed, EmbedAuthor, EmbedField, EmbedImage, Field } from "@root/structures/embeds.ts";
import { DiscordEmbedAuthor, DiscordEmbedImage } from "npm:discordeno@18.0.1";
const keys = ["limit" , "id" , "pid" , "tags"] as const
type PostKeys = typeof keys[number]
@@ -16,11 +18,17 @@ export async function drop() {
export async function requestWorker(requestString: string){
const response = await requestJSON<ImageResponse[]>(generateRequestURL(requestString))
const stack: string[] = []
const stack: Embed[] = []
for (const img of response) {
stack.push(img.file_url)
stack.push(new Embed(
`ID: ${img.id}`,
img.file_url,
new EmbedAuthor(img.owner),
[new EmbedField("Tags", img.tags, true)],
new EmbedImage(img.preview_url, img.height, img.width)
))
}
return stack.join("\n")
return stack
}
//TODO: get help in form of a nice beautiful format
@@ -65,6 +73,7 @@ export function generateRequestURL(requestString: string) {
return postCpy.href.toString().replaceAll("%2B", '+')
}
Deno.test("Test Request Parser", () => {
assert(requestParser("[limit: 12,tags:bro+likes+bread]"), '{ "limit" => "12", "tags" => "bro+likes+bread" }')
})