userinfo: resolve quest decorations from mirrored quest data
This commit is contained in:
parent
060db79507
commit
aafcda393b
1 changed files with 38 additions and 2 deletions
|
@ -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,
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue