-
-
Save michaelv/11145168 to your computer and use it in GitHub Desktop.
| var deleteAllGroupMembers = (function () { | |
| var deleteAllGroupMembers = {}; | |
| // the facebook ids of the users that will not be removed. | |
| // IMPORTANT: add your own facebook id here so that the script will not remove yourself! | |
| var excludedFbIds = ['1234','11223344']; // make sure each id is a string! | |
| var usersToDeleteQueue = []; | |
| var scriptEnabled = false; | |
| var processing = false; | |
| deleteAllGroupMembers.start = function() { | |
| scriptEnabled = true; | |
| deleteAll(); | |
| }; | |
| deleteAllGroupMembers.stop = function() { | |
| scriptEnabled = false; | |
| }; | |
| function deleteAll() { | |
| if (scriptEnabled) { | |
| queueMembersToDelete(); | |
| processQueue(); | |
| } | |
| } | |
| function queueMembersToDelete() { | |
| var adminActions = document.getElementsByClassName('adminActions'); | |
| console.log(excludedFbIds); | |
| for(var i=0; i<adminActions.length; i++) { | |
| var gearWheelIconDiv = adminActions[i]; | |
| var hyperlinksInAdminDialog = gearWheelIconDiv.getElementsByTagName('a'); | |
| var fbMemberId = gearWheelIconDiv.parentNode.parentNode.id.replace('member_',''); | |
| var fbMemberName = getTextFromElement(gearWheelIconDiv.parentNode.parentNode.getElementsByClassName('fcb')[0]); | |
| if (excludedFbIds.indexOf(fbMemberId) != -1) { | |
| console.log("SKIPPING "+fbMemberName+' ('+fbMemberId+')'); | |
| continue; | |
| } else { | |
| usersToDeleteQueue.push({'memberId': fbMemberId, 'gearWheelIconDiv': gearWheelIconDiv}); | |
| } | |
| } | |
| } | |
| function processQueue() { | |
| if (!scriptEnabled) { | |
| return; | |
| } | |
| if (usersToDeleteQueue.length > 0) { | |
| removeNext(); | |
| setTimeout(function(){ | |
| processQueue(); | |
| },1000); | |
| } else { | |
| getMore(); | |
| } | |
| } | |
| function removeNext() { | |
| if (!scriptEnabled) { | |
| return; | |
| } | |
| if (usersToDeleteQueue.length > 0) { | |
| var nextElement = usersToDeleteQueue.pop(); | |
| removeMember(nextElement.memberId, nextElement.gearWheelIconDiv); | |
| } | |
| } | |
| function removeMember(memberId, gearWheelIconDiv) { | |
| if (processing) { | |
| return; | |
| } | |
| var gearWheelHref = gearWheelIconDiv.getElementsByTagName('a')[0]; | |
| gearWheelHref.click(); | |
| processing = true; | |
| setTimeout(function(){ | |
| var popupRef = gearWheelHref.id; | |
| var popupDiv = getElementByAttribute('data-ownerid',popupRef); | |
| var popupLinks = popupDiv.getElementsByTagName('a'); | |
| for(var j=0; j<popupLinks.length; j++) { | |
| if (popupLinks[j].getAttribute('href').indexOf('remove.php') !== -1) { | |
| // this is the remove link | |
| popupLinks[j].click(); | |
| setTimeout(function(){ | |
| var confirmButton = document.getElementsByClassName('layerConfirm uiOverlayButton selected')[0]; | |
| var errorDialog = getElementByAttribute('data-reactid','.4.0'); | |
| if (confirmButton != null) { | |
| if (canClick(confirmButton)) { | |
| confirmButton.click(); | |
| } else { | |
| console.log('This should not happen memberid: '+memberId); | |
| 5/0; | |
| console.log(gearWheelIconDiv); | |
| } | |
| } | |
| if (errorDialog != null) { | |
| console.log("Error while removing member "+memberId); | |
| errorDialog.getElementsByClassName('selected layerCancel autofocus')[0].click(); | |
| } | |
| processing = false; | |
| },700); | |
| continue; | |
| } | |
| } | |
| },500); | |
| } | |
| function canClick(el) { | |
| return (typeof el != 'undefined') && (typeof el.click != 'undefined'); | |
| } | |
| function getMore() { | |
| processing = true; | |
| more = document.getElementsByClassName("pam uiBoxLightblue uiMorePagerPrimary"); | |
| if (typeof more != 'undefined' && canClick(more[0])) { | |
| more[0].click(); | |
| setTimeout(function(){ | |
| deleteAll(); | |
| processing = false; | |
| }, 2000); | |
| } else { | |
| deleteAllGroupMembers.stop(); | |
| } | |
| } | |
| function getTextFromElement(element) { | |
| var text = element.textContent; | |
| return text; | |
| } | |
| function getElementByAttribute(attr, value, root) { | |
| root = root || document.body; | |
| if(root.hasAttribute(attr) && root.getAttribute(attr) == value) { | |
| return root; | |
| } | |
| var children = root.children, | |
| element; | |
| for(var i = children.length; i--; ) { | |
| element = getElementByAttribute(attr, value, children[i]); | |
| if(element) { | |
| return element; | |
| } | |
| } | |
| return null; | |
| } | |
| return deleteAllGroupMembers; | |
| })(); | |
| deleteAllGroupMembers.start(); | |
| // stop the script by entering this in the console: deleteAllGroupMembers.stop(); |
How about removing let's say members without profile pic?
hi, is still working? is there a way to load more than 200 members in the group?
my script remove all group members https://gist.github.com/shadkawa/03531f32d70227dedf4fb1c99cb19f1a
Hello Shadkawa,
What about removing only the unavailable member in a facebook group? That allow to multiply the reach * 10.

HI --
I am runing as an admin on several groups, and in one we have detected and blocked 6700 Bulies, Fake accounts and trolls.
I have exported all these names to a CSV file, and want to place them on the other groups, as Blocked people.
How can I do that, in order to keep all these groups safe, like uploading the csv or copying the names ?
I really need urgent help on this !
Thanks Team !
its not working 23 may 2019...please update its a bit urgent,...thanks