From 1ca74d3c2c5230652cd0cfae6e058f57ae219076 Mon Sep 17 00:00:00 2001 From: bignutty <3515180-bignutty@users.noreply.gitlab.com> Date: Sun, 8 Dec 2024 15:00:18 +0100 Subject: [PATCH] unify typing logic for a more consistent experience --- commands/message/core/help.js | 6 ++++-- commands/message/core/ping.js | 6 ++++-- commands/message/core/privacy.js | 3 +++ commands/message/core/shard.js | 5 ++++- commands/message/core/stats.js | 4 +++- commands/message/dev/eval.js | 4 +++- commands/message/dev/refresh-configs.js | 4 +++- commands/message/dev/reload.js | 4 +++- commands/message/dev/say.js | 5 ++++- commands/message/dev/test.js | 4 +++- commands/message/fun/art.js | 5 ++++- commands/message/fun/garfield.js | 4 +++- commands/message/fun/inspire.js | 4 +++- commands/message/fun/otter.js | 6 ++++-- commands/message/genai/ask.js | 5 +++-- commands/message/genai/emogen.js | 5 +++-- commands/message/genai/gemini-pro.js | 5 +++-- commands/message/genai/gemini-vision.js | 5 +++-- commands/message/genai/gemini.js | 7 ++++--- commands/message/genai/gpt.js | 5 +++-- commands/message/genai/imagen.js | 5 +++-- commands/message/genai/palm.js | 5 +++-- commands/message/genai/summarize.js | 7 ++++--- commands/message/genai/wallpaper.js | 5 +++-- commands/message/google/labels.js | 4 +++- commands/message/google/safetylabels.js | 4 +++- commands/message/google/transcribe.js | 6 ++++-- commands/message/info/appinfo.js | 4 +++- commands/message/info/avatar.js | 4 +++- commands/message/info/banner.js | 4 +++- commands/message/info/guild.js | 3 +++ commands/message/info/guildbanner.js | 6 ++++-- commands/message/info/guildicon.js | 6 ++++-- commands/message/info/invite.js | 4 +++- commands/message/info/role.js | 3 +++ commands/message/info/user.js | 4 +++- commands/message/mod/analyze.js | 5 +++-- commands/message/mod/perspective.js | 5 +++-- commands/message/mod/purge.js | 4 +++- commands/message/search/audio.js | 6 ++++-- commands/message/search/bing-images.js | 6 ++++-- commands/message/search/bing.js | 6 ++++-- commands/message/search/google-images.js | 6 ++++-- commands/message/search/google.js | 6 ++++-- commands/message/search/lyrics.js | 6 ++++-- commands/message/search/maps.js | 6 ++++-- commands/message/search/quora.js | 6 ++++-- commands/message/search/reverse-image.js | 6 ++++-- commands/message/search/rule34.js | 7 ++++--- commands/message/search/urbandictionary.js | 6 ++++-- commands/message/search/wikihow.js | 6 ++++-- commands/message/search/wikipedia.js | 6 ++++-- commands/message/search/wolfram-alpha.js | 6 ++++-- commands/message/search/xkcd.js | 6 ++++-- commands/message/search/youtube.js | 6 ++++-- commands/message/utils/dictionary.js | 6 ++++-- commands/message/utils/emoji.js | 4 +++- commands/message/utils/emojipedia.js | 4 +++- commands/message/utils/eval.js | 5 +++-- commands/message/utils/latex.js | 3 ++- commands/message/utils/ocr.js | 4 +++- commands/message/utils/ocrtr.js | 5 +++-- commands/message/utils/qr.js | 6 +++--- commands/message/utils/screenshot.js | 3 +++ commands/message/utils/translate.js | 7 ++++--- commands/message/utils/weather.js | 6 ++++-- labscore/utils/interactions.js | 15 +++++++++++++-- 67 files changed, 240 insertions(+), 109 deletions(-) diff --git a/commands/message/core/help.js b/commands/message/core/help.js index 4d2c880..11b2943 100644 --- a/commands/message/core/help.js +++ b/commands/message/core/help.js @@ -1,7 +1,8 @@ const { paginator } = require('#client'); const { DISCORD_INVITES, DEFAULT_PREFIXES, PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { codeblock, icon, link, pill, smallPill, iconPill, stringwrap } = require('#utils/markdown') const { editOrReply } = require('#utils/message'); const { hasFeature } = require('#utils/testing'); @@ -133,8 +134,9 @@ module.exports = { if(await hasFeature(context, "core/help")) categories["limited"] = `${iconPill("stars", "Limited Test Commands")}`; else if (categories["limited"]) delete categories["limited"] + await acknowledge(context); + if (args.command) { - await context.triggerTyping() // Detailed command view let resultScores = {} diff --git a/commands/message/core/ping.js b/commands/message/core/ping.js index ab3722f..7b1e689 100644 --- a/commands/message/core/ping.js +++ b/commands/message/core/ping.js @@ -1,6 +1,7 @@ const { PERMISSION_GROUPS } = require('#constants'); const { format } = require('#utils/ansi') -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { codeblock, icon } = require('#utils/markdown') const { editOrReply } = require('#utils/message') @@ -15,7 +16,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + ping = await context.client.ping() editOrReply(context, createEmbed("default", context, { description: `${icon("latency")} **Pong!**\n` + codeblock("ansi", [`rest ${format(`${ping.rest}ms`, "m")}`, `gateway ${format(`${ping.gateway}ms`, "m")}`]) diff --git a/commands/message/core/privacy.js b/commands/message/core/privacy.js index 305c01d..ea38598 100644 --- a/commands/message/core/privacy.js +++ b/commands/message/core/privacy.js @@ -1,6 +1,7 @@ const { PRIVACY_POLICY_LAST_UPDATE, PRIVACY_POLICY_SECTIONS, DISCORD_INVITES, COLORS, PRIVACY_POLICY_PREVIOUS_REVISION, PERMISSION_GROUPS } = require('#constants'); const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { icon, timestamp, link, iconLinkPill } = require('#utils/markdown'); const { editOrReply } = require('#utils/message'); @@ -14,6 +15,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { + await acknowledge(context); + return await editOrReply(context, createEmbed("default", context, { description: `${icon("brand")} **${context.client.user.username} Privacy Policy**\n*Last Updated: ${timestamp(PRIVACY_POLICY_LAST_UPDATE, "f")}*\n${PRIVACY_POLICY_SECTIONS.join('\n')}\n\nIf you have any further questions, please contact us via our ${iconLinkPill("discord", DISCORD_INVITES.privacy, "Support Server", "Click to join")}\nPrevious privacy policy revision: ${link(`https://bignutty.gitlab.io/webstorage4/v2/documents/${PRIVACY_POLICY_PREVIOUS_REVISION}.txt`, 'June 2022')}`, diff --git a/commands/message/core/shard.js b/commands/message/core/shard.js index 751ab2c..b88b612 100644 --- a/commands/message/core/shard.js +++ b/commands/message/core/shard.js @@ -1,6 +1,7 @@ const { PERMISSION_GROUPS } = require('#constants'); const { format } = require('#utils/ansi'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { codeblock } = require('#utils/markdown') const { editOrReply } = require('#utils/message'); @@ -14,6 +15,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { + await acknowledge(context); + return await editOrReply(context, createEmbed("default", context, { description: `${codeblock("ansi", [ diff --git a/commands/message/core/stats.js b/commands/message/core/stats.js index 6869d02..94a686d 100644 --- a/commands/message/core/stats.js +++ b/commands/message/core/stats.js @@ -1,6 +1,7 @@ const { OPEN_SOURCE_REPOSITORY_URL, PERMISSION_GROUPS } = require('#constants'); const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { highlight, iconPill, iconLinkPill } = require('#utils/markdown'); const { editOrReply } = require('#utils/message'); @@ -33,7 +34,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + try{ if(context.manager){ const globalStats = await context.manager.broadcastEval((cluster) => { diff --git a/commands/message/dev/eval.js b/commands/message/dev/eval.js index 6626efa..6490c29 100644 --- a/commands/message/dev/eval.js +++ b/commands/message/dev/eval.js @@ -1,3 +1,4 @@ +const { acknowledge } = require("#utils/interactions"); const { codeblock } = require("#utils/markdown"); const { Utils } = require("detritus-client"); @@ -24,7 +25,8 @@ module.exports = { onBefore: context => context.user.isClientOwner, onCancel: ()=>{}, run: async (context, args) => { - await context.triggerTyping(); + await acknowledge(context); + const { matches } = Utils.regex( DiscordRegexNames.TEXT_CODEBLOCK, args.code diff --git a/commands/message/dev/refresh-configs.js b/commands/message/dev/refresh-configs.js index 498a58a..a544826 100644 --- a/commands/message/dev/refresh-configs.js +++ b/commands/message/dev/refresh-configs.js @@ -1,4 +1,5 @@ const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { editOrReply } = require("#utils/message"); const { getTestConfig } = require("#utils/testing"); @@ -14,7 +15,8 @@ module.exports = { onBefore: context => context.user.isClientOwner, onCancel: ()=>{}, run: async (context, args) => { - await context.triggerTyping(); + await acknowledge(context); + let c = await getTestConfig(); return await editOrReply(context, createEmbed("success", context, "Refreshed configs (v"+c.revision+").")); } diff --git a/commands/message/dev/reload.js b/commands/message/dev/reload.js index a70ce7f..6074f5a 100644 --- a/commands/message/dev/reload.js +++ b/commands/message/dev/reload.js @@ -1,3 +1,4 @@ +const { acknowledge } = require("#utils/interactions"); const { codeblock } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); @@ -14,7 +15,8 @@ module.exports = { onBefore: context => context.user.isClientOwner, onCancel: ()=>{}, run: async (context) => { - await context.triggerTyping(); + await acknowledge(context); + const time = Date.now(); console.log(`[${process.env.HOSTNAME}] refreshing all commands @ ${Date.now()} by ${context.user.username}${context.user.discriminator} (${context.user.id})`) let data; diff --git a/commands/message/dev/say.js b/commands/message/dev/say.js index 76c5e45..11a970c 100644 --- a/commands/message/dev/say.js +++ b/commands/message/dev/say.js @@ -1,3 +1,5 @@ +const { acknowledge } = require("#utils/interactions"); + module.exports = { label: "text", name: "say", @@ -11,7 +13,8 @@ module.exports = { onBefore: context => context.user.isClientOwner, onCancel: ()=>{}, run: async (context, args) => { - await context.triggerTyping(); + await acknowledge(context); + if(context.message.canDelete) context.message.delete(); await context.reply({ content: args.text, diff --git a/commands/message/dev/test.js b/commands/message/dev/test.js index 61aff41..293bc04 100644 --- a/commands/message/dev/test.js +++ b/commands/message/dev/test.js @@ -1,4 +1,5 @@ const { prideborder } = require("#api"); +const { acknowledge } = require("#utils/interactions"); const { editOrReply } = require("#utils/message"); @@ -15,7 +16,8 @@ module.exports = { onBefore: context => context.user.isClientOwner, onCancel: ()=>{}, run: async (context, args) => { - await context.triggerTyping(); + await acknowledge(context); + const a = await prideborder(context, "https://cdn.discordapp.com/emojis/1145727546747535412.png?size=4096") editOrReply(context, "ok"); } diff --git a/commands/message/fun/art.js b/commands/message/fun/art.js index 4831e4b..15d79e2 100644 --- a/commands/message/fun/art.js +++ b/commands/message/fun/art.js @@ -1,6 +1,7 @@ const { DEFAULT_PREFIXES, PERMISSION_GROUPS } = require('#constants'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { codeblock } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') @@ -35,6 +36,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { + await acknowledge(context); + await editOrReply(context, createEmbed("loading", context, `Generating image...`)) try{ let seed = Math.floor(Math.random() * 999999) + 100000, diff --git a/commands/message/fun/garfield.js b/commands/message/fun/garfield.js index 5a616f0..e63038d 100644 --- a/commands/message/fun/garfield.js +++ b/commands/message/fun/garfield.js @@ -2,6 +2,7 @@ const { garfield } = require('#api'); const { FUNNY_CAT_ICONS, PERMISSION_GROUPS } = require('#constants'); const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { timestamp } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') @@ -16,7 +17,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + const garf = (await garfield()).response.body diff --git a/commands/message/fun/inspire.js b/commands/message/fun/inspire.js index bd8efe8..c7688d6 100644 --- a/commands/message/fun/inspire.js +++ b/commands/message/fun/inspire.js @@ -1,5 +1,6 @@ const { PERMISSION_GROUPS } = require('#constants'); const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message'); const { STATICS } = require('#utils/statics'); @@ -16,7 +17,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - await context.triggerTyping(); + await acknowledge(context); + try { let res = await superagent.get(`https://inspirobot.me/api?generate=true`) .set("User-Agent", "labscore/2.0") diff --git a/commands/message/fun/otter.js b/commands/message/fun/otter.js index 52cd453..ff9face 100644 --- a/commands/message/fun/otter.js +++ b/commands/message/fun/otter.js @@ -1,7 +1,8 @@ const { otter } = require('#api'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') module.exports = { @@ -15,7 +16,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - await context.triggerTyping(); + await acknowledge(context); + try{ const ott = (await otter()).response.body diff --git a/commands/message/genai/ask.js b/commands/message/genai/ask.js index 0495470..ecf02d4 100644 --- a/commands/message/genai/ask.js +++ b/commands/message/genai/ask.js @@ -1,7 +1,8 @@ const { PERMISSION_GROUPS } = require('#constants'); const { webAsk } = require('#obelisk'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { iconPill, smallIconPill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATIC_ICONS } = require('#utils/statics'); @@ -23,7 +24,7 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { if(!await hasFeature(context, "flamingo/summary")) return; - context.triggerTyping(); + await acknowledge(context); if(!args.text) return editOrReply(context, createEmbed("warning", context, "You need to ask a question.")) if(!context.message.messageReference) return editOrReply(context, createEmbed("warning", context, "You need to reply to a message containing a link.")) diff --git a/commands/message/genai/emogen.js b/commands/message/genai/emogen.js index b946dd3..4691867 100644 --- a/commands/message/genai/emogen.js +++ b/commands/message/genai/emogen.js @@ -2,6 +2,7 @@ const { emogen } = require("#api"); const { PERMISSION_GROUPS } = require("#constants"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { iconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { hasFeature } = require("#utils/testing"); @@ -22,8 +23,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/imagen")) return; - context.triggerTyping(); - + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (prompt).`)) try{ diff --git a/commands/message/genai/gemini-pro.js b/commands/message/genai/gemini-pro.js index 2caa17e..9cfb626 100644 --- a/commands/message/genai/gemini-pro.js +++ b/commands/message/genai/gemini-pro.js @@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { LlmModelsGenerate } = require("#obelisk"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { stringwrap, iconPill, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATIC_ICONS } = require("#utils/statics"); @@ -21,8 +22,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/gemini/text")) return; - context.triggerTyping(); - + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`)) let input = args.text; diff --git a/commands/message/genai/gemini-vision.js b/commands/message/genai/gemini-vision.js index 85140ee..2532bf8 100644 --- a/commands/message/genai/gemini-vision.js +++ b/commands/message/genai/gemini-vision.js @@ -3,6 +3,7 @@ const { geminiVision } = require("#obelisk"); const { getRecentImage } = require("#utils/attachment"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { stringwrap, iconPill, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATIC_ICONS } = require("#utils/statics"); @@ -22,8 +23,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/gemini/vision")) return; - context.triggerTyping(); - + await acknowledge(context); + // for the sake of privacy, make the context window one message let image = await getRecentImage(context, 1) if (!image) return editOrReply(context, createEmbed("warning", context, "No images found. Reply if you want a specific image.")) diff --git a/commands/message/genai/gemini.js b/commands/message/genai/gemini.js index c473b13..bdc9a54 100644 --- a/commands/message/genai/gemini.js +++ b/commands/message/genai/gemini.js @@ -1,7 +1,8 @@ const { PERMISSION_GROUPS } = require('#constants'); const { LlmPrivateBard } = require('#obelisk'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { iconPill, stringwrap } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATIC_ICONS } = require('#utils/statics'); @@ -25,8 +26,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/bard")) return; - - context.triggerTyping(); + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`)) let input = args.text; diff --git a/commands/message/genai/gpt.js b/commands/message/genai/gpt.js index 16bbbd2..e66b409 100644 --- a/commands/message/genai/gpt.js +++ b/commands/message/genai/gpt.js @@ -6,6 +6,7 @@ const { editOrReply } = require('#utils/message') const { iconPill, stringwrap, smallIconPill } = require('#utils/markdown') const { STATICS, STATIC_ASSETS } = require('#utils/statics'); const { hasFeature } = require('#utils/testing'); +const { acknowledge } = require('#utils/interactions'); module.exports = { @@ -26,8 +27,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/gpt")) return; - - context.triggerTyping(); + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`)) let input = args.text; diff --git a/commands/message/genai/imagen.js b/commands/message/genai/imagen.js index dd17af6..1dd4893 100644 --- a/commands/message/genai/imagen.js +++ b/commands/message/genai/imagen.js @@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { GenerativeImagesModelsImagen } = require("#obelisk"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { iconPill, stringwrap } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATIC_ICONS, STATIC_ASSETS } = require("#utils/statics"); @@ -21,8 +22,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/imagen")) return; - context.triggerTyping(); - + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (prompt).`)) try{ diff --git a/commands/message/genai/palm.js b/commands/message/genai/palm.js index 9847885..be1b60a 100644 --- a/commands/message/genai/palm.js +++ b/commands/message/genai/palm.js @@ -6,6 +6,7 @@ const { editOrReply } = require('#utils/message') const { iconPill, stringwrap, smallIconPill } = require('#utils/markdown') const { STATIC_ICONS } = require('#utils/statics'); const { hasFeature } = require('#utils/testing'); +const { acknowledge } = require('#utils/interactions'); module.exports = { name: 'palm', @@ -25,8 +26,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/palm")) return; - - context.triggerTyping(); + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`)) let input = args.text; diff --git a/commands/message/genai/summarize.js b/commands/message/genai/summarize.js index d6c93b7..f9f9f19 100644 --- a/commands/message/genai/summarize.js +++ b/commands/message/genai/summarize.js @@ -1,7 +1,8 @@ const { PERMISSION_GROUPS } = require('#constants'); const { SparkWebSummarize } = require('#obelisk'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { iconPill, smallIconPill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATIC_ICONS } = require('#utils/statics'); @@ -24,8 +25,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { if(!await hasFeature(context, "flamingo/summary")) return; - context.triggerTyping(); - + await acknowledge(context); + let content = args.text; if(context.message.messageReference) { let msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId); diff --git a/commands/message/genai/wallpaper.js b/commands/message/genai/wallpaper.js index 1b84c47..e16e124 100644 --- a/commands/message/genai/wallpaper.js +++ b/commands/message/genai/wallpaper.js @@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { wallpaper } = require("#obelisk"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { iconPill, stringwrap } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATIC_ICONS, STATIC_ASSETS } = require("#utils/statics"); @@ -24,8 +25,8 @@ module.exports = { permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { if(!await hasFeature(context, "ai/wallpapers")) return; - context.triggerTyping(); - + await acknowledge(context); + if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (prompt).`)) if(!["wide","square"].includes(args.format.toLowerCase())) return editOrReply(context, createEmbed("warning", context, `Invalid Parameter (format).`)) try{ diff --git a/commands/message/google/labels.js b/commands/message/google/labels.js index 414d82b..947801c 100644 --- a/commands/message/google/labels.js +++ b/commands/message/google/labels.js @@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { getRecentImage } = require("#utils/attachment"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { pill, smallPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS } = require("#utils/statics"); @@ -17,7 +18,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + let image = await getRecentImage(context, 50) if (!image) return editOrReply(context, createEmbed("warning", context, "No images found.")) diff --git a/commands/message/google/safetylabels.js b/commands/message/google/safetylabels.js index be38459..6724a4d 100644 --- a/commands/message/google/safetylabels.js +++ b/commands/message/google/safetylabels.js @@ -3,6 +3,7 @@ const { GOOGLE_CLOUD_SAFETY_LABELS, GOOGLE_CLOUD_SAFETY_LABELS_NAMES, PERMISSION const { getRecentImage } = require("#utils/attachment"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { iconPill, smallPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS } = require("#utils/statics"); @@ -17,7 +18,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + let image = await getRecentImage(context, 50) if (!image) return editOrReply(context, createEmbed("warning", context, "No images found.")) diff --git a/commands/message/google/transcribe.js b/commands/message/google/transcribe.js index 3fd84d1..f62cb0a 100644 --- a/commands/message/google/transcribe.js +++ b/commands/message/google/transcribe.js @@ -1,7 +1,8 @@ const { PERMISSION_GROUPS } = require('#constants'); const { AudioTranscribe } = require('#obelisk'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { codeblock, icon } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics'); @@ -18,7 +19,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + if (!context.message.messageReference) return editOrReply(context, createEmbed("warning", context, "You need to reply to a voice message.")) try { let msg; diff --git a/commands/message/info/appinfo.js b/commands/message/info/appinfo.js index a56d0ba..f6e53ef 100644 --- a/commands/message/info/appinfo.js +++ b/commands/message/info/appinfo.js @@ -6,6 +6,7 @@ const superagent = require('superagent'); const { Routes } = require('detritus-client-rest/lib/endpoints'); const { PERMISSION_GROUPS } = require("#constants"); +const { acknowledge } = require("#utils/interactions"); const applicationFlags = { EMBEDDED_RELEASED: 1, @@ -48,7 +49,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + let id; if(/[0-9]{17,19}/.test(args.id)){ id = args.id.match(/[0-9]{17,19}/) diff --git a/commands/message/info/avatar.js b/commands/message/info/avatar.js index a90ec29..73b6fea 100644 --- a/commands/message/info/avatar.js +++ b/commands/message/info/avatar.js @@ -2,6 +2,7 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); const { createEmbed, page } = require("#utils/embed"); +const { acknowledge } = require('#utils/interactions'); const { icon } = require('#utils/markdown'); const { editOrReply } = require("#utils/message"); const { getUser, getUserAvatar } = require("#utils/users"); @@ -20,7 +21,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.user) args.user = context.userId; let u = await getUser(context, args.user) if(!u || !u.user) return editOrReply(context, createEmbed("warning", context, "No users found.")) diff --git a/commands/message/info/banner.js b/commands/message/info/banner.js index c46074f..1256233 100644 --- a/commands/message/info/banner.js +++ b/commands/message/info/banner.js @@ -2,6 +2,7 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); const { createEmbed, page } = require("#utils/embed"); +const { acknowledge } = require('#utils/interactions'); const { icon } = require('#utils/markdown'); const { editOrReply } = require("#utils/message"); const { getUser } = require("#utils/users"); @@ -20,7 +21,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.user) args.user = context.userId; let u = await getUser(context, args.user) if(!u || !u.user) return editOrReply(context, createEmbed("warning", context, "No users found.")) diff --git a/commands/message/info/guild.js b/commands/message/info/guild.js index 552d43c..d96fb64 100644 --- a/commands/message/info/guild.js +++ b/commands/message/info/guild.js @@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require('#constants'); const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed"); const { guildFeaturesField } = require("#utils/fields"); +const { acknowledge } = require('#utils/interactions'); const { icon, highlight, timestamp, codeblock, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); @@ -18,6 +19,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { + await acknowledge(context); + try{ const emojis = context.message.guild.emojis diff --git a/commands/message/info/guildbanner.js b/commands/message/info/guildbanner.js index 4e31b08..5ddc94a 100644 --- a/commands/message/info/guildbanner.js +++ b/commands/message/info/guildbanner.js @@ -1,5 +1,6 @@ const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') module.exports = { @@ -13,7 +14,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + if (!context.guild.bannerUrl) return editOrReply(context, createEmbed("warning", context, "Server doesn't have a banner set.")) return editOrReply(context, createEmbed("default", context, { image: { diff --git a/commands/message/info/guildicon.js b/commands/message/info/guildicon.js index 340dc05..bf9cf14 100644 --- a/commands/message/info/guildicon.js +++ b/commands/message/info/guildicon.js @@ -1,5 +1,6 @@ const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') module.exports = { @@ -13,7 +14,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + if (!context.guild.iconUrl) return editOrReply(context, createEmbed("warning", context, "Server doesn't have an icon.")) return editOrReply(context, createEmbed("default", context, { image: { diff --git a/commands/message/info/invite.js b/commands/message/info/invite.js index e88b782..b9766f9 100644 --- a/commands/message/info/invite.js +++ b/commands/message/info/invite.js @@ -3,6 +3,7 @@ const { DISCORD_INVITES, OPEN_SOURCE_REPOSITORY_URL, PERMISSION_GROUPS } = requi const { createEmbed, formatPaginationEmbeds, page } = require("#utils/embed"); const { guildFeaturesField } = require("#utils/fields"); +const { acknowledge } = require('#utils/interactions'); const { icon, highlight, timestamp, iconPill, iconLinkPill, link } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATIC_ASSETS } = require("#utils/statics"); @@ -20,7 +21,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.invite) return editOrReply(context, { content: link("https://canary.discord.com/application-directory/" + context.client.user.id + " ", "󠄴", "App Directory Invite", true) + link(DISCORD_INVITES.invite + " ", "󠄴", "labsCore Support Server", true), embeds: [createEmbed("default", context, { diff --git a/commands/message/info/role.js b/commands/message/info/role.js index 5f29333..7cc6822 100644 --- a/commands/message/info/role.js +++ b/commands/message/info/role.js @@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require('#constants'); const { PERMISSION_CATEGORIES, PERMISSIONS_TEXT } = require('#permissions'); const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed"); +const { acknowledge } = require('#utils/interactions'); const { icon, iconPill, smallPill, pill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); @@ -96,6 +97,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { + await acknowledge(context); + let r = context.guild.roles.filter((r)=>r.name.toLowerCase().includes(args.query.toLowerCase()) || r.id == args.query)[0] if(!r) return await editOrReply(context, createEmbed("warning", context, "No roles matched your query.")) diff --git a/commands/message/info/user.js b/commands/message/info/user.js index 990798b..eba7b1c 100644 --- a/commands/message/info/user.js +++ b/commands/message/info/user.js @@ -2,6 +2,7 @@ const { paginator } = require("#client"); const { PERMISSION_GROUPS } = require("#constants"); const { createEmbed, page } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { icon, highlight, timestamp, smallIconPill, smallPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { getUser, renderBadges, getUserAvatar } = require("#utils/users"); @@ -22,7 +23,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + try{ let u; if(!args.user) { args.user = context.user.id } diff --git a/commands/message/mod/analyze.js b/commands/message/mod/analyze.js index 4ad36b1..2c30ce9 100644 --- a/commands/message/mod/analyze.js +++ b/commands/message/mod/analyze.js @@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { format } = require("#utils/ansi"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { icon, codeblock, iconPill, smallPill, stringwrap } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS } = require("#utils/statics"); @@ -64,8 +65,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - await context.triggerTyping(); - + await acknowledge(context); + try { let msg = ''; if (context.message.messageReference) { diff --git a/commands/message/mod/perspective.js b/commands/message/mod/perspective.js index 0af6ad8..928c0a5 100644 --- a/commands/message/mod/perspective.js +++ b/commands/message/mod/perspective.js @@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { format } = require("#utils/ansi"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { codeblock, iconPill, stringwrap, link } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS } = require("#utils/statics"); @@ -41,8 +42,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - await context.triggerTyping(); - + await acknowledge(context); + try { let msg = ''; let author = {}; diff --git a/commands/message/mod/purge.js b/commands/message/mod/purge.js index bc24819..b733f89 100644 --- a/commands/message/mod/purge.js +++ b/commands/message/mod/purge.js @@ -5,6 +5,7 @@ const { icon } = require("#utils/markdown"); const { Permissions } = require("detritus-client/lib/constants"); const { PERMISSION_GROUPS } = require("#constants"); +const { acknowledge } = require("#utils/interactions"); // TODO: rework this eventually // -> filter by user @@ -32,7 +33,8 @@ module.exports = { }, permissionsClient: [Permissions.MANAGE_MESSAGES], run: async (context, args) => { - await context.triggerTyping(); + await acknowledge(context); + if(isNaN(parseInt(args.amount))) return editOrReply(context, createEmbed("warning", context, "Invalid Amount")) if(args.amount >= 51 || args.amount <= 0){ diff --git a/commands/message/search/audio.js b/commands/message/search/audio.js index d07df3a..b93ef2a 100644 --- a/commands/message/search/audio.js +++ b/commands/message/search/audio.js @@ -1,6 +1,7 @@ const { PERMISSION_GROUPS } = require('#constants'); const { renderMusicButtons } = require('#utils/buttons'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { icon } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') @@ -21,7 +22,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + if (!context.message.messageReference) return editOrReply(context, createEmbed("warning", context, "You need to reply to a message containing a song link.")) try { let msg; diff --git a/commands/message/search/bing-images.js b/commands/message/search/bing-images.js index 8fb70d1..0d04163 100644 --- a/commands/message/search/bing-images.js +++ b/commands/message/search/bing-images.js @@ -2,7 +2,8 @@ const { bingImages } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -40,7 +41,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try { let search = await bingImages(context, args.query, context.channel.nsfw) diff --git a/commands/message/search/bing.js b/commands/message/search/bing.js index f44cbad..ec372ed 100644 --- a/commands/message/search/bing.js +++ b/commands/message/search/bing.js @@ -2,7 +2,8 @@ const { bing } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { citation, link, codeblock } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -107,7 +108,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try{ let search = await bing(context, args.query, context.channel.nsfw) diff --git a/commands/message/search/google-images.js b/commands/message/search/google-images.js index aa6dd2e..0b09fce 100644 --- a/commands/message/search/google-images.js +++ b/commands/message/search/google-images.js @@ -2,7 +2,8 @@ const { googleImages } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -40,7 +41,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try { let search = await googleImages(context, args.query, context.channel.nsfw) diff --git a/commands/message/search/google.js b/commands/message/search/google.js index e8968e4..a730048 100644 --- a/commands/message/search/google.js +++ b/commands/message/search/google.js @@ -3,7 +3,8 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); const { format } = require('#utils/ansi'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { link, citation, icon, codeblock, pill, smallPill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -246,7 +247,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try{ let search = await google(context, args.query, context.channel.nsfw) diff --git a/commands/message/search/lyrics.js b/commands/message/search/lyrics.js index 750a7db..a18acf6 100644 --- a/commands/message/search/lyrics.js +++ b/commands/message/search/lyrics.js @@ -2,7 +2,8 @@ const { lyrics } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { smallIconPill } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -77,7 +78,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try{ let search = await lyrics(context, args.query) diff --git a/commands/message/search/maps.js b/commands/message/search/maps.js index 1b21732..2106c01 100644 --- a/commands/message/search/maps.js +++ b/commands/message/search/maps.js @@ -1,7 +1,8 @@ const { maps, mapsSupplemental } = require('#api'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { link, icon, iconAsEmojiObject, citation } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') const { STATICS, STATIC_ASSETS } = require('#utils/statics') @@ -92,7 +93,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try { let search = await maps(context, args.query) diff --git a/commands/message/search/quora.js b/commands/message/search/quora.js index 4302826..6c0bcd1 100644 --- a/commands/message/search/quora.js +++ b/commands/message/search/quora.js @@ -2,7 +2,8 @@ const { quora, quoraResult } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { link, pill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATICS, STATIC_ASSETS } = require('#utils/statics') @@ -135,7 +136,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try { let search = await quora(context, args.query) diff --git a/commands/message/search/reverse-image.js b/commands/message/search/reverse-image.js index ce10ab6..9c657a1 100644 --- a/commands/message/search/reverse-image.js +++ b/commands/message/search/reverse-image.js @@ -3,7 +3,8 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); const { getRecentImage } = require("#utils/attachment"); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -43,7 +44,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + try { let image = await getRecentImage(context, 50) if (!image) return editOrReply(context, createEmbed("warning", context, "No images found.")) diff --git a/commands/message/search/rule34.js b/commands/message/search/rule34.js index 02f655d..7ee2c7f 100644 --- a/commands/message/search/rule34.js +++ b/commands/message/search/rule34.js @@ -2,7 +2,8 @@ const { rule34 } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { pill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') @@ -55,8 +56,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); - + await acknowledge(context); + // very important, maybe make this a command option eventually if (!context.channel.nsfw) { return editOrReply(context, createEmbed("nsfw", context)) diff --git a/commands/message/search/urbandictionary.js b/commands/message/search/urbandictionary.js index a7f3cf1..9420464 100644 --- a/commands/message/search/urbandictionary.js +++ b/commands/message/search/urbandictionary.js @@ -2,7 +2,8 @@ const { urbandictionary } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { link, iconPill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -48,7 +49,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + try{ let search = await urbandictionary(context, args.query) search = search.response diff --git a/commands/message/search/wikihow.js b/commands/message/search/wikihow.js index 2b8acf1..a5ee3a8 100644 --- a/commands/message/search/wikihow.js +++ b/commands/message/search/wikihow.js @@ -2,7 +2,8 @@ const { wikihow } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -37,7 +38,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + try{ let search = await wikihow(context, args.query) search = search.response diff --git a/commands/message/search/wikipedia.js b/commands/message/search/wikipedia.js index 8e063fe..685284c 100644 --- a/commands/message/search/wikipedia.js +++ b/commands/message/search/wikipedia.js @@ -1,7 +1,8 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -20,7 +21,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + try{ let search = await superagent.get(`https://api.wikimedia.org/core/v1/wikipedia/en/search/page`) .query({ diff --git a/commands/message/search/wolfram-alpha.js b/commands/message/search/wolfram-alpha.js index 9fd4f02..56e1062 100644 --- a/commands/message/search/wolfram-alpha.js +++ b/commands/message/search/wolfram-alpha.js @@ -2,7 +2,8 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); const { WolframQueryCompute } = require('#obelisk'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { citation, smallIconPill } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -52,7 +53,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(context.message.messageReference) { let msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId); diff --git a/commands/message/search/xkcd.js b/commands/message/search/xkcd.js index a2dde67..ebe17cf 100644 --- a/commands/message/search/xkcd.js +++ b/commands/message/search/xkcd.js @@ -1,7 +1,8 @@ const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { editOrReply } = require('#utils/message') const superagent = require('superagent') @@ -19,7 +20,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if (!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) if(!isNaN(parseInt(args.query))){ diff --git a/commands/message/search/youtube.js b/commands/message/search/youtube.js index 0d63ad8..44c30b4 100644 --- a/commands/message/search/youtube.js +++ b/commands/message/search/youtube.js @@ -2,7 +2,8 @@ const { youtube } = require('#api'); const { paginator } = require('#client'); const { YOUTUBE_CATEGORIES, PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { link, iconPill, smallPill, timestamp } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics') @@ -121,7 +122,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (query).`)) try{ if(args.type == 'all') args.type = undefined; diff --git a/commands/message/utils/dictionary.js b/commands/message/utils/dictionary.js index 665ded8..089b7de 100644 --- a/commands/message/utils/dictionary.js +++ b/commands/message/utils/dictionary.js @@ -2,7 +2,8 @@ const { dictionary } = require('#api'); const { paginator } = require('#client'); const { TRANSLATE_LANGUAGE_MAPPINGS, DICTIONARY_LANGUAGES, PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed') +const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { link, iconPill, smallPill, icon, iconLinkPill, pill } = require('#utils/markdown') const { editOrReply } = require('#utils/message') const { dictionaryGetCodeFromAny } = require('#utils/translate'); @@ -64,7 +65,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + let language = dictionaryGetCodeFromAny(args.lang); diff --git a/commands/message/utils/emoji.js b/commands/message/utils/emoji.js index 2b27d02..a3c892c 100644 --- a/commands/message/utils/emoji.js +++ b/commands/message/utils/emoji.js @@ -11,6 +11,7 @@ const { Utils } = require("detritus-client"); const { Components, Snowflake } = require("detritus-client/lib/utils"); const { InteractionCallbackTypes, DiscordRegexNames } = require("detritus-client/lib/constants"); const { bold } = require("detritus-client/lib/utils/markup"); +const { acknowledge } = require("#utils/interactions"); const onlyEmoji = require('emoji-aware').onlyEmoji; @@ -52,7 +53,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - await context.triggerTyping() + await acknowledge(context); + let msg = context.message; if (context.message.messageReference) { msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId) diff --git a/commands/message/utils/emojipedia.js b/commands/message/utils/emojipedia.js index a0d06d2..b6f63c2 100644 --- a/commands/message/utils/emojipedia.js +++ b/commands/message/utils/emojipedia.js @@ -2,6 +2,7 @@ const { emojipedia } = require("#api"); const { PERMISSION_GROUPS } = require("#constants"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { pill, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS, STATIC_ASSETS } = require("#utils/statics"); @@ -45,7 +46,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - await context.triggerTyping() + await acknowledge(context); + let msg = context.message; if (context.message.messageReference) { msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId) diff --git a/commands/message/utils/eval.js b/commands/message/utils/eval.js index 8045857..c54303c 100644 --- a/commands/message/utils/eval.js +++ b/commands/message/utils/eval.js @@ -7,7 +7,8 @@ const { editOrReply } = require("#utils/message"); const { DiscordRegexNames } = require("detritus-client/lib/constants"); const { Utils } = require("detritus-client"); -const superagent = require('superagent') +const superagent = require('superagent'); +const { acknowledge } = require("#utils/interactions"); module.exports = { label: 'code', @@ -24,7 +25,7 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); if(!args.code) return editOrReply(context, createEmbed("warning", context, "No code provided.")) diff --git a/commands/message/utils/latex.js b/commands/message/utils/latex.js index cc12201..f3d700d 100644 --- a/commands/message/utils/latex.js +++ b/commands/message/utils/latex.js @@ -2,6 +2,7 @@ const { paginator } = require("#client"); const { COLORS, PERMISSION_GROUPS } = require("#constants"); const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { codeblock, pill, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATIC_ICONS } = require("#utils/statics"); @@ -23,7 +24,7 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); let content = args.content if (context.message.messageReference) { diff --git a/commands/message/utils/ocr.js b/commands/message/utils/ocr.js index 8aeeded..add266a 100644 --- a/commands/message/utils/ocr.js +++ b/commands/message/utils/ocr.js @@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { getRecentImage } = require("#utils/attachment"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { codeblock, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS } = require("#utils/statics"); @@ -18,7 +19,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context) => { - context.triggerTyping(); + await acknowledge(context); + let image = await getRecentImage(context, 50) if (!image) return editOrReply(context, createEmbed("warning", context, "No images found.")) diff --git a/commands/message/utils/ocrtr.js b/commands/message/utils/ocrtr.js index d3cd5ac..a5f12d5 100644 --- a/commands/message/utils/ocrtr.js +++ b/commands/message/utils/ocrtr.js @@ -3,6 +3,7 @@ const { TRANSLATE_LANGUAGES, TRANSLATE_DISPLAY_MAPPINGS, PERMISSION_GROUPS } = r const { getRecentImage } = require("#utils/attachment"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { codeblock, icon, pill, limitedString, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS } = require("#utils/statics"); @@ -25,8 +26,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); - + await acknowledge(context); + if(!args.to) args.to = "en" if(args.to.startsWith("-to")) args.to = args.to.replace("-to ", "") diff --git a/commands/message/utils/qr.js b/commands/message/utils/qr.js index 0e0a399..8813352 100644 --- a/commands/message/utils/qr.js +++ b/commands/message/utils/qr.js @@ -6,6 +6,7 @@ const { STATICS } = require('#utils/statics'); const superagent = require('superagent'); const { PERMISSION_GROUPS } = require("#constants"); +const { acknowledge } = require("#utils/interactions"); module.exports = { name: 'qr', @@ -20,7 +21,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { - + await acknowledge(context); + // If we have an argument, generate code if(args.text.length){ let response = await editOrReply(context, createEmbed("loading", context, `Generating qr code...`)) @@ -49,8 +51,6 @@ module.exports = { if (!image) return editOrReply(context, createEmbed("warning", context, "No images found.")) try { - await context.triggerTyping(); - const t = Date.now(); let res = await superagent.get(`https://api.qrserver.com/v1/read-qr-code/`) diff --git a/commands/message/utils/screenshot.js b/commands/message/utils/screenshot.js index 0adb897..d9d073a 100644 --- a/commands/message/utils/screenshot.js +++ b/commands/message/utils/screenshot.js @@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants"); const { WebUtilsWebPageScreenshot} = require("#obelisk"); const { createEmbed } = require("#utils/embed"); +const { acknowledge } = require("#utils/interactions"); const { editOrReply } = require("#utils/message"); module.exports = { @@ -18,6 +19,8 @@ module.exports = { }, permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments], run: async (context, args) => { + await acknowledge(context); + if (!args.url) return editOrReply(context, createEmbed("warning", context, "No url supplied.")) await editOrReply(context, createEmbed("loading", context, `Creating website screenshot...`)) diff --git a/commands/message/utils/translate.js b/commands/message/utils/translate.js index 9a8ba59..1e09550 100644 --- a/commands/message/utils/translate.js +++ b/commands/message/utils/translate.js @@ -1,7 +1,8 @@ const { googleTranslate } = require('#api'); const { TRANSLATE_LANGUAGES, TRANSLATE_DISPLAY_MAPPINGS, PERMISSION_GROUPS } = require('#constants'); -const { createEmbed } = require('#utils/embed') +const { createEmbed } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { codeblock, icon, pill, stringwrap, smallIconPill } = require('#utils/markdown'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics'); @@ -24,8 +25,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - await context.triggerTyping(); - + await acknowledge(context); + let content = args.text; // TODO: Turn this into a reply helper diff --git a/commands/message/utils/weather.js b/commands/message/utils/weather.js index ece130c..80e8eea 100644 --- a/commands/message/utils/weather.js +++ b/commands/message/utils/weather.js @@ -2,7 +2,8 @@ const { darksky } = require('#api'); const { paginator } = require('#client'); const { PERMISSION_GROUPS } = require('#constants'); -const { createEmbed, page } = require('#utils/embed') +const { createEmbed, page } = require('#utils/embed'); +const { acknowledge } = require('#utils/interactions'); const { pill, iconPill, smallPill, weatherIcon, timestamp, icon, link, stringwrap} = require('#utils/markdown'); const { editOrReply } = require('#utils/message') const { STATICS } = require('#utils/statics'); @@ -114,7 +115,8 @@ module.exports = { ], permissionsClient: [...PERMISSION_GROUPS.baseline], run: async (context, args) => { - context.triggerTyping(); + await acknowledge(context); + if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (location).`)) try{ // Quick Units diff --git a/labscore/utils/interactions.js b/labscore/utils/interactions.js index b379b86..6a9d089 100644 --- a/labscore/utils/interactions.js +++ b/labscore/utils/interactions.js @@ -30,7 +30,18 @@ module.exports.acknowledge = async function(context, incognito = false, permissi return await context.respond({data: { flags: MessageFlags.EPHEMERAL }, type: InteractionCallbackTypes.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE}); } return await context.respond({data: {}, type: InteractionCallbackTypes.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE}) - } + }; + // Command Flow - return await context.triggerTyping() + + /** + * This endpoint will sometimes error when + * - Discord breaks their platform again + * - Discord disables it via cloudflare to reduce + * platform load. + * + * In order to avoid our bot from crashing, we catch the + * error here. + */ + return await context.triggerTyping().catch((e)=>{}) } \ No newline at end of file