ericek111

Facebook - Automatic group users banning script

Mar 16th, 2015
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var deleteAllGroupMembers = (function () {
  2.     var deleteAllGroupMembers = {};
  3.     // the facebook ids of the users that will not be removed.
  4.     // IMPORTANT: add your own facebook id here so that the script will not remove yourself!
  5.     var excludedFbIds = ['0123456789']; // make sure each id is a string!
  6.     var usersToDeleteQueue = [];
  7.     var scriptEnabled = false;
  8.     var processing = false;
  9.  
  10.     deleteAllGroupMembers.start = function() {
  11.         scriptEnabled = true;
  12.         deleteAll();
  13.     };
  14.     deleteAllGroupMembers.stop = function() {
  15.         scriptEnabled = false;
  16.     };
  17.  
  18.     function deleteAll() {
  19.         if (scriptEnabled) {
  20.             queueMembersToDelete();
  21.             processQueue();
  22.         }
  23.     }
  24.  
  25.     function queueMembersToDelete() {
  26.         var adminActions = document.getElementsByClassName('adminActions');
  27.         console.log(excludedFbIds);
  28.         for(var i=0; i<adminActions.length; i++) {
  29.             var gearWheelIconDiv = adminActions[i];
  30.             var hyperlinksInAdminDialog = gearWheelIconDiv.getElementsByTagName('a');
  31.             var fbMemberId = gearWheelIconDiv.parentNode.parentNode.id.replace('member_','');
  32.             var fbMemberName = getTextFromElement(gearWheelIconDiv.parentNode.parentNode.getElementsByClassName('fcb')[0]);
  33.  
  34.             if (excludedFbIds.indexOf(fbMemberId) != -1) {
  35.                 console.log("SKIPPING "+fbMemberName+' ('+fbMemberId+')');
  36.                 continue;
  37.             } else {
  38.                 usersToDeleteQueue.push({'memberId': fbMemberId, 'gearWheelIconDiv': gearWheelIconDiv});
  39.             }
  40.         }
  41.     }
  42.  
  43.     function processQueue() {
  44.         if (!scriptEnabled) {
  45.             return;
  46.         }
  47.         if (usersToDeleteQueue.length > 0) {
  48.             removeNext();
  49.  
  50.             setTimeout(function(){
  51.                 processQueue();
  52.             },1000);
  53.         } else {
  54.             getMore();
  55.         }
  56.     }
  57.  
  58.     function removeNext() {
  59.         if (!scriptEnabled) {
  60.             return;
  61.         }
  62.         if (usersToDeleteQueue.length > 0) {
  63.             var nextElement = usersToDeleteQueue.pop();
  64.             removeMember(nextElement.memberId, nextElement.gearWheelIconDiv);
  65.         }
  66.     }
  67.  
  68.     function removeMember(memberId, gearWheelIconDiv) {
  69.         if (processing) {
  70.             return;
  71.         }
  72.         var gearWheelHref = gearWheelIconDiv.getElementsByTagName('a')[0];
  73.         gearWheelHref.click();
  74.         processing = true;
  75.         setTimeout(function(){
  76.             var popupRef = gearWheelHref.id;
  77.             var popupDiv = getElementByAttribute('data-ownerid',popupRef);
  78.             var popupLinks = popupDiv.getElementsByTagName('a');
  79.             for(var j=0; j<popupLinks.length; j++) {
  80.                 if (popupLinks[j].getAttribute('href').indexOf('remove.php') !== -1) {
  81.                     // this is the remove link
  82.                     popupLinks[j].click();
  83.                     setTimeout(function(){
  84.                         var confirmButton = document.getElementsByClassName('layerConfirm uiOverlayButton selected')[0];
  85.                         var banUser = document.getElementsByClassName('uiInputLabelInput uiInputLabelCheckbox')[0];
  86.                         var errorDialog = getElementByAttribute('data-reactid','.4.0');
  87.                         if (confirmButton != null) {
  88.                             if (canClick(confirmButton)) {
  89.                                 if(canClick(banUser)) {
  90.                                     banUser.checked = true;
  91.                                     console.log("Banning user!");
  92.                                 }
  93.                                 confirmButton.click();
  94.                             } else {
  95.                                 console.log('This should not happen memberid: '+memberId);
  96.                                 5/0;
  97.                                 console.log(gearWheelIconDiv);
  98.                             }
  99.                         }
  100.                         if (errorDialog != null) {
  101.                             console.log("Error while removing member "+memberId);
  102.                             errorDialog.getElementsByClassName('selected  layerCancel autofocus')[0].click();
  103.                         }
  104.                         processing = false;
  105.                     },700);
  106.                     continue;
  107.                 }
  108.             }
  109.         },500);
  110.     }
  111.  
  112.     function canClick(el) {
  113.         return (typeof el != 'undefined') && (typeof el.click != 'undefined');
  114.     }
  115.  
  116.     function getMore() {
  117.         processing = true;
  118.         more = document.getElementsByClassName("pam uiBoxLightblue  uiMorePagerPrimary");
  119.         if (typeof more != 'undefined' && canClick(more[0])) {
  120.             more[0].click();
  121.             setTimeout(function(){
  122.                 deleteAll();
  123.                 processing = false;
  124.            }, 2000);
  125.         } else {
  126.             deleteAllGroupMembers.stop();
  127.         }
  128.     }
  129.  
  130.     function getTextFromElement(element) {
  131.         var text = element.textContent;
  132.         return text;
  133.     }
  134.  
  135.     function getElementByAttribute(attr, value, root) {
  136.         root = root || document.body;
  137.         if(root.hasAttribute(attr) && root.getAttribute(attr) == value) {
  138.             return root;
  139.         }
  140.         var children = root.children,
  141.             element;
  142.         for(var i = children.length; i--; ) {
  143.             element = getElementByAttribute(attr, value, children[i]);
  144.             if(element) {
  145.                 return element;
  146.             }
  147.         }
  148.         return null;
  149.     }
  150.     return deleteAllGroupMembers;
  151. })();
  152. deleteAllGroupMembers.start();
  153.  
  154. //to stop: deleteAllGroupMembers.stop();
Advertisement
Add Comment
Please, Sign In to add comment