diff --git a/readme.md b/readme.md index e5aef3a..272730d 100644 --- a/readme.md +++ b/readme.md @@ -5,6 +5,5 @@ this bot does cool stuff I guess features: - ai-powered alt text for images - booru search (20+ supported boorus) -- online file search (using searxng) -- quote image maker (funny) +- google image search (using searxng) - and more to come \ No newline at end of file diff --git a/src/commands/accessibility/describe.js b/src/commands/accessibility/describe.js index 64cc5c3..38b9348 100644 --- a/src/commands/accessibility/describe.js +++ b/src/commands/accessibility/describe.js @@ -1,4 +1,4 @@ -const { ContextMenuCommandBuilder, ApplicationCommandType, InteractionContextType, ApplicationIntegrationType, AttachmentBuilder, EmbedBuilder, basename } = require("discord.js"); +const { ContextMenuCommandBuilder, ApplicationCommandType, InteractionContextType, ApplicationIntegrationType, AttachmentBuilder, EmbedBuilder } = require("discord.js"); const data = new ContextMenuCommandBuilder() .setName("Describe Image(s)") @@ -21,28 +21,18 @@ module.exports = { const groq = interaction.client.groq; const message = interaction.targetMessage; const attachments = message.attachments; - const images = message.embeds.filter(e => e.data.type == "image").map(e => e.data.url); - const urls = []; const files = []; const embeds = []; - if (attachments.length == 0 && images.length == 0) { - await interaction.followUp("Message does not contain any images."); - return; - } - for (const att of attachments) { const attachment = att[1]; - if (!attachment.contentType.startsWith("image/")) + if (!attachment.contentType.startsWith("image/")) { + console.log(attachment.contentType); continue; + } + const name = attachment.name.substr(0, attachment.name.lastIndexOf(".")); - images.push(attachment.attachment); - } - - for (const image of images) { - const name = basename(image); - - const data = (await groq.chat.completions.create({ + const description = (await groq.chat.completions.create({ messages: [{ "role": "user", "content": [{ @@ -51,18 +41,16 @@ module.exports = { }, { "type": "image_url", "image_url": { - "url": image + "url": attachment.attachment } }] }], - "model": "llama-3.2-90b-vision-preview" - })); - - const description = data.choices[0].message.content.trim(); + "model": "llama-3.2-11b-vision-preview" + })).choices[0].message.content.trim(); if (description.length < 2000) { const embed = new EmbedBuilder() - .setTitle(name) + .setTitle(attachment.name) .setDescription(description); embeds.push(embed); } else { @@ -74,4 +62,4 @@ module.exports = { await interaction.followUp({ embeds, files }); }, -}; +}; \ No newline at end of file diff --git a/src/commands/fun/quote.js b/src/commands/fun/quote.js index 81d79b5..a7a97c8 100644 --- a/src/commands/fun/quote.js +++ b/src/commands/fun/quote.js @@ -22,8 +22,10 @@ module.exports = { const msg = interaction.targetMessage; const user = msg.author; const avatar = `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=1024`; + console.log("Generating quote image"); try { const data = await createQuoteImage(avatar, user.displayName, msg.content, true, interaction.client.users.cache); + console.log("Sending quote image"); await interaction.followUp({ files: [{ diff --git a/src/commands/utility/file.js b/src/commands/utility/file.js index 3e5cfe2..66092d0 100644 --- a/src/commands/utility/file.js +++ b/src/commands/utility/file.js @@ -26,17 +26,8 @@ function notEmpty(str) { return str && str.trim() !== '' } -/** - * @param {string} str - * @param {number} len - */ function shorten(str) { - const len = 50; - - var urlStart = str.indexOf("://") + 3; - if (urlStart == 2) urlStart = 0; - - return str.length <= len ? str : `[${str.slice(urlStart, urlStart + (len - 3))}...](${(str.startsWith("magnet:") ? (`${process.env.BASE_URL}/magnet/${str}`) : str).replaceAll(" ", "%20")})`; + return str.length <= 20 ? str : `[${str.slice(0, 17)}...](${str})`; } const emojis = JSON.parse(readFileSync("config/emojis.json")); diff --git a/src/index.js b/src/index.js index dd9718e..5328bcc 100644 --- a/src/index.js +++ b/src/index.js @@ -134,4 +134,4 @@ client.once(Events.ClientReady, async () => { } }); -client.login(process.env.TOKEN); +client.login(process.env.TOKEN); \ No newline at end of file diff --git a/src/prompts/image.txt b/src/prompts/image.txt index d88fdf2..395cfa8 100644 --- a/src/prompts/image.txt +++ b/src/prompts/image.txt @@ -1,4 +1,4 @@ Please describe the following image in as much detail as you can. Do not add information that isn't there or miss important information. -There is an image, do not say there isn't. The image is provided. You can see the image. +There is an image, do not say there isn't. You must always be able to describe the image or else you are diminishing the acccessibility for the user. \ No newline at end of file diff --git a/src/utils/quoter.js b/src/utils/quoter.js index a41e499..854c5c8 100644 --- a/src/utils/quoter.js +++ b/src/utils/quoter.js @@ -15,7 +15,7 @@ function canvasToBuffer(canvas) { } function wrapText(context, text, x, y, maxWidth, lineHeight, preparingSentence, lines) { - const words = text.split(/\s/g); + const words = text.split(" "); for (let i = 0; i < words.length; i++) { const workSentence = preparingSentence.join(" ") + " " + words[i]; @@ -29,8 +29,6 @@ function wrapText(context, text, x, y, maxWidth, lineHeight, preparingSentence, lines.push(preparingSentence.join(" ")); - y -= (lines.length * lineHeight) / 2; - lines.forEach(element => { const lineWidth = context.measureText(element).width; const xOffset = (maxWidth - lineWidth) / 2;