您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove all members from a steam group that you admin/moderate
// ==UserScript== // @name Purge Steam Group Members // @namespace https://greasyfork.org/en/users/2205 // @version 0.1 // @description Remove all members from a steam group that you admin/moderate // @license Apache-2.0 // @author Rudokhvist // @match https://steamcommunity.com/groups/*/membersManage // @icon https://www.google.com/s2/favicons?sz=64&domain=steamcommunity.com // @grant unsafeWindow // ==/UserScript== (function() { 'use strict'; let workingDialog; let steamIDs = []; let selfID; let groupLink; let webLimiter = 300; function KickMember(userindex) { workingDialog.Dismiss(); workingDialog = unsafeWindow.ShowBlockingWaitDialog( 'Purge in progress', 'Please wait, ' + (steamIDs.length-userindex) +' members left' ); if (userindex >= steamIDs.length) { workingDialog.Dismiss(); unsafeWindow.ShowAlertDialog("SUCCESS","Group purged"); unsafeWindow.location.reload(); return; } if (steamIDs[userindex].textContent.trim() === selfID) { KickMember(userindex+1); } let xhr = new XMLHttpRequest(); xhr.open("POST", groupLink + "/membersManage", true); xhr.responseType = "document"; xhr.onload = function () { setTimeout( (function (userindex) { return function () { KickMember(userindex); }; })(userindex+1), webLimiter ); }; xhr.onerror = function () { unsafeWindow.ShowAlertDialog("ERROR","Failed to remove member " + steamIDs[userindex].textContent.trim()); setTimeout( (function (userindex) { return function () { KickMember(userindex); }; })(userindex+1), webLimiter ); }; let body = new FormData(); body.append("sessionID",unsafeWindow.g_sessionID); body.append("action","kick"); body.append("memberId",steamIDs[userindex].textContent.trim()); body.append("queryString",""); xhr.send(body); } function PurgeGroup () { unsafeWindow.ShowConfirmDialog('WARNING', 'Are you sure you want to remove all users from the group?').done(function(){ let profileRegex = /(http[s]?:\/\/steamcommunity.com\/groups\/[^\/]*)\/membersManage.*/g; let result = profileRegex.exec(document.location); if (result) { groupLink = result[1]; selfID = unsafeWindow.g_steamID; let xhr = new XMLHttpRequest(); xhr.open("GET", groupLink + "/memberslistxml?xml=1", true); xhr.responseType = "document"; xhr.onload = function () { steamIDs = xhr.responseXML.documentElement.getElementsByTagName("steamID64"); console.log(steamIDs.length); console.log(steamIDs); workingDialog = unsafeWindow.ShowBlockingWaitDialog( 'Purge in progress', 'Please wait, ' + steamIDs.length +' members left' ); KickMember(0); }; xhr.onerror = function () { unsafeWindow.ShowAlertDialog("ERROR","Unable to load member list"); }; xhr.send(); } else { unsafeWindow.ShowAlertDialog("ERROR","Unable to parse group name"); } }); } //main let buttonText = `<div id="asf_stm_stop" class="btn_darkred_white_innerfade btn_medium_thin" style="float: right; margin-left: 10px;" title="Purge group"> <span>🧹</span> </div>`; let templateElement = document.createElement("template"); templateElement.innerHTML = buttonText.trim(); let button = templateElement.content.firstChild; let splitter = document.querySelector("#searchAreaClear") splitter.parentElement.insertBefore(button,splitter); button.addEventListener("click", PurgeGroup); })();