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

Function handler

plugins/warn.js:51–138  ·  view source on GitHub ↗
(sock, message, args, context)

Source from the content-addressed store, hash-verified

49 groupOnly: true,
50 adminOnly: true,
51 async handler(sock, message, args, context) {
52 const { chatId, senderId, channelInfo } = context;
53 try {
54 initializeWarningsFile();
55 let userToWarn;
56 const mentionedJids = message.message?.extendedTextMessage?.contextInfo?.mentionedJid;
57 if (mentionedJids && mentionedJids.length > 0) {
58 userToWarn = mentionedJids[0];
59 }
60 else if (message.message?.extendedTextMessage?.contextInfo?.participant) {
61 userToWarn = message.message.extendedTextMessage.contextInfo.participant;
62 }
63 if (!userToWarn) {
64 await sock.sendMessage(chatId, {
65 text: '❌ Error: Please mention the user or reply to their message to warn!',
66 ...channelInfo
67 }, { quoted: message });
68 return;
69 }
70 await new Promise(resolve => setTimeout(resolve, 1000));
71 try {
72 const warnings = await getWarnings();
73 if (!warnings[chatId])
74 warnings[chatId] = {};
75 if (!warnings[chatId][userToWarn])
76 warnings[chatId][userToWarn] = 0;
77 warnings[chatId][userToWarn]++;
78 await saveWarnings(warnings);
79 const warningMessage = `*『 WARNING ALERT 』*\n\n` +
80 `👤 *Warned User:* @${userToWarn.split('@')[0]}\n` +
81 `⚠️ *Warning Count:* ${warnings[chatId][userToWarn]}/3\n` +
82 `👑 *Warned By:* @${senderId.split('@')[0]}\n` +
83 `🗄️ *Storage:* ${HAS_DB ? 'Database' : 'File System'}\n\n` +
84 `📅 *Date:* ${new Date().toLocaleString()}`;
85 await sock.sendMessage(chatId, {
86 text: warningMessage,
87 mentions: [userToWarn, senderId],
88 ...channelInfo
89 });
90 if (warnings[chatId][userToWarn] >= 3) {
91 await new Promise(resolve => setTimeout(resolve, 1000));
92 await sock.groupParticipantsUpdate(chatId, [userToWarn], "remove");
93 delete warnings[chatId][userToWarn];
94 await saveWarnings(warnings);
95 const kickMessage = `*『 AUTO-KICK 』*\n\n` +
96 `@${userToWarn.split('@')[0]} has been removed from the group after receiving 3 warnings! ⚠️`;
97 await sock.sendMessage(chatId, {
98 text: kickMessage,
99 mentions: [userToWarn],
100 ...channelInfo
101 });
102 }
103 }
104 catch (error) {
105 console.error('Error in warn command:', error);
106 await sock.sendMessage(chatId, {
107 text: '❌ Failed to warn user!',
108 ...channelInfo

Callers

nothing calls this directly

Calls 3

initializeWarningsFileFunction · 0.85
getWarningsFunction · 0.85
saveWarningsFunction · 0.85

Tested by

no test coverage detected