glorfindel-SE-Userscripts/destroy-spammer/destroy-spammer.user.js

65 lines
2.9 KiB
JavaScript
Raw Normal View History

2017-07-26 19:04:19 +00:00
// ==UserScript==
// @name Destroy Spammer
// @namespace https://github.com/Glorfindel83/
// @description Adds a 'Destroy spammer' link for moderator on user profiles with only deleted posts.
// @author Glorfindel
2017-08-20 10:52:41 +00:00
// @version 0.3.1
2017-07-26 19:04:19 +00:00
// @match *://*.stackexchange.com/users/*
// @match *://*.stackoverflow.com/users/*
// @match *://*.superuser.com/users/*
// @match *://*.serverfault.com/users/*
// @match *://*.askubuntu.com/users/*
// @match *://*.stackapps.com/users/*
// @match *://*.mathoverflow.net/users/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Determine user ID
var userIDRegex = /\/users\/(\d+)\//g;
var userID = userIDRegex.exec(document.location) [1];
var moderatorLinkElement = $('a#user-moderator-link-' + userID);
if (moderatorLinkElement.length == 0) // Current user is not a moderator - no action possible
return;
// Check for (deleted) questions and answers
var questionsPanel = $('#user-panel-questions');
var undeletedQuestions = questionsPanel.find('td.question-hyperlink').not('.deleted-answer').length; // yes, deleted-answer. Don't ask why.
var deletedQuestions = questionsPanel.find('td.question-hyperlink.deleted-answer').length;
if (undeletedQuestions > 0) // User has content - use the dialog instead
return;
var answersPanel = $('#user-panel-answers');
var undeletedAnswers = answersPanel.find('td.answer-hyperlink').not('.deleted-answer').length;
var deletedAnswers = answersPanel.find('td.answer-hyperlink.deleted-answer').length;
if (undeletedAnswers > 0) // User has content - use the dialog instead
return;
if (deletedQuestions + deletedAnswers == 0) // User has no deleted content - use the dialog instead
return;
if (deletedQuestions + deletedAnswers > 4) // User has too much deleted content - use the dialog instead
return;
// Create Destroy link
var destroyLink = document.createElement('a');
destroyLink.appendChild(document.createTextNode('Destroy spammer'));
destroyLink.onclick = function () {
2017-07-27 13:50:06 +00:00
// Ask for confirmation
if (window.confirm('Are you sure?')) {
$.post({
2017-07-27 14:16:43 +00:00
url: 'https://' + document.location.host + '/admin/users/' + userID + '/destroy',
2017-07-27 13:50:06 +00:00
data: 'annotation=&deleteReasonDetails=&mod-actions=destroy&destroyReason=This+user+was+created+to+post+spam+or+nonsense+and+has+no+other+positive+participation&destroyReasonDetails=&fkey=' + window.localStorage["se:fkey"].split(",")[0],
success: function (data) {
// Reload page
window.location.reload();
},
error: function (jqXHR, textStatus, errorThrown) {
2017-08-20 10:52:41 +00:00
window.alert('An error occurred, please try again later.');
2017-07-27 13:50:06 +00:00
console.log('Error: ' + textStatus + ' ' + errorThrown);
2017-07-26 19:04:19 +00:00
}
2017-07-27 13:50:06 +00:00
});
}
2017-07-26 19:04:19 +00:00
};
// Add to document
moderatorLinkElement.after(destroyLink);
}) ();