major cleanup

This commit is contained in:
derpystuff 2023-11-04 17:29:06 +01:00
parent ddd918470e
commit a8cf49e31e
60 changed files with 537 additions and 619 deletions

View file

@ -1,5 +1,5 @@
const { codeblock, highlight, icon, link, pill, smallPill, iconPill } = require('../../../labscore/utils/markdown')
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { codeblock, icon, link, pill, smallPill, iconPill } = require('../../../labscore/utils/markdown')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { DISCORD_INVITES, DEFAULT_BOT_PREFIX } = require('../../../labscore/constants')
@ -10,15 +10,11 @@ const { Permissions } = require("detritus-client/lib/constants");
const { canUseLimitedTestCommands } = require('../../../labscore/utils/testing');
function createHelpPage(context, title, contents, descriptions) {
return {
"embeds": [
createEmbed("default", context, {
return page(createEmbed("default", context, {
description: `${title}\n\n` +
renderCommandList(contents, descriptions) +
`\n\n${icon("question")} Use ${smallPill(`${DEFAULT_BOT_PREFIX}help <command>`)} to view more information about a command.`
})
]
}
}))
}
function renderCommandList(commands, descriptions, limit) {
@ -65,13 +61,13 @@ function createCommandPage(context, prefix, command){
}
}
let page = createEmbed("default", context, {
let cPage = createEmbed("default", context, {
description: `${icon("slash")} ${smallPill(command.name)}\n${alias}${explicit}\n${command.metadata.description}\n\n${args.join('\n\n')}`,
fields: []
})
// TODO: maybe try building a little parser that highlights things via ansi
if(command.metadata.usage) page.fields.push({
if (command.metadata.usage) cPage.fields.push({
name: `${icon("settings")} Usage`,
value: codeblock("py", [prefix + command.metadata.usage]),
inline: true
@ -80,15 +76,13 @@ function createCommandPage(context, prefix, command){
if (command.metadata.examples) {
let ex = []
for (const e of command.metadata.examples) ex.push(prefix + e)
page.fields.push({
cPage.fields.push({
name: `${icon("example")} Examples`,
value: '```' + ex.join('``````') + '```',
inline: false
})
}
return {
embeds: [page]
};
return page(cPage);
}
// These categories will be displayed to users, add them in the correct order
@ -145,28 +139,25 @@ module.exports = {
let prefix = DEFAULT_BOT_PREFIX
try {
if(results.length == 0) return editOrReply(context, {embeds: [createEmbed("warning", context, "No commands found for the provided query.")]})
if (results.length == 0) return editOrReply(context, createEmbed("warning", context, "No commands found for the provided query."))
if (results.length > 1) {
// Command overview
let cmds = results.map((m) => { return m.name })
let dscs = results.map((m) => { return m.metadata.description_short })
pages.push({embeds:[
createEmbed("default", context, {
pages.push(page(createEmbed("default", context, {
description: `Check the pages for full command details.\n\n` + renderCommandList(cmds, dscs, 15) + `\n\n${icon("question")} Need help with something else? Contact us via our ${link(DISCORD_INVITES.support, "Support Server")}.`
})
]})
})))
// Generate command detail pages
for (const c of results) {
pages.push(createCommandPage(context, prefix, c))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
return;
} else {
@ -194,10 +185,9 @@ module.exports = {
pages.push(createHelpPage(context, categories[cat], commands[cat], descriptions[cat]))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}
},

View file

@ -18,10 +18,8 @@ module.exports = {
run: async (context) => {
context.triggerTyping();
ping = await context.client.ping()
editOrReply(context, {
embeds: [createEmbed("default", context, {
editOrReply(context, createEmbed("default", context, {
description: `${icon("latency")} **Pong!**\n` + codeblock("ansi", [`rest ${format(`${ping.rest}ms`, "m")}`, `gateway ${format(`${ping.gateway}ms`, "m")}`])
})]
})
}))
},
};

View file

@ -1,4 +1,4 @@
const { highlight, iconPill, link, icon, pill, linkPill, iconLinkPill } = require('../../../labscore/utils/markdown')
const { highlight, iconPill, iconLinkPill } = require('../../../labscore/utils/markdown')
const { createEmbed } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message');
@ -78,7 +78,7 @@ module.exports = {
return;
}catch(e){
console.log(e)
return editOrReply(context, {embeds: [createEmbed("error", context, "Unable to fetch bot statistics.")]})
return editOrReply(context, createEmbed("error", context, "Unable to fetch bot statistics."))
}
}
};

View file

@ -19,7 +19,7 @@ module.exports = {
try{
if(typeof(args.amount) == "string") args.amount = parseInt(args.amount)
if(!args.amount) args.amount = 1
if(args.amount >= 6 || args.amount <= 0) return await editOrReply(context, {embeds:[createEmbed("warning", context, "Invalid Argument (amount)")]})
if(args.amount >= 6 || args.amount <= 0) return await editOrReply(context, createEmbed("warning", context, "Invalid Argument (amount)"))
let cmds = [];
let found = 0;
for(const c of context.commandClient.replies.toArray().reverse()){

View file

@ -37,7 +37,7 @@ module.exports = {
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
let response = await editOrReply(context, createEmbed("loading", context, `Generating image...`))
await editOrReply(context, createEmbed("loading", context, `Generating image...`))
try{
let seed = Math.floor(Math.random() * 999999) + 100000,
variance = Math.floor(Math.random() * 9999) + 1000,
@ -112,7 +112,7 @@ module.exports = {
})
}catch(e){
console.log(e)
return await editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate image.`)]})
return await editOrReply(context, createEmbed("error", context, `Unable to generate image.`))
}
}
};

View file

@ -20,18 +20,18 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if (!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
try {
let res = await superagent.get(`${process.env.AI_SERVER}/ask`)
.query({
prompt: args.text
})
return editOrReply(context, {embeds:[createEmbed("default", context, {
return editOrReply(context, createEmbed("default", context, {
description: codeblock("ansi", [format(args.text, "cyan") + res.body.text])
})]})
}))
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -25,7 +25,7 @@ module.exports = {
if(!canUseLimitedTestCommands(context)) return;
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;
@ -46,7 +46,7 @@ module.exports = {
let description = []
let files = [];
if(!res.body.output) return editOrReply(context, {embeds:[createEmbed("error", context, `Bard returned an error. Try again later.`)]})
if(!res.body.output) return editOrReply(context, createEmbed("error", context, `Bard returned an error. Try again later.`))
if(res.body.output.length <= 4000) description.push(res.body.output)
else {
@ -70,10 +70,10 @@ module.exports = {
files
})
}catch(e){
if(e.response.body?.message) return editOrReply(context, {embeds:[createEmbed("warning", context, e.response.body.message)]})
if(e.response.body?.message) return editOrReply(context, createEmbed("warning", context, e.response.body.message))
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -41,7 +41,7 @@ module.exports = {
if(!canUseLimitedTestCommands(context)) return;
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;
@ -56,13 +56,13 @@ module.exports = {
else if(msg.embeds?.length) for(const e of msg.embeds) if(e[1].description?.length) { input = e[1].description; break; }
prompt = args.text
if(args.prompt !== "") return editOrReply(context, {embeds:[createEmbed("warning", context, `Prompt parameter is unsupported for message replies.`)]})
if(args.prompt !== "") return editOrReply(context, createEmbed("warning", context, `Prompt parameter is unsupported for message replies.`))
}
let model = "CHATGPT"
if(args.model && isLimitedTestUser(context.user)) model = args.model
if(!MODELS[model]) return editOrReply(context, {embeds:[createEmbed("warning", context, `Invalid or unsupported model (${model}).`)]})
if(!MODELS[model]) return editOrReply(context, createEmbed("warning", context, `Invalid or unsupported model (${model}).`))
let temperature = "0.25"
if(args.temperature !== 0.25) temperature = parseFloat(args.temperature)
@ -113,7 +113,7 @@ module.exports = {
})
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -23,7 +23,7 @@ module.exports = {
run: async (context, args) => {
if(!canUseLimitedTestCommands(context)) return;
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let prompt = 'You are a friendly chat bot designed to help people. You should always use gender neutral pronouns when possible.'
if(args.prompt !== "") prompt = args.prompt
@ -73,7 +73,7 @@ module.exports = {
})
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -22,7 +22,7 @@ module.exports = {
run: async (context, args) => {
if(!canUseLimitedTestCommands(context)) return;
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
try{
await editOrReply(context, createEmbed("ai", context, "Generating response..."))
@ -36,16 +36,16 @@ module.exports = {
temperature: 0.6,
model: "CHATGPT"
})
return editOrReply(context, {embeds:[createEmbed("default", context, {
return editOrReply(context, createEmbed("default", context, {
description: smallIconPill("generative_ai", args.text) + '\n' + codeblock("ansi", [res.body.output.substr(0, 2020 - args.text.length)]),
footer: {
text: `🗣🗣📢🔥🔥🔥🔥💯 • ${context.application.name}`,
iconUrl: STATICS.openai
}
})]})
}))
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -22,19 +22,19 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if (!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
try {
let res = await inferkit(context, args.text)
return editOrReply(context, {embeds:[createEmbed("default", context, {
return editOrReply(context, createEmbed("default", context, {
description: codeblock("ansi", [format(res.response.body.input, "cyan") + res.response.body.output]),
footer: {
iconUrl: STATICS.inferkit,
text: `InferKit • ${context.application.name} • Took ${res.timings}s`
}
})]})
}))
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -21,17 +21,15 @@ module.exports = {
let res = await superagent.get(`https://inspirobot.me/api?generate=true`)
.set("User-Agent", "labscore/2.0")
return await editOrReply(context, {
embeds: [ createEmbed("image", context, {
return await editOrReply(context, createEmbed("image", context, {
url: res.text,
provider: {
icon: STATICS.inspirobot,
text: "Inspirobot"
}
})]
})
}))
} catch (e) {
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to fetch inspirational quote.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to fetch inspirational quote.`))
}
}
};

View file

@ -27,7 +27,7 @@ module.exports = {
files: [{ filename: `otter.${res.headers["x-file-ext"]}`, value: res.body }]
})
}catch(e){
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to fetch otter.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to fetch otter.`))
}
}
};

View file

@ -2,10 +2,10 @@ const { createEmbed } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { canUseLimitedTestCommands, isLimitedTestUser } = require('../../../labscore/utils/testing')
const { STATICS, STATIC_ICONS } = require('../../../labscore/utils/statics');
const { STATIC_ICONS } = require('../../../labscore/utils/statics');
const superagent = require('superagent')
const { iconPill, smallIconPill, icon } = require('../../../labscore/utils/markdown')
const { iconPill } = require('../../../labscore/utils/markdown')
const { Permissions } = require("detritus-client/lib/constants");
@ -29,7 +29,7 @@ module.exports = {
if(!canUseLimitedTestCommands(context)) return;
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;
@ -44,7 +44,7 @@ module.exports = {
else if(msg.embeds?.length) for(const e of msg.embeds) if(e[1].description?.length) { input = e[1].description; break; }
prompt = args.text
if(args.prompt !== "") return editOrReply(context, {embeds:[createEmbed("warning", context, `Prompt parameter is unsupported for message replies.`)]})
if(args.prompt !== "") return editOrReply(context, createEmbed("warning", context, `Prompt parameter is unsupported for message replies.`))
}
let model = "chat-bison-001"
@ -73,7 +73,7 @@ module.exports = {
let description = []
let files = [];
if(!res.body.output) return editOrReply(context, {embeds:[createEmbed("error", context, `PaLM 2 returned an error. Try again later.`)]})
if(!res.body.output) return editOrReply(context, createEmbed("error", context, `PaLM 2 returned an error. Try again later.`))
if(res.body.output.length <= 4000) description.push(res.body.output)
else {
@ -97,9 +97,9 @@ module.exports = {
files
})
}catch(e){
if(e.response.body?.message) return editOrReply(context, {embeds:[createEmbed("warning", context, e.response.body.message)]})
if(e.response.body?.message) return editOrReply(context, createEmbed("warning", context, e.response.body.message))
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate text.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate text.`))
}
}
};

View file

@ -19,7 +19,7 @@ module.exports = {
run: async (context) => {
context.triggerTyping();
let image = await getRecentImage(context, 50)
if (!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let label = await googleVisionLabels(context, image)
@ -27,8 +27,7 @@ module.exports = {
for (const l of label.response.body.labels) {
labels.push(smallPill(`${l.score.toString().substr(2, 2)}.${l.score.toString().substr(3, 1)}%`) + ' ' + pill(l.name))
}
return editOrReply(context, {
embeds: [createEmbed("default", context, {
return editOrReply(context, createEmbed("default", context, {
description: labels.join('\n'),
thumbnail: {
url: image
@ -37,7 +36,6 @@ module.exports = {
iconUrl: STATICS.google,
text: `Google Cloud Vision • ${context.application.name}`
}
})]
})
}))
},
};

View file

@ -2,7 +2,7 @@ const { googleVisionSafetyLabels } = require("../../../labscore/api");
const { GOOGLE_CLOUD_SAFETY_LABELS, GOOGLE_CLOUD_SAFETY_LABELS_NAMES } = require("../../../labscore/constants");
const { getRecentImage } = require("../../../labscore/utils/attachment");
const { createEmbed } = require("../../../labscore/utils/embed");
const { pill, iconPill, smallPill } = require("../../../labscore/utils/markdown");
const { iconPill, smallPill } = require("../../../labscore/utils/markdown");
const { editOrReply } = require("../../../labscore/utils/message");
const { STATICS } = require("../../../labscore/utils/statics");
@ -20,7 +20,7 @@ module.exports = {
run: async (context) => {
context.triggerTyping();
let image = await getRecentImage(context, 50)
if (!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let label = await googleVisionSafetyLabels(context, image)
@ -32,8 +32,7 @@ module.exports = {
iconPill(rating.icon, rating.name)
].join(' '))
}
return editOrReply(context, {
embeds: [createEmbed("default", context, {
return editOrReply(context, createEmbed("default", context, {
description: labels.join('\n'),
thumbnail: {
url: image
@ -42,7 +41,6 @@ module.exports = {
iconUrl: STATICS.google,
text: `Google Cloud Vision • ${context.application.name}`
}
})]
})
}))
},
};

View file

@ -20,17 +20,17 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY, Permissions.READ_MESSAGE_HISTORY],
run: async (context) => {
context.triggerTyping();
if (!context.message.messageReference) return editOrReply(context, { embeds: [createEmbed("warning", context, "You need to reply to a voice message.")] })
if (!context.message.messageReference) return editOrReply(context, createEmbed("warning", context, "You need to reply to a voice message."))
try {
let msg;
try {
msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId)
} catch (e) {
return editOrReply(context, { embeds: [createEmbed("error", context, "Unable to fetch message.")] })
return editOrReply(context, createEmbed("error", context, "Unable to fetch message."))
}
if(!msg.attachments.first()) return editOrReply(context, { embeds: [createEmbed("warning", context, "No voice message found.")] })
if(!msg.attachments.first().url.split('?')[0].endsWith('voice-message.ogg')) return editOrReply(context, { embeds: [createEmbed("warning", context, "No voice message found.")] })
if(!msg.attachments.first()) return editOrReply(context, createEmbed("warning", context, "No voice message found."))
if(!msg.attachments.first().url.split('?')[0].endsWith('voice-message.ogg')) return editOrReply(context, createEmbed("warning", context, "No voice message found."))
const recog = await googleSpeechRecognition(context, msg.attachments.first().url)
@ -44,8 +44,8 @@ module.exports = {
} catch (e) {
console.log(e)
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, {embeds:[createEmbed("warning", context, e.response.body.message)]})
return editOrReply(context, { embeds: [createEmbed("error", context, `Unable to transcribe audio.`)] })
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, createEmbed("warning", context, e.response.body.message))
return editOrReply(context, createEmbed("error", context, `Unable to transcribe audio.`))
}
},
};

View file

@ -37,14 +37,14 @@ module.exports = {
if(!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
}
let response = await editOrReply(context, { embeds: [createEmbed("loading", context, `Generating image...`)] })
let response = await editOrReply(context, createEmbed("loading", context, `Generating image...`))
let noticeTimer = setTimeout(()=>{
let emb = createEmbed("loading", context, `Generating image...`)
emb.footer = {
text: "This might take a moment to complete."
};
response.edit({ embeds: [ emb ] });
editOrReply(context, { embeds: [ emb ] });
}, 45000)
try{

View file

@ -23,9 +23,9 @@ module.exports = {
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
if(!context.channel.nsfw) return editOrReply(context, {embeds:[createEmbed("nsfw", context)]})
if(!context.channel.nsfw) return editOrReply(context, createEmbed("nsfw", context))
let response = await editOrReply(context, { embeds: [createEmbed("loading", context, `Synthesizing images...`)] })
await editOrReply(context, createEmbed("loading", context, `Synthesizing images...`))
let noticeTimer = setTimeout(()=>{
let emb = createEmbed("loading", context, `Synthesizing images...`)

View file

@ -20,11 +20,11 @@ module.exports = {
context.triggerTyping();
try{
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if(!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let res = await superresolution(context, image)
if(res.response.body.status == 1) return editOrReply(context, {embeds:[createEmbed("warning", context, res.response.body.errors[0])]})
if(res.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, res.response.body.errors[0]))
return editOrReply(context, createEmbed("image", context, {
url: res.response.body.image,
@ -32,7 +32,7 @@ module.exports = {
}))
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Superresolution timed out.`)]})
return editOrReply(context, createEmbed("error", context, `Superresolution timed out.`))
}
},
};

View file

@ -19,11 +19,11 @@ module.exports = {
run: async (context, args) => {
context.triggerTyping();
try{
if(!args.text) return editOrReply(context, { embeds: [createEmbed("warning", context, "Missing parameter (text).")] })
if(!args.text) return editOrReply(context, createEmbed("warning", context, "Missing parameter (text)."))
let res = await text2image(context, args.text)
if(res.response.body.status == 1) return editOrReply(context, {embeds:[createEmbed("warning", context, res.response.body.errors[0])]})
if(res.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, res.response.body.errors[0]))
return editOrReply(context, createEmbed("image", context, {
url: res.response.body.image,
@ -31,7 +31,7 @@ module.exports = {
}))
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Text2image timed out.`)]})
return editOrReply(context, createEmbed("error", context, `Text2image timed out.`))
}
},
};

View file

@ -20,11 +20,11 @@ module.exports = {
context.triggerTyping();
try{
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if(!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let res = await waifu2x(context, image)
if(res.response.body.status == 1) return editOrReply(context, {embeds:[createEmbed("warning", context, res.response.body.errors[0])]})
if(res.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, res.response.body.errors[0]))
return editOrReply(context, createEmbed("image", context, {
url: res.response.body.image,
@ -32,7 +32,7 @@ module.exports = {
}))
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Waifu2x timed out.`)]})
return editOrReply(context, createEmbed("error", context, `Waifu2x timed out.`))
}
},
};

View file

@ -24,12 +24,12 @@ module.exports = {
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
if(!args.prompt) return editOrReply(context, { embeds: [createEmbed("warning", context, "Missing prompt.")] })
if (!args.prompt) return editOrReply(context, createEmbed("warning", context, "Missing prompt."))
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let response = await editOrReply(context, { embeds: [createEmbed("loading", context, `Editing image...`)] })
let response = await editOrReply(context, createEmbed("loading", context, `Editing image...`))
let noticeTimer = setTimeout(() => {
let emb = createEmbed("loading", context, `Editing image...`)

View file

@ -23,7 +23,7 @@ module.exports = {
let image = await getRecentImage(context, 50)
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let response = await editOrReply(context, createEmbed("loading", context, `Generating image...`))
await editOrReply(context, createEmbed("loading", context, `Generating image...`))
if (!args.text) args.text = ""
try {
@ -43,7 +43,7 @@ module.exports = {
})
} catch (e) {
console.log(e)
await editOrReply(context, { embeds: [createEmbed("error", context, "Something went wrong.")] })
await editOrReply(context, createEmbed("error", context, "Something went wrong."))
}
},
}

View file

@ -23,7 +23,7 @@ module.exports = {
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let response = await editOrReply(context, createEmbed("loading", context, `Generating image...`))
await editOrReply(context, createEmbed("loading", context, `Generating image...`))
if(!args.text) args.text = ""
try {

View file

@ -23,7 +23,7 @@ module.exports = {
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let response = await editOrReply(context, createEmbed("loading", context, `Generating image...`))
await editOrReply(context, createEmbed("loading", context, `Generating image...`))
if(!args.text) args.text = ""
try {

View file

@ -24,7 +24,7 @@ module.exports = {
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let response = await editOrReply(context, createEmbed("loading", context, `Generating image...`))
await editOrReply(context, createEmbed("loading", context, `Generating image...`))
if(!args.text) args.text = ""
try {

View file

@ -23,15 +23,18 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(args.background > 5 || args.background < 1) return editOrReply(context, {embeds:[createEmbed("warning", context, `Invalid Parameter (background).`)]})
if(args.style > 4 || args.style < 1) return editOrReply(context, {embeds:[createEmbed("warning", context, `Invalid Parameter (style).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
if(args.background > 5 || args.background < 1) return editOrReply(context, createEmbed("warning", context, `Invalid Parameter (background).`))
if(args.style > 4 || args.style < 1) return editOrReply(context, createEmbed("warning", context, `Invalid Parameter (style).`))
let lines = `${args.text}| | `.split('|')
if(args.text.includes('|')) lines = [lines[1], lines[2], lines[0]]
try{
let res = await retroWave(context, args.background, args.style, lines[2], lines[0], lines[1])
if(res.response.body.status == 1) return editOrReply(context, {embeds:[createEmbed("warning", context, res.response.body.errors[0])]})
if(res.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, res.response.body.errors[0]))
image = res.response.body.data.images[res.response.body.data.best_quality]
@ -45,8 +48,8 @@ module.exports = {
}))
}catch(e){
console.log(e)
if(e.response?.body?.message) return editOrReply(context, {embeds:[createEmbed("error", context, e.response.body.message)]})
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate image.`)]})
if(e.response?.body?.message) return editOrReply(context, createEmbed("error", context, e.response.body.message))
return editOrReply(context, createEmbed("error", context, `Unable to generate image.`))
}
}
};

View file

@ -19,8 +19,10 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.text) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (text).`)]})
if(args.text.length >= 26) return editOrReply(context, {embeds:[createEmbed("warning", context, `Parameter text too long (>25).`)]})
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
if(args.text.length >= 26) return editOrReply(context, createEmbed("warning", context, `Parameter text too long (>25).`))
try{
let res = await yacht(context, args.text)
image = res.response.body.data.images[res.response.body.data.best_quality]
@ -35,7 +37,7 @@ module.exports = {
}))
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to generate image.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to generate image.`))
}
}
};

View file

@ -21,7 +21,7 @@ module.exports = {
context.triggerTyping();
if(!args.user) args.user = context.userId;
let u = await getUser(context, args.user)
if(!u|| !u.user) return editOrReply(context, { embeds: [createEmbed("warning", context, "No users found.")] })
if(!u|| !u.user) return editOrReply(context, createEmbed("warning", context, "No users found."))
const avatar = u.user.avatarUrl + '?size=512'
try{
@ -41,7 +41,7 @@ module.exports = {
})
}catch(e){
console.log(e)
return editOrReply(context, { embeds: [createEmbed("error", context, "Unable to generate overlay.")] })
return editOrReply(context, createEmbed("error", context, "Unable to generate overlay."))
}
},
};

View file

@ -22,7 +22,7 @@ module.exports = {
context.triggerTyping();
if(!args.user) args.user = context.userId;
let u = await getUser(context, args.user)
if(!u || !u.user) return editOrReply(context, { embeds: [createEmbed("warning", context, "No users found.")] })
if(!u || !u.user) return editOrReply(context, createEmbed("warning", context, "No users found."))
if(u.member && u.member.avatar !== null) {
let pages = []
@ -38,7 +38,7 @@ module.exports = {
}
})))
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages,
buttons: [{

View file

@ -100,10 +100,9 @@ module.exports = {
pages.push(page(JSON.parse(JSON.stringify(Object.assign({ ...guildCard }, { fields: sub })))))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
return;
}

View file

@ -16,12 +16,10 @@ module.exports = {
run: async (context) => {
context.triggerTyping();
if (!context.guild.iconUrl) return editOrReply(context, createEmbed("warning", context, "Server doesn't have an icon."))
return editOrReply(context, {
embeds: [createEmbed("default", context, {
return editOrReply(context, createEmbed("default", context, {
image: {
url: context.guild.iconUrl + "?size=4096"
}
})]
})
}))
},
};

View file

@ -3,7 +3,7 @@ const { createEmbed, formatPaginationEmbeds, page } = require("../../../labscore
const { guildFeaturesField } = require("../../../labscore/utils/fields");
const { icon, highlight, timestamp, link, iconPill, iconLinkPill } = require("../../../labscore/utils/markdown");
const { editOrReply } = require("../../../labscore/utils/message");
const { STATICS, STATIC_ASSETS } = require("../../../labscore/utils/statics");
const { STATIC_ASSETS } = require("../../../labscore/utils/statics");
const { paginator } = require('../../../labscore/client');
@ -76,10 +76,9 @@ module.exports = {
pages.push(page(JSON.parse(JSON.stringify(Object.assign({ ...inviteCard }, { fields: sub })))))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
return;
}

View file

@ -28,7 +28,7 @@ module.exports = {
if(!args.user) { args.user = context.user.id }
user = await getUser(context, args.user)
u = user.user
if(!u) return editOrReply(context, { embeds: [createEmbed("warning", context, "No users found.")] })
if(!u) return editOrReply(context, createEmbed("warning", context, "No users found."))
let m = user.member
// User Card
@ -82,7 +82,7 @@ module.exports = {
inline: true
})
}
return editOrReply(context, { embeds: [userCard] })
return editOrReply(context, userCard)
}catch(e){
console.log(e)
}

View file

@ -1,4 +1,3 @@
const { Constants } = require("detritus-client");
const { perspective } = require("../../../labscore/api");
const { format } = require("../../../labscore/utils/ansi");
const { createEmbed } = require("../../../labscore/utils/embed");
@ -59,17 +58,15 @@ module.exports = {
let perspectiveApi = await perspective(context, [args.input])
return await editOrReply(context, {
embeds: [createEmbed("default", context, {
return await editOrReply(context, createEmbed("default", context, {
description: `${msg}${iconPill("agreements", "Scores")} ${codeblock("ansi", formatPerspectiveScores(perspectiveApi.response.body))}`,
footer: {
iconUrl: STATICS.perspectiveapi,
text: `Perspective • ${context.application.name}`
}
})]
})
}))
} catch (e) {
await editOrReply(context, { embeds: [createEmbed("error", context, `Something went wrong.`)] })
await editOrReply(context, createEmbed("error", context, `Something went wrong.`))
console.log(e)
}
}

View file

@ -21,13 +21,13 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context) => {
context.triggerTyping();
if (!context.message.messageReference) return editOrReply(context, { embeds: [createEmbed("warning", context, "You need to reply to a message containing a song link.")] })
if (!context.message.messageReference) return editOrReply(context, createEmbed("warning", context, "You need to reply to a message containing a song link."))
try {
let msg;
try {
msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId)
} catch (e) {
return editOrReply(context, { embeds: [createEmbed("error", context, "Unable to fetch message.")] })
return editOrReply(context, createEmbed("error", context, "Unable to fetch message."))
}
let urls = msg.content.match(urlr)
if (urls) {
@ -54,7 +54,7 @@ module.exports = {
}
} catch (e) {
console.log(e)
return editOrReply(context, { embeds: [createEmbed("error", context, `Unable to perform song search.`)] })
return editOrReply(context, createEmbed("error", context, `Unable to perform song search.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -8,8 +8,7 @@ const { bingImages } = require('../../../labscore/api');
const { Permissions } = require("detritus-client/lib/constants");
function createImageResultPage(context, result) {
let res = {
"embeds": [
let res = page(
createEmbed("default", context, {
author: {
iconUrl: `https://www.google.com/s2/favicons?domain=${encodeURIComponent(result.url)}&sz=256`,
@ -23,9 +22,7 @@ function createImageResultPage(context, result){
iconUrl: STATICS.bing,
text: `Microsoft Bing • ${context.application.name}`
}
})
]
}
}))
if (result.thumbnail) res.embeds[0].thumbnail = { url: result.thumbnail };
return res;
}
@ -44,28 +41,27 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try {
let search = await bingImages(context, args.query, context.channel.nsfw)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if (search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let pages = []
for (const res of search.body.results) {
pages.push(createImageResultPage(context, res))
}
if(!pages.length) return editOrReply(context, {embeds:[createEmbed("warning", context, `No results found.`)]})
if (!pages.length) return editOrReply(context, createEmbed("warning", context, `No results found.`))
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform bing search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform bing search.`))
}
},
};

View file

@ -108,12 +108,12 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try{
let search = await bing(context, args.query, context.channel.nsfw)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if(search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let pages = []
for(const res of search.body.results){
@ -121,16 +121,15 @@ module.exports = {
if(sp) pages.push(sp)
}
if(!pages.length) return editOrReply(context, {embeds:[createEmbed("warning", context, `No results found.`)]})
if(!pages.length) return editOrReply(context, createEmbed("warning", context, `No results found.`))
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform bing search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform bing search.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -8,9 +8,7 @@ const { googleImages } = require('../../../labscore/api');
const { Permissions } = require("detritus-client/lib/constants");
function createImageResultPage(context, result) {
let res = {
"embeds": [
createEmbed("default", context, {
let res = page(createEmbed("default", context, {
author: {
iconUrl: `https://www.google.com/s2/favicons?domain=${encodeURIComponent(result.url)}&sz=256`,
name: result.title,
@ -23,9 +21,7 @@ function createImageResultPage(context, result){
iconUrl: STATICS.google,
text: `Google Images • ${context.application.name}`
}
})
]
}
}))
if (result.thumbnail) res.embeds[0].thumbnail = { url: result.thumbnail };
return res;
}
@ -44,28 +40,27 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try {
let search = await googleImages(context, args.query, context.channel.nsfw)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if (search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let pages = []
for (const res of search.body.results) {
pages.push(createImageResultPage(context, res))
}
if(!pages.length) return editOrReply(context, {embeds:[createEmbed("warning", context, `No results found.`)]})
if (!pages.length) return editOrReply(context, createEmbed("warning", context, `No results found.`))
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform google search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform google search.`))
}
},
};

View file

@ -67,28 +67,27 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try{
let search = await google(context, args.query, context.channel.nsfw)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if(search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let pages = []
for(const res of search.body.results){
pages.push(createSearchResultPage(context, res))
}
if(!pages.length) return editOrReply(context, {embeds:[createEmbed("warning", context, `No results found.`)]})
if(!pages.length) return editOrReply(context, createEmbed("warning", context, `No results found.`))
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform google search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform google search.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -52,12 +52,12 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try{
let search = await lyrics(context, args.query)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if(search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let fields = [];
for(const f of search.body.lyrics.split('\n\n')){
@ -78,18 +78,17 @@ module.exports = {
pageFields = pageFields.splice(0, pageFields.length - 1)
}
pages.push({embeds:[createLyricsPage(context, search, pageFields)]})
pages.push(page(createLyricsPage(context, search, pageFields)))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
if(e.response?.body?.status && e.response.body.status == 2 && e.response.body.message) return editOrReply(context, {embeds:[createEmbed("error", context, e.response.body.message)]})
if(e.response?.body?.status && e.response.body.status == 2 && e.response.body.message) return editOrReply(context, createEmbed("error", context, e.response.body.message))
console.log(JSON.stringify(e.raw))
return editOrReply(context, {embeds:[createEmbed("error", context, `Something went wrong.`)]})
return editOrReply(context, createEmbed("error", context, `Something went wrong.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { link, pill } = require('../../../labscore/utils/markdown')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -14,8 +14,7 @@ function createQuoraAnswerPage(context, question, answer){
let tags = question.tags.map((t) => {
return pill(t)
})
let res = {
"embeds": [
let res = page(
createEmbed("default", context, {
title: question.title,
url: answer.url,
@ -24,9 +23,7 @@ function createQuoraAnswerPage(context, question, answer){
iconUrl: STATICS.quora,
text: `Quora • ${context.application.name}`
}
})
]
}
}))
if (answer.content.length >= 2000) {
if (res.embeds[0].description.endsWith(' ')) res.embeds[0].description = res.embeds[0].description.substr(0, res.embeds[0].description.length - 1)
@ -78,7 +75,7 @@ async function quoraPaginator(context, pages, refMappings, currentRef){
let search = await quoraResult(context, ref.link)
search = search.response.body
if(search.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.message)]})
if (search.status == 2) return editOrReply(context, createEmbed("error", context, search.message))
let nextPages = []
// Create the initial page
@ -93,7 +90,7 @@ async function quoraPaginator(context, pages, refMappings, currentRef){
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform quora search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform quora search.`))
}
},
});
@ -131,12 +128,12 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try {
let search = await quora(context, args.query)
search = search.response.body
if(search.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.message)]})
if (search.status == 2) return editOrReply(context, createEmbed("error", context, search.message))
let pages = []
@ -153,7 +150,7 @@ module.exports = {
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform quora search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform quora search.`))
}
},
};

View file

@ -1,5 +1,5 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { link, icon, highlight, iconPill } = require('../../../labscore/utils/markdown')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { link, icon, iconPill } = require('../../../labscore/utils/markdown')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -9,9 +9,7 @@ const { reddit } = require('../../../labscore/api');
const { Permissions } = require("detritus-client/lib/constants");
function createRedditPage(context, result) {
let res = {
"embeds": [
createEmbed("default", context, {
let res = page(createEmbed("default", context, {
author: {
iconUrl: result.subreddit.icon,
name: result.subreddit.name,
@ -21,9 +19,7 @@ function createRedditPage(context, result){
iconUrl: STATICS.reddit,
text: `Reddit • ${context.application.name}`
}
})
]
}
}))
if (result.post.image) res.embeds[0].image = { url: result.post.image };
@ -61,12 +57,12 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try {
let search = await reddit(context, args.query, context.channel.nsfw)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if (search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let pages = []
for (const res of search.body.results) {
@ -74,17 +70,16 @@ module.exports = {
pages.push(createRedditPage(context, res))
}
if(pages.length == 0) return editOrReply(context, {embeds:[createEmbed("warning", context, `No results found.`)]})
if (pages.length == 0) return editOrReply(context, createEmbed("warning", context, `No results found.`))
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
} catch (e) {
console.log(e)
if(e.response && e.response.body.message) return editOrReply(context, {embeds:[createEmbed("error", context, e.response.body.message)]})
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform reddit search.`)]})
if (e.response && e.response.body.message) return editOrReply(context, createEmbed("error", context, e.response.body.message))
return editOrReply(context, createEmbed("error", context, `Unable to perform reddit search.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
const { getRecentImage } = require("../../../labscore/utils/attachment");
@ -9,8 +9,7 @@ const { reverseImageSearch } = require('../../../labscore/api');
const { Permissions } = require("detritus-client/lib/constants");
function createReverseImageSearchResultPage(context, result, source) {
let res = {
"embeds": [
let res = page(
createEmbed("default", context, {
author: {
iconUrl: `https://www.google.com/s2/favicons?domain=${encodeURIComponent(result.url)}&sz=256`,
@ -27,9 +26,7 @@ function createReverseImageSearchResultPage(context, result, source){
iconUrl: STATICS.google,
text: `Google Cloud Vision • ${context.application.name}`
}
})
]
}
}))
if (result.thumbnail) res.embeds[0].thumbnail = { url: result.thumbnail };
return res;
}
@ -48,26 +45,25 @@ module.exports = {
context.triggerTyping();
try {
let image = await getRecentImage(context, 50)
if(!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let search = await reverseImageSearch(context, image)
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message)]})
if (search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
let pages = []
for (const res of search.body.results) {
pages.push(createReverseImageSearchResultPage(context, res, image))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform reverse image search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform reverse image search.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { pill } = require('../../../labscore/utils/markdown')
const { editOrReply } = require('../../../labscore/utils/message')
@ -8,9 +8,7 @@ const { rule34 } = require('../../../labscore/api');
const { Permissions } = require("detritus-client/lib/constants");
function createRule34Page(context, result) {
let res = {
"embeds": [
createEmbed("default", context, {
let res = page(createEmbed("default", context, {
description: '',
image: {
url: result.fileUrl
@ -18,9 +16,7 @@ function createRule34Page(context, result){
footer: {
text: `Rating: ${result.rating}`
}
})
]
}
}))
// Render a few tags
if (result.tags) {
@ -64,31 +60,30 @@ module.exports = {
// very important, maybe make this a command option eventually
if (!context.channel.nsfw) {
return editOrReply(context, {embeds:[createEmbed("nsfw", context)]})
return editOrReply(context, createEmbed("nsfw", context))
}
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if(!Object.keys(SITES).includes(args.site.toLowerCase())) return editOrReply(context, {embeds:[createEmbed("warning", context, `Invalid site type.`)]})
if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
if (!Object.keys(SITES).includes(args.site.toLowerCase())) return editOrReply(context, createEmbed("warning", context, `Invalid site type.`))
try {
let search = await rule34(context, args.query, args.site.toLowerCase())
search = search.response
if(search.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, search.body.message )]})
if(search.body.data.length == 0) return editOrReply(context, {embeds:[createEmbed("warning", context, `No results found on ${SITES[args.site.toLowerCase()]}.`)]})
if (search.body.status == 2) return editOrReply(context, createEmbed("error", context, search.body.message))
if (search.body.data.length == 0) return editOrReply(context, createEmbed("warning", context, `No results found on ${SITES[args.site.toLowerCase()]}.`))
let pages = []
for (const res of search.body.data) {
pages.push(createRule34Page(context, res))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform rule34 search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform rule34 search.`))
}
},
};

View file

@ -1,4 +1,4 @@
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { link, iconPill } = require('../../../labscore/utils/markdown')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -32,8 +32,7 @@ function createUrbanPage(context, result){
value: result.example.substr(0, 1023),
inline: false
})
let res = {"embeds": [e]}
return res;
return page(e);
}
module.exports = {
@ -61,14 +60,13 @@ module.exports = {
pages.push(createUrbanPage(context, res))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform urban dictionary search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform urban dictionary search.`))
}
},
};

View file

@ -22,8 +22,7 @@ function createWikiHowPage(context, result){
if(result.image) e.image = {
url: result.image
}
let res = {"embeds": [e]}
return res;
return page(e);
}
module.exports = {
@ -46,20 +45,19 @@ module.exports = {
let pages = []
if(search.body.data.length == 0) return editOrReply(context, {embeds:[createEmbed("error", context, `No results found.`)]})
if(search.body.data.length == 0) return editOrReply(context, createEmbed("error", context, `No results found.`))
for(const res of search.body.data){
pages.push(createWikiHowPage(context, res))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform wikihow search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform wikihow search.`))
}
},
};

View file

@ -8,25 +8,6 @@ const superagent = require('superagent')
const { Permissions } = require("detritus-client/lib/constants");
function createWikiHowPage(context, result){
let e = createEmbed("default", context, {
author: {
name: result.title,
url: result.link
},
description: result.snippet,
footer: {
iconUrl: STATICS.wikihow,
text: `WikiHow • ${context.application.name}`
}
})
if(result.image) e.image = {
url: result.image
}
let res = {"embeds": [e]}
return res;
}
module.exports = {
name: 'wikipedia',
label: 'query',
@ -51,7 +32,7 @@ module.exports = {
let pages = []
if(!search.body.pages.length) return editOrReply(context, {embeds:[createEmbed("error", context, `No results found.`)]})
if(!search.body.pages.length) return editOrReply(context, createEmbed("error", context, `No results found.`))
for(const res of Object.values(search.body.pages)){
let p = createEmbed("default", context, {
@ -74,14 +55,13 @@ module.exports = {
pages.push(page(p))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform wikipedia search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform wikipedia search.`))
}
},
};

View file

@ -9,9 +9,7 @@ const { citation } = require('../../../labscore/utils/markdown');
const { Permissions } = require("detritus-client/lib/constants");
function createWolframPage(context, pod, query, sources) {
let res = {
"embeds": [
createEmbed("default", context, {
let res = page(createEmbed("default", context, {
author: {
name: pod.title,
url: `https://www.wolframalpha.com/input?i=${encodeURIComponent(query)}`
@ -21,9 +19,7 @@ function createWolframPage(context, pod, query, sources){
iconUrl: STATICS.wolframalpha,
text: `Wolfram|Alpha • ${context.application.name}`
}
})
]
}
}))
if (pod.icon) res.embeds[0].author.iconUrl = pod.icon
if (pod.value) res.embeds[0].description = pod.value.substr(0, 1000)
if (pod.value && pod.refs) {
@ -57,26 +53,25 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try {
let search = await wolframAlpha(context, args.query)
search = search.response
if(search.body.status == 1) return editOrReply(context, {embeds:[createEmbed("warning", context, search.body.message)]})
if (search.body.status == 1) return editOrReply(context, createEmbed("warning", context, search.body.message))
let pages = []
for (const res of search.body.data) {
pages.push(createWolframPage(context, res, args.query, search.body.sources))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
} catch (e) {
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform Wolfram|Alpha search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform Wolfram|Alpha search.`))
}
},
};

View file

@ -1,5 +1,5 @@
const { createEmbed, formatPaginationEmbeds, page } = require('../../../labscore/utils/embed')
const { link, iconPill, timestamp, smallPill } = require('../../../labscore/utils/markdown')
const { link, iconPill, smallPill } = require('../../../labscore/utils/markdown')
const { editOrReply } = require('../../../labscore/utils/message')
const { STATICS } = require('../../../labscore/utils/statics')
@ -124,11 +124,11 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`))
try{
if(args.type == 'all') args.type = undefined;
else {
if(!YOUTUBE_CATEGORIES[args.type.toLowerCase()]) return editOrReply(context, {embeds:[createEmbed("warning", context, `Invalid Parameter (type).`)]})
if(!YOUTUBE_CATEGORIES[args.type.toLowerCase()]) return editOrReply(context, createEmbed("warning", context, `Invalid Parameter (type).`))
args.type = YOUTUBE_CATEGORIES[args.type.toLowerCase()]
}
let search = await youtube(context, args.query, args.type)
@ -139,14 +139,13 @@ module.exports = {
pages.push(createYoutubePage(context, res))
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform youtube search.`)]})
return editOrReply(context, createEmbed("error", context, `Unable to perform youtube search.`))
}
},
};

View file

@ -86,15 +86,14 @@ module.exports = {
i++;
}
pages = formatPaginationEmbeds(pages)
const paging = await paginator.createPaginator({
await paginator.createPaginator({
context,
pages
pages: formatPaginationEmbeds(pages)
});
}catch(e){
console.log(e)
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, {embeds:[createEmbed("warning", context, e.response.body.message)]})
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform dictionary lookup.`)]})
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, createEmbed("warning", context, e.response.body.message))
return editOrReply(context, createEmbed("error", context, `Unable to perform dictionary lookup.`))
}
},
};

View file

@ -68,7 +68,7 @@ module.exports = {
data = JSON.parse(data.text)
}catch(e){
console.log(e)
return editOrReply(context, { embeds: [createEmbed("error", context, "Code execution failed.")] })
return editOrReply(context, createEmbed("error", context, "Code execution failed."))
}
const embed = createEmbed("default", context, {})

View file

@ -19,16 +19,16 @@ module.exports = {
run: async (context) => {
context.triggerTyping();
let image = await getRecentImage(context, 50)
if (!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let ocr;
try{
ocr = await googleVisionOcr(context, image)
}catch(e){
return editOrReply(context, { embeds: [createEmbed("error", context, "Unable to retrieve Google Vision API response.")] })
return editOrReply(context, createEmbed("error", context, "Unable to retrieve Google Vision API response."))
}
if(ocr.response.body.status == 1) return editOrReply(context, { embeds: [createEmbed("warning", context, ocr.response.body.text)] })
if(ocr.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, ocr.response.body.text))
return editOrReply(context, createEmbed("default", context, {
thumbnail: {

View file

@ -36,16 +36,16 @@ module.exports = {
args.from = getCodeFromAny(args.from)
let image = await getRecentImage(context, 50)
if (!image) return editOrReply(context, { embeds: [createEmbed("warning", context, "No images found.")] })
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found."))
let ocr;
try{
ocr = await googleVisionOcr(context, image)
}catch(e){
return editOrReply(context, { embeds: [createEmbed("error", context, "Unable to retrieve Google Vision API response.")] })
return editOrReply(context, createEmbed("error", context, "Unable to retrieve Google Vision API response."))
}
if(ocr.response.body.status == 1) return editOrReply(context, { embeds: [createEmbed("warning", context, ocr.response.body.text)] })
if(ocr.response.body.status == 1) return editOrReply(context, createEmbed("warning", context, ocr.response.body.text))
try{
let translate = await googleTranslate(context, ocr.response.body.text, args.to, args.from)
@ -65,8 +65,8 @@ module.exports = {
}))
}catch(e){
console.log(e)
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to translate text.`)]})
return editOrReply(context, {embeds:[createEmbed("error", context, `Something went wrong.`)]})
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, createEmbed("error", context, `Unable to translate text.`))
return editOrReply(context, createEmbed("error", context, `Something went wrong.`))
}
}
};

View file

@ -84,7 +84,7 @@ module.exports = {
}catch(e){
console.log(e)
return editOrReply(context, { embeds: [createEmbed("error", context, `Unable to scan qr codes.`)] })
return editOrReply(context, createEmbed("error", context, `Unable to scan qr codes.`))
}
}
};

View file

@ -26,7 +26,7 @@ module.exports = {
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.ATTACH_FILES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
if(!args.url) return editOrReply(context, { embeds: [createEmbed("warning", context, "No url supplied.")] })
if (!args.url) return editOrReply(context, createEmbed("warning", context, "No url supplied."))
let response = await editOrReply(context, createEmbed("loading", context, `Creating website screenshot...`))
@ -36,12 +36,12 @@ module.exports = {
let ss = await screenshot(context, args.url, context.channel.nsfw)
if (ss.response.body.status && ss.response.body.status !== 3) {
if(ss.response.body.image) return await editOrReply(context, {
embeds: [createEmbed("image", context, {
if (ss.response.body.image) return await editOrReply(context,
createEmbed("image", context, {
url: ss.response.body.image,
time: ((Date.now() - t) / 1000).toFixed(2)
})]
})
)
return await editOrReply(context, createEmbed("error", context, "Unable to create screenshot."))
}
@ -49,12 +49,10 @@ module.exports = {
if (job.status) {
if (!job.image) job = await processJob(ss.response.body.job)
if(job.image) return await editOrReply(context, {
embeds: [createEmbed("image", context, {
if (job.image) return await editOrReply(context, createEmbed("image", context, {
url: job.image,
time: ((Date.now() - t) / 1000).toFixed(2)
})]
})
}))
return await editOrReply(context, createEmbed("error", context, "Unable to create screenshot."))
}

View file

@ -65,8 +65,8 @@ module.exports = {
}))
}catch(e){
console.log(e)
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to translate text.`)]})
return editOrReply(context, {embeds:[createEmbed("error", context, `Something went wrong.`)]})
if(e.response?.body?.status && e.response.body.status == 2) return editOrReply(context, createEmbed("error", context, `Unable to translate text.`))
return editOrReply(context, createEmbed("error", context, `Something went wrong.`))
}
}
};

View file

@ -2,7 +2,7 @@ const { createEmbed } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { darksky } = require('../../../labscore/api');
const { pill, iconPill, smallIconPill, smallPill, icon, weatherIcon, timestamp } = require('../../../labscore/utils/markdown');
const { pill, iconPill, smallPill, weatherIcon, timestamp } = require('../../../labscore/utils/markdown');
const { Permissions } = require("detritus-client/lib/constants");
const { STATICS } = require('../../../labscore/utils/statics');
@ -21,7 +21,7 @@ module.exports = {
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (location).`)]})
if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (location).`))
try{
let data = await darksky(context, args.query)
@ -60,10 +60,10 @@ module.exports = {
if(data.result.current.icon) e.thumbnail = { url: data.result.current.icon }
if(data.result.current.image) e.image = { url: data.result.current.image }
return editOrReply(context, {embeds: [e]})
return editOrReply(context, e)
}catch(e){
console.log(e)
return editOrReply(context, {embeds:[createEmbed("warning", context, `No weather data available for given location.`)]})
return editOrReply(context, createEmbed("warning", context, `No weather data available for given location.`))
}
},
};

View file

@ -118,15 +118,15 @@ const Statics = Object.freeze({
icons: {
adult: {
file: "icons/core/ico_notice_nsfw.png",
revision: 0
revision: 1
},
error: {
file: "icons/core/ico_notice_error.png",
revision: 0
revision: 1
},
loading: {
file: "icons/core/ico_notice_loading.gif",
revision: 0
revision: 1
},
ai: {
file: "icons/core/ico_notice_ai_spark.gif",