mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-07 21:53:07 -04:00
update translate header design (again, this time consistently)
This commit is contained in:
parent
e2075b8306
commit
c5d49cf0f7
5 changed files with 109 additions and 69 deletions
|
@ -4,12 +4,12 @@ const { TRANSLATE_DISPLAY_MAPPINGS, TRANSLATE_LANGUAGES, PERMISSION_GROUPS } = r
|
|||
const { getMessageAttachment, validateAttachment } = require('#utils/attachment');
|
||||
const { createEmbed } = require('#utils/embed');
|
||||
const { acknowledge } = require('#utils/interactions');
|
||||
const { codeblock, pill, icon, iconAsEmojiObject } = require('#utils/markdown');
|
||||
const { codeblock, pill, icon, stringwrap} = require('#utils/markdown');
|
||||
const { editOrReply } = require('#utils/message');
|
||||
const { STATICS, STATIC_ACTIONS } = require('#utils/statics');
|
||||
const { STATICS } = require('#utils/statics');
|
||||
const { Context, Argument } = require('detritus-client/lib/command');
|
||||
|
||||
const { ApplicationCommandTypes, MessageFlags, InteractionContextTypes, ApplicationIntegrationTypes, MessageComponentTypes, InteractionCallbackTypes } = require("detritus-client/lib/constants");
|
||||
const { ApplicationCommandTypes, MessageFlags, InteractionContextTypes, ApplicationIntegrationTypes, InteractionCallbackTypes } = require("detritus-client/lib/constants");
|
||||
const { Components } = require('detritus-client/lib/utils');
|
||||
|
||||
module.exports = {
|
||||
|
@ -39,13 +39,13 @@ module.exports = {
|
|||
if(attachment && validateAttachment(attachment, "image")){
|
||||
attachment = attachment.url
|
||||
} else {
|
||||
delete attachment;
|
||||
attachment = false;
|
||||
}
|
||||
if(!attachment) return editOrReply(context, createEmbed("warning", context, "No images found."))
|
||||
|
||||
let ocr = await googleVisionOcr(context, attachment)
|
||||
|
||||
if(ocr.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, ocr.response.body.text))
|
||||
if(ocr.response.body.status === 1) return editOrReply(context, createEmbed("warning", context, ocr.response.body.text))
|
||||
|
||||
const components = new Components({
|
||||
timeout: 100000,
|
||||
|
@ -54,11 +54,11 @@ module.exports = {
|
|||
|
||||
let translate = await googleTranslate(context, ocr.response.body.text, "en", "auto")
|
||||
|
||||
let fromFlag = TRANSLATE_DISPLAY_MAPPINGS[translate.response.body.language.from || sourceLanguage] || ''
|
||||
let fromFlag = TRANSLATE_DISPLAY_MAPPINGS[translate.response.body.language.from] || ''
|
||||
let toFlag = TRANSLATE_DISPLAY_MAPPINGS[translate.response.body.language.to] || ''
|
||||
|
||||
return editOrReply(context, createEmbed("default", context, {
|
||||
description: `${icon("locale")} ${fromFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.from || sourceLanguage] || translate.response.body.language.from || "Detected Language")} ${icon("arrow_right")} ${toFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.to] || translate.response.body.language.to)}\n${codeblock("ansi", [translate.response.body.translation])}`,
|
||||
description: `-# ${icon("locale")} ${fromFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.from] || translate.response.body.language.from || "Detected Language")} ${icon("arrow_right")} ${toFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.to] || translate.response.body.language.to)}\n${codeblock("ansi", [stringwrap(translate.response.body.translation, 1900)])}`,
|
||||
thumbnail: {
|
||||
url: attachment
|
||||
},
|
||||
|
|
|
@ -1,64 +1,104 @@
|
|||
const { googleVisionOcr } = require("#api");
|
||||
const { PERMISSION_GROUPS } = require("#constants");
|
||||
const {googleVisionOcr, googleTranslate} = require("#api");
|
||||
const {PERMISSION_GROUPS, TRANSLATE_DISPLAY_MAPPINGS, TRANSLATE_LANGUAGES} = require("#constants");
|
||||
|
||||
const { validateAttachment } = require("#utils/attachment");
|
||||
const { createEmbed } = require("#utils/embed");
|
||||
const { acknowledge } = require("#utils/interactions");
|
||||
const { codeblock, stringwrap } = require("#utils/markdown");
|
||||
const { editOrReply } = require("#utils/message");
|
||||
const { STATICS } = require("#utils/statics");
|
||||
const {validateAttachment} = require("#utils/attachment");
|
||||
const {createEmbed} = require("#utils/embed");
|
||||
const {acknowledge} = require("#utils/interactions");
|
||||
const {codeblock, stringwrap, icon, pill} = require("#utils/markdown");
|
||||
const {editOrReply} = require("#utils/message");
|
||||
const {STATICS} = require("#utils/statics");
|
||||
|
||||
const { ApplicationCommandOptionTypes, InteractionContextTypes, ApplicationIntegrationTypes } = require('detritus-client/lib/constants');
|
||||
const {
|
||||
ApplicationCommandOptionTypes,
|
||||
InteractionContextTypes,
|
||||
ApplicationIntegrationTypes,
|
||||
InteractionCallbackTypes
|
||||
} = require('detritus-client/lib/constants');
|
||||
const {Components} = require("detritus-client/lib/utils");
|
||||
|
||||
module.exports = {
|
||||
name: 'ocr',
|
||||
description: 'Reads text contents from an image.',
|
||||
contexts: [
|
||||
InteractionContextTypes.GUILD,
|
||||
InteractionContextTypes.PRIVATE_CHANNEL,
|
||||
InteractionContextTypes.BOT_DM
|
||||
],
|
||||
integrationTypes: [
|
||||
ApplicationIntegrationTypes.USER_INSTALL
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: 'image',
|
||||
description: 'Image to scan',
|
||||
type: ApplicationCommandOptionTypes.ATTACHMENT,
|
||||
required: true
|
||||
},
|
||||
{
|
||||
name: 'incognito',
|
||||
description: 'Makes the response only visible to you.',
|
||||
type: ApplicationCommandOptionTypes.BOOLEAN,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
],
|
||||
run: async (context, args) => {
|
||||
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
|
||||
|
||||
if(!validateAttachment(args.image, "image")) return await editOrReply(context, createEmbed("warning", context, "Unsupported attachment type."))
|
||||
|
||||
try{
|
||||
let ocr = await googleVisionOcr(context, args.image.url);
|
||||
|
||||
if(ocr.response.body.status == 1) return context.editOrRespond({ embeds: [createEmbed("warning", context, ocr.response.body.text)] })
|
||||
|
||||
return await editOrReply(context, createEmbed("default", context, {
|
||||
thumbnail: {
|
||||
url: args.image.url
|
||||
name: 'ocr',
|
||||
description: 'Reads text contents from an image.',
|
||||
contexts: [
|
||||
InteractionContextTypes.GUILD,
|
||||
InteractionContextTypes.PRIVATE_CHANNEL,
|
||||
InteractionContextTypes.BOT_DM
|
||||
],
|
||||
integrationTypes: [
|
||||
ApplicationIntegrationTypes.USER_INSTALL
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: 'image',
|
||||
description: 'Image to scan',
|
||||
type: ApplicationCommandOptionTypes.ATTACHMENT,
|
||||
required: true
|
||||
},
|
||||
description: codeblock("ansi", ["" + stringwrap(ocr.response.body.text, 2000)]),
|
||||
footer: {
|
||||
iconUrl: STATICS.googlelens,
|
||||
text: `Google Lens • ${context.application.name} • Took ${ocr.timings}s`
|
||||
{
|
||||
name: 'incognito',
|
||||
description: 'Makes the response only visible to you.',
|
||||
type: ApplicationCommandOptionTypes.BOOLEAN,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
],
|
||||
run: async (context, args) => {
|
||||
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
|
||||
|
||||
if (!validateAttachment(args.image, "image")) return await editOrReply(context, createEmbed("warning", context, "Unsupported attachment type."))
|
||||
|
||||
try {
|
||||
let ocr = await googleVisionOcr(context, args.image.url);
|
||||
|
||||
if (ocr.response.body.status === 1) return context.editOrRespond({embeds: [createEmbed("warning", context, ocr.response.body.text)]})
|
||||
|
||||
const components = new Components({
|
||||
timeout: 100000,
|
||||
run: async (ctx) => {
|
||||
if (ctx.userId !== context.userId) return await ctx.respond(InteractionCallbackTypes.DEFERRED_UPDATE_MESSAGE);
|
||||
|
||||
let translate = await googleTranslate(context, ocr.response.body.text, "en", "auto")
|
||||
|
||||
let fromFlag = TRANSLATE_DISPLAY_MAPPINGS[translate.response.body.language.from] || ''
|
||||
let toFlag = TRANSLATE_DISPLAY_MAPPINGS[translate.response.body.language.to] || ''
|
||||
|
||||
return editOrReply(context, createEmbed("default", context, {
|
||||
description: `-# ${icon("locale")} ${fromFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.from] || translate.response.body.language.from || "Detected Language")} ${icon("arrow_right")} ${toFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.to] || translate.response.body.language.to)}\n${codeblock("ansi", [stringwrap(translate.response.body.translation, 1900)])}`,
|
||||
thumbnail: {
|
||||
url: args.image.url
|
||||
},
|
||||
footer: {
|
||||
iconUrl: STATICS.googletranslate,
|
||||
text: `Google Translate • ${context.application.name}`
|
||||
}
|
||||
}))
|
||||
}
|
||||
})
|
||||
|
||||
components.addButton({
|
||||
label: "Translate",
|
||||
emoji: icon("button_translate"),
|
||||
custom_id: "actions-translate",
|
||||
style: 2
|
||||
})
|
||||
|
||||
return await editOrReply(context, {
|
||||
embeds: [createEmbed(
|
||||
"default", context, {
|
||||
thumbnail: {
|
||||
url: args.image.url
|
||||
},
|
||||
description: codeblock("ansi", ["" + stringwrap(ocr.response.body.text, 2000)]),
|
||||
footer: {
|
||||
iconUrl: STATICS.googlelens,
|
||||
text: `Google Lens • ${context.application.name} • Took ${ocr.timings}s`
|
||||
}
|
||||
})],
|
||||
components
|
||||
})
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
return editOrReply(context, createEmbed("error", context, "Unable to perform OCR."))
|
||||
}
|
||||
}))
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
return editOrReply(context, createEmbed("error", context, "Unable to perform OCR."))
|
||||
}
|
||||
}
|
||||
}
|
|
@ -76,14 +76,14 @@ module.exports = {
|
|||
let toFlag = TRANSLATE_DISPLAY_MAPPINGS[translate.response.body.language.to] || ''
|
||||
|
||||
return editOrReply(context, createEmbed("default", context, {
|
||||
description: `-# ${icon("subtext_translate")} Translated from ${fromFlag} **${TRANSLATE_LANGUAGES[translate.response.body.language.from || sourceLanguage] || translate.response.body.language.from || args.from}** to ${toFlag} **${TRANSLATE_LANGUAGES[translate.response.body.language.to] || translate.response.body.language.to}**.\n${codeblock("ansi", [translate.response.body.translation])}`,
|
||||
description: `-# ${icon("locale")} ${fromFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.from || sourceLanguage] || translate.response.body.language.from || "Detected Language")} ${icon("arrow_right")} ${toFlag} ${pill(TRANSLATE_LANGUAGES[translate.response.body.language.to] || translate.response.body.language.to)}\n${codeblock("ansi", [translate.response.body.translation])}`,
|
||||
footer: {
|
||||
iconUrl: STATICS.googletranslate,
|
||||
text: `Google Translate • ${context.application.name}`
|
||||
}
|
||||
}))
|
||||
}catch(e){
|
||||
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, createEmbed("error", context, `Unable to translate text.`))
|
||||
if(e.response?.body?.status && e.response.body.status === 2) return editOrReply(context, createEmbed("error", context, `Unable to translate text.`))
|
||||
console.log(e)
|
||||
return editOrReply(context, createEmbed("error", context, `Something went wrong.`))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue