add support for acronym guild icons

This commit is contained in:
bignutty 2024-12-20 20:53:31 +01:00
parent a68f5ab3e7
commit c8783b12bc
3 changed files with 26 additions and 14 deletions

View file

@ -3,6 +3,7 @@ const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed");
const { guildFeaturesField } = require("#utils/fields");
const { getAcronym, getGuildIcon } = require('#utils/guilds');
const { acknowledge } = require('#utils/interactions');
const { icon, highlight, timestamp, codeblock, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
@ -54,14 +55,11 @@ module.exports = {
let guildCard = createEmbed("default", context, {
description: `${icon("home")} **${g.name}** ${highlight(`(${g.id})`)}\n${pillDisplay}\n\n${icon("calendar")} **Server created** ${timestamp(g.createdAt, "f")}`,
fields: []
})
if(g.iconUrl){
guildCard.thumbnail = {
url: g.iconUrl + `?size=4096`
fields: [],
thumbnail: {
url: getGuildIcon(g)
}
}
})
// Channel Container
let lines = [];

View file

@ -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 { getGuildIcon } = require('#utils/guilds');
const { acknowledge } = require('#utils/interactions');
const { icon, highlight, timestamp, iconPill, iconLinkPill, link } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
@ -48,14 +49,11 @@ module.exports = {
if(g.description) gDesc = g.description + "\n\n"
let inviteCard = createEmbed("default", context, {
description: `${icon("link")} **https://discord.gg/${inviteCode[1]}**\n\n${icon("home")} **${g.name}** ${highlight(`(${g.id})`)}\n${iconPill("user_multiple", invite.approximateMemberCount.toLocaleString())} ${iconPill("status_online", invite.approximatePresenceCount.toLocaleString())} ${iconPill("status_offline", (invite.approximateMemberCount - invite.approximatePresenceCount).toLocaleString())}\n\n${gDesc}${icon("calendar")} **Created at: **${timestamp(g.createdAt, "f")}\n`,
fields: []
})
if(g.iconUrl){
inviteCard.thumbnail = {
url: g.iconUrl + `?size=4096`
fields: [],
thumbnail: {
url: getGuildIcon(g)
}
}
})
if(g.splash){
inviteCard.image = {

16
labscore/utils/guilds.js Normal file
View file

@ -0,0 +1,16 @@
function getAcronym(guildName){
// Based on discord-web
return guildName.replace(/'s /g, " ").replace(/\w+/g, e => e[0]).replace(/\s/g, "")
}
function getGuildIcon(guild){
return (guild.iconUrl ?
guild.iconUrl + "?size=4096" :
// Removes emojis from the icon since this api doesn't support them, todo for the future maybe build our own image generation service for these.
"https://ui-avatars.com/api/?background=333339&color=fff&size=512&uppercase=false&length=999&name=" + encodeURIComponent(getAcronym(guild.name).replace(/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g, '')))
}
module.exports = {
getAcronym,
getGuildIcon
}