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