diff --git a/commands/message/google/labels.js b/commands/message/google/labels.js new file mode 100644 index 0000000..367640b --- /dev/null +++ b/commands/message/google/labels.js @@ -0,0 +1,44 @@ +const { googleVisionLabels } = require("../../../labscore/api"); +const { getRecentImage } = require("../../../labscore/utils/attachment"); +const { createEmbed } = require("../../../labscore/utils/embed"); +const { codeblock } = require("../../../labscore/utils/markdown"); +const { editOrReply } = require("../../../labscore/utils/message"); +const { STATICS } = require("../../../labscore/utils/statics"); + +module.exports = { + name: 'labels', + metadata: { + description: 'Image Labelling', + examples: ['labels'], + category: 'utils', + usage: 'labels ' + }, + run: async (context) => { + context.triggerTyping(); + let image = await getRecentImage(context, 50) + if (!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] }) + + let label = await googleVisionLabels(context, image) + + let labels = [] + for(const l of label.response.body.labels){ + labels.push({ + name: l.name, + value: `${l.score.toString().substr(2,2)}.${l.score.toString().substr(3,1)}%`, + inline: true + }) + } + return editOrReply(context, { + embeds: [createEmbed("default", context, { + fields: labels, + thumbnail: { + url: image + }, + footer: { + iconUrl: STATICS.google, + text: `Google Cloud Vision • ${context.application.name} • Took ${label.timings}s` + } + })] + }) + }, +}; \ No newline at end of file diff --git a/commands/message/google/safetylabels.js b/commands/message/google/safetylabels.js new file mode 100644 index 0000000..63d7c4d --- /dev/null +++ b/commands/message/google/safetylabels.js @@ -0,0 +1,44 @@ +const { googleVisionSafetyLabels } = require("../../../labscore/api"); +const { getRecentImage } = require("../../../labscore/utils/attachment"); +const { createEmbed } = require("../../../labscore/utils/embed"); +const { codeblock } = require("../../../labscore/utils/markdown"); +const { editOrReply } = require("../../../labscore/utils/message"); +const { STATICS } = require("../../../labscore/utils/statics"); + +module.exports = { + name: 'safetylabels', + metadata: { + description: 'Image Safe Search Labels', + examples: ['labels'], + category: 'utils', + usage: 'safetylabels ' + }, + run: async (context) => { + context.triggerTyping(); + let image = await getRecentImage(context, 50) + if (!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] }) + + let label = await googleVisionSafetyLabels(context, image) + + let labels = [] + for(const l of Object.keys(label.response.body.labels)){ + labels.push({ + name: l.charAt(0).toUpperCase() + l.slice(1), + value: label.response.body.labels[l], + inline: true + }) + } + return editOrReply(context, { + embeds: [createEmbed("default", context, { + fields: labels, + thumbnail: { + url: image + }, + footer: { + iconUrl: STATICS.google, + text: `Google Cloud Vision • ${context.application.name} • Took ${label.timings}s` + } + })] + }) + }, +}; \ No newline at end of file