userinfo: display name styles, subtle caching

This commit is contained in:
Cynthia Foxwell 2025-07-18 23:40:50 -06:00
parent 6f483d1675
commit 4737ac23d6
Signed by: Cynosphere
SSH key fingerprint: SHA256:H3SM8ufP/uxqLwKSH7xY89TDnbR9uOHzjLoBr0tlajk
3 changed files with 80 additions and 8 deletions

BIN
data/clip.mp4 Normal file

Binary file not shown.

View file

@ -1,4 +1,6 @@
const sharp = require("sharp");
const {readFile} = require("node:fs/promises");
const {tinycolor} = require("@ctrl/tinycolor");
const Command = require("#lib/command.js");
const InteractionCommand = require("#lib/interactionCommand.js");
@ -12,6 +14,8 @@ const {
CDNEndpoints,
UserFlags,
NameplatePalettes,
DisplayNameEffectNames,
DisplayNameFontNames,
} = require("#util/dconstants.js");
const {Icons} = require("#util/constants.js");
@ -475,6 +479,17 @@ userinfo.callback = async function (msg, line) {
value: `${primaryGuild?.data?.name ?? "<private guild>"}\n-# ${user.primary_guild.identity_guild_id}`,
inline: true,
},
user.display_name_styles != null && {
name: "Display Name Style",
value: `**Effect:** ${
DisplayNameEffectNames[user.display_name_styles.effect_id] ??
`*Unknown* (\`${user.display_name_styles.effect_id}\`)`
}\n**Font:** ${
DisplayNameFontNames[user.display_name_styles.font_id] ??
`*Unknown* (\`${user.display_name_styles.font_id}\`)`
}\n**Colors**: ${user.display_name_styles.colors.map((color) => tinycolor(color).toHexString()).join(", ")}`,
inline: true,
},
vcBadges?.length > 0 && {
name: `Vencord Donator Badge${vcBadges.length > 1 ? `s (${vcBadges.length})` : ""}`,
value: vcBadges.map(({tooltip, badge}) => `"[${tooltip}](${badge})"`).join(", "),
@ -559,6 +574,41 @@ userinfo.callback = async function (msg, line) {
};
}
if (!member && id !== (msg.author?.id ?? msg.user?.id)) {
try {
const clip = {
is_clip: true,
clip_created_at: new Date().toISOString(),
clip_participant_ids: [id],
application_id: hf.bot.application?.id,
};
const video = await readFile(require.resolve("#root/data/clip.mp4"));
const {upload_url, upload_filename} = await hf.bot.requestHandler.request(
"POST",
APIEndpoints.MESSAGE_CREATE_ATTACHMENT_UPLOAD(msg.channel.id),
true,
{
file_size: video.length,
filename: "clip.mp4",
...clip,
}
);
await fetch(upload_url, {method: "PUT", body: video});
attachments.push({
filename: "clip.mp4",
uploaded_filename: upload_filename,
is_thumbnail: true,
...clip,
});
} catch {
// noop
}
}
return {
embeds: [embed, nameplateEmbed].filter((x) => !!x),
attachments,

View file

@ -37,14 +37,15 @@ delete APIEndpoints.USER_AVATAR_DECORATION_PRESET;
delete APIEndpoints.MESSAGE_LINK;
APIEndpoints.APPLICATION_ASSETS = (applicationID) => `/oauth2/applications/${applicationID}/assets`; // prettier-ignore
APIEndpoints.APPLICATION_RPC = (applicationID) => `/applications/${applicationID}/rpc`; // prettier-ignore
APIEndpoints.ATTACHMENT_REFRESH = "/attachments/refresh-urls"; // prettier-ignore
APIEndpoints.CLAN = (guildID) => `/discovery/${guildID}/clan`; // prettier-ignore
APIEndpoints.DISCOVERY_SLUG = (guildID) => `/discovery/${guildID}`; // prettier-ignore
APIEndpoints.GUILD_MEMBER_VERIFICATION = (guildID) => `/guilds/${guildID}/member-verification`; // prettier-ignore
APIEndpoints.POMELO_UNAUTHED = "/unique-username/username-attempt-unauthed"; // prettier-ignore
APIEndpoints.STORE_PUBLISHED_LISTING = (skuID) => `/store/published-listings/skus/${skuID}`; // prettier-ignore
APIEndpoints.APPLICATION_ASSETS = (applicationID) => `/oauth2/applications/${applicationID}/assets`; // prettier-ignore
APIEndpoints.APPLICATION_RPC = (applicationID) => `/applications/${applicationID}/rpc`; // prettier-ignore
APIEndpoints.ATTACHMENT_REFRESH = "/attachments/refresh-urls"; // prettier-ignore
APIEndpoints.CLAN = (guildID) => `/discovery/${guildID}/clan`; // prettier-ignore
APIEndpoints.DISCOVERY_SLUG = (guildID) => `/discovery/${guildID}`; // prettier-ignore
APIEndpoints.GUILD_MEMBER_VERIFICATION = (guildID) => `/guilds/${guildID}/member-verification`; // prettier-ignore
APIEndpoints.POMELO_UNAUTHED = "/unique-username/username-attempt-unauthed"; // prettier-ignore
APIEndpoints.STORE_PUBLISHED_LISTING = (skuID) => `/store/published-listings/skus/${skuID}`; // prettier-ignore
APIEndpoints.MESSAGE_CREATE_ATTACHMENT_UPLOAD = (channelID) => `/channels/${channelID}/attachments`; // prettier-ignore
module.exports.APIEndpoints = APIEndpoints;
@ -147,6 +148,27 @@ module.exports.DEFAULT_GROUP_DM_AVATARS = [
"/assets/3cb840d03313467838d658bbec801fcd.png",
].map((i) => Endpoints.CLIENT_URL + i);
module.exports.DisplayNameEffectNames = {
1: "Solid",
2: "Gradient",
3: "Neon",
4: "Toon",
5: "Pop",
};
module.exports.DisplayNameFontNames = {
11: "Default",
1: "Bangers",
2: "BioRhyme",
3: "Cherry Bomb One",
4: "Chicle",
5: "Compagnon",
6: "MuseoModerno",
7: "Néo-Castel",
8: "Pixelify Sans",
9: "Ribes",
10: "Sinistre",
};
module.exports.ExplicitContentFilterStrings = ["Disabled", "Members without roles", "All members"];
module.exports.Games = require("#root/data/games.json");