MCPcopy Create free account
hub / github.com/GlobalTechInfo/MEGA-MD / handler

Function handler

plugins/delete.js:10–136  ·  view source on GitHub ↗
(sock, message, args, context)

Source from the content-addressed store, hash-verified

8 groupOnly: true,
9 adminOnly: true,
10 async handler(sock, message, args, context) {
11 const chatId = context.chatId || message.key.remoteJid;
12 const _senderId = context.senderId || message.key.participant || message.key.remoteJid;
13 const isBotAdmin = context.isBotAdmin;
14 if (!isBotAdmin) {
15 await sock.sendMessage(chatId, {
16 text: '❌ *I need to be an admin to delete messages*'
17 }, { quoted: message });
18 return;
19 }
20 const text = message.message?.conversation || message.message?.extendedTextMessage?.text || '';
21 const parts = text.trim().split(/\s+/);
22 let countArg = null;
23 if (parts.length > 1) {
24 const maybeNum = parseInt(parts[1], 10);
25 if (!isNaN(maybeNum) && maybeNum > 0) {
26 countArg = Math.min(maybeNum, 50);
27 }
28 }
29 const ctxInfo = message.message?.extendedTextMessage?.contextInfo || {};
30 const repliedParticipant = ctxInfo.participant || null;
31 const mentioned = Array.isArray(ctxInfo.mentionedJid) && ctxInfo.mentionedJid.length > 0 ? ctxInfo.mentionedJid[0] : null;
32 if (countArg === null && repliedParticipant) {
33 countArg = 1;
34 }
35 else if (countArg === null && !repliedParticipant && !mentioned) {
36 await sock.sendMessage(chatId, {
37 text: '❌ *Please specify the number of messages to delete*\n\n' +
38 '*Usage:*\n' +
39 '• `.del 5` - Delete last 5 messages from group\n' +
40 '• `.del 3 @user` - Delete last 3 messages from @user\n' +
41 '• `.del 2` (reply to message) - Delete last 2 messages from replied user'
42 }, { quoted: message });
43 return;
44 }
45 else if (countArg === null && mentioned) {
46 countArg = 1;
47 }
48 let targetUser = null;
49 let repliedMsgId = null;
50 let deleteGroupMessages = false;
51 if (repliedParticipant && ctxInfo.stanzaId) {
52 targetUser = repliedParticipant;
53 repliedMsgId = ctxInfo.stanzaId;
54 }
55 else if (mentioned) {
56 targetUser = mentioned;
57 }
58 else {
59 deleteGroupMessages = true;
60 }
61 const chatMessages = Array.isArray(store.messages[chatId]) ? store.messages[chatId] : [];
62 const toDelete = [];
63 const seenIds = new Set();
64 if (deleteGroupMessages) {
65 for (let i = chatMessages.length - 1; i >= 0 && toDelete.length < Number(countArg); i--) {
66 const m = chatMessages[i];
67 if (!seenIds.has(m.key.id)) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected