// 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: "pair6", version: "3.1.0", author: "MrTomXxX → Goat Bot V2 Fixed", countDown: 40, role: 0, shortDescription: { en: "Random love pairing" }, longDescription: { en: "Randomly pairs you with another member of the group." }, category: "love", guide: { en: "{pn}" } }, onStart: async function ({ api, event }) { const { threadID, messageID, senderID } = event; const cacheDir = path.join(__dirname, "cache"); await fs.ensureDir(cacheDir); const uid = `${Date.now()}_${Math.floor(Math.random() * 99999)}`; const avatar1 = path.join(cacheDir, `pair_${uid}_1.jpg`); const avatar2 = path.join(cacheDir, `pair_${uid}_2.jpg`); const heart = path.join(cacheDir, `pair_${uid}_heart.gif`); try { // ========================================== // GET GROUP MEMBERS // ========================================== const threadInfo = await api.getThreadInfo(threadID); const members = Array.isArray(threadInfo?.participantIDs) ? threadInfo.participantIDs : []; if (!members.length) { return api.sendMessage( "❌ Group member পাওয়া যায়নি।", threadID, messageID ); } // ========================================== // BOT ID // ========================================== let botID = null; try { if (typeof api.getCurrentUserID === "function") { botID = api.getCurrentUserID(); } } catch (e) { console.log("Bot ID error:", e.message); } // ========================================== // FILTER MEMBERS // ========================================== const candidates = members.filter(id => { const currentID = String(id); return ( currentID !== String(senderID) && currentID !== String(botID) ); }); if (!candidates.length) { return api.sendMessage( "❌ Pair করার মতো অন্য কোনো member পাওয়া যায়নি।", threadID, messageID ); } // ========================================== // RANDOM PARTNER // ========================================== const partnerID = candidates[ Math.floor(Math.random() * candidates.length) ]; // ========================================== // GET USER NAME // ========================================== let senderName = "You"; let partnerName = "Unknown"; try { const senderInfo = await api.getUserInfo(senderID); senderName = senderInfo?.[senderID]?.name || "You"; } catch (e) { console.log( "Sender info error:", e.message ); } try { const partnerInfo = await api.getUserInfo(partnerID); partnerName = partnerInfo?.[partnerID]?.name || "Unknown"; } catch (e) { console.log( "Partner info error:", e.message ); } // ========================================== // LOVE PERCENTAGE // ========================================== const percentage = Math.floor(Math.random() * 101); // ========================================== // MENTIONS // ========================================== const mentions = [ { tag: senderName, id: senderID }, { tag: partnerName, id: partnerID } ]; // ========================================== // DOWNLOAD AVATAR // ========================================== const getAvatar = async (id, output) => { const urls = [ `https://graph.facebook.com/${id}/picture?width=512&height=512`, `https://graph.facebook.com/${id}/picture?type=large` ]; for (const url of urls) { try { const response = await axios.get(url, { responseType: "arraybuffer", timeout: 15000, maxRedirects: 10, headers: { "User-Agent": "Mozilla/5.0 (Linux; Android 10)" } }); if ( response.data && response.data.length > 1000 ) { await fs.writeFile( output, Buffer.from(response.data) ); return true; } } catch (error) { console.log( `Avatar failed [${id}]:`, error.message ); } } return false; }; // ========================================== // DOWNLOAD BOTH AVATARS // ========================================== const avatar1OK = await getAvatar( senderID, avatar1 ); const avatar2OK = await getAvatar( partnerID, avatar2 ); // ========================================== // DOWNLOAD HEART GIF // ========================================== let heartOK = false; try { const heartURL = "https://i.ibb.co/wC2JJBb/trai-tim-lap-lanh.gif"; const response = await axios.get( heartURL, { responseType: "arraybuffer", timeout: 15000, headers: { "User-Agent": "Mozilla/5.0" } } ); if ( response.data && response.data.length > 1000 ) { await fs.writeFile( heart, Buffer.from(response.data) ); heartOK = true; } } catch (error) { console.log( "Heart GIF error:", error.message ); } // ========================================== // CREATE ATTACHMENTS // ========================================== const attachments = []; if ( avatar1OK && await fs.pathExists(avatar1) ) { attachments.push( fs.createReadStream(avatar1) ); } if ( avatar2OK && await fs.pathExists(avatar2) ) { attachments.push( fs.createReadStream(avatar2) ); } if ( heartOK && await fs.pathExists(heart) ) { attachments.push( fs.createReadStream(heart) ); } // ========================================== // RESULT MESSAGE // ========================================== const message = `💞 𝗟𝗢𝗩𝗘 𝗣𝗔𝗜𝗥 💞\n\n` + `👤 𝗣𝗲𝗿𝘀𝗼𝗻 𝟭: ${senderName}\n` + `❤️ 𝗣𝗮𝗶𝗿: ${partnerName}\n\n` + `💘 𝗟𝗼𝘃𝗲 𝗣𝗲𝗿𝗰𝗲𝗻𝘁𝗮𝗴𝗲: ${percentage}%\n\n` + `💗 ${percentage >= 80 ? "Perfect Match! 💍" : percentage >= 60 ? "Nice Couple! 🥰" : percentage >= 40 ? "Maybe Something Special! 💕" : "Just Friends! 😅"}`; // ========================================== // SEND RESULT // ========================================== if (attachments.length > 0) { await api.sendMessage( { body: message, attachment: attachments, mentions }, threadID, messageID ); } else { await api.sendMessage( { body: message, mentions }, threadID, messageID ); } } catch (error) { console.error( "[pair6 ERROR]", error ); await api.sendMessage( "❌ Pair command চালাতে সমস্যা হয়েছে!\n\n🔄 আবার চেষ্টা করুন।", threadID, messageID ); } finally { // ========================================== // CLEAN CACHE FILES // ========================================== for (const file of [ avatar1, avatar2, heart ]) { try { if (await fs.pathExists(file)) { await fs.remove(file); } } catch (error) { console.log( "Cache cleanup error:", error.message ); } } } } };