Steam好友管理

自动接受Steam好友申请

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        Steam好友管理
// @version     2025.10.11.1
// @description 自动接受Steam好友申请
// @include     https://steamcommunity.com/profiles/*/friends/pending*
// @grant       none
// @note        更新于 2025年10月11日
// @author      怀沙2049
// @license     GNU GPLv3
// @run-at      document-end
// @namespace   https://greasyfork.org/zh-CN/users/1192640
// ==/UserScript==

(function() {
    'use strict';

    // 设置参数
    const REFRESH_INTERVAL = 300000; // 检查间隔(毫秒) - 5分钟
    const PROCESS_DELAY = 3000; // 处理每个用户的间隔时间
    // 需要排除的用户ID列表
    const EXCLUDED_IDS = new Set([
        '76561199202030242',
        '76561199215008545'
        // 如果需要添加更多ID,按照上面的格式继续添加即可
        // '另一个ID',
        // '再一个ID'
    ]);
    
    // 日志函数
    function log(message) {
        console.log(`[Steam好友管理] ${message}`);
    }

    // 获取好友申请信息
    function getFriendRequests() {
        const requestRows = document.querySelectorAll('.invite_row');
        const requests = [];
        
        requestRows.forEach(row => {
            // 获取用户ID和邀请ID
            const userId = row.dataset.steamid;
            const inviteId = row.id; // 例如: invite_475514969
            
            // 排除特定ID
            if (userId && !EXCLUDED_IDS.has(userId)) {
                requests.push({
                    row: row,
                    userId: userId,
                    inviteId: inviteId
                });
            }
        });
        
        return requests;
    }

    // 接受好友申请
    function acceptFriendRequest(request, index, total) {
        log(`正在处理第 ${index + 1}/${total} 个好友申请 (用户ID: ${request.userId})`);
        
        try {
            // 构造接受好友申请的函数调用
            // ApplyFriendAction('accept', userId, inviteSelector, UpdatePendingList)
            const acceptScript = `ApplyFriendAction('accept', '${request.userId}', '#${request.inviteId}', UpdatePendingList)`;
            
            // 执行接受操作
            eval(acceptScript);
            log(`已接受用户 ${request.userId} 的好友申请`);
        } catch (error) {
            log(`接受用户 ${request.userId} 的好友申请时出错: ${error.message}`);
        }
    }

    // 处理所有好友申请
    function processAllFriendRequests() {
        log("开始检查好友申请...");
        
        // 获取所有好友申请
        const friendRequests = getFriendRequests();
        
        if (friendRequests.length === 0) {
            log("未找到需要处理的好友申请");
            return;
        }
        
        log(`找到 ${friendRequests.length} 个好友申请,开始处理...`);
        
        // 依次处理每个好友申请
        friendRequests.forEach((request, index) => {
            setTimeout(() => {
                acceptFriendRequest(request, index, friendRequests.length);
            }, index * PROCESS_DELAY); // 间隔处理每个请求
        });
        
        // 处理完成后刷新页面
        setTimeout(() => {
            log("所有好友申请处理完毕,即将刷新页面");
            location.reload();
        }, friendRequests.length * PROCESS_DELAY + 3000);
    }

    // 主函数
    function main() {
        log("Steam好友管理脚本已启动");
        log("当前页面: " + window.location.href);
        
        // 立即执行一次
        setTimeout(processAllFriendRequests, 5000);
        
        // 定期执行
        setInterval(processAllFriendRequests, REFRESH_INTERVAL);
    }

    // 页面加载完成后执行
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', main);
    } else {
        main();
    }
})();