Hiya girlies Just sharing my group wall clearing script. Took an age but in 2024 I finally cleared the group wall, which had TWELVE THOUSAND (12,000) scams on it :O
Basically I just used noblox, plus my token, to delete any messages that were matched to a list of keywords. 12,000 deletions later the group wall was all clean!!! another win for ya girl
let rbx = require('noblox.js');
let request = require('request');
const groupId = "886423";
const keywords = [
"👻",
"Welcome my friend's!",
"Glad you're here!",
"🎃Greetings to you!",
"Greetings to you!",
"Want a cool prize",
"Happy Halloween!",
"🦇",
"Spooky times",
"💚",
"⭐️",
"🖤",
"🧡",
"👉If you are viewing this message that means",
"😍🔥🌈🌟This groups members are qualified to retrieve tons of ROBUX and Game Passes all instantly for free! Visit the following link👉: robuxupgrade.me",
"🍀Want ROBUX?🍀💚Access",
"⭐️Greetings to you! Receive Instantly tons of BUX. No info at all! Unlock GamePasses. Claim your GamePasses. 👉Go to the link: dailyreward.me",
"🧡Hey you!",
"👉If you are viewing this message that means you are qualified to access all game passes, and R$ Instantly. 👈 💥Get your redemption # for ROBUX now Instantly!💥. Get your code now at this link👉: rewardbuddy.club",
"👉: rewardtool.se",
"visit the following link",
"tons of robux",
"thousands of robux",
"is giving access to",
"giving access",
"all game passes",
"no info needed",
"to the following link",
"rewardtool.se",
"rewardtool",
"dailyreward.me",
"hey you! receive instantly tons of bux.",
];
const cookie = '_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this-will-allow-someone-to-log-in-as-you-and-to-steal-your-ROBUX-and-items.|_THERESTOFTHETOKENWASHEREBUTITOOKITOUT';
rbx.setCookie(cookie).then(function() {
console.log("Successfully logged in to Roblox account!");
console.log(`Loading pages to scan. Group ID ${groupId}`);
async function deletePost(postId) {
try {
console.log(`Attempting to delete post with ID: ${postId}`);
await rbx.deleteWallPost(groupId, postId);
console.log(`Successfully removed post with ID: ${postId}`);
} catch (e) {
console.error(`Failed to delete post. ID: ${postId}`, e);
}
}
async function checkAllPages(cursor = null) {
try {
let retryCount = 0;
const maxRetries = 5;
while (retryCount < maxRetries) {
try {
let res = await rbx.getWall(groupId, "Desc", 50, cursor);
const posts = res.data;
const nextCursor = res.nextPageCursor;
if (!posts.length) {
console.log("No more posts to fetch.");
return;
}
console.log(`Posts fetched from page with cursor ${cursor}:`, posts);
for (let i = 0; i < posts.length; i++) {
let message = posts[i];
if (!message || !message.id || !message.body) {
console.error("Post data is missing or incomplete", message);
continue;
}
var found = 0;
for (let phrase of keywords) {
if (message.body && message.body.toLowerCase().search(phrase.toLowerCase()) !== -1) found += 5;
}
if (/\S+\.\S+/.exec(message.body)) {
// found += 5;
}
if (found >= 5) {
console.log("Removing Scam post with ID: " + message.id);
await deletePost(message.id);
}
}
if (nextCursor) {
console.log("Page end, loading next page...");
await new Promise(resolve => setTimeout(resolve, 2500));
cursor = nextCursor;
} else {
console.log("All pages processed.");
return;
}
retryCount = 0;
} catch (e) {
if (e.message.includes("Too many requests")) {
retryCount++;
console.error(`Rate limit exceeded. Attempt ${retryCount} of ${maxRetries}. Retrying...`);
await new Promise(resolve => setTimeout(resolve, Math.pow(2, retryCount) * 1000)); // Exponential backoff
} else if (e.message.includes("InternalServerError")) {
console.error("Internal Server Error encountered. Retrying...");
await new Promise(resolve => setTimeout(resolve, 5000));
} else {
throw e;
}
}
}
console.error("Max retry attempts reached. Exiting...");
} catch (e) {
console.error("Error in checkAllPages function:", e);
}
}
checkAllPages();
}).catch(function(e) { console.error("Login error:", e); });