// code from goatstore // api: https://store.agi.bd module.exports.config = { name: "mystery", version: "10.0.0", author: "Zihad", role: 0, category: "fun", guide: "{pn}" }; const axios = require("axios"); const mysteries = [ ["বারমুডা ট্রায়াঙ্গেল", "Bermuda Triangle"], ["ডায়াটলভ পাসের ভয়ংকর রহস্য", "Dyatlov Pass incident"], ["মেরি সেলেস্ট জাহাজ", "Mary Celeste"], ["সোমারটন ম্যান", "Somerton Man"], ["রোয়ানোকে হারিয়ে যাওয়া কলোনি", "Roanoke Colony"], ["ফ্লাইট ১৯", "Flight 19"], ["ইউএসএস সাইক্লপস", "USS Cyclops"], ["ফ্র্যাঙ্কলিন অভিযান", "Franklin's lost expedition"], ["রোজওয়েল ঘটনা", "Roswell incident"], ["গ্রিন বুটস রহস্য", "Green Boots"], ["জ্যাক দ্য রিপার", "Jack the Ripper"], ["বেল উইচ রহস্য", "Bell Witch"], ["ফ্লাইং ডাচম্যান", "Flying Dutchman"], ["অ্যামিটিভিল রহস্য", "Amityville horror"], ["আয়রন মাস্কের মানুষ", "Man in the Iron Mask"], ["মথম্যান", "Mothman"], ["লক নেস মনস্টার", "Loch Ness Monster"], ["স্কাঙ্ক এপ", "Skunk Ape"], ["হেসডালেনের অদ্ভুত আলো", "Hessdalen lights"], ["টাওস হাম", "Taos Hum"], ["ইসডাল নারী", "Isdal Woman"], ["ফ্ল্যানান দ্বীপের বাতিঘর", "Flannan Isles Lighthouse"], ["ব্ল্যাক ডাহলিয়া", "Black Dahlia"], ["জোডিয়াক কিলার", "Zodiac Killer"], ["ভোইনিখ ম্যানুস্ক্রিপ্ট", "Voynich manuscript"], ["তামাম শুদ রহস্য", "Tamam Shud"], ["ওয়াও! সিগন্যাল", "Wow! signal"], ["কেলি–হপকিন্সভিল ঘটনা", "Kelly–Hopkinsville encounter"], ["অরোরা রহস্যময় আকাশ ঘটনা", "Aurora UFO incident"], ["ড্যান্সিং প্লেগ", "Dancing plague of 1518"], ["প্যাটোমস্কি ক্রেটার", "Patomsky crater"], ["বাবুশকা লেডি", "Babushka Lady"], ["ম্যাক্স হেডরুম ঘটনা", "Max Headroom signal hijacking"], ["পলক যমজ রহস্য", "Pollock twins"], ["ডেভিলস ফুটপ্রিন্টস", "Devil's Footprints"], ["ভ্যালি অব দ্য হেডলেস মেন", "Nahanni Valley"], ["হারিয়ে যাওয়া জাহাজের রহস্য", "Ghost ship"], ["রহস্যময় সমুদ্রের আলো", "Marfa lights"], ["মৃত মানুষের শেষ পরিচয় রহস্য", "Unidentified body"], ["অমীমাংসিত নিখোঁজ মানুষের ঘটনা", "Missing person cases"] ]; async function wikiSearch(apiURL, query) { const res = await axios.get(apiURL, { params: { action: "query", list: "search", srsearch: query, srlimit: 5, format: "json", formatversion: 2 }, timeout: 15000, headers: { "User-Agent": "Zihad-Mystery-Bot/10.0" } }); return res.data?.query?.search || []; } async function wikiParse(apiURL, title) { const res = await axios.get(apiURL, { params: { action: "parse", page: title, prop: "text", redirects: 1, disabletoc: 1, format: "json", formatversion: 2 }, timeout: 25000, headers: { "User-Agent": "Zihad-Mystery-Bot/10.0" } }); return res.data?.parse?.text || ""; } function cleanHTML(html) { return html .replace(//gi, "") .replace(//gi, "") .replace(//gi, "") .replace(//gi, "") .replace(//gi, "") .replace(//gi, "") .replace(/<[^>]+>/g, " ") .replace(/ /gi, " ") .replace(/&/gi, "&") .replace(/"/gi, '"') .replace(/'/gi, "'") .replace(/'/gi, "'") .replace(/[/gi, "[") .replace(/]/gi, "]") .replace(/\s+/g, " ") .trim(); } function removeJunk(text) { const junk = [ "Jump to content", "Main menu", "Personal tools", "Search", "Navigation menu", "Contents" ]; for (const word of junk) { text = text.replace(new RegExp(word, "gi"), ""); } return text.replace(/\s+/g, " ").trim(); } module.exports.onStart = async function ({ api, event }) { let msg = "😨 রহস্য কাহিনি\n\n"; for (let i = 0; i < mysteries.length; i++) { msg += `${i + 1}. ${mysteries[i][0]}\n`; } msg += "\n👉 একটি নম্বর রিপ্লাই করুন।"; const sent = await api.sendMessage(msg, event.threadID); global.GoatBot.onReply.set(sent.messageID, { commandName: "mystery", author: event.senderID }); }; module.exports.onReply = async function ({ api, event }) { const number = parseInt(String(event.body || "").trim()); if ( isNaN(number) || number < 1 || number > mysteries.length ) { return; } const [banglaName, englishName] = mysteries[number - 1]; let loading; try { loading = await api.sendMessage( `😨 ${banglaName}\n\n🔎 রহস্যের কাহিনি খোঁজা হচ্ছে...\n⏳ একটু অপেক্ষা করুন...`, event.threadID ); const bnAPI = "https://bn.wikipedia.org/w/api.php"; const enAPI = "https://en.wikipedia.org/w/api.php"; let pageTitle = null; let selectedAPI = null; // প্রথমে বাংলা তথ্য খোঁজা let result = await wikiSearch(bnAPI, banglaName); if (result.length > 0) { pageTitle = result[0].title; selectedAPI = bnAPI; } // বাংলা তথ্য না থাকলে ইংরেজি তথ্য if (!pageTitle) { result = await wikiSearch(enAPI, englishName); if (result.length > 0) { pageTitle = result[0].title; selectedAPI = enAPI; } } if (!pageTitle) { if (loading) { try { await api.unsendMessage(loading.messageID); } catch (e) {} } return api.sendMessage( `❌ "${banglaName}" এর বিস্তারিত তথ্য পাওয়া যায়নি।`, event.threadID ); } const html = await wikiParse(selectedAPI, pageTitle); let story = cleanHTML(html); story = removeJunk(story); if (!story || story.length < 300) { throw new Error("Story content too short"); } if (loading) { try { await api.unsendMessage(loading.messageID); } catch (e) {} } /* * গল্পকে Messenger-এর ছোট ছোট অংশে ভাগ করা হচ্ছে। * তাই বড় কাহিনিও একসাথে পাঠিয়ে message limit-এ আটকে যাবে না। */ const MAX = 3000; const parts = []; for (let i = 0; i < story.length; i += MAX) { parts.push(story.substring(i, i + MAX)); } // প্রথম মেসেজ await api.sendMessage( `😨 ${banglaName}\n\n━━━━━━━━━━━━━━\n📖 রহস্য কাহিনি\n━━━━━━━━━━━━━━\n\n${parts[0]}`, event.threadID ); // বাকি কাহিনি for (let i = 1; i < parts.length; i++) { await new Promise(resolve => setTimeout(resolve, 700)); await api.sendMessage( parts[i], event.threadID ); } // শেষের অংশ await new Promise(resolve => setTimeout(resolve, 500)); await api.sendMessage( `\n🔚 কাহিনি শেষ\n\n🔎 রহস্যটি এখনও পুরোপুরি সমাধান হয়েছে কি না, তা নিয়ে বিভিন্ন মত রয়েছে।\n\n✦ ZIHAD MYSTERY ✦`, event.threadID ); } catch (error) { console.error( "MYSTERY ERROR:", error?.response?.data || error?.message || error ); if (loading) { try { await api.unsendMessage(loading.messageID); } catch (e) {} } await api.sendMessage( `❌ এই রহস্যের কাহিনি এখন আনা যাচ্ছে না।\n\n🔄 আবার একই নম্বর রিপ্লাই করে চেষ্টা করুন।`, event.threadID ); } };