Greasy Fork 还支持 简体中文。

Purge Steam Group Members

Remove all members from a steam group that you admin/moderate

Version au 03/07/2023. Voir la dernière version.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==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);
})();