diff --git a/src/modules/utility/flagdump.js b/src/modules/utility/flagdump.js index d3003c4..bb92b2d 100644 --- a/src/modules/utility/flagdump.js +++ b/src/modules/utility/flagdump.js @@ -14,6 +14,8 @@ for (const set of _UserFlags) { } const UserFlagsMapped = Object.fromEntries(_UserFlags.map((x) => x.reverse())); +const REGEX_MENTION = /<@!?(\d+)>/; + const flagdump = new Command("flagdump"); flagdump.category = "utility"; flagdump.helpText = "Dumps Discord user flags."; @@ -34,26 +36,29 @@ flagdump.callback = async function (msg, line, [numOrMention], {id, list}) { if (UserFlagsMapped[index] == undefined) continue; allFlags += 1n << BigInt(index); } - out = `All flags:\n\`\`\`${flagsFromInt(allFlags, UserFlagsMapped)}\`\`\``; - } else if (/<@!?(\d+)>/.test(numOrMention) || SNOWFLAKE_REGEX.test(id)) { - const targetId = id ?? numOrMention.match(/<@!?(\d+)>/)?.[1]; + out = `All flags:\n\`\`\`\n${flagsFromInt(allFlags, UserFlagsMapped)}\`\`\``; + } else if (REGEX_MENTION.test(numOrMention) || SNOWFLAKE_REGEX.test(id)) { + const targetId = id ?? numOrMention.match(REGEX_MENTION)?.[1]; if (!targetId) return "Got null ID."; - let user = hf.bot.users.get(targetId); - - if (!user) user = await hf.bot.requestHandler.request("GET", APIEndpoints.USER(targetId), true).catch(() => {}); + let user; + try { + user = await hf.bot.requestHandler.request("GET", APIEndpoints.USER(targetId), true); + } catch (err) { + if (err.code == 10013) return "Unknown user"; + } if (!user) { out = "Failed to get user."; } else { - out = `\`${formatUsername(user)}\`'s public flags:\n\`\`\`${flagsFromInt( - user.public_flags ?? user.publicFlags, + out = `\`${formatUsername(user)}\`'s public flags:\n\`\`\`\n${flagsFromInt( + user.public_flags, UserFlagsMapped )}\`\`\``; } } else if (!Number.isNaN(num)) { out = `\`\`\`\n${flagsFromInt(num, UserFlagsMapped)}\`\`\``; } else { - out = `\`${formatUsername(msg.author)}\`'s public flags:\n\`\`\`${flagsFromInt( + out = `\`${formatUsername(msg.author)}\`'s public flags:\n\`\`\`\n${flagsFromInt( msg.author.publicFlags, UserFlagsMapped )}\`\`\``;