Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimizacion de esta basura #306

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
4 changes: 4 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"unused-imports"
],
"rules": {
"unused-imports/no-unused-imports": "error"
}
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ package-lock.json

# Local Databases
src/glx/db/database.json
src/libraries/tmp
datasecret
database.json
qr_database.json

# Logs
logs
Expand Down
Empty file removed MysticSession/themystic-bot-md.txt
Empty file.
88 changes: 46 additions & 42 deletions handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,17 @@ import fs from 'fs';
import chalk from 'chalk';
import mddd5 from 'md5';
import ws from 'ws';
let mconn;

import { randomBytes } from 'crypto';
/**
* Generates a unique tag for a message
* @param {string} [tag] - The tag to use, if not provided a random one will be generated
* @returns {string} - The generated tag
* this fix the fkontak bug with the tag in watsapp web
*/
export const generateMessageTag = (tag) => {
const r = tag ? tag : 'MYSTIC' + randomBytes(12).toString('hex').toUpperCase().toString();
return r
}
/**
* @type {import("baileys")}
*/
Expand All @@ -25,6 +34,9 @@ const delay = (ms) => isNumber(ms) && new Promise((resolve) => setTimeout(functi
* @param {import("baileys").BaileysEventMap<unknown>['messages.upsert']} groupsUpdate
*/
export async function handler(chatUpdate) {
if (!this.authState?.creds.me) {
this.ev.flush()
}
this.msgqueque = this.msgqueque || [];
this.uptime = this.uptime || Date.now();
if (!chatUpdate) {
Expand All @@ -46,8 +58,7 @@ export async function handler(chatUpdate) {
if (!m) {
return;
}
global.mconn = m
mconn = m
global.fkontak = { "key": { "participant":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": false, "id": generateMessageTag() }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }} }
m.exp = 0;
m.money = false;
m.limit = false;
Expand Down Expand Up @@ -668,7 +679,7 @@ export async function handler(chatUpdate) {
console.error(e);
}

const idioma = global.db.data.users[m.sender]?.language || global.defaultLenguaje; // is null? np the operator ?? fix that (i hope)
const idioma = global.db.data.users[m.sender]?.language || global.defaultLenguaje;
const _translate = JSON.parse(fs.readFileSync(`./src/languages/${idioma}.json`))
const tradutor = _translate.handler.handler

Expand All @@ -690,7 +701,7 @@ export async function handler(chatUpdate) {
if (typeof m.text !== 'string') {
m.text = '';
}
const isROwner = [conn.decodeJid(global.conn.user.id), ...global.owner.map(([number]) => number)].map((v) => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender);
const isROwner = [global.conn.user.id.decodeJid(), ...global.owner.map(([number]) => number)].map((v) => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender);
const isOwner = isROwner || m.fromMe;
const isMods = isOwner || global.mods.map((v) => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender);
const isPrems = isROwner || isOwner || isMods || global.db.data.users[m.sender].premiumTime > 0; // || global.db.data.users[m.sender].premium = 'true'
Expand All @@ -705,7 +716,7 @@ export async function handler(chatUpdate) {
}, time);
}

if (m.isBaileys || isBaileysFail && m?.sender === mconn?.conn?.user?.jid) {
if (m.isBaileys || isBaileysFail && m?.sender === global.conn?.user?.jid) {
return;
}
m.exp += Math.ceil(Math.random() * 10);
Expand Down Expand Up @@ -826,7 +837,7 @@ export async function handler(chatUpdate) {
if (m.chat in global.db.data.chats || m.sender in global.db.data.users) {
const chat = global.db.data.chats[m.chat];
const user = global.db.data.users[m.sender];
const botSpam = global.db.data.settings[mconn.conn.user.jid];
const botSpam = global.db.data.settings[global.conn.user.jid];

if (!['owner-unbanchat.js', 'info-creator.js'].includes(name) && chat && chat?.isBanned && !isROwner) return; // Except this
if (name != 'owner-unbanchat.js' && name != 'owner-exec.js' && name != 'owner-exec2.js' && chat?.isBanned && !isROwner) return; // Except this
Expand Down Expand Up @@ -923,11 +934,11 @@ ${tradutor.texto1[1]} ${messageNumber}/3
m.exp += xp;
}
if (!isPrems && plugin.limit && global.db.data.users[m.sender].limit < plugin.limit * 1) {
mconn.conn.reply(m.chat, `${tradutor.texto2} _${usedPrefix}buyall_`, m);
global.conn.reply(m.chat, `${tradutor.texto2} _${usedPrefix}buyall_`, m);
continue;
}
if (plugin.level > _user.level) {
mconn.conn.reply(m.chat, `${tradutor.texto3[0]} ${plugin.level} ${tradutor.texto3[1]} ${_user.level}, ${tradutor.texto3[2]} ${usedPrefix}lvl ${tradutor.texto3[3]}`, m);
global.conn.reply(m.chat, `${tradutor.texto3[0]} ${plugin.level} ${tradutor.texto3[1]} ${_user.level}, ${tradutor.texto3[2]} ${usedPrefix}lvl ${tradutor.texto3[3]}`, m);
continue;
}
const extra = {
Expand Down Expand Up @@ -1057,9 +1068,9 @@ ${tradutor.texto1[1]} ${messageNumber}/3
} catch (e) {
console.log(m, m.quoted, e);
}
const settingsREAD = global.db.data.settings[mconn.conn.user.jid] || {};
if (opts['autoread']) await mconn.conn.readMessages([m.key]);
if (settingsREAD.autoread2) await mconn.conn.readMessages([m.key]);
const settingsREAD = global.db.data.settings[this.user.jid] || {};
if (opts['autoread']) await this.readMessages([m.key]);
if (settingsREAD.autoread2) await this.readMessages([m.key]);
}
}

Expand All @@ -1071,56 +1082,49 @@ export async function participantsUpdate({ id, participants, action }) {
const idioma = global?.db?.data?.chats[id]?.language || global.defaultLenguaje;
const _translate = JSON.parse(fs.readFileSync(`./src/languages/${idioma}.json`))
const tradutor = _translate.handler.participantsUpdate

const m = mconn
if (opts['self']) return;
if (global.db.data == null) await loadDatabase();
const chat = global.db.data.chats[id] || {};
const botTt = global.db.data.settings[mconn?.conn?.user?.jid] || {};
const botTt = global.db.data.settings[this?.user?.jid] || {};
let text = '';
switch (action) {
case 'add':
case 'remove':
if (chat.welcome && !chat?.isBanned) {
const groupMetadata = await m?.conn?.groupMetadata(id) || (conn?.chats[id] || {}).metadata;
const groupMetadata = await this?.groupMetadata(id) || (conn?.chats[id] || this?.chats[id] || {}).metadata;
for (const user of participants) {
let pp = 'https://raw.githubusercontent.com/BrunoSobrino/TheMystic-Bot-MD/master/src/avatar_contact.png';
try {
pp = await m?.conn?.profilePictureUrl(user, 'image');
pp = await this?.profilePictureUrl(user, 'image');
} catch (e) {
} finally {
const apii = await mconn?.conn?.getFile(pp);
const antiArab = JSON.parse(fs.readFileSync('./src/antiArab.json'));
const apii = await this?.getFile(pp);
const antiArab = ["212", "265", "92"]
const userPrefix = antiArab.some((prefix) => user.startsWith(prefix));
const botTt2 = groupMetadata?.participants?.find((u) => m?.conn?.decodeJid(u.id) == m?.conn?.user?.jid) || {};
const botTt2 = groupMetadata?.participants?.find((u) => u.id.decodeJid()== this?.user?.jid) || {};
const isBotAdminNn = botTt2?.admin === 'admin' || false;
text = (action === 'add' ? (chat.sWelcome || tradutor.texto1 || conn.welcome || 'Welcome, @user!').replace('@subject', await m?.conn?.getName(id)).replace('@desc', groupMetadata?.desc?.toString() || '*𝚂𝙸𝙽 𝙳𝙴𝚂𝙲𝚁𝙸𝙿𝙲𝙸𝙾𝙽*').replace('@user', '@' + user.split('@')[0]) :
text = (action === 'add' ? (chat.sWelcome || tradutor.texto1 || conn.welcome || 'Welcome, @user!').replace('@subject', await this?.getName(id)).replace('@desc', groupMetadata?.desc?.toString() || '*𝚂𝙸𝙽 𝙳𝙴𝚂𝙲𝚁𝙸𝙿𝙲𝙸𝙾𝙽*').replace('@user', '@' + user.split('@')[0]) :
(chat.sBye || tradutor.texto2 || conn.bye || 'Bye, @user!')).replace('@user', '@' + user.split('@')[0]);
if (userPrefix && chat.antiArab && botTt.restrict && isBotAdminNn && action === 'add') {
const responseb = await m.conn.groupParticipantsUpdate(id, [user], 'remove');
const responseb = await this.groupParticipantsUpdate(id, [user], 'remove');
if (responseb[0].status === '404') return;
const fkontak2 = { 'key': { 'participants': '0@s.whatsapp.net', 'remoteJid': 'status@broadcast', 'fromMe': false, 'id': 'Halo' }, 'message': { 'contactMessage': { 'vcard': `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${user.split('@')[0]}:${user.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` } }, 'participant': '0@s.whatsapp.net' };
await m?.conn?.sendMessage(id, { text: `*[❗] @${user.split('@')[0]} ᴇɴ ᴇsᴛᴇ ɢʀᴜᴘᴏ ɴᴏ sᴇ ᴘᴇʀᴍɪᴛᴇɴ ɴᴜᴍᴇʀᴏs ᴀʀᴀʙᴇs ᴏ ʀᴀʀᴏs, ᴘᴏʀ ʟᴏ ϙᴜᴇ sᴇ ᴛᴇ sᴀᴄᴀʀᴀ ᴅᴇʟ ɢʀᴜᴘᴏ*`, mentions: [user] }, { quoted: fkontak2 });
await this?.sendMessage(id, { text: `*[❗] @${user.split('@')[0]} ᴇɴ ᴇsᴛᴇ ɢʀᴜᴘᴏ ɴᴏ sᴇ ᴘᴇʀᴍɪᴛᴇɴ ɴᴜᴍᴇʀᴏs ᴀʀᴀʙᴇs ᴏ ʀᴀʀᴏs, ᴘᴏʀ ʟᴏ ϙᴜᴇ sᴇ ᴛᴇ sᴀᴄᴀʀᴀ ᴅᴇʟ ɢʀᴜᴘᴏ*`, mentions: [user] }, { quoted: global.fkontak });
return;
}
await m?.conn?.sendFile(id, apii.data, 'pp.jpg', text, null, false, { mentions: [user] });
await this?.sendFile(id, apii.data, 'pp.jpg', text, null, false, { mentions: [user] });
}
}
}
break;
case 'promote':
case 'daradmin':
case 'darpoder':
text = (chat.sPromote || tradutor.texto3 || conn?.spromote || '@user ```is now Admin```');
text = (chat.sPromote || tradutor.texto3 || this?.spromote || conn?.spromote ||'@user ```is now Admin```');
case 'demote':
case 'quitarpoder':
case 'quitaradmin':
if (!text) {
text = (chat?.sDemote || tradutor.texto4 || conn?.sdemote || '@user ```is no longer Admin```');
text = (chat?.sDemote || tradutor.texto4 || this?.sdemote || conn?.sdemote || '@user ```is no longer Admin```');
}
text = text.replace('@user', '@' + participants[0].split('@')[0]);
if (chat.detect && !chat?.isBanned) {
mconn?.conn?.sendMessage(id, { text, mentions: mconn?.conn?.parseMention(text) });
this.sendMessage(id, { text, mentions: this.parseMention(text) });
}
break;
}
Expand Down Expand Up @@ -1151,22 +1155,22 @@ export async function groupsUpdate(groupsUpdate) {
if (groupUpdate?.icon) text = (chats?.sIcon || tradutor.texto7 || conn?.sIcon || '```Icon has been changed to```').replace('@icon', groupUpdate.icon);
if (groupUpdate?.revoke) text = (chats?.sRevoke || tradutor.texto8 || conn?.sRevoke || '```Group link has been changed to```\n@revoke').replace('@revoke', groupUpdate.revoke);
if (!text) continue;
await mconn?.conn?.sendMessage(id, { text, mentions: mconn?.conn?.parseMention(text) });
await this.sendMessage(id, { text, mentions: this.parseMention(text) });
}
}

export async function callUpdate(callUpdate) {
const isAnticall = global?.db?.data?.settings[mconn?.conn?.user?.jid].antiCall;
const isAnticall = global?.db?.data?.settings[this.user?.jid].antiCall;
if (!isAnticall) return;
for (const nk of callUpdate) {
if (nk.isGroup == false) {
if (nk.status == 'offer') {
const callmsg = await mconn?.conn?.reply(nk.from, `Hola *@${nk.from.split('@')[0]}*, las ${nk.isVideo ? 'videollamadas' : 'llamadas'} no están permitidas, serás bloqueado.\n-\nSi accidentalmente llamaste póngase en contacto con mi creador para que te desbloquee!`, false, { mentions: [nk.from] });
const callmsg = await this.reply(nk.from, `Hola *@${nk.from.split('@')[0]}*, las ${nk.isVideo ? 'videollamadas' : 'llamadas'} no están permitidas, serás bloqueado.\n-\nSi accidentalmente llamaste póngase en contacto con mi creador para que te desbloquee!`, false, { mentions: [nk.from] });
// let data = global.owner.filter(([id, isCreator]) => id && isCreator)
// await this.sendContact(nk.from, data.map(([id, name]) => [id, name]), false, { quoted: callmsg })
const vcard = `BEGIN:VCARD\nVERSION:3.0\nN:;𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑;;;\nFN:𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑\nORG:𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑\nTITLE:\nitem1.TEL;waid=5219992095479:+521 999 209 5479\nitem1.X-ABLabel:𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑\nX-WA-BIZ-DESCRIPTION:[❗] ᴄᴏɴᴛᴀᴄᴛᴀ ᴀ ᴇsᴛᴇ ɴᴜᴍ ᴘᴀʀᴀ ᴄᴏsᴀs ɪᴍᴘᴏʀᴛᴀɴᴛᴇs.\nX-WA-BIZ-NAME:𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑\nEND:VCARD`;
await mconn.conn.sendMessage(nk.from, { contacts: { displayName: '𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑', contacts: [{ vcard }] } }, { quoted: callmsg });
await mconn.conn.updateBlockStatus(nk.from, 'block');
await this.sendMessage(nk.from, { contacts: { displayName: '𝐁𝐫𝐮𝐧𝐨 𝐒𝐨𝐛𝐫𝐢𝐧𝐨 👑', contacts: [{ vcard }] } }, { quoted: callmsg });
await this.updateBlockStatus(nk.from, 'block');
}
}
}
Expand All @@ -1186,7 +1190,7 @@ export async function deleteUpdate(message) {
try {
const { fromMe, id, participant } = message
if (fromMe) return
let msg = mconn.conn.serializeM(mconn.conn.loadMessage(id))
let msg = this.serializeM(this.loadMessage(id))
let chat = global.db.data.chats[msg?.chat] || {}
if (!chat?.antidelete) return
if (!msg) return
Expand All @@ -1197,8 +1201,8 @@ ${tradutor.texto1[2]} ${time}
${tradutor.texto1[3]} ${date}\n
${tradutor.texto1[4]}
${tradutor.texto1[5]}`.trim();
await mconn.conn.sendMessage(msg.chat, { text: antideleteMessage, mentions: [participant] }, { quoted: msg })
mconn.conn.copyNForward(msg.chat, msg).catch(e => console.log(e, msg))
await this.sendMessage(msg.chat, { text: antideleteMessage, mentions: [participant] }, { quoted: msg })
this.copyNForward(msg.chat, msg).catch(e => console.log(e, msg))
} catch (e) {
console.error(e)
}
Expand Down Expand Up @@ -1239,4 +1243,4 @@ watchFile(file, async () => {
userr.subreloadHandler(false)
}
}
});
});
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,4 @@ async function start(file) {
}
}

start('main.js');
start('main.js');
Loading
Loading