cache command
This commit is contained in:
parent
bd825c5104
commit
e1b16065b0
1 changed files with 75 additions and 0 deletions
75
src/modules/utility/cache.js
Normal file
75
src/modules/utility/cache.js
Normal 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,
|
||||
};
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue