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