guildinfo: bootleg profiles support

This commit is contained in:
Cynthia Foxwell 2025-04-21 17:28:58 -06:00
parent ffb47a7c28
commit 58183ab07a
Signed by: Cynosphere
SSH key fingerprint: SHA256:H3SM8ufP/uxqLwKSH7xY89TDnbR9uOHzjLoBr0tlajk
2 changed files with 58 additions and 22 deletions

View file

@ -72,7 +72,27 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
id = snowflake;
try {
const clan = await hf.bot.requestHandler.request("GET", APIEndpoints.CLAN(snowflake), true);
let clan = await hf.bot.requestHandler.request("GET", APIEndpoints.CLAN(snowflake), true);
if (!clan) {
if (guild.profile) {
clan = guild.profile;
} else {
const verif = await hf.bot.requestHandler.request(
"GET",
`${APIEndpoints.GUILD_MEMBER_VERIFICATION(snowflake)}?with_guild=true`,
true
);
if (verif?.profile) {
clan = verif.profile;
} else if (guild.vanityURL) {
const invite = await hf.bot.requestHandler.request(
"GET",
`${APIEndpoints.INVITE(guild.vanityURL)}?with_counts=true&with_expiration=true`
);
if (invite?.profile) clan = invite.profile;
}
}
}
if (clan) {
const images = [];
@ -99,10 +119,11 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
})
);
clan.wildcard_descriptors = clan.wildcard_descriptors.filter((x) => x != "");
if (clan.wildcard_descriptors) clan.wildcard_descriptors = clan.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\``;
@ -114,6 +135,19 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
}
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}:\`\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.search_terms.length - 1) termLines.push(currentTerm);
}
}
let gameLines = "";
let gameLines2 = "";
@ -140,8 +174,8 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
value: clan.member_count,
inline: true,
},
clan.search_terms.length > 0 && {
name: "Interests/Topics/Traits",
termLines.length > 0 && {
name: "Traits",
value: termLines.join("\n"),
inline: false,
},
@ -155,14 +189,16 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
value: gameLines2,
inline: false,
},
{
clan.badge_color_primary && {
name: "Badge Colors",
value: `${clan.badge_color_primary}, ${clan.badge_color_secondary}`,
inline: true,
},
{
clan.brand_color_primary && {
name: "Banner/Brand Colors",
value: `${clan.brand_color_primary}, ${clan.brand_color_secondary}`,
value: `${clan.brand_color_primary}${
clan.brand_color_secondary ? `, ${clan.brand_color_secondary}` : ""
}`,
inline: true,
},
].filter((x) => !!x),
@ -526,7 +562,7 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
embed.fields.push({
name: "Member Count",
value: `${Icons.online}${guildObj.approximate_presence_count} online\t\t${Icons.offline}${guildObj.approximate_member_count} members`,
value: `${Icons.online}${guildObj.approximate_presence_count} online\u3000\u3000${Icons.offline}${guildObj.approximate_member_count} members`,
inline: false,
});
@ -564,9 +600,8 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
if (guild.instant_invite) {
invite = await hf.bot.requestHandler.request(
"GET",
`/invites/${guild.instant_invite.replace(
/(https?:\/\/)?(canary\.|ptb\.)?discord(\.gg|(app)?.com\/invite)\//,
""
`${APIEndpoints.INVITE(
guild.instant_invite.replace(/(https?:\/\/)?(canary\.|ptb\.)?discord(\.gg|(app)?.com\/invite)\//, "")
)}?with_counts=true&with_expiration=true`
);
}
@ -595,7 +630,7 @@ guildinfo.callback = async function (msg, line, args, {nolocal, debug}) {
embed.fields.push({
name: "Member Count",
value: `${Icons.online}${invite.approximate_presence_count} online\t\t${Icons.offline}${invite.approximate_member_count} members`,
value: `${Icons.online}${invite.approximate_presence_count} online\u3000\u3000${Icons.offline}${invite.approximate_member_count} members`,
inline: false,
});

View file

@ -81,7 +81,8 @@ async function getGuild(id, noLocal = false) {
`${APIEndpoints.GUILD_MEMBER_VERIFICATION(id)}?with_guild=true`,
true
);
if (verification?.guild) return {source: "verification", data: verification.guild};
if (verification?.guild)
return {source: "verification", data: {...verification.guild, profile: verification.profile}};
} catch {
return null;
}