Count total friend requests on Roblox
当前为
// ==UserScript==
// @name Roblox Friend Requests Counter
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Count total friend requests on Roblox
// @author mopsfl
// @match *://*.roblox.com/*
// @grant GM_setValue
// @grant GM_getValue
// @license MIT
// ==/UserScript==
(async function() {
'use strict';
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
async function fetchFriendRequests(cursor = "") {
const url = `https://friends.roblox.com/v1/my/friends/requests?sortOrder=Desc&limit=100${cursor ? `&cursor=${cursor}` : ""}`;
const response = await fetch(url, {
method: "GET",
credentials: "include",
});
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.json();
}
async function main() {
const cachedData = GM_getValue("friendRequestCount", null);
const now = new Date().getTime();
if (cachedData && now - cachedData.t < 5 * 60 * 1000) {
console.log(`Using cached value: ${cachedData.v}`);
waitForElm("#nav-friends > div.dynamic-width-item.align-right > span").then(el => {
el.innerText = cachedData.v;
});
return;
} else {
waitForElm("#nav-friends > div.dynamic-width-item.align-right > span").then(el => {
el.innerText = cachedData.v;
});
}
console.log("Fetching all friend requests! This may take a few seconds...")
let length = 0;
let cursor = "";
try {
do {
const response = await fetchFriendRequests(cursor);
length += response.data.length;
cursor = response.nextPageCursor;
} while (cursor);
GM_setValue("friendRequestCount", { v: length, t: now });
waitForElm("#nav-friends > div.dynamic-width-item.align-right > span").then(el => {
el.innerText = length;
});
console.log(`Total friend requests: ${length}`);
} catch (error) {
console.error("Error fetching friend requests:", error);
}
}
main();
})();