goat
command
clear
Clear bot messages
0
views
0
likes
0
installs
raw source
module.exports = {
config: {
name: "clear",
aliases: [],
author: "Mohammad Maruf",
version: "1.0.0",
countDown: 5,
role: 0,
shortDescription: {
en: "Clear bot messages"
},
longDescription: {
en: "Unsend bot messages while keeping the latest 20 messages"
},
category: "admin",
guide: {
en: "{p}clear\n{p}clear all"
}
},
onStart: async function ({ api, event, args }) {
const threadID = event.threadID;
const messageID = event.messageID;
const botID = String(api.getCurrentUserID());
/* =========================
REACTION HELPER
========================= */
const react = async emoji => {
try {
await api.setMessageReaction(
emoji,
messageID,
() => {},
true
);
} catch (_) {
// Reaction unsupported হলেও command চলবে
}
};
/* =========================
LOADING
========================= */
await react("⏳");
try {
/* =========================
GET HISTORY
========================= */
const messages = await api.getThreadHistory(
threadID,
100
);
if (
!Array.isArray(messages) ||
messages.length === 0
) {
await react("✅");
return;
}
/* =========================
CHECK CLEAR ALL
========================= */
const isAll =
String(args[0] || "").toLowerCase() === "all";
let targetMessages = [];
if (isAll) {
/*
* clear all
* History থেকে পাওয়া
* সব Bot message
*/
targetMessages = messages.filter(
msg =>
String(msg.senderID) === botID &&
msg.messageID
);
} else {
/*
* clear
*
* Latest 20 message রেখে
* তার আগের messageগুলো নেওয়া
*/
const oldMessages = messages.slice(20);
/*
* শুধু Bot-এর message
*/
targetMessages = oldMessages.filter(
msg =>
String(msg.senderID) === botID &&
msg.messageID
);
}
/* =========================
NOTHING TO CLEAR
========================= */
if (targetMessages.length === 0) {
await react("✅");
return;
}
/* =========================
UNSEND
========================= */
let success = 0;
let failed = 0;
for (const msg of targetMessages) {
try {
await api.unsendMessage(
msg.messageID
);
success++;
/*
* API rate-limit কমানোর জন্য
* ছোট delay
*/
await new Promise(
resolve => setTimeout(resolve, 150)
);
} catch (err) {
failed++;
console.error(
`[CLEAR] Failed ${msg.messageID}:`,
err?.message || err
);
}
}
/* =========================
FINAL REACTION
========================= */
if (success > 0 && failed === 0) {
// সব সফল
await react("✅");
} else if (success > 0 && failed > 0) {
// কিছু হয়েছে, কিছু হয়নি
await react("⚠️");
} else {
// কিছুই unsend হয়নি
await react("❌");
}
} catch (err) {
console.error(
"[CLEAR] ERROR:",
err?.message || err
);
/*
* কোনো error message পাঠাবে না
*/
await react("❌");
return;
}
}
};