const moment = require("moment-timezone"); module.exports = { config: { name: "accept", aliases: ["acp"], version: "1.0.0", author: "šŒššš‘š®š…", countDown: 8, role: 2, shortDescription: "Manage friend requests", longDescription: "Accept or delete pending friend requests", category: "Admin" }, onReply: async function ({ message, Reply, event, api }) { const { author, listRequest, messageID } = Reply; if (author !== event.senderID) return; clearTimeout(Reply.unsendTimeout); const args = event.body.trim().toLowerCase().split(/\s+/); if (!["add", "del"].includes(args[0])) { return api.sendMessage( "āžœ Use: add \nāžœ Use: del ", event.threadID, event.messageID ); } if (!args[1]) { return api.sendMessage( `āžœ Please select a number or "all".`, event.threadID, event.messageID ); } const form = { av: api.getCurrentUserID(), fb_api_caller_class: "RelayModern", variables: { input: { source: "friends_tab", actor_id: api.getCurrentUserID(), client_mutation_id: Math.random().toString(36).substring(2, 15) }, scale: 3, refresh_num: 0 } }; if (args[0] === "add") { form.fb_api_req_friendly_name = "FriendingCometFriendRequestConfirmMutation"; form.doc_id = "3147613905362928"; } else { form.fb_api_req_friendly_name = "FriendingCometFriendRequestDeleteMutation"; form.doc_id = "4108254489275063"; } const targets = args[1] === "all" ? listRequest.map((_, i) => i + 1) : args.slice(1); const success = []; const failed = []; const requests = []; for (const target of targets) { const index = parseInt(target) - 1; const user = listRequest[index]; if (!user) { failed.push(`Unknown #${target}`); continue; } form.variables.input.friend_requester_id = user.node.id; requests.push({ name: user.node.name, promise: api.httpPost( "https://www.facebook.com/api/graphql/", { ...form, variables: JSON.stringify(form.variables) } ) }); } for (const item of requests) { try { const response = await item.promise; const data = JSON.parse(response); if (data.errors) { failed.push(item.name); } else { success.push(item.name); } } catch { failed.push(item.name); } } let result = `ā•­ā”€ā– š‘šžš¬š®š„š­\n│\n`; if (success.length) { result += `ā”œā”€āž¤ ${args[0] === "add" ? "āœ… Accepted" : "šŸ—‘ļø Deleted"} : ${success.length}\n`; result += success.map(name => `│ └─ ${name}`).join("\n"); result += "\n│\n"; } if (failed.length) { result += `ā”œā”€āž¤ āŒ Failed : ${failed.length}\n`; result += failed.map(name => `│ └─ ${name}`).join("\n"); result += "\n│\n"; } result += `ā•°ā”€ā– šŒššš«š®šŸ'š¬ ššØš­`; api.unsendMessage(messageID); return api.sendMessage( result, event.threadID, event.messageID ); }, onStart: async function ({ event, api, commandName }) { const form = { av: api.getCurrentUserID(), fb_api_req_friendly_name: "FriendingCometFriendRequestsRootQueryRelayPreloader", fb_api_caller_class: "RelayModern", doc_id: "4499164963466303", variables: JSON.stringify({ input: { scale: 3 } }) }; try { const response = await api.httpPost( "https://www.facebook.com/api/graphql/", form ); const listRequest = JSON.parse(response)?.data?.viewer?.friending_possibilities?.edges || []; if (!listRequest.length) { return api.sendMessage( "āžœ No pending friend requests found.", event.threadID, event.messageID ); } const time = moment() .tz("Asia/Manila") .format("DD/MM/YYYY • HH:mm:ss"); let msg = `ā•­ā”€ā– š…š«š¢šžš§š š‘šžšŖš®šžš¬š­š¬\n│\n`; listRequest.forEach((user, i) => { msg += `ā”œā”€āž¤ ${i + 1}. ${user.node.name}\n` + `│ ā”œā”€ ID : ${user.node.id}\n` + `│ ā”œā”€ URL : ${user.node.url.replace("www.facebook", "fb")}\n` + `│ └─ Time : ${time}\n│\n`; }); msg += `ā•°ā”€ā– šŒššš«š®šŸ'š¬ ššØš­\n\n` + `āžœ Reply: add \n` + `āžœ Reply: del `; api.sendMessage( msg, event.threadID, (err, info) => { if (err) return; global.GoatBot.onReply.set(info.messageID, { commandName, messageID: info.messageID, listRequest, author: event.senderID, unsendTimeout: setTimeout(() => { api.unsendMessage(info.messageID); }, this.config.countDown * 1000) }); }, event.messageID ); } catch (error) { console.error(error); return api.sendMessage( "āžœ Failed to retrieve friend requests.", event.threadID, event.messageID ); } } };