From 31fcb83aca7d1ee38d97fb802c3bb67c12186671 Mon Sep 17 00:00:00 2001 From: derpystuff <3515180-derpystuff@users.noreply.gitlab.com> Date: Mon, 13 Nov 2023 13:43:36 +0100 Subject: [PATCH] nvm pissbot keeps on winning --- commands/message/image/craiyon.js | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 commands/message/image/craiyon.js diff --git a/commands/message/image/craiyon.js b/commands/message/image/craiyon.js new file mode 100644 index 0000000..eadde75 --- /dev/null +++ b/commands/message/image/craiyon.js @@ -0,0 +1,63 @@ +const { createEmbed } = require("../../../labscore/utils/embed"); +const { editOrReply } = require("../../../labscore/utils/message"); + +const superagent = require('superagent'); + +const { Permissions } = require("detritus-client/lib/constants"); +const { STATICS } = require("../../../labscore/utils/statics"); + +module.exports = { + name: 'craiyon', + label: 'query', + metadata: { + description: 'Uses Craiyon to generate four images from a text prompt.', + description_short: 'Craiyon AI image generation', + examples: ['craiyon Otter'], + category: 'image', + usage: 'craiyon ' + }, + ratelimit: { + type: 'guild', + limit: 1, + duration: 5000 + }, + permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY], + run: async (context, args) => { + await editOrReply(context, createEmbed("loading", context, `Synthesizing images...`)) + + let noticeTimer = setTimeout(()=>{ + let emb = createEmbed("loading", context, `Synthesizing images...`) + emb.footer = { + text: "This might take several minutes to complete." + }; + editOrReply(context, { embeds: [ emb ] }); + }, 30000) + + try{ + let t = Date.now(); + + let img = await superagent.post(`https://bf.dallemini.ai/generate`) + .send({ + prompt: args.query + }) + + clearTimeout(noticeTimer) + + let embeds = []; + let files = []; + + for(let i = 0; i < 4; i++){ + embeds.push(createEmbed("default", context, {image: {url:`attachment://dalle${i}.jpeg`}, url: `https://example.com`, footer: { iconUrl: STATICS.labscore, text: `${context.application.name} • Took ${((Date.now() - t) / 1000).toFixed(2)}s` }})) + files.push({ + filename: `dalle${i}.jpeg`, + value: Buffer.from(img.body.images[i], 'base64') + }) + } + + await editOrReply(context, { embeds, files }) + }catch(e){ + if(e.response.status == 503) return await editOrReply(context, createEmbed("error", context, `DALL-E Mini server is busy, try again later.`)) + await editOrReply(context, createEmbed("error", context, `Image generation failed.`)) + } + }, +};