userinfo: redesign a bit based off of cv2 prototype
This commit is contained in:
		
							parent
							
								
									94968141ff
								
							
						
					
					
						commit
						e9b8b114ef
					
				
					 1 changed files with 69 additions and 51 deletions
				
			
		| 
						 | 
					@ -299,9 +299,19 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
    images.push(bannerUrl);
 | 
					    images.push(bannerUrl);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let decoration;
 | 
				
			||||||
 | 
					  if (user.avatar_decoration_data) {
 | 
				
			||||||
 | 
					    decoration = await hf.bot.requestHandler
 | 
				
			||||||
 | 
					      .request("GET", APIEndpoints.STORE_PUBLISHED_LISTING(user.avatar_decoration_data.sku_id), true)
 | 
				
			||||||
 | 
					      .catch(() => {});
 | 
				
			||||||
 | 
					    const decorationUrl = CDNEndpoints.AVATAR_DECORATION(user.avatar_decoration_data.asset);
 | 
				
			||||||
 | 
					    images.push(`[Avatar Decoration](${decorationUrl})`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //const guildImages = [];
 | 
					  //const guildImages = [];
 | 
				
			||||||
 | 
					  const guildAvatar = member?.avatar && CDNEndpoints.GUILD_MEMBER_AVATAR(msg.guildID, id, member.avatar);
 | 
				
			||||||
 | 
					  let guildBanner;
 | 
				
			||||||
  if (member) {
 | 
					  if (member) {
 | 
				
			||||||
    const guildAvatar = member.avatar && CDNEndpoints.GUILD_MEMBER_AVATAR(msg.guildID, id, member.avatar);
 | 
					 | 
				
			||||||
    if (guildAvatar) {
 | 
					    if (guildAvatar) {
 | 
				
			||||||
      //const avatarRes = await fetch(guildAvatar, {method: "HEAD"});
 | 
					      //const avatarRes = await fetch(guildAvatar, {method: "HEAD"});
 | 
				
			||||||
      //const avatarMod = avatarRes.headers.get("last-modified");
 | 
					      //const avatarMod = avatarRes.headers.get("last-modified");
 | 
				
			||||||
| 
						 | 
					@ -314,7 +324,7 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const memberObj = await hf.bot.requestHandler.request("GET", APIEndpoints.GUILD_MEMBER(msg.guildID, id), true);
 | 
					    const memberObj = await hf.bot.requestHandler.request("GET", APIEndpoints.GUILD_MEMBER(msg.guildID, id), true);
 | 
				
			||||||
    const guildBanner = memberObj.banner && CDNEndpoints.GUILD_MEMBER_BANNER(msg.guildID, id, memberObj.banner);
 | 
					    guildBanner = memberObj.banner && CDNEndpoints.GUILD_MEMBER_BANNER(msg.guildID, id, memberObj.banner);
 | 
				
			||||||
    if (guildBanner) {
 | 
					    if (guildBanner) {
 | 
				
			||||||
      //const bannerRes = await fetch(guildBanner, {method: "HEAD"});
 | 
					      //const bannerRes = await fetch(guildBanner, {method: "HEAD"});
 | 
				
			||||||
      //const bannerMod = bannerRes.headers.get("last-modified");
 | 
					      //const bannerMod = bannerRes.headers.get("last-modified");
 | 
				
			||||||
| 
						 | 
					@ -327,66 +337,78 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let decoration, decorationUrl;
 | 
					 | 
				
			||||||
  if (user.avatar_decoration_data) {
 | 
					 | 
				
			||||||
    decoration = await hf.bot.requestHandler
 | 
					 | 
				
			||||||
      .request("GET", APIEndpoints.STORE_PUBLISHED_LISTING(user.avatar_decoration_data.sku_id), true)
 | 
					 | 
				
			||||||
      .catch(() => {});
 | 
					 | 
				
			||||||
    decorationUrl = CDNEndpoints.AVATAR_DECORATION(user.avatar_decoration_data.asset);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const shared = Array.from(hf.bot.guilds.values()).filter((g) => g.members.get(id) != null);
 | 
					  const shared = Array.from(hf.bot.guilds.values()).filter((g) => g.members.get(id) != null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const descLines = [`<@${id}>`];
 | 
					  const descLines = [`# ${user.global_name ?? user.username} ${user.bot ? Icons.boat.replace(":i:", ":Bot:") : ""}`];
 | 
				
			||||||
 | 
					  let subline = `${formatUsername(user).replace("@", "")} \u2022 <@${id}>`;
 | 
				
			||||||
  if (badges.length > 0) {
 | 
					  if (badges.length > 0) {
 | 
				
			||||||
    descLines.push(badges.join(""));
 | 
					    subline += "\u2007" + badges.join("");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (botDeleted) {
 | 
					  const activityLines = [];
 | 
				
			||||||
    descLines.push("*This bot's application has been deleted*\n-# (or app ID and user ID desync)");
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  if (user.system) {
 | 
					 | 
				
			||||||
    descLines.push("**System account**");
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  let primaryGuild;
 | 
					 | 
				
			||||||
  if (user.primary_guild?.identity_guild_id) primaryGuild = await getGuild(user.primary_guild.identity_guild_id);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (anyMember) {
 | 
					  if (anyMember) {
 | 
				
			||||||
    const icons = [];
 | 
					    const icons = [];
 | 
				
			||||||
    if (anyMember.clientStatus) {
 | 
					    if (anyMember.clientStatus) {
 | 
				
			||||||
      for (const platform of Object.keys(anyMember.clientStatus)) {
 | 
					      for (const platform of Object.keys(anyMember.clientStatus)) {
 | 
				
			||||||
        const status = anyMember.clientStatus[platform];
 | 
					        const status = anyMember.clientStatus[platform];
 | 
				
			||||||
        if (status == "offline") continue;
 | 
					        if (status === "offline") continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        icons.push(Icons.presence[platform][status]);
 | 
					        icons.push(Icons.presence[platform][status]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    descLines.push("");
 | 
					 | 
				
			||||||
    if (icons.length > 0) {
 | 
					    if (icons.length > 0) {
 | 
				
			||||||
      descLines.push(icons.join(""));
 | 
					      subline += "\u2007" + icons.join("");
 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      descLines.push(Icons.offline.replace(":i:", ":Offline:"));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (anyMember.activities?.length > 0) {
 | 
					    if (anyMember.activities?.length > 0) {
 | 
				
			||||||
      for (const activity of anyMember.activities) {
 | 
					      for (const activity of anyMember.activities) {
 | 
				
			||||||
        if (activity.type == 4 || activity.type == 6) {
 | 
					        if (activity.type == 4 || activity.type == 6) {
 | 
				
			||||||
          descLines.push(ActivityTypeNames[activity.type]);
 | 
					          activityLines.push(ActivityTypeNames[activity.type]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          descLines.push(
 | 
					          let name = activity.name;
 | 
				
			||||||
 | 
					          if (activity.status_display_type === 1 && activity.state) {
 | 
				
			||||||
 | 
					            name = activity.state;
 | 
				
			||||||
 | 
					            if (activity.state_url) name = `[${name}](${activity.state_url})`;
 | 
				
			||||||
 | 
					          } else if (activity.status_display_type === 2 && activity.details) {
 | 
				
			||||||
 | 
					            name = activity.details;
 | 
				
			||||||
 | 
					            if (activity.details_url) name = `[${name}](${activity.details_url})`;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          activityLines.push(
 | 
				
			||||||
            `${activity.name === "Spotify" ? Icons.spotify : ActivityTypeIcons[activity.type] ?? ""} ${
 | 
					            `${activity.name === "Spotify" ? Icons.spotify : ActivityTypeIcons[activity.type] ?? ""} ${
 | 
				
			||||||
              ActivityTypeNames[activity.type]
 | 
					              ActivityTypeNames[activity.type]
 | 
				
			||||||
            } **${
 | 
					            } **${
 | 
				
			||||||
              activity.name === "Spotify"
 | 
					              activity.name === "Spotify"
 | 
				
			||||||
                ? `[${activity.state.replaceAll("; ", ", ")}](https://open.spotify.com/track/${activity.sync_id})`
 | 
					                ? `[${activity.state.replaceAll("; ", ", ")}](https://open.spotify.com/track/${activity.sync_id})`
 | 
				
			||||||
                : activity.name
 | 
					                : name
 | 
				
			||||||
            }**`.trim()
 | 
					            }**`.trim()
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  descLines.push(subline);
 | 
				
			||||||
 | 
					  if (shared.length > 0) {
 | 
				
			||||||
 | 
					    descLines.push(`-# ${shared.length} Bot Mutual Server${shared.length > 1 ? "s" : ""}`);
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    descLines.push("");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (botDeleted) {
 | 
				
			||||||
 | 
					    descLines.push("*This bot's application has been deleted*\n-# (or app ID and user ID desync)");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (user.system) {
 | 
				
			||||||
 | 
					    descLines.push("**System account**");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  descLines.push("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (activityLines.length > 0) {
 | 
				
			||||||
 | 
					    descLines.push(...activityLines);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let primaryGuild;
 | 
				
			||||||
 | 
					  if (user.primary_guild?.identity_guild_id) primaryGuild = await getGuild(user.primary_guild.identity_guild_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const vcBadges = vencordBadges.has(id) && vencordBadges.get(id);
 | 
					  const vcBadges = vencordBadges.has(id) && vencordBadges.get(id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -399,24 +421,15 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      : null,
 | 
					      : null,
 | 
				
			||||||
    thumbnail: {
 | 
					    thumbnail: {
 | 
				
			||||||
      url: avatar,
 | 
					      url: guildAvatar || avatar,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    image: {
 | 
					 | 
				
			||||||
      url: banner,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    title: `${user.global_name ?? user.username} (${formatUsername(user)}) ${
 | 
					 | 
				
			||||||
      user.bot ? Icons.boat.replace(":i:", ":Bot:") : ""
 | 
					 | 
				
			||||||
    }`,
 | 
					 | 
				
			||||||
    description: descLines.join("\n"),
 | 
					    description: descLines.join("\n"),
 | 
				
			||||||
    fields: [
 | 
					    fields: [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        name: "Created",
 | 
					        name: "Member Since",
 | 
				
			||||||
        value: `<t:${Math.floor(snowflakeToTimestamp(id) / 1000)}:R>`,
 | 
					        value: `<t:${Math.floor(snowflakeToTimestamp(id) / 1000)}:D>${
 | 
				
			||||||
        inline: true,
 | 
					          member ? ` \u2022 <t:${Math.floor(member.joinedAt / 1000)}:D>` : ""
 | 
				
			||||||
      },
 | 
					        }`,
 | 
				
			||||||
      member && {
 | 
					 | 
				
			||||||
        name: "Joined",
 | 
					 | 
				
			||||||
        value: `<t:${Math.floor(member.joinedAt / 1000)}:R>`,
 | 
					 | 
				
			||||||
        inline: true,
 | 
					        inline: true,
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      member?.nick && {
 | 
					      member?.nick && {
 | 
				
			||||||
| 
						 | 
					@ -430,7 +443,7 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
          decoration?.sku
 | 
					          decoration?.sku
 | 
				
			||||||
            ? `[${decoration?.sku?.name}](https://discord.com/shop#itemSkuId=${user.avatar_decoration_data.sku_id})`
 | 
					            ? `[${decoration?.sku?.name}](https://discord.com/shop#itemSkuId=${user.avatar_decoration_data.sku_id})`
 | 
				
			||||||
            : questDecorationName ?? "*Unknown*"
 | 
					            : questDecorationName ?? "*Unknown*"
 | 
				
			||||||
        }\n-# ${user.avatar_decoration_data.sku_id}\n[Image](${decorationUrl})`,
 | 
					        }\n-# ${user.avatar_decoration_data.sku_id}`,
 | 
				
			||||||
        inline: true,
 | 
					        inline: true,
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      user.primary_guild?.identity_guild_id && {
 | 
					      user.primary_guild?.identity_guild_id && {
 | 
				
			||||||
| 
						 | 
					@ -448,12 +461,7 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
        value: member.roles
 | 
					        value: member.roles
 | 
				
			||||||
          .sort((a, b) => guild.roles.get(b).position - guild.roles.get(a).position)
 | 
					          .sort((a, b) => guild.roles.get(b).position - guild.roles.get(a).position)
 | 
				
			||||||
          .map((role) => `<@&${role}>`)
 | 
					          .map((role) => `<@&${role}>`)
 | 
				
			||||||
          .join(" "),
 | 
					          .join("\u2007"),
 | 
				
			||||||
        inline: false,
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      shared.length > 0 && {
 | 
					 | 
				
			||||||
        name: "Bot Mutual Servers",
 | 
					 | 
				
			||||||
        value: `${shared.length} servers`,
 | 
					 | 
				
			||||||
        inline: false,
 | 
					        inline: false,
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      images.length > 0 && {
 | 
					      images.length > 0 && {
 | 
				
			||||||
| 
						 | 
					@ -467,7 +475,17 @@ userinfo.callback = async function (msg, line) {
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return {embeds: [embed]};
 | 
					  return {
 | 
				
			||||||
 | 
					    embeds: [
 | 
				
			||||||
 | 
					      banner && {
 | 
				
			||||||
 | 
					        color: embed.color,
 | 
				
			||||||
 | 
					        image: {
 | 
				
			||||||
 | 
					          url: guildBanner || banner,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      embed,
 | 
				
			||||||
 | 
					    ].filter((x) => !!x),
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
hf.registerCommand(userinfo);
 | 
					hf.registerCommand(userinfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue