// code from goatstore // api: https://store.agi.bd const axios = require("axios"); const FormData = require("form-data"); module.exports = { config: { name: "gofile", version: "2.1.1", author: "EryXenX", role: 0, shortDescription: "Upload to GoFile", category: "media", guide: "{pn} (reply to a file)", cooldowns: 10 }, onStart: async function ({ api, event }) { const { threadID, messageID, type, messageReply } = event; if (type!== "message_reply" ||!messageReply?.attachments?.[0]) { return api.sendMessage("Reply to a file first", threadID, messageID); } const attachment = messageReply.attachments[0]; let statusMsg; try { statusMsg = await api.sendMessage("Uploading...", threadID, messageID); const serverRes = await axios.get("https://api.gofile.io/servers"); const server = serverRes.data.data.servers[0].name; const fileStream = await axios.get(attachment.url, { responseType: "stream" }); const form = new FormData(); form.append("file", fileStream.data, attachment.filename || "file"); const upload = await axios.post(`https://${server}.gofile.io/uploadFile`, form, { headers: form.getHeaders(), maxBodyLength: Infinity, maxContentLength: Infinity }); if(upload.data.status!== "ok") throw new Error(upload.data.status); const d = upload.data.data; const folderCode = d.parentFolderCode; const fileId = d.id; const guestToken = d.guestToken; const contentRes = await axios.get(`https://api.gofile.io/contents/${folderCode}?wt=${guestToken}&cache=true`); const fileData = contentRes.data.data.children[fileId]; const realDirectLink = fileData.link; return api.editMessage(realDirectLink, statusMsg.messageID, threadID); } catch (err) { if(statusMsg) return api.editMessage("Upload failed: " + err.message, statusMsg.messageID, threadID); return api.sendMessage("Upload failed: " + err.message, threadID, messageID); } } };