تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

كود بوت بحث في مواقع

javascriptv1MITنُشر ١٩ أغسطس ٢٠٢٦· ♥ 0 · ⬇ 1 · 💬 0

كود بوت بحث في مواقع لحد ما تجيب بحث بتاعك

const axios = require('axios');

// ═══════════════════════════════════════════
// 📖 كِتَابُ ڤَانِيتَاسْ - Vanitas no Carte Style
// ═══════════════════════════════════════════

const VANITAS_BANNER = `
╔══════════════════════════════════════════╗
║  📖 كِتَابُ ڤَانِيتَاسْ  ║  Vanitas Book  ║
╚══════════════════════════════════════════╝`;

const vanitasQuotes = [
    "🌙 *\"القمر يشرق على الحقيقة المخفية...\"*",
    "⚗️ *\"أنا طبيب مصاصي الدماء، وأنت تبحث عن العلاج...\"*",
    "📖 *\"في صفحات الكتاب المقدس، تكمن الإجابات...\"*",
    "🦇 *\"الظلال تحتضن الأسرار، وسأكشفها لك...\"*",
    "🔮 *\"مصيرك مكتوب بين النجوم، وبحثك يبدأ الآن...\"*",
    "🌹 *\"كل سر له ثمنه، وكل بحث له نهايته...\"*",
    "⚰️ *\"من الظلام نأتي، وإليه نعود بالحقائق...\"*"
];

const getRandomQuote = () => vanitasQuotes[Math.floor(Math.random() * vanitasQuotes.length)];

// ─── Search Engines ───
const searchWikipedia = async (query, lang = 'ar') => {
    try {
        const res = await axios.get(
            `https://${lang}.wikipedia.org/api/rest_v1/page/summary/${encodeURIComponent(query)}`,
            { timeout: 8000 }
        );
        if (res.data.extract) return res.data;
        throw new Error('No extract');
    } catch {
        try {
            const search = await axios.get(
                `https://${lang}.wikipedia.org/w/api.php?action=query&list=search&srsearch=${encodeURIComponent(query)}&format=json&origin=*`,
                { timeout: 8000 }
            );
            if (search.data.query?.search?.length > 0) {
                const title = search.data.query.search[0].title;
                const sum = await axios.get(
                    `https://${lang}.wikipedia.org/api/rest_v1/page/summary/${encodeURIComponent(title)}`,
                    { timeout: 8000 }
                );
                return sum.data;
            }
        } catch { return null; }
    }
};

const searchDuckDuckGo = async (query) => {
    try {
        const res = await axios.get(
            `https://api.duckduckgo.com/?q=${encodeURIComponent(query)}&format=json&no_html=1&skip_disambig=1`,
            { headers: { 'Accept': 'application/json' }, timeout: 10000 }
        );
        return res.data;
    } catch { return null; }
};

// ─── Main Handler ───
const handler = async (sock, msg, text, sender) => {
    const args = text.slice(text.indexOf(' ') + 1).trim();

    // ═══ No Query → Show Menu ═══
    if (!args || args === text) {
        const buttons = [
            { 
                name: "single_select", 
                buttonParamsJson: JSON.stringify({
                    title: "📖 اختر موضوعاً من كتاب المصائر",
                    sections: [{
                        title: "✨ مواضيع مقترحة",
                        rows: [
                            { title: "🤖 الذكاء الاصطناعي", description: "آخر تطورات الذكاء الاصطناعي", id: "suggest_ai" },
                            { title: "🌌 الفضاء", description: "اكتشافات فضائية حديثة", id: "suggest_space" },
                            { title: "📜 التاريخ", description: "أحداث تاريخية مهمة", id: "suggest_history" },
                            { title: "💻 التكنولوجيا", description: "أحدث التقنيات", id: "suggest_tech" },
                            { title: "⚗️ الطب", description: "اكتشافات طبية", id: "suggest_medicine" }
                        ]
                    }]
                })
            },
            {
                name: "quick_reply",
                buttonParamsJson: JSON.stringify({ display_text: "🔍 مثال: الذكاء الاصطناعي", id: "search_example_ai" })
            },
            {
                name: "quick_reply",
                buttonParamsJson: JSON.stringify({ display_text: "🌙 مثال: القمر", id: "search_example_moon" })
            }
        ];

        await sock.sendMessage(sender, {
            text: `${VANITAS_BANNER}\n\n${getRandomQuote()}\n\n*⚗️ مرحباً بك في أرشيف الظلال...*\n\nأنا *ڤَانِيتَاسْ*، حامي كتاب المصائر، وطبيب الأسرار المنسية...\n\n🌙 *للبدء في رحلة البحث، أرسل لي استعلامك بعد الأمر:*\n> *.بحث [موضوع البحث]*\n\n*📖 أمثلة:*\n> *.بحث الذكاء الاصطناعي*\n> *.بحث تاريخ مصر القديمة*\n> *.بحث أحدث التقنيات*\n\n🔮 *أو اختر من قائمة المصائر المقترحة...*`,
            footer: "🦇 Vanitas no Carte | Sovereign X",
            buttons: buttons,
            headerType: 1
        });
        return;
    }

    // ═══ Loading ═══
    const loadingMsg = await sock.sendMessage(sender, {
        text: `🌙 *جاري البحث في أرشيف الظلال...*\n\n⚗️ يبحث ڤَانِيتَاسْ عن: *"${args}"*\n\n📖 *\"الحقيقة تكمن بين صفحات الكتاب...\"*\n\n⏳ *الرجاء الانتظار قليلاً...*`
    });

    try {
        // Parallel Search
        const [wikiResult, ddgResult] = await Promise.all([
            searchWikipedia(args, 'ar').catch(() => searchWikipedia(args, 'en')),
            searchDuckDuckGo(args)
        ]);

        let resultText = `${VANITAS_BANNER}\n\n`;
        resultText += `${getRandomQuote()}\n\n`;
        resultText += `🔮 *الاستعلام:* _${args}_\n`;
        resultText += `🌙 *التاريخ:* ${new Date().toLocaleString('ar-EG')}\n`;
        resultText += `⚗️ *الباحث:* ڤَانِيتَاسْ | *Vanitas*\n`;
        resultText += `🦇 *المصدر:* كتاب الظلال\n`;
        resultText += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n`;

        let hasResults = false;

        // Wikipedia
        if (wikiResult?.extract) {
            hasResults = true;
            resultText += `📖 *الملخص من أرشيف المعرفة (Wikipedia):*\n\n`;
            resultText += `> ${wikiResult.extract}\n\n`;
            if (wikiResult.content_urls?.desktop?.page) {
                resultText += `🔗 *رابط المصدر:* ${wikiResult.content_urls.desktop.page}\n\n`;
            }
        }

        // DuckDuckGo
        if (ddgResult?.AbstractText) {
            hasResults = true;
            resultText += `🦇 *من ظلال الإنترنت (DuckDuckGo):*\n\n`;
            resultText += `> ${ddgResult.AbstractText}\n\n`;
            if (ddgResult.AbstractURL) {
                resultText += `🔗 *رابط المصدر:* ${ddgResult.AbstractURL}\n\n`;
            }
        }

        // Related Topics
        if (ddgResult?.RelatedTopics?.length > 0) {
            hasResults = true;
            resultText += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n✨ *مواضيع ذات صلة من كتاب المصائر:*\n\n`;
            const topics = ddgResult.RelatedTopics.slice(0, 5);
            let i = 0;
            topics.forEach((t) => {
                if (t.Text && i < 5) {
                    resultText += `${['🌙','⚗️','📖','🔮','🌹'][i]} ${t.Text}\n`;
                    i++;
                }
            });
            resultText += `\n`;
        }

        if (!hasResults) {
            resultText += `⚰️ *\"لم أجد شيئاً في صفحات الكتاب...\"*\n\n`;
            resultText += `❌ *لم يتم العثور على نتائج واضحة لـ:* _${args}_\n\n`;
            resultText += `💡 *حاول البحث بكلمات مختلفة أو أكثر تحديداً...*\n\n`;
        }

        resultText += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n`;
        resultText += `🌹 *\"${hasResults ? 'كل سر له ثمنه، وكل بحث له نهايته...' : 'حتى الظلام يخفي أسراره عن البعض...'}\"*\n`;
        resultText += `📖 *- ڤَانِيتَاسْ*`;

        // ═══ Interactive Buttons ═══
        const buttons = [
            { name: "quick_reply", buttonParamsJson: JSON.stringify({ display_text: "🔍 بحث جديد", id: "search_new" }) },
            { name: "quick_reply", buttonParamsJson: JSON.stringify({ display_text: "📖 تفاصيل أكثر", id: "search_more" }) },
            { name: "cta_url", buttonParamsJson: JSON.stringify({ display_text: "🌐 البحث في Google", url: `https://www.google.com/search?q=${encodeURIComponent(args)}` }) },
            { name: "cta_url", buttonParamsJson: JSON.stringify({ display_text: "📚 Wikipedia", url: `https://ar.wikipedia.org/wiki/${encodeURIComponent(args)}` }) }
        ];

        await sock.sendMessage(sender, {
            text: resultText,
            footer: "🦇 Vanitas no Carte | Sovereign X",
            buttons: buttons,
            headerType: 1
        });

        await sock.sendMessage(sender, { delete: loadingMsg.key });

    } catch (error) {
        console.error('Vanitas Search Error:', error);
        await sock.sendMessage(sender, {
            text: `${VANITAS_BANNER}\n\n${getRandomQuote()}\n\n🌙 *\"حتى الظلال تواجه عوائقها...\"*\n\n❌ *حدث خطأ في أرشيف الظلال:*\n\`\`\`${error.message}\`\`\`\n\n⚗️ *حاول مرة أخرى لاحقاً...*\n\n📖 *\"المصير لا يستسلم بسهولة...\"*`,
            footer: "🦇 Vanitas no Carte | Sovereign X"
        });
    }
};

// ═══════════════════════════════════════════
// Button Handler
// ═══════════════════════════════════════════
const buttonHandler = async (sock, msg, buttonId, sender) => {
    const map = {
        'search_new': async () => {
            await sock.sendMessage(sender, {
                text: `🌙 *\"افتح صفحة جديدة من الكتاب...\"*\n\nأرسل لي استعلامك الآن:\n> *.بحث [موضوعك]*\n\n📖 *مثال:*\n> *.بحث تاريخ الأندلس*`,
                footer: "🦇 Vanitas no Carte"
            });
        },
        'search_more': async () => {
            await sock.sendMessage(sender, {
                text: `📖 *\"التفاصيل تكمن في أعماق الأرشيف...\"*\n\nللحصول على تفاصيل أكثر:\n\n1️⃣ زيارة الروابط المرفقة\n2️⃣ البحث في Google عبر الزر المتاح\n3️⃣ طلب ملخص موسع بـ *.بحث [الموضوع]*\n\n🔮 *\"العلم نور في ظلمة الجهل...\"*`,
                footer: "🦇 Vanitas no Carte"
            });
        },
        'search_example_ai': async () => await handler(sock, msg, '.بحث الذكاء الاصطناعي', sender),
        'search_example_moon': async () => await handler(sock, msg, '.بحث القمر', sender),
        'suggest_ai': async () => await handler(sock, msg, '.بحث الذكاء الاصطناعي', sender),
        'suggest_space': async () => await handler(sock, msg, '.بحث الفضاء', sender),
        'suggest_history': async () => await handler(sock, msg, '.بحث الحرب العالمية الثانية', sender),
        'suggest_tech': async () => await handler(sock, msg, '.بحث أحدث التقنيات 2026', sender),
        'suggest_medicine': async () => await handler(sock, msg, '.بحث الطب التجددي', sender)
    };

    if (map[buttonId]) await map[buttonId]();
};

module.exports = {
    name: 'بحث',
    command: ['.بحث', '.search', '.فانيتاس', '.vanitas', '.كتاب'],
    description: 'البحث في الإنترنت بأسلوب Vanitas no Carte',
    category: 'search',
    handler,
    buttonHandler
};

التعليقات (0)

سجّل الدخول للتعليق.