-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler.js
92 lines (75 loc) · 3.31 KB
/
handler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import { serialize, decodeJid } from '../../lib/Serializer.js';
import path from 'path';
import fs from 'fs/promises';
import config from '../../config.cjs';
import { smsg } from '../../lib/myfunc.cjs';
import { handleAntilink } from './antilink.js';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Function to get group admins
export const getGroupAdmins = (participants) => {
let admins = [];
for (let i of participants) {
if (i.admin === "superadmin" || i.admin === "admin") {
admins.push(i.id);
}
}
return admins || [];
};
const Handler = async (chatUpdate, sock, logger) => {
try {
if (chatUpdate.type !== 'notify') return;
const m = serialize(JSON.parse(JSON.stringify(chatUpdate.messages[0])), sock, logger);
if (!m.message) return;
const participants = m.isGroup ? await sock.groupMetadata(m.from).then(metadata => metadata.participants) : [];
const groupAdmins = m.isGroup ? getGroupAdmins(participants) : [];
const botId = sock.user.id.split(':')[0] + '@s.whatsapp.net';
const isBotAdmins = m.isGroup ? groupAdmins.includes(botId) : false;
const isAdmins = m.isGroup ? groupAdmins.includes(m.sender) : false;
const PREFIX = /^[\\/!#.]/;
const isCOMMAND = (body) => PREFIX.test(body);
const prefixMatch = isCOMMAND(m.body) ? m.body.match(PREFIX) : null;
const prefix = prefixMatch ? prefixMatch[0] : '/';
const cmd = m.body.startsWith(prefix) ? m.body.slice(prefix.length).split(' ')[0].toLowerCase() : '';
const text = m.body.slice(prefix.length + cmd.length).trim();
if (m.key && m.key.remoteJid === 'status@broadcast' && config.AUTO_STATUS_SEEN) {
await sock.readMessages([m.key]);
}
const botNumber = await sock.decodeJid(sock.user.id);
const ownerNumber = config.OWNER_NUMBER + '@s.whatsapp.net';
let isCreator = false;
if (m.isGroup) {
isCreator = m.sender === ownerNumber || m.sender === botNumber;
} else {
isCreator = m.sender === ownerNumber || m.sender === botNumber;
}
if (!sock.public) {
if (!isCreator) {
return;
}
}
await handleAntilink(m, sock, logger, isBotAdmins, isAdmins, isCreator);
const { isGroup, type, sender, from, body } = m;
console.log(m);
const pluginDir = path.join(__dirname, '..', 'bonifhace-md');
const pluginFiles = await fs.readdir(pluginDir);
for (const file of pluginFiles) {
if (file.endsWith('.js')) {
const pluginPath = path.join(pluginDir, file);
// console.log(`Attempting to load plugin: ${pluginPath}`);
try {
const pluginModule = await import(`file://${pluginPath}`);
const loadPlugins = pluginModule.default;
await loadPlugins(m, sock);
// console.log(`Successfully loaded plugin: ${pluginPath}`);
} catch (err) {
console.error(`Failed to load plugin: ${pluginPath}`, err);
}
}
}
} catch (e) {
console.log(e);
}
};
export default Handler;