From 1040bf581a59df046ddaf5efb77950d59dddd974 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Wed, 5 Aug 2020 20:18:30 +0300 Subject: [PATCH] Work on !invite styles --- .../Utility/functions/getInviteInfoEmbed.ts | 118 +++++++++++------- backend/src/utils.ts | 1 + 2 files changed, 75 insertions(+), 44 deletions(-) diff --git a/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts b/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts index 1269e841..45843e77 100644 --- a/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts +++ b/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts @@ -5,10 +5,12 @@ import { snowflakeToTimestamp } from "../../../utils/snowflakeToTimestamp"; import moment from "moment-timezone"; import humanizeDuration from "humanize-duration"; import { + embedPadding, emptyEmbedValue, formatNumber, isRESTGroupDMInvite, isRESTGuildInvite, + preEmbedPadding, resolveInvite, trimLines, } from "../../../utils"; @@ -27,54 +29,72 @@ export async function getInviteInfoEmbed( fields: [], }; + embed.author = { + name: `Server Invite - ${invite.guild.name}`, + url: `https://discord.gg/${invite.code}`, + }; + if (invite.guild.icon) { - embed.thumbnail = { - url: `https://cdn.discordapp.com/icons/${invite.guild.id}/${invite.guild.icon}.png?size=256`, - }; + embed.author.icon_url = `https://cdn.discordapp.com/icons/${invite.guild.id}/${invite.guild.icon}.png?size=256`; } - embed.title = `Server Invite - ${invite.guild.name}`; - embed.url = `https://discord.gg/${invite.code}`; + if (invite.guild.description) { + embed.description = invite.guild.description; + } - embed.fields.push({ - name: "Server ID", - value: `\`${invite.guild.id}\``, - inline: true, - }); - - embed.fields.push({ - name: "Channel", - value: - invite.channel.type === Constants.ChannelTypes.GUILD_VOICE - ? `🔉 ${invite.channel.name}\n\`${invite.channel.id}\`` - : `#${invite.channel.name}\n\`${invite.channel.id}\``, - }); - - const createdAtTimestamp = snowflakeToTimestamp(invite.guild.id); - const createdAt = moment(createdAtTimestamp, "x"); - const serverAge = humanizeDuration(Date.now() - createdAtTimestamp, { + const serverCreatedAtTimestamp = snowflakeToTimestamp(invite.guild.id); + const serverCreatedAt = moment(serverCreatedAtTimestamp, "x"); + const serverAge = humanizeDuration(Date.now() - serverCreatedAtTimestamp, { largest: 2, round: true, }); embed.fields.push({ - name: "Server age", - value: serverAge, + name: preEmbedPadding + "Server information", + value: trimLines(` + Name: **${invite.guild.name}** + ID: \`${invite.guild.id}\` + Created: **${serverAge} ago** + Members: **${formatNumber(invite.memberCount)}** (${formatNumber(invite.presenceCount)} online) + `), + inline: true, }); + const channelName = + invite.channel.type === Constants.ChannelTypes.GUILD_VOICE + ? `🔉 ${invite.channel.name}` + : `#${invite.channel.name}`; + + const channelCreatedAtTimestamp = snowflakeToTimestamp(invite.channel.id); + const channelCreatedAt = moment(channelCreatedAtTimestamp, "x"); + const channelAge = humanizeDuration(Date.now() - channelCreatedAtTimestamp, { + largest: 2, + round: true, + }); + + let channelInfo = trimLines(` + Name: **${channelName}** + ID: \`${invite.channel.id}\` + Created: **${channelAge} ago** + `); + + if (invite.channel.type !== Constants.ChannelTypes.GUILD_VOICE) { + channelInfo += `\nMention: <#${invite.channel.id}>`; + } + embed.fields.push({ - name: "Members", - value: `**${formatNumber(invite.memberCount)}** (${formatNumber(invite.presenceCount)} online)`, + name: preEmbedPadding + "Channel information", + value: channelInfo, inline: true, }); if (invite.inviter) { embed.fields.push({ - name: "Invite creator", + name: preEmbedPadding + "Invite creator", value: trimLines(` - <@!${invite.inviter.id}> - ${invite.inviter.username}#${invite.inviter.discriminator} - \`${invite.inviter.id}\` + Name: **${invite.inviter.username}#${invite.inviter.discriminator}** + ID: \`${invite.inviter.id}\` + Mention: <@!${invite.inviter.id}> `), }); } @@ -87,32 +107,42 @@ export async function getInviteInfoEmbed( fields: [], }; + embed.author = { + name: invite.channel.name ? `Group DM Invite - ${invite.channel.name}` : `Group DM Invite`, + url: `https://discord.gg/${invite.code}`, + }; + if (invite.channel.icon) { - embed.thumbnail = { - url: `https://cdn.discordapp.com/channel-icons/${invite.channel.id}/${invite.channel.icon}.png?size=256`, - }; + embed.author.icon_url = `https://cdn.discordapp.com/channel-icons/${invite.channel.id}/${invite.channel.icon}.png?size=256`; } - embed.title = invite.channel.name ? `Group DM Invite - ${invite.channel.name}` : `Group DM Invite`; - - embed.fields.push({ - name: "Channel ID", - value: `\`${invite.channel.id}\``, + const channelCreatedAtTimestamp = snowflakeToTimestamp(invite.channel.id); + const channelCreatedAt = moment(channelCreatedAtTimestamp, "x"); + const channelAge = humanizeDuration(Date.now() - channelCreatedAtTimestamp, { + largest: 2, + round: true, }); embed.fields.push({ - name: "Members", - value: formatNumber((invite as any).memberCount), + name: preEmbedPadding + "Group DM information", + value: trimLines(` + Name: ${invite.channel.name ? `**${invite.channel.name}**` : `_Unknown_`} + ID: \`${invite.channel.id}\` + Created: **${channelAge} ago** + Members: **${formatNumber((invite as any).memberCount)}** + `), + inline: true, }); if (invite.inviter) { embed.fields.push({ - name: "Invite creator", + name: preEmbedPadding + "Invite creator", value: trimLines(` - <@!${invite.inviter.id}> - ${invite.inviter.username}#${invite.inviter.discriminator} - \`${invite.inviter.id}\` + Name: **${invite.inviter.username}#${invite.inviter.discriminator}** + ID: \`${invite.inviter.id}\` + Mention: <@!${invite.inviter.id}> `), + inline: true, }); } diff --git a/backend/src/utils.ts b/backend/src/utils.ts index 3e3b0311..c6c91546 100644 --- a/backend/src/utils.ts +++ b/backend/src/utils.ts @@ -539,6 +539,7 @@ export function indentLines(str: string, indentLength: number) { } export const emptyEmbedValue = "\u200b"; +export const preEmbedPadding = emptyEmbedValue + "\n"; export const embedPadding = "\n" + emptyEmbedValue; export const userMentionRegex = /<@!?([0-9]+)>/g;