const axios = require("axios"); const fs = require("fs-extra"); module.exports = { config: { name: "pr", countDown: 10, role: 0, shortDescription: { en: "Get to know your partner", }, longDescription: { en: "Know your destiny and know who you will complete your life with", }, category: "LOVE", guide: { en: "{pn}", }, }, onStart: async function ({ api, event, usersData }) { const { loadImage, createCanvas } = require("canvas"); const pathImg = __dirname + "/assets/background.png"; const pathAvt1 = __dirname + "/assets/any.png"; const pathAvt2 = __dirname + "/assets/avatar.png"; const id1 = event.senderID; let name1; try { name1 = await usersData.getName(id1); if (!name1) throw new Error("No name found"); } catch { const info = await api.getUserInfo(id1); name1 = info?.[id1]?.name || "Unknown"; } const threadInfo = await api.getThreadInfo(event.threadID); const all = threadInfo.userInfo; let gender1; for (let u of all) if (u.id == id1) gender1 = u.gender; const botID = api.getCurrentUserID(); let candidates = []; for (let u of all) { if (u.id !== id1 && u.id !== botID) { if (gender1 === "MALE" && u.gender === "FEMALE") candidates.push(u.id); else if (gender1 === "FEMALE" && u.gender === "MALE") candidates.push(u.id); else if (!gender1) candidates.push(u.id); } } if (candidates.length === 0) return api.sendMessage("❌ No suitable partner found.", event.threadID, event.messageID); const id2 = candidates[Math.floor(Math.random() * candidates.length)]; let name2; try { name2 = await usersData.getName(id2); if (!name2) throw new Error("No name found"); } catch { const info = await api.getUserInfo(id2); name2 = info?.[id2]?.name || "Unknown"; } // Pair percentage const rand1 = Math.floor(Math.random() * 100) + 1; const crazyValues = ["0", "-1", "99,99", "-99", "-100", "101", "0,01"]; const rand2 = crazyValues[Math.floor(Math.random() * crazyValues.length)]; const resultPool = [rand1, rand1, rand1, rand2, rand1, rand1, rand1, rand1, rand1]; const percentage = resultPool[Math.floor(Math.random() * resultPool.length)]; // Random note const loveNotes = [ "𝐘𝐨𝐮𝐫 𝐥𝐨𝐯𝐞 𝐬𝐭𝐨𝐫𝐲 𝐣𝐮𝐬𝐭 𝐛𝐞𝐠𝐚𝐧, 𝐚𝐧𝐝 𝐢𝐭'𝐬 𝐛𝐞𝐚𝐮𝐭𝐢𝐟𝐮𝐥. 🌹", "𝐃𝐞𝐬𝐭𝐢𝐧𝐲 𝐜𝐡𝐨𝐬𝐞 𝐲𝐨𝐮 𝐭𝐰𝐨 𝐭𝐨 𝐛𝐞 𝐭𝐨𝐠𝐞𝐭𝐡𝐞𝐫. 💞", "𝐘𝐨𝐮𝐫 𝐡𝐞𝐚𝐫𝐭𝐬 𝐟𝐨𝐮𝐧𝐝 𝐭𝐡𝐞𝐢𝐫 𝐦𝐢𝐫𝐫𝐨𝐫 𝐢𝐧 𝐞𝐚𝐜𝐡 𝐨𝐭𝐡𝐞𝐫. 💖", "𝐓𝐰𝐨 𝐬𝐨𝐮𝐥𝐬, 𝐨𝐧𝐞 𝐩𝐚𝐭𝐡. ✨", "𝐋𝐨𝐯𝐞 𝐟𝐢𝐧𝐝𝐬 𝐢𝐭𝐬 𝐰𝐚𝐲—𝐚𝐧𝐝 𝐢𝐭 𝐣𝐮𝐬𝐭 𝐝𝐢𝐝. 🔗", "𝐘𝐨𝐮𝐫 𝐥𝐨𝐯𝐞 𝐬𝐩𝐚𝐫𝐤𝐬 𝐥𝐢𝐤𝐞 𝐬𝐭𝐚𝐫𝐬 𝐢𝐧 𝐭𝐡𝐞 𝐧𝐢𝐠𝐡𝐭. 🌟", "𝐓𝐡𝐞 𝐮𝐧𝐢𝐯𝐞𝐫𝐬𝐞 𝐜𝐨𝐧𝐬𝐩𝐢𝐫𝐞𝐝 𝐭𝐨 𝐛𝐫𝐢𝐧𝐠 𝐲𝐨𝐮 𝐭𝐨𝐠𝐞𝐭𝐡𝐞𝐫. 🌌", "𝐋𝐨𝐯𝐞 𝐢𝐬 𝐧𝐨𝐭 𝐫𝐚𝐧𝐝𝐨𝐦—𝐢𝐭'𝐬 𝐲𝐨𝐮. 💘", "𝐓𝐰𝐨 𝐡𝐞𝐚𝐫𝐭𝐛𝐞𝐚𝐭𝐬, 𝐨𝐧𝐞 𝐫𝐡𝐲𝐭𝐡𝐦. 🫀", "𝐓𝐨𝐠𝐞𝐭𝐡𝐞𝐫, 𝐲𝐨𝐮 𝐦𝐚𝐤𝐞 𝐚 𝐦𝐚𝐠𝐢𝐜𝐚𝐥 𝐰𝐡𝐨𝐥𝐞. ✨" ]; const note = loveNotes[Math.floor(Math.random() * loveNotes.length)]; // Get avatars const avt1 = ( await axios.get( `https://graph.facebook.com/${id1}/picture?width=720&height=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`, { responseType: "arraybuffer" } ) ).data; fs.writeFileSync(pathAvt1, Buffer.from(avt1)); const avt2 = ( await axios.get( `https://graph.facebook.com/${id2}/picture?width=720&height=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`, { responseType: "arraybuffer" } ) ).data; fs.writeFileSync(pathAvt2, Buffer.from(avt2)); // Get background and load image to get size const bgBuffer = (await axios.get("https://i.ibb.co/RBRLmRt/Pics-Art-05-14-10-47-00.jpg", { responseType: "arraybuffer" })).data; fs.writeFileSync(pathImg, Buffer.from(bgBuffer)); const bgImage = await loadImage(pathImg); const canvas = createCanvas(bgImage.width, bgImage.height); const ctx = canvas.getContext("2d"); ctx.drawImage(bgImage, 0, 0, bgImage.width, bgImage.height); ctx.drawImage(await loadImage(pathAvt1), 111, 175, 330, 330); ctx.drawImage(await loadImage(pathAvt2), 1018, 173, 330, 330); // Write canvas to file AFTER drawing everything fs.writeFileSync(pathImg, canvas.toBuffer()); // Delete avatar images ASAP (not the background) fs.removeSync(pathAvt1); fs.removeSync(pathAvt2); // Prepare mention tags exactly matching the text in body const mention1 = { tag: `@${name1}`, id: id1 }; const mention2 = { tag: `@${name2}`, id: id2 }; const bodyText = `💞 𝐋𝐨𝐯𝐞 𝐏𝐚𝐢𝐫 𝐀𝐥𝐞𝐫𝐭 💞\n\n` + `💑 Congratulations ${mention1.tag} & ${mention2.tag}\n` + `💌 ${note}\n` + `🔗 Love Connection: ${percentage}% 💖`; // Send message with attachment return api.sendMessage( { body: bodyText, mentions: [mention1, mention2], attachment: fs.createReadStream(pathImg), }, event.threadID, () => { // Delete background image only after message sent fs.unlinkSync(pathImg); }, event.messageID ); }, };