User:Moussekateer/vector.js
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
//// START SPAMBOT KILLER /// // create mw API object for wiki queries var api = new mw.Api(); function deletePage(title) { // query to get deletetoken var promise = api.get({ action: 'query', prop: 'info', intoken: 'delete', titles: title }); promise.then(function (res) { console.log('LOG: deletetokenres=' + res); var pages = res.query.pages; for (var key in pages) { var deletetoken = pages[key].deletetoken; // use deletetoken in POST request to delete page api.get({ action: 'delete', title: title, reason: 'Spam', token: deletetoken }).then(function (res) { console.log('LOG: deleted=' + title); }); } }); } function killContributions(contribs) { console.log('LOG: usercontribs=' + contribs); for (var edit in contribs) { // only delete contribution if new page if ('new' in contribs[edit]) { console.log('LOG: usercontribtodelete=' + contribs[edit]); deletePage(contribs[edit].title); } } } function blockUser(user) { // query to get blocktoken var promise = api.get({ action: 'query', prop: 'info', intoken: 'block', titles: 'User:' + user }); promise.then(function (res) { console.log('LOG: blocktokenres=' + res); var pages = res.query.pages; for (key in pages){ // use blocktoken in POST request to block user var blocktoken = pages[key].blocktoken; console.log('LOG: blocktoken=' + blocktoken); api.get({ action: 'block', user: user, expiry: 'never', nocreate: '', autoblock: '', reason: 'Spamming links to external sites', token: blocktoken }).then(function (res) { console.log('LOG: blocked=' + user); }); } }); } function killUser(user) { // query user details var promise = api.get({ action: 'query', list: 'usercontribs', ucuser: user }); promise.then(function (res) { var userContributions = res.query.usercontribs; if (userContributions.length > 5){ alert('User:' + user + ' has more than 5 edits'); } else { // hit it doc blockUser(user); killContributions(userContributions); // vas gud alert('User:' + user + ' has been terminated. Good day'); } }); } function pootSecretSauce() { // insert blockdelete link in new page revision details $('.mw-usertoollinks a:last-child').after(" | <a href=# id='blockdelete'>blockdelete</a>"); $('a#blockdelete').click(function() { // grab username from revision details var user = $('.diff-ntitle .mw-userlink').text(); console.log('LOG: User=' + user); killUser(user); }); } $(pootSecretSauce); /// END SPAMBOT KILLER ///