lookupinvite: copypaste updated profile support
This commit is contained in:
parent
34d778fe13
commit
3e373fb91b
1 changed files with 53 additions and 79 deletions
|
@ -218,123 +218,97 @@ lookupinvite.callback = async function (msg, line) {
|
|||
return `Unhandled invite type: \`${invite.type}\``;
|
||||
}
|
||||
|
||||
const clan = invite.profile;
|
||||
const profile = invite.profile;
|
||||
let clanEmbed;
|
||||
if (clan) {
|
||||
if (profile) {
|
||||
const images = [];
|
||||
|
||||
const game_ids = clan.game_ids ?? clan.game_application_ids ?? [];
|
||||
const game_ids = profile.game_ids ?? profile.game_application_ids ?? [];
|
||||
const games = await Promise.all(
|
||||
game_ids
|
||||
.sort((a, b) => (clan.game_activity[b]?.activity_score ?? 0) - (clan.game_activity[a]?.activity_score ?? 0))
|
||||
.sort(
|
||||
(a, b) => (profile.game_activity[b]?.activity_score ?? 0) - (profile.game_activity[a]?.activity_score ?? 0)
|
||||
)
|
||||
.map(async (id) => {
|
||||
let game = Games.find((x) => x.id == id);
|
||||
if (!game) {
|
||||
game = await hf.bot.requestHandler.request("GET", APIEndpoints.APPLICATION_RPC(id), false);
|
||||
}
|
||||
|
||||
let out = `${game.name} (\`${id}\`)`;
|
||||
|
||||
if (clan.game_activity[id]?.activity_level > 1) {
|
||||
out = `:fire: ${out}`;
|
||||
} else {
|
||||
out = `${Icons.blank} ${out}`;
|
||||
}
|
||||
|
||||
return out;
|
||||
return `${game.name}${
|
||||
profile.game_activity[id]?.activity_level > 1 ? " \ud83d\udd25" : ""
|
||||
}\n-# \u200b\u3000${id}`;
|
||||
})
|
||||
);
|
||||
|
||||
if (clan.wildcard_descriptors) clan.wildcard_descriptors = clan.wildcard_descriptors.filter((x) => x != "");
|
||||
if (profile.wildcard_descriptors)
|
||||
profile.wildcard_descriptors = profile.wildcard_descriptors.filter((x) => x != "");
|
||||
|
||||
const termLines = [];
|
||||
let currentTerm = "";
|
||||
if (clan.search_terms) {
|
||||
for (const index in clan.search_terms) {
|
||||
const term = clan.search_terms[index];
|
||||
const formattedTerm = `\`\u2004${term.replaceAll(" ", "\u2005")}\u2004\``;
|
||||
if (currentTerm.length + 1 + formattedTerm.length > 56) {
|
||||
termLines.push(currentTerm);
|
||||
currentTerm = formattedTerm;
|
||||
} else {
|
||||
currentTerm += "\u2004" + formattedTerm;
|
||||
}
|
||||
if (index == clan.search_terms.length - 1) termLines.push(currentTerm);
|
||||
}
|
||||
} else if (clan.traits) {
|
||||
for (const index in clan.traits) {
|
||||
const term = clan.traits[index];
|
||||
const formattedTerm = `${term.emoji_name ? `:${term.emoji_name}:` : ""}\`\u2004${term.label.replaceAll(
|
||||
" ",
|
||||
"\u2005"
|
||||
)}\u2004\``;
|
||||
if (currentTerm.length + 1 + formattedTerm.length > 56) {
|
||||
termLines.push(currentTerm);
|
||||
currentTerm = formattedTerm;
|
||||
} else {
|
||||
currentTerm += "\u2004" + formattedTerm;
|
||||
}
|
||||
if (index == clan.traits.length - 1) termLines.push(currentTerm);
|
||||
}
|
||||
}
|
||||
|
||||
let gameLines = "";
|
||||
let gameLines2 = "";
|
||||
for (const line of games) {
|
||||
if (gameLines.length + line.length + 1 <= 1024) {
|
||||
gameLines += line + "\n";
|
||||
} else {
|
||||
gameLines2 += line + "\n";
|
||||
}
|
||||
let traits = "";
|
||||
if (profile.search_terms) {
|
||||
traits = profile.search_terms.map((term) => `[\u2005${term}\u2005]`).join(" ");
|
||||
} else if (profile.traits) {
|
||||
traits = profile.traits
|
||||
.map((term) => `[\u2005${term.emoji_name ? `:${term.emoji_name}: ` : ""}${term.label}\u2005]`)
|
||||
.join(" ");
|
||||
}
|
||||
|
||||
const gamesLeft = games.slice(0, Math.ceil(games.length / 2)).join("\n");
|
||||
const gamesRight = games.slice(Math.ceil(games.length / 2), games.length).join("\n");
|
||||
clanEmbed = {
|
||||
color: clan.brand_color_primary ? parseInt(clan.brand_color_primary.replace("#", "0x")) : 0,
|
||||
color: profile.brand_color_primary ? parseInt(profile.brand_color_primary.replace("#", "0x")) : 0,
|
||||
author: {
|
||||
name: clan.tag,
|
||||
name: profile.tag,
|
||||
},
|
||||
description:
|
||||
clan.playstyle || clan.wildcard_descriptors
|
||||
? `-# :video_game:${ClanPlaystyle[clan.playstyle] ?? "Unknown"}${
|
||||
clan.wildcard_descriptors.length > 0 ? ` \u2022 **${clan.wildcard_descriptors.join(", ")}**` : ""
|
||||
}\n\n${clan.description ?? "*No description*"}`
|
||||
: clan.description ?? "*No description*",
|
||||
profile.playstyle || profile.wildcard_descriptors
|
||||
? `-# :video_game:${ClanPlaystyle[profile.playstyle] ?? "Unknown"}${
|
||||
profile.wildcard_descriptors.length > 0 ? ` \u2022 **${profile.wildcard_descriptors.join(", ")}**` : ""
|
||||
}\n\n${profile.description ?? "*No description*"}`
|
||||
: profile.description ?? "*No description*",
|
||||
fields: [
|
||||
termLines.length > 0 && {
|
||||
traits != "" && {
|
||||
name: "Traits",
|
||||
value: termLines.join("\n"),
|
||||
value: traits,
|
||||
inline: false,
|
||||
},
|
||||
games.length > 0 && {
|
||||
name: "Associated Games",
|
||||
value: gameLines,
|
||||
inline: false,
|
||||
},
|
||||
gameLines2 != "" && {
|
||||
name: "\u200b",
|
||||
value: gameLines2,
|
||||
inline: false,
|
||||
},
|
||||
clan.badge_color_primary && {
|
||||
name: "Badge Colors",
|
||||
value: `${clan.badge_color_primary}, ${clan.badge_color_secondary}`,
|
||||
value: gamesLeft,
|
||||
inline: true,
|
||||
},
|
||||
clan.brand_color_primary && {
|
||||
gamesRight != "" && {
|
||||
name: "\u200b",
|
||||
value: gamesRight,
|
||||
inline: true,
|
||||
},
|
||||
games.length > 0 && {
|
||||
name: "\u200b",
|
||||
value: "\u200b",
|
||||
inline: false,
|
||||
},
|
||||
profile.badge_color_primary && {
|
||||
name: "Badge Colors",
|
||||
value: `${profile.badge_color_primary}, ${profile.badge_color_secondary}`,
|
||||
inline: true,
|
||||
},
|
||||
profile.brand_color_primary && {
|
||||
name: "Banner/Brand Colors",
|
||||
value: `${clan.brand_color_primary}${clan.brand_color_secondary ? `, ${clan.brand_color_secondary}` : ""}`,
|
||||
value: `${profile.brand_color_primary}${
|
||||
profile.brand_color_secondary ? `, ${profile.brand_color_secondary}` : ""
|
||||
}`,
|
||||
inline: true,
|
||||
},
|
||||
].filter((x) => !!x),
|
||||
};
|
||||
|
||||
if (clan.badge_hash) {
|
||||
const url = CDNEndpoints.CLAN_BADGE(clan.id, clan.badge_hash);
|
||||
if (profile.badge_hash) {
|
||||
const url = CDNEndpoints.CLAN_BADGE(profile.id, profile.badge_hash);
|
||||
images.push(`[Badge](${url})`);
|
||||
clanEmbed.author.icon_url = url;
|
||||
}
|
||||
if (clan.banner_hash) {
|
||||
const url = CDNEndpoints.CLAN_BANNER(clan.id, clan.banner_hash);
|
||||
if (profile.banner_hash) {
|
||||
const url = CDNEndpoints.CLAN_BANNER(profile.id, profile.banner_hash);
|
||||
images.push(`[Banner](${url})`);
|
||||
clanEmbed.image = {url};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue