diff --git a/commands/interaction/slash/utils/emoji.js b/commands/interaction/slash/utils/emoji.js index 8e751e1..044670e 100644 --- a/commands/interaction/slash/utils/emoji.js +++ b/commands/interaction/slash/utils/emoji.js @@ -1,8 +1,8 @@ const { emojipedia, emojiKitchen } = require("#api"); -const { createEmbed } = require("#utils/embed"); +const { createEmbed, formatPaginationEmbeds } = require("#utils/embed"); const { acknowledge } = require("#utils/interactions"); -const { icon, pill, iconPill, highlight, timestamp } = require("#utils/markdown"); +const { pill, timestamp } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS, STATIC_ASSETS } = require("#utils/statics"); @@ -12,6 +12,7 @@ const { Utils } = require("detritus-client"); const { InteractionCallbackTypes, ApplicationCommandOptionTypes, DiscordRegexNames, InteractionContextTypes, ApplicationIntegrationTypes } = require("detritus-client/lib/constants"); const { Components, Snowflake } = require("detritus-client/lib/utils"); const { PERMISSION_GROUPS } = require("#constants"); +const { paginator } = require("#client"); const onlyEmoji = require('emoji-aware').onlyEmoji; @@ -74,19 +75,40 @@ module.exports = { embeds = [] if (matches.length) { ingest("emoji_enlarge", "slash_command_ran"); - let form = '.png' - if(matches[0].animated) form = '.gif' - - let tagline = '' - tagline += `\n${icon("clock")} Created ${timestamp(Snowflake.timestamp(matches[0].id), "f")}` - - return editOrReply(context, createEmbed("default", context, { - description: `${iconPill("emoji", `:${matches[0].name}:`)} ${highlight(`(${matches[0].id})`)}${tagline}`, - image: { - url: `https://cdn.discordapp.com/emojis/${matches[0].id}${form}?size=4096` + + let pages = []; + let entries = []; + for(const m of matches){ + if(entries.map((e)=>e.id).includes(m.id)) continue; + entries.push(m) + } + + while(entries.length){ + let sprites = entries.splice(0, 4); + let embeds = []; + for(const s of sprites){ + let fields = sprites.map((s)=>{return {inline: true,name:`\\:${s.name}\\:`,value:`-# Created ${timestamp(Snowflake.timestamp(s.id),"R")}${context.guild.emojis.find((e)=>e.id == matches[0].id) ? "\n-# Custom emoji is from this server" : ""}`}}); + if(fields.length >= 3){ + fields.splice(2,0,{name:` `, value:` `, inline:true}) + if(fields.length == 5) fields.push({name:` `, value:` `, inline:true}) } + embeds.push(createEmbed("default", context, { + url: "https://bignutty.gitlab.io", + fields, + image: { + url: `https://cdn.discordapp.com/emojis/${s.id}${s.animated ? ".gif" : ".png"}?size=4096` + } + })) + } + pages.push({ + embeds }) - ) + } + + return await paginator.createPaginator({ + context, + pages: formatPaginationEmbeds(pages) + }); } else { const emoji = onlyEmoji(args.emoji) diff --git a/commands/message/utils/emoji.js b/commands/message/utils/emoji.js index a3c892c..9491569 100644 --- a/commands/message/utils/emoji.js +++ b/commands/message/utils/emoji.js @@ -2,16 +2,16 @@ const { emojipedia, emojiKitchen } = require("#api"); const { EMOJIPEDIA_PLATFORM_TYPES, EMOJIPEDIA_PLATFORM_TYPE_ALIASES, PERMISSION_GROUPS } = require("#constants"); const { ingest } = require("#logging"); -const { createEmbed } = require("#utils/embed"); -const { icon, pill, iconPill, highlight, timestamp, smallIconPill } = require("#utils/markdown"); +const { createEmbed, formatPaginationEmbeds } = require("#utils/embed"); +const { pill, iconPill, highlight, timestamp, smallIconPill } = require("#utils/markdown"); const { editOrReply } = require("#utils/message"); const { STATICS, STATIC_ASSETS } = require("#utils/statics"); 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 { paginator } = require("#client"); const onlyEmoji = require('emoji-aware').onlyEmoji; @@ -85,28 +85,47 @@ module.exports = { ) } - const { matches } = Utils.regex( + let { matches } = Utils.regex( DiscordRegexNames.EMOJI, args.emoji ); embeds = [] if (matches.length) { ingest("emoji_enlarge", "command_ran"); - let form = '.png' - if(matches[0].animated) form = '.gif' - let tagline = '' - tagline += `\n${icon("clock")} Created ${timestamp(Snowflake.timestamp(matches[0].id), "f")}` - if(context.guild.emojis.find((e)=>e.id == matches[0].id)) tagline += `\n${icon("home")} This custom emoji is from ${bold(context.guild.name)}` + let pages = []; + let entries = []; + for(const m of matches){ + if(entries.map((e)=>e.id).includes(m.id)) continue; + entries.push(m) + } - - return editOrReply(context, createEmbed("default", context, { - description: `${iconPill("emoji", `:${matches[0].name}:`)} ${highlight(`(${matches[0].id})`)}${tagline}`, - image: { - url: `https://cdn.discordapp.com/emojis/${matches[0].id}${form}?size=4096` + while(entries.length){ + let sprites = entries.splice(0, 4); + let embeds = []; + for(const s of sprites){ + let fields = sprites.map((s)=>{return {inline: true,name:`\\:${s.name}\\:`,value:`-# Created ${timestamp(Snowflake.timestamp(s.id),"R")}${context.guild.emojis.find((e)=>e.id == matches[0].id) ? "\n-# Custom emoji is from this server" : ""}`}}); + if(fields.length >= 3){ + fields.splice(2,0,{name:` `, value:` `, inline:true}) + if(fields.length == 5) fields.push({name:` `, value:` `, inline:true}) } + embeds.push(createEmbed("default", context, { + url: "https://bignutty.gitlab.io", + fields, + image: { + url: `https://cdn.discordapp.com/emojis/${s.id}${s.animated ? ".gif" : ".png"}?size=4096` + } + })) + } + pages.push({ + embeds }) - ) + } + + return await paginator.createPaginator({ + context, + pages: formatPaginationEmbeds(pages) + }); } else { const emoji = onlyEmoji(args.emoji) if(!emoji){