MediaWiki:Common.js: Perbedaan antara revisi

Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 1.165: Baris 1.165:


/* ==========================================================
/* ==========================================================
   🔍 MIPPEDIA SYSTEM - ULTIMATE BOT ENGINE (RUDOL)
   🛡️ MIPPEDIA PATROLI - MULTI-TASKING ENGINE
  Fitur: Auto-Category, Auto-Typo, & Smart Wikilinks
  Trigger: postEdit | Namespace: 0 | User: Mippedia Patroli
   ========================================================== */
   ========================================================== */
(function() {
mw.hook('postEdit').add(function() {
    mw.hook('postEdit').add(function() {
    // 1. FILTER KETAT: Cuma Namespace Utama & Cuma Akun 'Mippedia Patroli'
        if (mw.config.get('wgNamespaceNumber') !== 0) return;
    if (mw.config.get('wgNamespaceNumber') !== 0 || mw.config.get('wgUserName') !== 'Mippedia Patroli') return;


        var api = new mw.Api();
    var api = new mw.Api();
        var pageTitle = mw.config.get('wgPageName');
    var pageTitle = mw.config.get('wgPageName');
       
        // DATA BOT DARI SCREENSHOT
        var botUser = 'Rudol@Rudol';
        var botPass = '3prf56v7uuic2hn0b7jh3cvbkdtn6k1g';  


        api.get({
    api.get({
            action: 'query',
        action: 'query',
            titles: pageTitle,
        titles: pageTitle,
            prop: 'categories|revisions',
        prop: 'categories|revisions',
            rvprop: 'content',
        rvprop: 'content',
            clshow: '!hidden'
        clshow: '!hidden'
        }).done(function(data) {
    }).done(function(data) {
            var page = data.query.pages[Object.keys(data.query.pages)[0]];
        var page = data.query.pages[Object.keys(data.query.pages)[0]];
            var content = page.revisions[0]['*'];
        var rawContent = page.revisions[0]['*'];
        var newContent = rawContent;
        var summary = [];


            if ((!page.categories || page.categories.length === 0) && !/\{\{Tanpa kategori/i.test(content)) {
        // --- FITUR A: AUTO-TYPO FIXER (Brain Engine) ---
               
        var typoMap = {
                // LANGKAH 1: Login dapet Token
            'msik': 'Musik',
                api.login(botUser, botPass).done(function() {
            'mrupakan': 'merupakan',
                   
            'adlah': 'adalah',
                    // LANGKAH 2: Ambil CSRF Token khusus Bot
            'indnesia': 'Indonesia',
                    api.get({ action: 'query', meta: 'tokens' }).done(function(tData) {
            'ensiklopedi': 'ensiklopedia'
                        var botToken = tData.query.tokens.csrftoken;
        };
        $.each(typoMap, function(salah, bener) {
            var regex = new RegExp('\\b' + salah + '\\b', 'gi');
            if (regex.test(newContent)) {
                newContent = newContent.replace(regex, bener);
                if (summary.indexOf('Perbaikan typo') === -1) summary.push('Perbaikan typo');
            }
        });


                        // LANGKAH 3: Eksekusi Suntingan
        // --- FITUR B: SMART WIKILINK (Auto [[ ]]) ---
                        api.post({
        // Logika: Cek kata kunci krusial, jika judul artikel ada di Mippedia, bungkus dengan [[ ]]
                            action: 'edit',
        var keywords = ['Musik', 'Indonesia', 'Seni', 'Budaya', 'Sejarah'];
                            title: pageTitle,
        $.each(keywords, function(i, word) {
                            text: '{{Tanpa kategori|date=April 2026}}\n' + content,
            var linkRegex = new RegExp('(?<!\\[\\[|\\|)' + word + '(?!\\||\\]\\])', 'g');
                            summary: 'Mippedia System: Menandai artikel tanpa kategori',
            if (linkRegex.test(newContent)) {
                            bot: true,
                newContent = newContent.replace(linkRegex, '[[' + word + ']]');
                            markasbot: true,
                 if (summary.indexOf('Auto-link') === -1) summary.push('Auto-link');
                            token: botToken
                        }).done(function() {
                            console.log('Rudol berhasil nyatpam!');
                        });
                    });
                 });
             }
             }
         });
         });
        // Fitur B2: Hapus link merah (Link ke halaman yg gak ada)
        // (Opsional: Bagian ini berat jika scan semua, jadi kita batasi hanya yg jelas salah)
        // --- FITUR C: CATEGORY WATCHDOG ---
        if ((!page.categories || page.categories.length === 0) && !/\{\{Tanpa kategori/i.test(newContent)) {
            newContent = '{{Tanpa kategori|date=April 2026}}\n' + newContent;
            summary.push('Tag tanpa kategori');
        }
        // --- EKSEKUSI: Cuma kirim jika ada perubahan ---
        if (newContent !== rawContent) {
            api.postWithToken('edit', {
                action: 'edit',
                title: pageTitle,
                text: newContent,
                summary: 'Patroli Otomatis: ' + summary.join(', '),
                bot: true,
                markasbot: true
            }).done(function() {
                console.log('Mippedia Patroli: Tugas Selesai.');
            });
        }
     });
     });
})();
});