utility: add decoration, fix snowflake parsing for appinfo/guildinfo
This commit is contained in:
parent
43fac0f1de
commit
5fdcb094c6
1 changed files with 91 additions and 3 deletions
|
@ -38,6 +38,7 @@ const CHANNEL_ICON_BASE = CDN + "channel-icons/";
|
||||||
const APP_ICON_BASE = CDN + "app-icons/";
|
const APP_ICON_BASE = CDN + "app-icons/";
|
||||||
const APP_ASSET_BASE = CDN + "app-assets/";
|
const APP_ASSET_BASE = CDN + "app-assets/";
|
||||||
const DISCOVERY_SPLASH_BASE = CDN + "discovery-splashes/";
|
const DISCOVERY_SPLASH_BASE = CDN + "discovery-splashes/";
|
||||||
|
const AVATAR_DECORATION_BASE = CDN + "avatar-decoration-presets/";
|
||||||
|
|
||||||
const DEFAULT_GROUP_DM_AVATARS = [
|
const DEFAULT_GROUP_DM_AVATARS = [
|
||||||
"/assets/ee9275c5a437f7dc7f9430ba95f12ebd.png",
|
"/assets/ee9275c5a437f7dc7f9430ba95f12ebd.png",
|
||||||
|
@ -52,7 +53,7 @@ const DEFAULT_GROUP_DM_AVATARS = [
|
||||||
|
|
||||||
const CUSTOM_EMOTE_REGEX = /<(?:\u200b|&)?(a)?:(\w+):(\d+)>/;
|
const CUSTOM_EMOTE_REGEX = /<(?:\u200b|&)?(a)?:(\w+):(\d+)>/;
|
||||||
const POMELO_REGEX = /^[a-z0-9._]{1,32}$/;
|
const POMELO_REGEX = /^[a-z0-9._]{1,32}$/;
|
||||||
const SNOWFLAKE_REGEX = /[0-9]{17,21}/;
|
const SNOWFLAKE_REGEX = /([0-9]{17,21})/;
|
||||||
|
|
||||||
const NOWPLAYING_BAR_LENGTH = 30;
|
const NOWPLAYING_BAR_LENGTH = 30;
|
||||||
|
|
||||||
|
@ -667,11 +668,93 @@ banner.callback = async function (msg, line, [user], {server, guild}) {
|
||||||
};
|
};
|
||||||
hf.registerCommand(banner);
|
hf.registerCommand(banner);
|
||||||
|
|
||||||
|
const decoration = new Command("decoration");
|
||||||
|
decoration.category = CATEGORY;
|
||||||
|
decoration.helpText = "Get decoration of a user";
|
||||||
|
decoration.usage = "<user>";
|
||||||
|
decoration.addAlias("decor");
|
||||||
|
decoration.callback = async function (msg, line, [user]) {
|
||||||
|
let id = msg.author.id;
|
||||||
|
|
||||||
|
if (user) {
|
||||||
|
const lookup = await lookupUser(msg, user);
|
||||||
|
if (
|
||||||
|
lookup == "No results" ||
|
||||||
|
lookup == "Canceled" ||
|
||||||
|
lookup == "Request timed out"
|
||||||
|
) {
|
||||||
|
return lookup;
|
||||||
|
} else {
|
||||||
|
id = lookup.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const userObj = await hf.bot.requestHandler.request(
|
||||||
|
"GET",
|
||||||
|
"/users/" + id,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
let decor;
|
||||||
|
try {
|
||||||
|
const decorRes = await fetch(
|
||||||
|
`https://decor.fieryflames.dev/api/users/${id}/decoration`,
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
"User-Agent":
|
||||||
|
"HiddenPhox/decoration (https://gitdab.com/Cynosphere/HiddenPhox)",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
).then((res) => res.json());
|
||||||
|
|
||||||
|
decor = `https://decorcdn.fieryflames.dev/${decorRes.animated ? "a_" : ""}${
|
||||||
|
decorRes.hash
|
||||||
|
}.png`;
|
||||||
|
} catch {
|
||||||
|
// noop
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userObj.avatar_decoration_data && !decor)
|
||||||
|
return "This user does not have a decoration.";
|
||||||
|
|
||||||
|
const normalUrl =
|
||||||
|
userObj.avatar_decoration_data &&
|
||||||
|
`${AVATAR_DECORATION_BASE}${userObj.avatar_decoration_data.asset}.png?size=4096&passthrough=true`;
|
||||||
|
|
||||||
|
const baseEmbed = {
|
||||||
|
title: `Decoration for \`${formatUsername(userObj)}\``,
|
||||||
|
};
|
||||||
|
|
||||||
|
baseEmbed.description = (
|
||||||
|
(normalUrl ? `[Normal decoration](${normalUrl})` : "") +
|
||||||
|
(decor ? `\n[Decor decoration](${decor})` : "")
|
||||||
|
).trim();
|
||||||
|
|
||||||
|
if (
|
||||||
|
userObj.avatar_decoration_data?.asset.startsWith("a_") ||
|
||||||
|
decor?.indexOf("/a_") > -1
|
||||||
|
) {
|
||||||
|
baseEmbed.description += "\n(Animated decoration, open in browser to view)";
|
||||||
|
baseEmbed.description = baseEmbed.description.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
baseEmbed.url = normalUrl || decor;
|
||||||
|
|
||||||
|
const decorEmbed = {...baseEmbed};
|
||||||
|
baseEmbed.image = {url: normalUrl || decor};
|
||||||
|
decorEmbed.image = {url: decor};
|
||||||
|
|
||||||
|
return {
|
||||||
|
embeds: [baseEmbed, decor && decorEmbed].filter((x) => x != null),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hf.registerCommand(decoration);
|
||||||
|
|
||||||
const lookupinvite = new Command("lookupinvite");
|
const lookupinvite = new Command("lookupinvite");
|
||||||
lookupinvite.category = CATEGORY;
|
lookupinvite.category = CATEGORY;
|
||||||
lookupinvite.helpText = "Lookup an invite";
|
lookupinvite.helpText = "Lookup an invite";
|
||||||
lookupinvite.usage = "<invite code>";
|
lookupinvite.usage = "<invite code>";
|
||||||
lookupinvite.addAlias("linvite");
|
lookupinvite.addAlias("linvite");
|
||||||
|
lookupinvite.addAlias("inviteinfo");
|
||||||
lookupinvite.addAlias("iinfo");
|
lookupinvite.addAlias("iinfo");
|
||||||
lookupinvite.addAlias("ii");
|
lookupinvite.addAlias("ii");
|
||||||
lookupinvite.callback = async function (msg, line) {
|
lookupinvite.callback = async function (msg, line) {
|
||||||
|
@ -1445,10 +1528,12 @@ appinfo.callback = async function (msg, line) {
|
||||||
if (!line || line === "") return "Arguments required.";
|
if (!line || line === "") return "Arguments required.";
|
||||||
if (!SNOWFLAKE_REGEX.test(line)) return "Not a snowflake.";
|
if (!SNOWFLAKE_REGEX.test(line)) return "Not a snowflake.";
|
||||||
|
|
||||||
|
const snowflake = line.match(SNOWFLAKE_REGEX)[1];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const _app = await hf.bot.requestHandler.request(
|
const _app = await hf.bot.requestHandler.request(
|
||||||
"GET",
|
"GET",
|
||||||
`/applications/${line}/rpc`,
|
`/applications/${snowflake}/rpc`,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1765,9 +1850,11 @@ const guildinfo = new Command("guildinfo");
|
||||||
guildinfo.category = CATEGORY;
|
guildinfo.category = CATEGORY;
|
||||||
guildinfo.helpText = "Get information on a guild";
|
guildinfo.helpText = "Get information on a guild";
|
||||||
guildinfo.usage = "<guild id>";
|
guildinfo.usage = "<guild id>";
|
||||||
|
guildinfo.addAlias("guild");
|
||||||
guildinfo.addAlias("ginfo");
|
guildinfo.addAlias("ginfo");
|
||||||
guildinfo.addAlias("gi");
|
guildinfo.addAlias("gi");
|
||||||
guildinfo.addAlias("serverinfo");
|
guildinfo.addAlias("serverinfo");
|
||||||
|
guildinfo.addAlias("server");
|
||||||
guildinfo.addAlias("sinfo");
|
guildinfo.addAlias("sinfo");
|
||||||
guildinfo.addAlias("si");
|
guildinfo.addAlias("si");
|
||||||
guildinfo.callback = async function (msg, line) {
|
guildinfo.callback = async function (msg, line) {
|
||||||
|
@ -1777,7 +1864,8 @@ guildinfo.callback = async function (msg, line) {
|
||||||
_guild = {source: "local", data: msg.channel.guild};
|
_guild = {source: "local", data: msg.channel.guild};
|
||||||
} else {
|
} else {
|
||||||
if (!SNOWFLAKE_REGEX.test(line)) return "Not a snowflake.";
|
if (!SNOWFLAKE_REGEX.test(line)) return "Not a snowflake.";
|
||||||
_guild = await getGuild(line);
|
const snowflake = line.match(SNOWFLAKE_REGEX)[1];
|
||||||
|
_guild = await getGuild(snowflake);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_guild) return "Guild not found.";
|
if (!_guild) return "Guild not found.";
|
||||||
|
|
Loading…
Reference in a new issue