userinfo: resolve quest decorations from mirrored quest data

This commit is contained in:
Cynthia Foxwell 2025-07-09 12:57:44 -06:00
parent 060db79507
commit aafcda393b
Signed by: Cynosphere
SSH key fingerprint: SHA256:H3SM8ufP/uxqLwKSH7xY89TDnbR9uOHzjLoBr0tlajk

View file

@ -22,6 +22,9 @@ let vencordFetch = 0;
const vencordBadges = new Map();
const vencordContributors = new Set();
let questsFetch = 0;
let questData = [];
const REGEX_DEVS = /id: (\d+)n(,\n\s+badge: false)?/;
const REGEX_DEVS_GLOBAL = new RegExp(REGEX_DEVS.source, "g");
@ -53,6 +56,12 @@ async function fetchVencordData() {
vencordFetch = Date.now() + 60 * 60 * 1000;
}
async function fetchQuestData() {
questData = await fetch("https://raw.githubusercontent.com/aamiaa/discord-api-diff/refs/heads/main/quests.json").then(
(res) => res.json()
);
questsFetch = Date.now() + 60 * 60 * 1000;
}
const userinfo = new Command("userinfo");
userinfo.category = "utility";
@ -104,6 +113,13 @@ userinfo.callback = async function (msg, line) {
// noop
}
}
if (Date.now() > questsFetch) {
try {
fetchQuestData();
} catch {
// noop
}
}
// FIXME: horrible, probably needs to be moved out of this command for later
const badges = [];
@ -222,7 +238,27 @@ userinfo.callback = async function (msg, line) {
}
}
if (user.avatar_decoration_data?.expires_at || user.avatar_decoration_data?.sku_id == "1226939756617793606") {
let questDecorationName;
if (user.avatar_decoration_data?.sku_id != null) {
let questDecoration;
for (const quest of questData) {
questDecoration =
quest.config.rewards_config?.rewards?.find(
(reward) => reward.type === 3 && reward.sku_id === user.avatar_decoration_data.sku_id
) ??
quest.config.rewards?.find(
(reward) => reward.type === 3 && reward.sku_id === user.avatar_decoration_data.sku_id
);
if (questDecoration != null) break;
}
if (questDecoration != null) {
questDecorationName = questDecoration.messages.name;
badges.push(`[${Icons.badges.quest_completed}](${BadgeURLs.quest_completed})`);
}
} else if (
user.avatar_decoration_data?.expires_at != null ||
user.avatar_decoration_data?.sku_id === "1226939756617793606"
) {
badges.push(`[${Icons.badges.quest_completed}](${BadgeURLs.quest_completed})`);
}
@ -379,7 +415,7 @@ userinfo.callback = async function (msg, line) {
value: `${
decoration?.sku
? `[${decoration?.sku?.name}](https://discord.com/shop#itemSkuId=${user.avatar_decoration_data.sku_id})`
: "Unknown"
: questDecorationName ?? "*Unknown*"
}\n-# ${user.avatar_decoration_data.sku_id}\n[Image](${decorationUrl})`,
inline: true,
},