cache command

This commit is contained in:
Cynthia Foxwell 2025-07-18 23:59:59 -06:00
parent bd825c5104
commit e1b16065b0
Signed by: Cynosphere
SSH key fingerprint: SHA256:H3SM8ufP/uxqLwKSH7xY89TDnbR9uOHzjLoBr0tlajk

View file

@ -0,0 +1,75 @@
const {readFile} = require("node:fs/promises");
const Command = require("#lib/command.js");
const {APIEndpoints} = require("#util/dconstants.js");
const {Icons} = require("#util/constants.js");
const cache = new Command("cache");
cache.category = "utility";
cache.helpText = "Cache a user to your client from their ID";
cache.usage = "<user id>";
cache.callback = async function (msg, id) {
if (id == msg.author?.id ?? msg.user?.id) return "Can't cache yourself.";
try {
await hf.bot.requestHandler.request("GET", APIEndpoints.USER(id), true);
} catch (err) {
if (err.code == 10013) {
return "User not found.";
} else {
return `${Icons.silk.error} Failed to validate user exists:\n\`\`\`\n${err}\`\`\``;
}
}
let member;
if (msg.guildID) {
const guild = msg.channel.guild ?? hf.bot.guilds.get(msg.guildID);
member = guild?.members?.get(id);
}
if (member != null) {
return `"Cached" <@${id}>\n-# User is in this server silly`;
}
const attachments = [];
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, {
files: [
{
file_size: video.length,
filename: "clip.mp4",
...clip,
},
],
})
.then((res) => res.attachments[0]);
await fetch(upload_url, {method: "PUT", body: video});
attachments.push({
filename: "clip.mp4",
uploaded_filename: upload_filename,
is_thumbnail: true,
...clip,
});
} catch (err) {
return `${Icons.silk.error} Failed to create clip for caching:\n\`\`\`\n${err}\`\`\``;
}
return {
content: `Cached <@${id}>`,
attachments,
};
};