diff --git a/src/lib/commandDispatcher.js b/src/lib/commandDispatcher.js index a2e039a..cf47be3 100644 --- a/src/lib/commandDispatcher.js +++ b/src/lib/commandDispatcher.js @@ -82,11 +82,11 @@ async function runCommand(msg, cmd, line) { if (!cmdObj) return null; if (cmdObj.ownerOnly && msg.author.id != hf.config.owner_id) { - return "No\n-# Sent from my iPhone"; + return "No\n\nSent from my iPhone"; } if (cmdObj.elevatedOnly && !hf.config.elevated.includes(msg.author.id)) { - return "No\n-# Sent from my iPhone"; + return "No\n\nSent from my iPhone"; } if (cmdObj.guildOnly && !msg.guildID) { diff --git a/src/lib/interactionDispatcher.js b/src/lib/interactionDispatcher.js index 32a1e1d..02403c0 100644 --- a/src/lib/interactionDispatcher.js +++ b/src/lib/interactionDispatcher.js @@ -5,14 +5,14 @@ const {pastelize, getTopColor} = require("../util/misc.js"); async function runCommand(interaction, command) { if (command.ownerOnly && interaction.user.id != hf.config.owner_id) { return { - content: "No\n-# Sent from my iPhone", + content: "No\n\nSent from my iPhone", flags: MessageFlags.EPHEMERAL, }; } if (command.elevatedOnly && !hf.config.elevated.includes(interaction.user.id)) { return { - content: "No\n-# Sent from my iPhone", + content: "No\n\nSent from my iPhone", flags: MessageFlags.EPHEMERAL, }; } diff --git a/src/modules/utility/avatar.js b/src/modules/utility/avatar.js index 7c3e2b8..9e94847 100644 --- a/src/modules/utility/avatar.js +++ b/src/modules/utility/avatar.js @@ -10,28 +10,16 @@ avatar.category = "utility"; avatar.helpText = "Get avatar of a user"; avatar.usage = ""; avatar.callback = async function (msg, line, [user], {server, guild}) { - let member = msg.member ?? msg.author; - if (server || guild) { if (!msg.guildID) { return "`--server/--guild` can only be used within guilds."; } else { const guild = msg.channel.guild || hf.bot.guilds.get(msg.guildID); const url = CDNEndpoints.GUILD_ICON(guild.id, guild.icon); - - const res = await fetch(url, {method: "HEAD"}); - const mod = res.headers.get("last-modified"); - let description; - if (mod) { - const modDate = Math.floor(new Date(mod).getTime() / 10000); - description = `Updated `; - } - return { embeds: [ { title: "Server Icon", - description, url, image: { url, @@ -45,48 +33,66 @@ avatar.callback = async function (msg, line, [user], {server, guild}) { if (lookup == "No results" || lookup == "Canceled" || lookup == "Request timed out") { return lookup; } else { - member = lookup; + let member = lookup; + const guild = msg.channel.guild || hf.bot.guilds.get(msg.guildID); + if (guild) { + if (guild.members.has(lookup.id)) { + member = guild.members.get(lookup.id); + } else { + const fetched = await guild.fetchMembers({ + userIDs: [lookup.id], + }); + member = fetched[0]; + } + } + + const baseEmbed = { + title: `Avatar for \`${formatUsername(member)}\``, + }; + + const defaultAvatar = getDefaultAvatar(member.id, member.user?.discriminator ?? member.discriminator ?? 0); + const normalAvatar = member.user ? member.user.avatar ?? defaultAvatar : member.avatar ?? defaultAvatar; + const guildAvatar = guild ? member.avatar : null; + + const normalUrl = CDNEndpoints.USER_AVATAR(member.id, normalAvatar); + const guildUrl = CDNEndpoints.GUILD_MEMBER_AVATAR(guild.id, member.id, guildAvatar); + + baseEmbed.description = + `[Normal avatar](${normalUrl})` + (guild && guildAvatar ? `\n[Guild avatar](${guildUrl})` : ""); + baseEmbed.url = normalUrl; + + const guildEmbed = {...baseEmbed}; + baseEmbed.image = {url: normalUrl}; + guildEmbed.image = {url: guildUrl}; + + return { + embeds: [baseEmbed, guildAvatar && guildEmbed].filter((x) => x != null), + }; } + } else { + const guild = msg.channel.guild ?? hf.bot.guilds.get(msg.guildID); + + const baseEmbed = { + title: `Avatar for \`${formatUsername(msg.author)}\``, + }; + + const normalAvatar = msg.author?.avatar ?? getDefaultAvatar(msg.author.id, msg.author.discriminator); + const guildAvatar = msg.member?.avatar; + + const normalUrl = CDNEndpoints.USER_AVATAR(msg.author.id, normalAvatar); + const guildUrl = CDNEndpoints.GUILD_MEMBER_AVATAR(guild.id, msg.author.id, guildAvatar); + + baseEmbed.description = + `[Normal avatar](${normalUrl})` + (guild && guildAvatar ? `\n[Guild avatar](${guildUrl})` : ""); + baseEmbed.url = normalUrl; + + const guildEmbed = {...baseEmbed}; + baseEmbed.image = {url: normalUrl}; + guildEmbed.image = {url: guildUrl}; + + return { + embeds: [baseEmbed, guildAvatar && guildEmbed].filter((x) => x != null), + }; } - - const baseEmbed = { - title: `Avatar for \`${formatUsername(member)}\``, - }; - - const defaultAvatar = getDefaultAvatar(member.id, member.user?.discriminator ?? member.discriminator ?? 0); - const normalAvatar = member.user ? member.user.avatar ?? defaultAvatar : member.avatar ?? defaultAvatar; - const guildAvatar = guild ? member.avatar : null; - - const normalUrl = CDNEndpoints.USER_AVATAR(member.id, normalAvatar); - const guildUrl = CDNEndpoints.GUILD_MEMBER_AVATAR(guild.id, member.id, guildAvatar); - - const res = await fetch(normalUrl, {method: "HEAD"}); - const mod = res.headers.get("last-modified"); - let modStr = ""; - if (mod) { - const modDate = Math.floor(new Date(mod).getTime() / 10000); - modStr = ` \u2022 Updated `; - } - - const guildRes = await fetch(guildUrl, {method: "HEAD"}); - const guildMod = guildRes.headers.get("last-modified"); - let modStrGuild = ""; - if (guildMod) { - const modDate = Math.floor(new Date(guildMod).getTime() / 10000); - modStrGuild = ` \u2022 Updated `; - } - - baseEmbed.description = - `[Normal avatar](${normalUrl})${modStr}` + - (guild && guildAvatar ? `\n[Guild avatar](${guildUrl})${modStrGuild}` : ""); - baseEmbed.url = normalUrl; - - const guildEmbed = {...baseEmbed}; - baseEmbed.image = {url: normalUrl}; - guildEmbed.image = {url: guildUrl}; - - return { - embeds: [baseEmbed, guildAvatar && guildEmbed].filter((x) => x != null), - }; }; hf.registerCommand(avatar); diff --git a/src/modules/utility/banner.js b/src/modules/utility/banner.js index 29d983c..993fc63 100644 --- a/src/modules/utility/banner.js +++ b/src/modules/utility/banner.js @@ -21,20 +21,10 @@ banner.callback = async function (msg, line, [user], {server, guild}) { if (!guild.banner) return "This guild does not have a banner."; const url = CDNEndpoints.BANNER(guild.id, guild.banner); - - const res = await fetch(url, {method: "HEAD"}); - const mod = res.headers.get("last-modified"); - let description; - if (mod) { - const modDate = Math.floor(new Date(mod).getTime() / 10000); - description = `Updated `; - } - return { embeds: [ { title: "Server Banner", - description, url, image: { url, @@ -62,29 +52,12 @@ banner.callback = async function (msg, line, [user], {server, guild}) { if (!userObj.banner && !memberObj?.banner) return "This user does not have a banner."; const url = userObj.banner && CDNEndpoints.BANNER(userObj.id, userObj.banner); + const guildUrl = memberObj?.banner && CDNEndpoints.GUILD_MEMBER_BANNER(msg.guildID, userObj.id, memberObj.banner); - - const res = await fetch(url, {method: "HEAD"}); - const mod = res.headers.get("last-modified"); - let modStr; - if (mod) { - const modDate = Math.floor(new Date(mod).getTime() / 10000); - modStr = `Updated `; - } - - const guildRes = await fetch(guildUrl, {method: "HEAD"}); - const guildMod = guildRes.headers.get("last-modified"); - let modStrGuild; - if (guildMod) { - const modDate = Math.floor(new Date(guildMod).getTime() / 10000); - modStrGuild = `Updated `; - } - return { embeds: [ url && { title: `Banner for \`${formatUsername(userObj)}\``, - description: modStr, url, image: { url, @@ -92,7 +65,6 @@ banner.callback = async function (msg, line, [user], {server, guild}) { }, guildUrl && { title: `Server banner for \`${formatUsername(userObj)}\``, - description: modStrGuild, url: guildUrl, image: { url: guildUrl,