Antidelete + Auto status seen + react + forward plugins
Quizontal | AntiDelete + Auto Status Seen + React + Forward Plugins are advanced automation tools designed to supercharge WhatsApp bots by offering seamless, intelligent, and user-friendly experiences. The AntiDelete plugin ensures that deleted messages are instantly recoverable, giving users complete chat transparency. The Auto Status Seen plugin automatically views friends’ statuses, while the React and Forward plugins allow bots to engage with messages, emojis, and forward content efficiently. Together, these plugins convert a basic bot into a powerful interaction and monitoring assistant, making Quizontal the ultimate platform for building feature-rich, modern WhatsApp bots with ease and versatility.
1. index.js
default: makeWASocket,
useMultiFileAuthState,
DisconnectReason,
jidNormalizedUser,
getContentType,
proto,
generateWAMessageContent,
generateWAMessage,
AnyMessageContent,
prepareWAMessageMedia,
areJidsSameUser,
downloadContentFromMessage,
MessageRetryMap,
generateForwardMessageContent,
generateWAMessageFromContent,
generateMessageID, makeInMemoryStore,
jidDecode,
fetchLatestBaileysVersion,
Browsers
const antiDeletePlugin = require('./plugins/antidelete.js');
global.pluginHooks = global.pluginHooks || [];
global.pluginHooks.push(antiDeletePlugin);
if (mek.key?.remoteJid === 'status@broadcast') {
const senderJid = mek.key.participant || mek.key.remoteJid || "unknown@s.whatsapp.net";
const mentionJid = senderJid.includes("@s.whatsapp.net") ? senderJid : senderJid + "@s.whatsapp.net";
if (config.AUTO_STATUS_SEEN === "true") {
try {
await conn.readMessages([mek.key]);
console.log(`[✓] Status seen: ${mek.key.id}`);
} catch (e) {
console.error("❌ Failed to mark status as seen:", e);
}
}
if (config.AUTO_STATUS_REACT === "true" && mek.key.participant) {
try {
const emojis = ['❤️', '💸', '😇', '🍂', '💥', '💯', '🔥', '💫', '💎', '💗', '🤍', '🖤', '👀', '🙌', '🙆', '🚩', '🥰', '💐', '😎', '🤎', '✅', '🫀', '🧡', '😁', '😄', '🌸', '🕊️', '🌷', '⛅', '🌟', '🗿', '💜', '💙', '🌝', '🖤', '💚'];
const randomEmoji = emojis[Math.floor(Math.random() * emojis.length)];
await conn.sendMessage(mek.key.participant, {
react: {
text: randomEmoji,
key: mek.key,
}
});
console.log(`[✓] Reacted to status of ${mek.key.participant} with ${randomEmoji}`);
} catch (e) {
console.error("❌ Failed to react to status:", e);
}
}
if (mek.message?.extendedTextMessage && !mek.message.imageMessage && !mek.message.videoMessage) {
const text = mek.message.extendedTextMessage.text || "";
if (text.trim().length > 0) {
try {
await conn.sendMessage(ownerNumber[0] + "@s.whatsapp.net", {
text: `📝 *Text Status*\n👤 From: @${mentionJid.split("@")[0]}\n\n${text}`,
mentions: [mentionJid]
});
console.log(`✅ Text-only status from ${mentionJid} forwarded.`);
} catch (e) {
console.error("❌ Failed to forward text status:", e);
}
}
}
if (mek.message?.imageMessage || mek.message?.videoMessage) {
try {
const msgType = mek.message.imageMessage ? "imageMessage" : "videoMessage";
const mediaMsg = mek.message[msgType];
const stream = await downloadContentFromMessage(
mediaMsg,
msgType === "imageMessage" ? "image" : "video"
);
let buffer = Buffer.from([]);
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk]);
}
const mimetype = mediaMsg.mimetype || (msgType === "imageMessage" ? "image/jpeg" : "video/mp4");
const captionText = mediaMsg.caption || "";
await conn.sendMessage(ownerNumber[0] + "@s.whatsapp.net", {
[msgType === "imageMessage" ? "image" : "video"]: buffer,
mimetype,
caption: `📥 *Forwarded Status*\n👤 From: @${mentionJid.split("@")[0]}\n\n${captionText}`,
mentions: [mentionJid]
});
console.log(`✅ Media status from ${mentionJid} forwarded.`);
} catch (err) {
console.error("❌ Failed to download or forward media status:", err);
}
}
}
conn.ev.on('messages.update', async (updates) => {
if (global.pluginHooks) {
for (const plugin of global.pluginHooks) {
if (plugin.onDelete) {
try {
await plugin.onDelete(conn, updates);
} catch (e) {
console.log("onDelete error:", e);
}
}
}
}
});
}
2. antidelete.js

0 Comments