// code from goatstore // api: https://store.agi.bd const axios = require("axios"); const fs = require("fs-extra"); const path = require("path"); module.exports = { config: { name: "pairv1", version: "2.0.0", author: "MrTomXxX", countDown: 15, role: 0, shortDescription: "Pairing", longDescription: "Randomly pair you with another group member", category: "love", guide: { en: "{pn}" }, dependencies: { axios: "", "fs-extra": "" } }, onStart: async function ({ api, event, usersData }) { const { threadID, messageID, senderID } = event; const cacheDir = path.join(__dirname, "cache"); const avatar1Path = path.join( cacheDir, `pair_avatar1_${Date.now()}.png` ); const avatar2Path = path.join( cacheDir, `pair_avatar2_${Date.now()}.png` ); const gifPath = path.join( cacheDir, `pair_heart_${Date.now()}.gif` ); try { // Cache folder তৈরি await fs.ensureDir(cacheDir); // Random percentage const percentage = Math.floor(Math.random() * 101); // Group information const threadInfo = await api.getThreadInfo(threadID); if ( !threadInfo || !Array.isArray(threadInfo.participantIDs) ) { return api.sendMessage( "❌ | Group member list পাওয়া যায়নি।", threadID, messageID ); } // Bot ID const botID = String(api.getCurrentUserID()); // নিজের এবং bot-এর ID বাদ const members = threadInfo.participantIDs.filter( id => String(id) !== String(senderID) && String(id) !== botID ); if (members.length === 0) { return api.sendMessage( "❌ | Pair করার জন্য অন্য কোনো member পাওয়া যায়নি।", threadID, messageID ); } // Random partner const partnerID = members[ Math.floor( Math.random() * members.length ) ]; // User names const senderName = await usersData.getName(senderID); const partnerName = await usersData.getName(partnerID); // Facebook access token const accessToken = "6628568379%7Cc1e620fa708a1d5696fb991c1bde5662"; // ========================== // Download sender avatar // ========================== const avatar1 = await axios.get( `https://graph.facebook.com/${senderID}/picture?width=512&height=512&access_token=${accessToken}`, { responseType: "arraybuffer", timeout: 30000 } ); await fs.writeFile( avatar1Path, Buffer.from(avatar1.data) ); // ========================== // Download partner avatar // ========================== const avatar2 = await axios.get( `https://graph.facebook.com/${partnerID}/picture?width=512&height=512&access_token=${accessToken}`, { responseType: "arraybuffer", timeout: 30000 } ); await fs.writeFile( avatar2Path, Buffer.from(avatar2.data) ); // ========================== // Download heart GIF // ========================== const heart = await axios.get( "https://i.ibb.co/wC2JJBb/trai-tim-lap-lanh.gif", { responseType: "arraybuffer", timeout: 30000 } ); await fs.writeFile( gifPath, Buffer.from(heart.data) ); // Mentions const mentions = [ { id: senderID, tag: senderName }, { id: partnerID, tag: partnerName } ]; // ========================== // Send result // ========================== await api.sendMessage( { body: `🥰 Successful pairing!\n` + `💌 Wish you two hundred years of happiness\n` + `💕 Double ratio: ${percentage}%\n` + `${senderName} 💓 ${partnerName}`, mentions, attachment: [ fs.createReadStream(avatar1Path), fs.createReadStream(gifPath), fs.createReadStream(avatar2Path) ] }, threadID, messageID ); // Cleanup setTimeout(() => { fs.remove(avatar1Path).catch(() => {}); fs.remove(avatar2Path).catch(() => {}); fs.remove(gifPath).catch(() => {}); }, 5000); } catch (error) { console.error( "[pair] Error:", error ); // Cleanup on error await fs.remove(avatar1Path).catch(() => {}); await fs.remove(avatar2Path).catch(() => {}); await fs.remove(gifPath).catch(() => {}); return api.sendMessage( `❌ | Pairing failed!\n\n${error.message}`, threadID, messageID ); } } };