-
-
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(); |
I am getting Syntax Error
Anyone know what I am doing wrong?
Check out this improved version - https://gist.github.com/poteto/0d1cb865f187edd38d9350caed5a6a38
Updated a new short solution, tested on chrome: https://gist.github.com/kencarino/3be7c5ee0bec39da99a05639c0fc2673
Good job instead of taking the functions as increment you can the normal procedures, that will work like charm
Does there exist a script after this ultimate facebook updates??? It is giving me a strange error and i am no able to identiffy it. Is something with a forcekey
Where do i find fd id , and in to parts ?? "1234" "11223344"
Dont work
my script remove all group members https://gist.github.com/shadkawa/03531f32d70227dedf4fb1c99cb19f1a
its not working 23 may 2019...please update its a bit urgent,...thanks
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 !
Didn't work