diff --git a/index.js b/index.js index ad519d4..276a679 100644 --- a/index.js +++ b/index.js @@ -1,31 +1,42 @@ "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; + if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; + if (!desc || ("get" in desc ? !m.__esModule: desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function() { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); +}): (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); + Object.defineProperty(o, "default", { + enumerable: true, value: v + }); }) : function(o, v) { - o["default"] = v; + o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; + return (mod && mod.__esModule) ? mod: { + "default": mod + }; }; -Object.defineProperty(exports, "__esModule", { value: true }); +Object.defineProperty(exports, "__esModule", { + value: true +}); const baileys_1 = __importStar(require("@whiskeysockets/baileys")); const logger_1 = __importDefault(require("@whiskeysockets/baileys/lib/Utils/logger")); const logger = logger_1.default.child({}); @@ -37,17 +48,43 @@ const axios = require("axios"); let fs = require("fs-extra"); let path = require("path"); const FileType = require('file-type'); -const { Sticker, createSticker, StickerTypes } = require('wa-sticker-formatter'); +const { + Sticker, + createSticker, + StickerTypes +} = require('wa-sticker-formatter'); //import chalk from 'chalk' -const { verifierEtatJid , recupererActionJid } = require("./bdd/antilien"); -const { atbverifierEtatJid , atbrecupererActionJid } = require("./bdd/antibot"); +const { + verifierEtatJid, + recupererActionJid +} = require("./bdd/antilien"); +const { + atbverifierEtatJid, + atbrecupererActionJid +} = require("./bdd/antibot"); let evt = require(__dirname + "/framework/zokou"); -const {isUserBanned , addUserToBanList , removeUserFromBanList} = require("./bdd/banUser"); -const {addGroupToBanList,isGroupBanned,removeGroupFromBanList} = require("./bdd/banGroup"); -const {isGroupOnlyAdmin,addGroupToOnlyAdminList,removeGroupFromOnlyAdminList} = require("./bdd/onlyAdmin"); +const { + isUserBanned, + addUserToBanList, + removeUserFromBanList +} = require("./bdd/banUser"); +const { + addGroupToBanList, + isGroupBanned, + removeGroupFromBanList +} = require("./bdd/banGroup"); +const { + isGroupOnlyAdmin, + addGroupToOnlyAdminList, + removeGroupFromOnlyAdminList +} = require("./bdd/onlyAdmin"); //const //{loadCmd}=require("/framework/mesfonctions") -const { delay } = require(__dirname + "/bdd/utils") -let { reagir } = require(__dirname + "/framework/app"); +const { + delay +} = require(__dirname + "/framework/utils") +let { + reagir +} = require(__dirname + "/framework/app"); var session = conf.session; const prefixe = conf.PREFIXE; // channel link @@ -60,1024 +97,1196 @@ async function authentification() { if (now - lastApiCall < delay) { await new Promise(resolve => setTimeout(resolve, delay - (now - lastApiCall))); - } + } - lastApiCall = now; - try { - - //console.log("le data "+data) - if (!fs.existsSync(__dirname + "/auth/creds.json")) { - console.log("connection in progress ..."); - await fs.writeFileSync(__dirname + "/auth/creds.json", atob(session), "utf8"); - //console.log(session) - } - else if (fs.existsSync(__dirname + "/auth/creds.json") && session != "zokk") { - await fs.writeFileSync(__dirname + "/auth/creds.json", atob(session), "utf8"); - } - } - catch (e) { - console.log("Session Invalid " + e); - return; + lastApiCall = now; + try { + + //console.log("le data "+data) + if (!fs.existsSync(__dirname + "/auth/creds.json")) { + console.log("connection in progress ..."); + await fs.writeFileSync(__dirname + "/auth/creds.json", atob(session), "utf8"); + //console.log(session) + } else if (fs.existsSync(__dirname + "/auth/creds.json") && session != "zokk") { + await fs.writeFileSync(__dirname + "/auth/creds.json", atob(session), "utf8"); } + } + catch (e) { + console.log("Session Invalid " + e); + return; + } } authentification(); const store = (0, baileys_1.makeInMemoryStore)({ - logger: pino().child({ level: "silent", stream: "store" }), + logger: pino().child({ + level: "silent", stream: "store" + }), }); setTimeout(() => { - async function main() { - await delay(500); - const { version, isLatest } = await (0, baileys_1.fetchLatestBaileysVersion)(); - await delay(500); - const { state, saveCreds } = await (0, baileys_1.useMultiFileAuthState)(__dirname + "/auth"); - await delay(500); - const sockOptions = { - version, - logger: pino({ level: "silent" }), - browser: ['TKM-bot', "safari", "1.0.0"], - printQRInTerminal: true, - fireInitQueries: false, - shouldSyncHistoryMessage: true, - downloadHistory: true, - syncFullHistory: true, - generateHighQualityLinkPreview: true, - markOnlineOnConnect: false, - keepAliveIntervalMs: 30_000, - /* auth: state*/ auth: { - creds: state.creds, - /** caching makes the stor faster to send/recv messages */ - keys: (0, baileys_1.makeCacheableSignalKeyStore)(state.keys, logger), - }, - ////////// - getMessage: async (key) => { - if (store) { - const msg = await store.loadMessage(key.remoteJid, key.id, undefined); - return msg.message || undefined; - } - return { - conversation: 'An Error Occurred, Repeat Command!' - }; - } - /////// + async function main() { + await delay(500); + const { + version, isLatest + } = await (0, baileys_1.fetchLatestBaileysVersion)(); + await delay(500); + const { + state, saveCreds + } = await (0, baileys_1.useMultiFileAuthState)(__dirname + "/auth"); + await delay(500); + const sockOptions = { + version, + logger: pino( { + level: "silent" + }), + browser: ['TKM-bot', "safari", "1.0.0"], + printQRInTerminal: true, + fireInitQueries: false, + shouldSyncHistoryMessage: true, + downloadHistory: true, + syncFullHistory: true, + generateHighQualityLinkPreview: true, + markOnlineOnConnect: false, + keepAliveIntervalMs: 30_000, + /* auth: state*/ auth: { + creds: state.creds, + /** caching makes the stor faster to send/recv messages */ + keys: (0, baileys_1.makeCacheableSignalKeyStore)(state.keys, logger), + }, + ////////// + getMessage: async (key) => { + if (store) { + const msg = await store.loadMessage(key.remoteJid, key.id, undefined); + return msg.message || undefined; + } + return { + conversation: 'An Error Occurred, Repeat Command!' }; - store.readFromFile("store.json"); - await delay(1000); - const zk = (0, baileys_1.default)(sockOptions); - - store.bind(zk.ev); - setInterval(() => { store.writeToFile("store.json"); }, 3000); - zk.ev.on("messages.upsert", async (m) => { - const { messages } = m; - const ms = messages[0]; - if (!ms.message) - return; - const decodeJid = (jid) => { - if (!jid) - return jid; - if (/:\d+@/gi.test(jid)) { - let decode = (0, baileys_1.jidDecode)(jid) || {}; - return decode.user && decode.server && decode.user + '@' + decode.server || jid; - } - else - return jid; - }; - var mtype = (0, baileys_1.getContentType)(ms.message); - var texte = mtype == "conversation" ? ms.message.conversation : mtype == "imageMessage" ? ms.message.imageMessage?.caption : mtype == "videoMessage" ? ms.message.videoMessage?.caption : mtype == "extendedTextMessage" ? ms.message?.extendedTextMessage?.text : mtype == "buttonsResponseMessage" ? - ms?.message?.buttonsResponseMessage?.selectedButtonId : mtype == "listResponseMessage" ? - ms.message?.listResponseMessage?.singleSelectReply?.selectedRowId : mtype == "messageContextInfo" ? - (ms?.message?.buttonsResponseMessage?.selectedButtonId || ms.message?.listResponseMessage?.singleSelectReply?.selectedRowId || ms.text) : ""; - var origineMessage = ms.key.remoteJid; - var idBot = decodeJid(zk.user.id); - var servBot = idBot.split('@')[0]; - /* const dj='22559763447'; + } + /////// + }; + store.readFromFile("store.json"); + await delay(1000); + const zk = (0, baileys_1.default)(sockOptions); + + store.bind(zk.ev); + setInterval(() => { + store.writeToFile("store.json"); + }, 3000); + zk.ev.on("messages.upsert", async (m) => { + const { + messages + } = m; + const ms = messages[0]; + if (!ms.message) + return; + const decodeJid = (jid) => { + if (!jid) + return jid; + if (/:\d+@/gi.test(jid)) { + let decode = (0, baileys_1.jidDecode)(jid) || {}; + return decode.user && decode.server && decode.user + '@' + decode.server || jid; + } else + return jid; + }; + var mtype = (0, baileys_1.getContentType)(ms.message); + var texte = mtype == "conversation" ? ms.message.conversation: mtype == "imageMessage" ? ms.message.imageMessage?.caption: mtype == "videoMessage" ? ms.message.videoMessage?.caption: mtype == "extendedTextMessage" ? ms.message?.extendedTextMessage?.text: mtype == "buttonsResponseMessage" ? + ms?.message?.buttonsResponseMessage?.selectedButtonId: mtype == "listResponseMessage" ? + ms.message?.listResponseMessage?.singleSelectReply?.selectedRowId: mtype == "messageContextInfo" ? + (ms?.message?.buttonsResponseMessage?.selectedButtonId || ms.message?.listResponseMessage?.singleSelectReply?.selectedRowId || ms.text): ""; + var origineMessage = ms.key.remoteJid; + var idBot = decodeJid(zk.user.id); + var servBot = idBot.split('@')[0]; + /* const dj='22559763447'; const dj2='2250143343357'; const luffy='22891733300'*/ - /* var superUser=[servBot,dj,dj2,luffy].map((s)=>s.replace(/[^0-9]/g)+"@s.whatsapp.net").includes(auteurMessage); + /* var superUser=[servBot,dj,dj2,luffy].map((s)=>s.replace(/[^0-9]/g)+"@s.whatsapp.net").includes(auteurMessage); var dev =[dj,dj2,luffy].map((t)=>t.replace(/[^0-9]/g)+"@s.whatsapp.net").includes(auteurMessage);*/ - const verifGroupe = origineMessage?.endsWith("@g.us"); - var infosGroupe = verifGroupe ? await zk.groupMetadata(origineMessage) : ""; - var nomGroupe = verifGroupe ? infosGroupe.subject : ""; - var msgRepondu = ms.message.extendedTextMessage?.contextInfo?.quotedMessage; - var auteurMsgRepondu = decodeJid(ms.message?.extendedTextMessage?.contextInfo?.participant); - //ms.message.extendedTextMessage?.contextInfo?.mentionedJid - // ms.message.extendedTextMessage?.contextInfo?.quotedMessage. - var mr = ms.message?.extendedTextMessage?.contextInfo?.mentionedJid; - var utilisateur = mr ? mr : msgRepondu ? auteurMsgRepondu : ""; - var auteurMessage = verifGroupe ? (ms.key.participant ? ms.key.participant : ms.participant) : origineMessage; - if (ms.key.fromMe) { - auteurMessage = idBot; + const verifGroupe = origineMessage?.endsWith("@g.us"); + var infosGroupe = verifGroupe ? await zk.groupMetadata(origineMessage): ""; + var nomGroupe = verifGroupe ? infosGroupe.subject: ""; + var msgRepondu = ms.message.extendedTextMessage?.contextInfo?.quotedMessage; + var auteurMsgRepondu = decodeJid(ms.message?.extendedTextMessage?.contextInfo?.participant); + //ms.message.extendedTextMessage?.contextInfo?.mentionedJid + // ms.message.extendedTextMessage?.contextInfo?.quotedMessage. + var mr = ms.message?.extendedTextMessage?.contextInfo?.mentionedJid; + var utilisateur = mr ? mr: msgRepondu ? auteurMsgRepondu: ""; + var auteurMessage = verifGroupe ? (ms.key.participant ? ms.key.participant: ms.participant): origineMessage; + if (ms.key.fromMe) { + auteurMessage = idBot; + } + + var membreGroupe = verifGroupe ? ms.key.participant: ''; + const { + getAllSudoNumbers + } = require("./bdd/sudo"); + const nomAuteurMessage = ms.pushName; + const danny = '2348098309204'; + const tkm = '263785028126'; + const sudo = await getAllSudoNumbers(); + const superUserNumbers = [servBot, + danny, + tkm, + conf.NUMERO_OWNER].map((s) => s.replace(/[^0-9]/g) + "@s.whatsapp.net"); + const allAllowedNumbers = superUserNumbers.concat(sudo); + const superUser = allAllowedNumbers.includes(auteurMessage); + + var dev = [danny, + tkm].map((t) => t.replace(/[^0-9]/g) + "@s.whatsapp.net").includes(auteurMessage); + function repondre(mes) { + zk.sendMessage(origineMessage, { + text: mes + }, { + quoted: ms + }); + } + console.log("\t [][]...{TKM-bot}...[][]"); + console.log("=========== New message ==========="); + if (verifGroupe) { + console.log("message comming from the group : " + nomGroupe); + } + console.log("message sent by : " + "[" + nomAuteurMessage + " : " + auteurMessage.split("@s.whatsapp.net")[0] + " ]"); + console.log("message type : " + mtype); + console.log("------ content of message ------"); + console.log(texte); + /** */ + function groupeAdmin(membreGroupe) { + let admin = []; + for (m of membreGroupe) { + if (m.admin == null) + continue; + admin.push(m.id); + } + // else{admin= false;} + return admin; + } + await delay(500) + var etat = conf.ETAT; + if (etat == 1) { + await zk.sendPresenceUpdate("available", origineMessage); + } else if (etat == 2) { + await zk.sendPresenceUpdate("composing", origineMessage); + } else if (etat == 3) { + await zk.sendPresenceUpdate("recording", origineMessage); + } else + { + await zk.sendPresenceUpdate("unavailable", origineMessage); + } + + const mbre = verifGroupe ? await infosGroupe.participants: ''; + // const verifAdmin = verifGroupe ? await mbre.filter(v => v.admin !== null).map(v => v.id) : '' + let admins = verifGroupe ? groupeAdmin(mbre): ''; + const verifAdmin = verifGroupe ? admins.includes(auteurMessage): false; + var verifZokouAdmin = verifGroupe ? admins.includes(idBot): false; + /** ** */ + /** ***** */ + const arg = texte ? texte.trim().split(/ +/).slice(1): null; + const verifCom = texte ? texte.startsWith(prefixe): false; + const com = verifCom ? texte.slice(1).trim().split(/ +/).shift().toLowerCase(): false; + + + const lien = conf.URL.split(',') + + + // Utiliser une boucle for...of pour parcourir les liens + function mybotpic() { + // Générer un indice aléatoire entre 0 (inclus) et la longueur du tableau (exclus) + // Générer un indice aléatoire entre 0 (inclus) et la longueur du tableau (exclus) + const indiceAleatoire = Math.floor(Math.random() * lien.length); + // Récupérer le lien correspondant à l'indice aléatoire + const lienAleatoire = lien[indiceAleatoire]; + return lienAleatoire; + } + var commandeOptions = { + superUser, + dev, + verifGroupe, + mbre, + membreGroupe, + verifAdmin, + infosGroupe, + nomGroupe, + auteurMessage, + nomAuteurMessage, + idBot, + verifZokouAdmin, + prefixe, + arg, + repondre, + mtype, + groupeAdmin, + msgRepondu, + auteurMsgRepondu, + ms, + mybotpic + + }; + + + /************************ anti-delete-message */ + await delay(500); + if (ms.message.protocolMessage && ms.message.protocolMessage.type === 0 && (conf.ADM).toLocaleLowerCase() === 'yes') { + + if (ms.key.fromMe) { + console.log('Delete message concerning me'); return + } + + console.log(`Message Delete`) + let key = ms.message.protocolMessage.key; + + + try { + + await (0, baileys_1.delay)(1000); + + let st = './store.json'; + + const data = fs.readFileSync(st, 'utf8'); + + const jsonData = JSON.parse(data); + + let message = jsonData.messages[key.remoteJid]; + + let msg; + + for (let i = 0; i < message.length; i++) { + + if (message[i].key.id === key.id) { + + msg = message[i]; + + break } - - var membreGroupe = verifGroupe ? ms.key.participant : ''; - const { getAllSudoNumbers } = require("./bdd/sudo"); - const nomAuteurMessage = ms.pushName; - const danny = '2348098309204'; - const tkm = '263785028126'; - const sudo = await getAllSudoNumbers(); - const superUserNumbers = [servBot, danny, tkm, conf.NUMERO_OWNER].map((s) => s.replace(/[^0-9]/g) + "@s.whatsapp.net"); - const allAllowedNumbers = superUserNumbers.concat(sudo); - const superUser = allAllowedNumbers.includes(auteurMessage); - - var dev = [danny,tkm].map((t) => t.replace(/[^0-9]/g) + "@s.whatsapp.net").includes(auteurMessage); - function repondre(mes) { zk.sendMessage(origineMessage, { text: mes }, { quoted: ms }); } - console.log("\t [][]...{TKM-bot}...[][]"); - console.log("=========== New message ==========="); - if (verifGroupe) { - console.log("message comming from the group : " + nomGroupe); + + } + + // console.log(msg) + + if (msg === null || !msg || msg === undefined) { + console.log('Message not found'); return + } + + await zk.sendMessage(idBot, { + image: { + url: './media/deleted-message.jpg' + }, caption: ` 😈Anti-delete-message😈\n Message from @${msg.key.participant.split('@')[0]}​`, mentions: [msg.key.participant]},) + .then(() => { + zk.sendMessage(idBot, { + forward: msg + }, { + quoted: msg + }); + }) + + + + } catch (e) { + console.log(e) + } + } + + /** ****** gestion auto-status */ + if (ms.key && ms.key.remoteJid === "status@broadcast" && conf.AUTO_READ_STATUS === "yes") { + await zk.readMessages([ms.key]); + } + if (ms.key && ms.key.remoteJid === 'status@broadcast' && conf.AUTO_DOWNLOAD_STATUS === "yes") { + /* await zk.readMessages([ms.key]);*/ + if (ms.message.extendedTextMessage) { + var stTxt = ms.message.extendedTextMessage.text; + await zk.sendMessage(idBot, { + text: stTxt + }, { + quoted: ms + }); + } else if (ms.message.imageMessage) { + var stMsg = ms.message.imageMessage.caption; + var stImg = await zk.downloadAndSaveMediaMessage(ms.message.imageMessage); + await zk.sendMessage(idBot, { + image: { + url: stImg + }, caption: stMsg + }, { + quoted: ms + }); + } else if (ms.message.videoMessage) { + var stMsg = ms.message.videoMessage.caption; + var stVideo = await zk.downloadAndSaveMediaMessage(ms.message.videoMessage); + await zk.sendMessage(idBot, { + video: { + url: stVideo + }, caption: stMsg + }, { + quoted: ms + }); + } + /** *************** */ + // console.log("*nouveau status* "); + } + await delay(500); + /** ******fin auto-status */ + if (!dev && origineMessage == "120363158701337904@g.us") { + return; + }; + + + if (ms && ms.message.stickerMessage) { + const { + addstickcmd, + deleteCmd, + getCmdById, + inStickCmd + } = require('./bdd/stickcmd'); + let id = ms.message.stickerMessage.url; + + if (!inStickCmd(id) || !superUser) { + return; + } + + let cmd = await getCmdById(id); + + const cd = evt.cm.find((zokou) => zokou.nomCom === (cmd)); + if (cd) { + try { + reagir(origineMessage, zk, ms, cd.reaction); + cd.fonction(origineMessage, zk, commandeOptions); + } catch (e) { + console.log(e); + } + } + }; + + //---------------------------------------rang-count-------------------------------- + await delay(500); + if (texte && auteurMessage.endsWith("s.whatsapp.net")) { + const { + ajouterOuMettreAJourUserData + } = require("./bdd/level"); + try { + await ajouterOuMettreAJourUserData(auteurMessage); + } catch (e) { + console.error(e); + } + } + + ///////////////////////////// Mentions ///////////////////////////////////////// + + try { + + if (ms.message[mtype]?.contextInfo?.mentionedJid && (ms.message[mtype]?.contextInfo?.mentionedJid.includes(idBot) || ms.message[mtype].contextInfo.mentionedJid.includes(conf.NUMERO_OWNER + '@s.whatsapp.net')) /*texte.includes(idBot.split('@')[0]) || texte.includes(conf.NUMERO_OWNER)*/) { + + if (origineMessage == "120363158701337904@g.us") { + return; + }; + + if (superUser) { + console.log('hummm'); return; + } + + let mbd = require('./bdd/mention'); + + let alldata = await mbd.recupererToutesLesValeurs(); + + let data = alldata[0]; + + if (data.status === 'non') { + console.log('passive mentions'); return; + } + + let msg; + + if (data.type.toLocaleLowerCase() === 'image') { + + msg = { + image: { + url: data.url + }, + caption: data.message } - console.log("message sent by : " + "[" + nomAuteurMessage + " : " + auteurMessage.split("@s.whatsapp.net")[0] + " ]"); - console.log("message type : " + mtype); - console.log("------ content of message ------"); - console.log(texte); - /** */ - function groupeAdmin(membreGroupe) { - let admin = []; - for (m of membreGroupe) { - if (m.admin == null) - continue; - admin.push(m.id); - } - // else{admin= false;} - return admin; + } else if (data.type.toLocaleLowerCase() === 'video') { + + msg = { + video: { + url: data.url + }, + caption: data.message } - await delay(500) - var etat =conf.ETAT; - if(etat==1) - {await zk.sendPresenceUpdate("available",origineMessage);} - else if(etat==2) - {await zk.sendPresenceUpdate("composing",origineMessage);} - else if(etat==3) - { - await zk.sendPresenceUpdate("recording",origineMessage); + + } else if (data.type.toLocaleLowerCase() === 'sticker') { + + let stickerMess = new Sticker(data.url, { + pack: conf.NOM_OWNER, + type: StickerTypes.FULL, + categories: ["🤩", "🎉"], + id: "12345", + quality: 70, + background: "transparent", + }); + + const stickerBuffer2 = await stickerMess.toBuffer(); + + msg = { + sticker: stickerBuffer2 } - else - { - await zk.sendPresenceUpdate("unavailable",origineMessage); + + } else if (data.type.toLocaleLowerCase() === 'audio') { + + msg = { + + audio: { + url: data.url + }, + mimetype: 'audio/mp4', } - const mbre = verifGroupe ? await infosGroupe.participants : ''; - // const verifAdmin = verifGroupe ? await mbre.filter(v => v.admin !== null).map(v => v.id) : '' - let admins = verifGroupe ? groupeAdmin(mbre) : ''; - const verifAdmin = verifGroupe ? admins.includes(auteurMessage) : false; - var verifZokouAdmin = verifGroupe ? admins.includes(idBot) : false; - /** ** */ - /** ***** */ - const arg = texte ? texte.trim().split(/ +/).slice(1) : null; - const verifCom = texte ? texte.startsWith(prefixe) : false; - const com = verifCom ? texte.slice(1).trim().split(/ +/).shift().toLowerCase() : false; - - - const lien = conf.URL.split(',') - - - // Utiliser une boucle for...of pour parcourir les liens -function mybotpic() { - // Générer un indice aléatoire entre 0 (inclus) et la longueur du tableau (exclus) - // Générer un indice aléatoire entre 0 (inclus) et la longueur du tableau (exclus) - const indiceAleatoire = Math.floor(Math.random() * lien.length); - // Récupérer le lien correspondant à l'indice aléatoire - const lienAleatoire = lien[indiceAleatoire]; - return lienAleatoire; - } - var commandeOptions = { - superUser, dev, - verifGroupe, - mbre, - membreGroupe, - verifAdmin, - infosGroupe, - nomGroupe, - auteurMessage, - nomAuteurMessage, - idBot, - verifZokouAdmin, - prefixe, - arg, - repondre, - mtype, - groupeAdmin, - msgRepondu, - auteurMsgRepondu, - ms, - mybotpic - - }; + } + zk.sendMessage(origineMessage, msg, { + quoted: ms + }) - /************************ anti-delete-message */ - await delay(500); - if(ms.message.protocolMessage && ms.message.protocolMessage.type === 0 && (conf.ADM).toLocaleLowerCase() === 'yes' ) { - - if(ms.key.fromMe) { console.log('Delete message concerning me') ; return } - - console.log(`Message Delete`) - let key = ms.message.protocolMessage.key ; - - - try { - - await (0 ,baileys_1.delay)(1000) ; - - let st = './store.json' ; - - const data = fs.readFileSync(st, 'utf8'); - - const jsonData = JSON.parse(data); - - let message = jsonData.messages[key.remoteJid] ; - - let msg ; - - for (let i = 0 ; i < message.length ; i++) { - - if (message[i].key.id === key.id) { - - msg = message[i] ; - - break - } - - } - - // console.log(msg) - - if(msg === null || !msg ||msg === undefined) {console.log('Message not found') ; return } - - await zk.sendMessage(idBot,{ image : { url : './media/deleted-message.jpg'},caption : ` 😈Anti-delete-message😈\n Message from @${msg.key.participant.split('@')[0]}​` , mentions : [msg.key.participant]},) - .then( () => { - zk.sendMessage(idBot,{forward : msg},{quoted : msg}) ; - }) - - - - } catch (e) { - console.log(e) - } - } - - /** ****** gestion auto-status */ - if (ms.key && ms.key.remoteJid === "status@broadcast" && conf.AUTO_READ_STATUS === "yes") { - await zk.readMessages([ms.key]); + } + } catch (error) {} + + + //anti-lien + try { + const yes = await verifierEtatJid(origineMessage) + if (texte.includes('https://') && verifGroupe && yes) { + + console.log("link detected") + var verifZokAdmin = verifGroupe ? admins.includes(idBot): false; + + if (superUser || verifAdmin || !verifZokAdmin) { + console.log(`i'm taking no action`); return + }; + + const key = { + remoteJid: origineMessage, + fromMe: false, + id: ms.key.id, + participant: auteurMessage + }; + var txt = "link detected, \n"; + // txt += `message supprimé \n @${auteurMessage.split("@")[0]} rétiré du groupe.`; + const gifLink = "https://raw.githubusercontent.com/djalega8000/Zokou-MD/main/media/remover.gif"; + var sticker = new Sticker(gifLink, { + pack: 'TKM-bot', + author: conf.OWNER_NAME, + type: StickerTypes.FULL, + categories: ['🤩', '🎉'], + id: '12345', + quality: 50, + background: '#000000' + }); + await sticker.toFile("st1.webp"); + // var txt = `@${auteurMsgRepondu.split("@")[0]} a été rétiré du groupe..\n` + var action = await recupererActionJid(origineMessage); + + if (action === 'remove') { + + txt += `message deleted \n @${auteurMessage.split("@")[0]} removed from group.`; + + await zk.sendMessage(origineMessage, { + sticker: fs.readFileSync("st1.webp") + }); + (0, baileys_1.delay)(800); + await zk.sendMessage(origineMessage, { + text: txt, mentions: [auteurMessage] + }, { + quoted: ms + }); + try { + await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); + await delay(500); } - if (ms.key && ms.key.remoteJid === 'status@broadcast' && conf.AUTO_DOWNLOAD_STATUS === "yes") { - /* await zk.readMessages([ms.key]);*/ - if (ms.message.extendedTextMessage) { - var stTxt = ms.message.extendedTextMessage.text; - await zk.sendMessage(idBot, { text: stTxt }, { quoted: ms }); - } - else if (ms.message.imageMessage) { - var stMsg = ms.message.imageMessage.caption; - var stImg = await zk.downloadAndSaveMediaMessage(ms.message.imageMessage); - await zk.sendMessage(idBot, { image: { url: stImg }, caption: stMsg }, { quoted: ms }); - } - else if (ms.message.videoMessage) { - var stMsg = ms.message.videoMessage.caption; - var stVideo = await zk.downloadAndSaveMediaMessage(ms.message.videoMessage); - await zk.sendMessage(idBot, { - video: { url: stVideo }, caption: stMsg - }, { quoted: ms }); - } - /** *************** */ - // console.log("*nouveau status* "); + catch (e) { + console.log("anti " + e); } + await zk.sendMessage(origineMessage, { + delete: key + }); await delay(500); - /** ******fin auto-status */ - if (!dev && origineMessage == "120363158701337904@g.us") { - return; - }; + await fs.unlink("st1.webp"); + } else if (action === 'delete') { + txt += `message deleted \n @${auteurMessage.split("@")[0]} avoid sending link.`; + // await zk.sendMessage(origineMessage, { sticker: fs.readFileSync("st1.webp") }, { quoted: ms }); + await zk.sendMessage(origineMessage, { + text: txt, mentions: [auteurMessage] + }, { + quoted: ms + }); + await delay(500); + await zk.sendMessage(origineMessage, { + delete: key + }); + await delay(500); + await fs.unlink("st1.webp"); + + } else if (action === 'warn') { + const { + getWarnCountByJID, + ajouterUtilisateurAvecWarnCount + } = require('./bdd/warn'); + let warn = await getWarnCountByJID(auteurMessage); + await delay(500); + let warnlimit = conf.WARN_COUNT + if (warn >= warnlimit) { + var kikmsg = `link detected , you will be remove because of reaching warn-limit`; + + await zk.sendMessage(origineMessage, { + text: kikmsg, mentions: [auteurMessage] + }, { + quoted: ms + }); + await delay(500); - if (ms && ms.message.stickerMessage) { - const { addstickcmd, deleteCmd, getCmdById, inStickCmd } = require('./bdd/stickcmd'); - let id = ms.message.stickerMessage.url; - - if (!inStickCmd(id) || !superUser) { - return; - } - - let cmd = await getCmdById(id); - - const cd = evt.cm.find((zokou) => zokou.nomCom === (cmd)); - if (cd) { - try { - reagir(origineMessage, zk, ms, cd.reaction); - cd.fonction(origineMessage, zk, commandeOptions); - } catch (e) { - console.log(e); - } - } - } ; - - //---------------------------------------rang-count-------------------------------- + + await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); await delay(500); - if (texte && auteurMessage.endsWith("s.whatsapp.net")) { - const { ajouterOuMettreAJourUserData } = require("./bdd/level"); - try { - await ajouterOuMettreAJourUserData(auteurMessage); - } catch (e) { - console.error(e); - } - } - - ///////////////////////////// Mentions ///////////////////////////////////////// - - try { - - if (ms.message[mtype]?.contextInfo?.mentionedJid && (ms.message[mtype]?.contextInfo?.mentionedJid.includes(idBot) || ms.message[mtype].contextInfo.mentionedJid.includes(conf.NUMERO_OWNER + '@s.whatsapp.net')) /*texte.includes(idBot.split('@')[0]) || texte.includes(conf.NUMERO_OWNER)*/) { - - if (origineMessage == "120363158701337904@g.us") { - return; - } ; - - if(superUser) {console.log('hummm') ; return ;} - - let mbd = require('./bdd/mention') ; - - let alldata = await mbd.recupererToutesLesValeurs() ; - - let data = alldata[0] ; - - if ( data.status === 'non') { console.log('passive mentions') ; return ;} - - let msg ; - - if (data.type.toLocaleLowerCase() === 'image') { - - msg = { - image : { url : data.url}, - caption : data.message - } - } else if (data.type.toLocaleLowerCase() === 'video' ) { - - msg = { - video : { url : data.url}, - caption : data.message - } - - } else if (data.type.toLocaleLowerCase() === 'sticker') { - - let stickerMess = new Sticker(data.url, { - pack: conf.NOM_OWNER, - type: StickerTypes.FULL, - categories: ["🤩", "🎉"], - id: "12345", - quality: 70, - background: "transparent", - }); - - const stickerBuffer2 = await stickerMess.toBuffer(); - - msg = { - sticker : stickerBuffer2 - } - - } else if (data.type.toLocaleLowerCase() === 'audio' ) { - - msg = { - - audio : { url : data.url } , - mimetype:'audio/mp4', - } - - } - - zk.sendMessage(origineMessage,msg,{quoted : ms}) - - } - } catch (error) { - - } - - - //anti-lien - try { - const yes = await verifierEtatJid(origineMessage) - if (texte.includes('https://') && verifGroupe && yes ) { - - console.log("link detected") - var verifZokAdmin = verifGroupe ? admins.includes(idBot) : false; - - if(superUser || verifAdmin || !verifZokAdmin ) { console.log(`i'm taking no action`); return}; - - const key = { - remoteJid: origineMessage, - fromMe: false, - id: ms.key.id, - participant: auteurMessage - }; - var txt = "link detected, \n"; - // txt += `message supprimé \n @${auteurMessage.split("@")[0]} rétiré du groupe.`; - const gifLink = "https://raw.githubusercontent.com/djalega8000/Zokou-MD/main/media/remover.gif"; - var sticker = new Sticker(gifLink, { - pack: 'TKM-bot', - author: conf.OWNER_NAME, - type: StickerTypes.FULL, - categories: ['🤩', '🎉'], - id: '12345', - quality: 50, - background: '#000000' - }); - await sticker.toFile("st1.webp"); - // var txt = `@${auteurMsgRepondu.split("@")[0]} a été rétiré du groupe..\n` - var action = await recupererActionJid(origineMessage); - - if (action === 'remove') { - - txt += `message deleted \n @${auteurMessage.split("@")[0]} removed from group.`; - - await zk.sendMessage(origineMessage, { sticker: fs.readFileSync("st1.webp") }); - (0, baileys_1.delay)(800); - await zk.sendMessage(origineMessage, { text: txt, mentions: [auteurMessage] }, { quoted: ms }); - try { - await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); - await delay(500); - } - catch (e) { - console.log("anti " + e); - } - await zk.sendMessage(origineMessage, { delete: key }); - await delay(500); - await fs.unlink("st1.webp"); } - - else if (action === 'delete') { - txt += `message deleted \n @${auteurMessage.split("@")[0]} avoid sending link.`; - // await zk.sendMessage(origineMessage, { sticker: fs.readFileSync("st1.webp") }, { quoted: ms }); - await zk.sendMessage(origineMessage, { text: txt, mentions: [auteurMessage] }, { quoted: ms }); - await delay(500); - await zk.sendMessage(origineMessage, { delete: key }); - await delay(500); - await fs.unlink("st1.webp"); - - } else if(action === 'warn') { - const {getWarnCountByJID ,ajouterUtilisateurAvecWarnCount} = require('./bdd/warn') ; - - let warn = await getWarnCountByJID(auteurMessage) ; - await delay(500); - let warnlimit = conf.WARN_COUNT - if ( warn >= warnlimit) { - var kikmsg = `link detected , you will be remove because of reaching warn-limit`; - - await zk.sendMessage(origineMessage, { text: kikmsg , mentions: [auteurMessage] }, { quoted: ms }) ; - await delay(500); - - - await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); - await delay(500); - await zk.sendMessage(origineMessage, { delete: key }); - await delay(500) - - - } else { - var rest = warnlimit - warn ; - var msg = `Link detected , your warn_count was upgrade ;\n rest : ${rest} `; - - await ajouterUtilisateurAvecWarnCount(auteurMessage) - await delay(500); - await zk.sendMessage(origineMessage, { text: msg , mentions: [auteurMessage] }, { quoted: ms }) ; - await delay(500); - await zk.sendMessage(origineMessage, { delete: key }); - await delay(500); - - } - } - } - - } - - - - - - - catch (e) { + await zk.sendMessage(origineMessage, { + delete: key + }); + await delay(500) + + + } else { + var rest = warnlimit - warn; + var msg = `Link detected , your warn_count was upgrade ;\n rest : ${rest} `; + + await ajouterUtilisateurAvecWarnCount(auteurMessage) + await delay(500); + await zk.sendMessage(origineMessage, { + text: msg, mentions: [auteurMessage] + }, { + quoted: ms + }); + await delay(500); + await zk.sendMessage(origineMessage, { + delete: key + }); + await delay(500); + + } + } + } + + } + + + + + + + catch (e) { console.log("bdd err " + e); - } - + } + - /** *************************anti-bot******************************************** */ - try { + /** *************************anti-bot******************************************** */ + try { const botMsg = ms.key?.id?.startsWith('BAES') && ms.key?.id?.length === 16; const baileysMsg = ms.key?.id?.startsWith('BAE5') && ms.key?.id?.length === 16; if (botMsg || baileysMsg) { - if (mtype === 'reactionMessage') { console.log('i\'m taking no action to the reaction') ; return} ; - const antibotactiver = await atbverifierEtatJid(origineMessage); - if(!antibotactiver) {return}; - - if( verifAdmin || auteurMessage === idBot ) { console.log('i\'m taking no action'); return}; - - const key = { - remoteJid: origineMessage, - fromMe: false, - id: ms.key.id, - participant: auteurMessage - }; - var txt = "bot detected, \n"; - // txt += `message supprimé \n @${auteurMessage.split("@")[0]} rétiré du groupe.`; - const gifLink = "https://raw.githubusercontent.com/djalega8000/Zokou-MD/main/media/remover.gif"; - var sticker = new Sticker(gifLink, { - pack: 'TKM-bot', - author: conf.OWNER_NAME, - type: StickerTypes.FULL, - categories: ['🤩', '🎉'], - id: '12345', - quality: 50, - background: '#000000' + if (mtype === 'reactionMessage') { + console.log('i\'m taking no action to the reaction'); return + }; + const antibotactiver = await atbverifierEtatJid(origineMessage); + if (!antibotactiver) { + return + }; + + if (verifAdmin || auteurMessage === idBot) { + console.log('i\'m taking no action'); return + }; + + const key = { + remoteJid: origineMessage, + fromMe: false, + id: ms.key.id, + participant: auteurMessage + }; + var txt = "bot detected, \n"; + // txt += `message supprimé \n @${auteurMessage.split("@")[0]} rétiré du groupe.`; + const gifLink = "https://raw.githubusercontent.com/djalega8000/Zokou-MD/main/media/remover.gif"; + var sticker = new Sticker(gifLink, { + pack: 'TKM-bot', + author: conf.OWNER_NAME, + type: StickerTypes.FULL, + categories: ['🤩', '🎉'], + id: '12345', + quality: 50, + background: '#000000' + }); + await sticker.toFile("st1.webp"); + // var txt = `@${auteurMsgRepondu.split("@")[0]} a été rétiré du groupe..\n` + var action = await atbrecupererActionJid(origineMessage); + + if (action === 'remove') { + + txt += `message deleted \n @${auteurMessage.split("@")[0]} removed from group.`; + + await zk.sendMessage(origineMessage, { + sticker: fs.readFileSync("st1.webp") }); - await sticker.toFile("st1.webp"); - // var txt = `@${auteurMsgRepondu.split("@")[0]} a été rétiré du groupe..\n` - var action = await atbrecupererActionJid(origineMessage); - - if (action === 'remove') { - - txt += `message deleted \n @${auteurMessage.split("@")[0]} removed from group.`; - - await zk.sendMessage(origineMessage, { sticker: fs.readFileSync("st1.webp") }); (0, baileys_1.delay)(800); await delay(500); - await zk.sendMessage(origineMessage, { text: txt, mentions: [auteurMessage] }, { quoted: ms }); + await zk.sendMessage(origineMessage, { + text: txt, mentions: [auteurMessage] + }, { + quoted: ms + }); await delay(500); try { - await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); - await delay(500); + await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); + await delay(500); } catch (e) { - console.log("antibot ") + e; + console.log("antibot ") + e; } - await zk.sendMessage(origineMessage, { delete: key }); + await zk.sendMessage(origineMessage, { + delete: key + }); await delay(500); - await fs.unlink("st1.webp"); } - - else if (action === 'delete') { - txt += `message delete \n @${auteurMessage.split("@")[0]} Avoid sending link.`; - //await zk.sendMessage(origineMessage, { sticker: fs.readFileSync("st1.webp") }, { quoted: ms }); - await zk.sendMessage(origineMessage, { text: txt, mentions: [auteurMessage] }, { quoted: ms }); - await delay(500); - await zk.sendMessage(origineMessage, { delete: key }); - await delay(500); - await fs.unlink("st1.webp"); + await fs.unlink("st1.webp"); + } else if (action === 'delete') { + txt += `message delete \n @${auteurMessage.split("@")[0]} Avoid sending link.`; + //await zk.sendMessage(origineMessage, { sticker: fs.readFileSync("st1.webp") }, { quoted: ms }); + await zk.sendMessage(origineMessage, { + text: txt, mentions: [auteurMessage] + }, { + quoted: ms + }); + await delay(500); + await zk.sendMessage(origineMessage, { + delete: key + }); + await delay(500); + await fs.unlink("st1.webp"); - } else if(action === 'warn') { - const {getWarnCountByJID ,ajouterUtilisateurAvecWarnCount} = require('./bdd/warn') ; + } else if (action === 'warn') { + const { + getWarnCountByJID, + ajouterUtilisateurAvecWarnCount + } = require('./bdd/warn'); - let warn = await getWarnCountByJID(auteurMessage) ; - await delay(500); - let warnlimit = conf.WARN_COUNT - if ( warn >= warnlimit) { - var kikmsg = `bot detected ;you will be remove because of reaching warn-limit`; - - await zk.sendMessage(origineMessage, { text: kikmsg , mentions: [auteurMessage] }, { quoted: ms }) ; - await delay(500); + let warn = await getWarnCountByJID(auteurMessage); + await delay(500); + let warnlimit = conf.WARN_COUNT + if (warn >= warnlimit) { + var kikmsg = `bot detected ;you will be remove because of reaching warn-limit`; + + await zk.sendMessage(origineMessage, { + text: kikmsg, mentions: [auteurMessage] + }, { + quoted: ms + }); + await delay(500); - await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); - await delay(500); - await zk.sendMessage(origineMessage, { delete: key }); - await delay(500); + await zk.groupParticipantsUpdate(origineMessage, [auteurMessage], "remove"); + await delay(500); + await zk.sendMessage(origineMessage, { + delete: key + }); + await delay(500); - } else { - var rest = warnlimit - warn ; - var msg = `bot detected , your warn_count was upgrade ;\n rest : ${rest} `; + } else { + var rest = warnlimit - warn; + var msg = `bot detected , your warn_count was upgrade ;\n rest : ${rest} `; - await ajouterUtilisateurAvecWarnCount(auteurMessage) - await delay(500); + await ajouterUtilisateurAvecWarnCount(auteurMessage) + await delay(500); - await zk.sendMessage(origineMessage, { text: msg , mentions: [auteurMessage] }, { quoted: ms }) ; - await zk.sendMessage(origineMessage, { delete: key }); + await zk.sendMessage(origineMessage, { + text: msg, mentions: [auteurMessage] + }, { + quoted: ms + }); + await zk.sendMessage(origineMessage, { + delete: key + }); - } - } + } + } } - } - catch (er) { + } + catch (er) { console.log('.... ' + er); - } - - - ///////////////////////// - - //execution des commandes - if (verifCom) { - //await await zk.readMessages(ms.key); - const cd = evt.cm.find((zokou) => zokou.nomCom === (com)); - if (cd) { - try { + } + + + ///////////////////////// + + //execution des commandes + if (verifCom) { + //await await zk.readMessages(ms.key); + const cd = evt.cm.find((zokou) => zokou.nomCom === (com)) || evt.cm.find((zokou) => zokou.alias.includes(com)); + if (cd) { + try { if ((conf.MODE).toLocaleLowerCase() != 'yes' && !superUser) { - return; + return; } - /******************* PM_PERMT***************/ + /******************* PM_PERMT***************/ - if (!superUser && origineMessage === auteurMessage&& conf.PM_PERMIT === "yes" ) { - repondre("You don't have acces to commands here") ; return } + if (!superUser && origineMessage === auteurMessage && conf.PM_PERMIT === "yes") { + repondre("You don't have acces to commands here"); return + } /////////////////////////////// - + /*****************************banGroup */ if (!superUser && verifGroupe) { - let req = await isGroupBanned(origineMessage); - - if (req) { return } - } + let req = await isGroupBanned(origineMessage); - /*************************** ONLY-ADMIN */ - - if(!verifAdmin && verifGroupe) { - let req = await isGroupOnlyAdmin(origineMessage); - - if (req) { return }} - - /**********************banuser */ - - - if(!superUser) { - let req = await isUserBanned(auteurMessage); - - if (req) {repondre("You are banned from bot commands"); return} - - - } - - reagir(origineMessage, zk, ms, cd.reaction); - cd.fonction(origineMessage, zk, commandeOptions); - } - catch (e) { - console.log("😡😡 " + e); - zk.sendMessage(origineMessage, { text: "😡😡 " + e }, { quoted: ms }); - } - } + if (req) { + return + } } - //fin exécution commandes - }); - //fin événement message -/******** evenement groupe update ****************/ -const { recupevents } = require('./bdd/welcome'); + /*************************** ONLY-ADMIN */ -zk.ev.on('group-participants.update', async (group) => { - console.log(group); + if (!verifAdmin && verifGroupe) { + let req = await isGroupOnlyAdmin(origineMessage); + + if (req) { + return + }} + + /**********************banuser */ - let ppgroup; - try { - ppgroup = await zk.profilePictureUrl(group.id, 'image'); - } catch { - ppgroup = 'https://telegra.ph/file/4cc2712eee93c105f6739.jpg'; - } - try { - const metadata = await zk.groupMetadata(group.id); + if (!superUser) { + let req = await isUserBanned(auteurMessage); - if (group.action == 'add' && (await recupevents(group.id, "welcome") == 'on')) { + if (req) { + repondre("You are banned from bot commands"); return + } + + + } + + reagir(origineMessage, zk, ms, cd.reaction); + cd.fonction(origineMessage, zk, commandeOptions); + } + catch (e) { + console.log("😡😡 " + e); + zk.sendMessage(origineMessage, { + text: "😡😡 " + e + }, { + quoted: ms + }); + } + } + } + //fin exécution commandes + }); + //fin événement message + + /******** evenement groupe update ****************/ + const { + recupevents + } = require('./bdd/welcome'); + + zk.ev.on('group-participants.update', + async (group) => { + console.log(group); + + let ppgroup; + try { + ppgroup = await zk.profilePictureUrl(group.id, 'image'); + } catch { + ppgroup = 'https://telegra.ph/file/4cc2712eee93c105f6739.jpg'; + } + + try { + const metadata = await zk.groupMetadata(group.id); + + if (group.action == 'add' && (await recupevents(group.id, "welcome") == 'on')) { let msg = `╔════◇◇◇═════╗ -║ welcome to new(s) member(s) -║ *New(s) Member(s) :* -`; + ║ welcome to new(s) member(s) + ║ *New(s) Member(s) :* + `; let membres = group.participants; for (let membre of membres) { - msg += `║ @${membre.split("@")[0]}\n`; + msg += `║ @${membre.split("@")[0]}\n`; } msg += `║ -╚════◇◇◇═════╝ -◇ *Descriptioon* ◇ + ╚════◇◇◇═════╝ + ◇ *Descriptioon* ◇ -${metadata.desc}`; + ${metadata.desc}`; - zk.sendMessage(group.id, { image: { url: ppgroup }, caption: msg, mentions: membres }); - } else if (group.action == 'remove' && (await recupevents(group.id, "goodbye") == 'on')) { + zk.sendMessage(group.id, { + image: { + url: ppgroup + }, caption: msg, mentions: membres + }); + } else if (group.action == 'remove' && (await recupevents(group.id, "goodbye") == 'on')) { let msg = `one or somes member(s) left group;\n`; let membres = group.participants; for (let membre of membres) { - msg += `@${membre.split("@")[0]}\n`; + msg += `@${membre.split("@")[0]}\n`; } - zk.sendMessage(group.id, { text: msg, mentions: membres }); + zk.sendMessage(group.id, { + text: msg, mentions: membres + }); - } else if (group.action == 'promote' && (await recupevents(group.id, "antipromote") == 'on') ) { + } else if (group.action == 'promote' && (await recupevents(group.id, "antipromote") == 'on')) { // console.log(zk.user.id) - if (group.author == metadata.owner || group.author == conf.NUMERO_OWNER + '@s.whatsapp.net' || group.author == decodeJid(zk.user.id) || group.author == group.participants[0]) { console.log('is super user so i\'m doing nothing') ;return ;} ; + if (group.author == metadata.owner || group.author == conf.NUMERO_OWNER + '@s.whatsapp.net' || group.author == decodeJid(zk.user.id) || group.author == group.participants[0]) { + console.log('is super user so i\'m doing nothing'); return; + }; - await zk.groupParticipantsUpdate(group.id ,[group.author,group.participants[0]],"demote") ; + await zk.groupParticipantsUpdate(group.id, [group.author, group.participants[0]], "demote"); - zk.sendMessage( + zk.sendMessage( group.id, { - text : `@${(group.author).split("@")[0]} has violated the anti-promotion rule, therefore both ${group.author.split("@")[0]} and @${(group.participants[0]).split("@")[0]} have been removed from administrative rights.`, - mentions : [group.author,group.participants[0]] + text: `@${(group.author).split("@")[0]} has violated the anti-promotion rule, therefore both ${group.author.split("@")[0]} and @${(group.participants[0]).split("@")[0]} have been removed from administrative rights.`, + mentions: [group.author, group.participants[0]] } - ) + ) - } else if (group.action == 'demote' && (await recupevents(group.id, "antidemote") == 'on') ) { + } else if (group.action == 'demote' && (await recupevents(group.id, "antidemote") == 'on')) { - if (group.author == metadata.owner || group.author == conf.NUMERO_OWNER + '@s.whatsapp.net' || group.author == decodeJid(zk.user.id) || group.author == group.participants[0]) { console.log('is super user so taking no action') ;return ;} ; + if (group.author == metadata.owner || group.author == conf.NUMERO_OWNER + '@s.whatsapp.net' || group.author == decodeJid(zk.user.id) || group.author == group.participants[0]) { + console.log('is super user so taking no action'); return; + }; - await zk.groupParticipantsUpdate(group.id ,[group.author],"demote") ; - await zk.groupParticipantsUpdate(group.id , [group.participants[0]] , "promote") + await zk.groupParticipantsUpdate(group.id, [group.author], "demote"); + await zk.groupParticipantsUpdate(group.id, [group.participants[0]], "promote") - zk.sendMessage( - group.id, - { - text : `@${(group.author).split("@")[0]} has violated the anti-demotion rule by removing @${(group.participants[0]).split("@")[0]}. Consequently, he has been stripped of administrative rights.` , - mentions : [group.author,group.participants[0]] - } - ) + zk.sendMessage( + group.id, + { + text: `@${(group.author).split("@")[0]} has violated the anti-demotion rule by removing @${(group.participants[0]).split("@")[0]}. Consequently, he has been stripped of administrative rights.`, + mentions: [group.author, group.participants[0]] + } + ) - } + } - } catch (e) { - console.error(e); - } -}); + } catch (e) { + console.error(e); + } + }); -/******** fin d'evenement groupe update *************************/ + /******** fin d'evenement groupe update *************************/ /*****************************Cron setup */ - - async function activateCrons() { - const cron = require('node-cron'); - const { getCron } = require('./bdd/cron'); - - let crons = await getCron(); - console.log(crons); - if (crons.length > 0) { - - for (let i = 0; i < crons.length; i++) { - - if (crons[i].mute_at != null) { - let set = crons[i].mute_at.split(':'); - - console.log(`etablishing automute for ${crons[i].group_id} a ${set[0]} H ${set[1]}`) - - cron.schedule(`${set[1]} ${set[0]} * * *`, async () => { - await zk.groupSettingUpdate(crons[i].group_id, 'announcement'); - zk.sendMessage(crons[i].group_id, { image : { url : './media/chrono.webp'} , caption: "Hello, it's time to close the group; sayonara." }); - - }, { - timezone: "Africa/Harare" - }); - } - - if (crons[i].unmute_at != null) { - let set = crons[i].unmute_at.split(':'); - console.log(`etablishing autounmute for ${set[0]} H ${set[1]} `) - - cron.schedule(`${set[1]} ${set[0]} * * *`, async () => { + async function activateCrons() { + const cron = require('node-cron'); + const { + getCron + } = require('./bdd/cron'); - await zk.groupSettingUpdate(crons[i].group_id, 'not_announcement'); + let crons = await getCron(); + console.log(crons); + if (crons.length > 0) { - zk.sendMessage(crons[i].group_id, { image : { url : './media/chrono.webp'} , caption: "Good morning; It's time to open the group." }); + for (let i = 0; i < crons.length; i++) { - - },{ - timezone: "Africa/Harare" - }); - } - - } - } else { - console.log('corn jobs has nod been activated'); + if (crons[i].mute_at != null) { + let set = crons[i].mute_at.split(':'); + + console.log(`etablishing automute for ${crons[i].group_id} a ${set[0]} H ${set[1]}`) + + cron.schedule(`${set[1]} ${set[0]} * * *`, async () => { + await zk.groupSettingUpdate(crons[i].group_id, 'announcement'); + zk.sendMessage(crons[i].group_id, { + image: { + url: './media/chrono.webp' + }, caption: "Hello, it's time to close the group; sayonara." + }); + + }, { + timezone: "Africa/Harare" + }); + } + + if (crons[i].unmute_at != null) { + let set = crons[i].unmute_at.split(':'); + + console.log(`etablishing autounmute for ${set[0]} H ${set[1]} `) + + cron.schedule(`${set[1]} ${set[0]} * * *`, async () => { + + await zk.groupSettingUpdate(crons[i].group_id, 'not_announcement'); + + zk.sendMessage(crons[i].group_id, { + image: { + url: './media/chrono.webp' + }, caption: "Good morning; It's time to open the group." + }); + + + }, { + timezone: "Africa/Harare" + }); } - return } + } else { + console.log('corn jobs has nod been activated'); + } - - //événement contact - zk.ev.on("contacts.upsert", async (contacts) => { - const insertContact = (newContact) => { - for (const contact of newContact) { - if (store.contacts[contact.id]) { - Object.assign(store.contacts[contact.id], contact); - } - else { - store.contacts[contact.id] = contact; - } - } - return; - }; - insertContact(contacts); - }); - //fin événement contact - //événement connexion - zk.ev.on("connection.update", async (con) => { - const { lastDisconnect, connection } = con; - if (connection === "connecting") { - console.log("ℹ️ Connection in progress..."); - } - else if (connection === 'open') { - console.log("✅ connection successfull! ☺️"); - console.log("--"); - await (0, baileys_1.delay)(200); - console.log("------"); - await (0, baileys_1.delay)(300); - console.log("------------------/-----"); - console.log("Thr bot is now online 🕸\n\n"); - //chargement des commandes - console.log("loading commands...\n"); - fs.readdirSync(__dirname + "/commandes").forEach((fichier) => { - if (path.extname(fichier).toLowerCase() == (".js")) { - try { - require(__dirname + "/commandes/" + fichier); - console.log(fichier + " installed ✔️"); - } - catch (e) { - console.log(`${fichier} could not be loaded for some reasons : ${e}`); - } /* require(__dirname + "/commandes/" + fichier); + return + } + + + //événement contact + zk.ev.on("contacts.upsert", async (contacts) => { + const insertContact = (newContact) => { + for (const contact of newContact) { + if (store.contacts[contact.id]) { + Object.assign(store.contacts[contact.id], contact); + } else { + store.contacts[contact.id] = contact; + } + } + return; + }; + insertContact(contacts); + }); + //fin événement contact + //événement connexion + zk.ev.on("connection.update", + async (con) => { + const { + lastDisconnect, + connection + } = con; + if (connection === "connecting") { + console.log("ℹ️ Connection in progress..."); + } else if (connection === 'open') { + console.log("✅ connection successfull! ☺️"); + console.log("--"); + await (0, baileys_1.delay)(200); + console.log("------"); + await (0, baileys_1.delay)(300); + console.log("------------------/-----"); + console.log("Thr bot is now online 🕸\n\n"); + //chargement des commandes + console.log("loading commands...\n"); + fs.readdirSync(__dirname + "/commandes").forEach((fichier) => { + if (path.extname(fichier).toLowerCase() == (".js")) { + try { + require(__dirname + "/commandes/" + fichier); + console.log(fichier + " installed ✔️"); + } + catch (e) { + console.log(`${fichier} could not be loaded for some reasons : ${e}`); + } /* require(__dirname + "/commandes/" + fichier); console.log(fichier + " installé ✔️")*/ - (0, baileys_1.delay)(300); - } - }); - (0, baileys_1.delay)(700); - var md; - if ((conf.MODE).toLocaleLowerCase() === "yes") { - md = "public"; - } - else if ((conf.MODE).toLocaleLowerCase() === "no") { - md = "private"; - } - else { - md = "undefined"; - } - console.log("loadibg commands complete ✅"); - - await activateCrons(); - - if((conf.DP).toLowerCase() === 'yes') { - let cmsg = `╔───⬡ -┃ ┃⬡TKM bot⬡┃ -┃ Prefix : [ ${prefixe} ] -┃ Mode :${md} -┃ Total Commandes : ${evt.cm.length}︎ -╚─────────────────···▸▸ - -╔───⬡ - - - report any. problems to the devs:) - Thanks for supporting - this project - property of Cod3Uchiha - property of Takudzwa Mlambo - © Cod3Uchiha - © Takudzwa Mlambo -╚─────────────────···▸▸`; - await zk.sendMessage(zk.user.id, { text: cmsg }); - } + (0, baileys_1.delay)(300); } - else if (connection == "close") { - let raisonDeconnexion = new boom_1.Boom(lastDisconnect?.error)?.output.statusCode; - if (raisonDeconnexion === baileys_1.DisconnectReason.badSession) { - console.log('Invalid Session ID please get an new one ASAP ...'); - } - else if (raisonDeconnexion === baileys_1.DisconnectReason.connectionClosed) { - console.log('!!! connection closed reconection in progress ...'); - main(); - } - else if (raisonDeconnexion === baileys_1.DisconnectReason.connectionLost) { - console.log('connection to server lost 😞 ,,, reconnection in progress ... '); - main(); - } - else if (raisonDeconnexion === baileys_1.DisconnectReason?.connectionReplaced) { - console.log('connection replaced but session alread open please close it ASAP !!!'); - } - else if (raisonDeconnexion === baileys_1.DisconnectReason.loggedOut) { - console.log('youve been disconnected please get a new session id ASAP'); - } - else if (raisonDeconnexion === baileys_1.DisconnectReason.restartRequired) { - console.log('Reboot in progress ▶️'); - main(); - } else { - - console.log('Restarting immediatly after an error ',raisonDeconnexion) ; - //repondre("* Redémarrage du bot en cour ...*"); - - const {exec}=require("child_process") ; - - exec("pm2 restart all"); - } - // sleep(50000) - console.log("hum " + connection); - main(); //console.log(session) - } - }); - //fin événement connexion - //événement authentification - zk.ev.on("creds.update", saveCreds); - //fin événement authentification - // - /** ************* */ - //fonctions utiles - zk.downloadAndSaveMediaMessage = async (message, filename = '', attachExtension = true) => { - let quoted = message.msg ? message.msg : message; - let mime = (message.msg || message).mimetype || ''; - let messageType = message.mtype ? message.mtype.replace(/Message/gi, '') : mime.split('/')[0]; - const stream = await (0, baileys_1.downloadContentFromMessage)(quoted, messageType); - let buffer = Buffer.from([]); - for await (const chunk of stream) { - buffer = Buffer.concat([buffer, chunk]); - } - let type = await FileType.fromBuffer(buffer); - let trueFileName = './' + filename + '.' + type.ext; - // save to file - await fs.writeFileSync(trueFileName, buffer); - return trueFileName; - }; + }); + (0, + baileys_1.delay)(700); + var md; + if ((conf.MODE).toLocaleLowerCase() === "yes") { + md = "public"; + } else if ((conf.MODE).toLocaleLowerCase() === "no") { + md = "private"; + } else { + md = "undefined"; + } + console.log("loadibg commands complete ✅"); + + await activateCrons(); + + if ((conf.DP).toLowerCase() === 'yes') { + let cmsg = `╔───⬡ + ┃ ┃⬡TKM bot⬡┃ + ┃ Prefix : [ ${prefixe} ] + ┃ Mode :${md} + ┃ Total Commandes : ${evt.cm.length}︎ + ╚─────────────────···▸▸ + + ╔───⬡ + + + report any. problems to the devs:) + Thanks for supporting + this project + property of Cod3Uchiha + property of Takudzwa Mlambo + © Cod3Uchiha + © Takudzwa Mlambo + ╚─────────────────···▸▸`; + await zk.sendMessage(zk.user.id, { + text: cmsg + }); + } + } else if (connection == "close") { + let raisonDeconnexion = new boom_1.Boom(lastDisconnect?.error)?.output.statusCode; + if (raisonDeconnexion === baileys_1.DisconnectReason.badSession) { + console.log('Invalid Session ID please get an new one ASAP ...'); + } else if (raisonDeconnexion === baileys_1.DisconnectReason.connectionClosed) { + console.log('!!! connection closed reconection in progress ...'); + main(); + } else if (raisonDeconnexion === baileys_1.DisconnectReason.connectionLost) { + console.log('connection to server lost 😞 ,,, reconnection in progress ... '); + main(); + } else if (raisonDeconnexion === baileys_1.DisconnectReason?.connectionReplaced) { + console.log('connection replaced but session alread open please close it ASAP !!!'); + } else if (raisonDeconnexion === baileys_1.DisconnectReason.loggedOut) { + console.log('youve been disconnected please get a new session id ASAP'); + } else if (raisonDeconnexion === baileys_1.DisconnectReason.restartRequired) { + console.log('Reboot in progress ▶️'); + main(); + } else { + console.log('Restarting immediatly after an error ', raisonDeconnexion); + //repondre("* Redémarrage du bot en cour ...*"); - zk.awaitForMessage = async (options = {}) =>{ - return new Promise((resolve, reject) => { - if (typeof options !== 'object') reject(new Error('Options must be an object')); - if (typeof options.sender !== 'string') reject(new Error('Sender must be a string')); - if (typeof options.chatJid !== 'string') reject(new Error('ChatJid must be a string')); - if (options.timeout && typeof options.timeout !== 'number') reject(new Error('Timeout must be a number')); - if (options.filter && typeof options.filter !== 'function') reject(new Error('Filter must be a function')); - - const timeout = options?.timeout || undefined; - const filter = options?.filter || (() => true); - let interval = undefined - - /** - * - * @param {{messages: Baileys.proto.IWebMessageInfo[], type: Baileys.MessageUpsertType}} data - */ - let listener = (data) => { - let { type, messages } = data; - if (type == "notify") { - for (let message of messages) { - const fromMe = message.key.fromMe; - const chatId = message.key.remoteJid; - const isGroup = chatId.endsWith('@g.us'); - const isStatus = chatId == 'status@broadcast'; - - const sender = fromMe ? zk.user.id.replace(/:.*@/g, '@') : (isGroup || isStatus) ? message.key.participant.replace(/:.*@/g, '@') : chatId; - if (sender == options.sender && chatId == options.chatJid && filter(message)) { - zk.ev.off('messages.upsert', listener); - clearTimeout(interval); - resolve(message); - } - } - } - } - zk.ev.on('messages.upsert', listener); - if (timeout) { - interval = setTimeout(() => { - zk.ev.off('messages.upsert', listener); - reject(new Error('Timeout')); - }, timeout); - } - }); + const { + exec + } = require("child_process"); + + exec("pm2 restart all"); + } + // sleep(50000) + console.log("hum " + connection); + main(); //console.log(session) } + }); + //fin événement connexion + //événement authentification + zk.ev.on("creds.update", + saveCreds); + //fin événement authentification + // + /** ************* */ + //fonctions utiles + zk.downloadAndSaveMediaMessage = async (message, + filename = '', + attachExtension = true) => { + let quoted = message.msg ? message.msg: message; + let mime = (message.msg || message).mimetype || ''; + let messageType = message.mtype ? message.mtype.replace(/Message/gi, + ''): mime.split('/')[0]; + const stream = await (0, + baileys_1.downloadContentFromMessage)(quoted, + messageType); + let buffer = Buffer.from([]); + for await (const chunk of stream) { + buffer = Buffer.concat([buffer, chunk]); + } + let type = await FileType.fromBuffer(buffer); + let trueFileName = './' + filename + '.' + type.ext; + // save to file + await fs.writeFileSync(trueFileName, buffer); + return trueFileName; + }; + + + zk.awaitForMessage = async (options = {}) => { + return new Promise((resolve, reject) => { + if (typeof options !== 'object') reject(new Error('Options must be an object')); + if (typeof options.sender !== 'string') reject(new Error('Sender must be a string')); + if (typeof options.chatJid !== 'string') reject(new Error('ChatJid must be a string')); + if (options.timeout && typeof options.timeout !== 'number') reject(new Error('Timeout must be a number')); + if (options.filter && typeof options.filter !== 'function') reject(new Error('Filter must be a function')); + + const timeout = options?.timeout || undefined; + const filter = options?.filter || (() => true); + let interval = undefined + + /** + * + * @param {{messages: Baileys.proto.IWebMessageInfo[], type: Baileys.MessageUpsertType}} data + */ + let listener = (data) => { + let { + type, + messages + } = data; + if (type == "notify") { + for (let message of messages) { + const fromMe = message.key.fromMe; + const chatId = message.key.remoteJid; + const isGroup = chatId.endsWith('@g.us'); + const isStatus = chatId == 'status@broadcast'; + + const sender = fromMe ? zk.user.id.replace(/:.*@/g, '@'): (isGroup || isStatus) ? message.key.participant.replace(/:.*@/g, '@'): chatId; + if (sender == options.sender && chatId == options.chatJid && filter(message)) { + zk.ev.off('messages.upsert', listener); + clearTimeout(interval); + resolve(message); + } + } + } + } + zk.ev.on('messages.upsert', listener); + if (timeout) { + interval = setTimeout(() => { + zk.ev.off('messages.upsert', listener); + reject(new Error('Timeout')); + }, timeout); + } + }); + } - // fin fonctions utiles - /** ************* */ - return zk; - } - let fichier = require.resolve(__filename); - fs.watchFile(fichier, () => { - fs.unwatchFile(fichier); - console.log(`Update ${__filename}`); - delete require.cache[fichier]; - require(fichier); + // fin fonctions utiles + /** ************* */ + return zk; + } + let fichier = require.resolve(__filename); + fs.watchFile(fichier, + () => { + fs.unwatchFile(fichier); + console.log(`Update ${__filename}`); + delete require.cache[fichier]; + require(fichier); }); - main(); + main(); }, 5000); // start web server -const {start} = require('./server.js'); -const {PORT} = require('./set.js'); +const { + start +} = require('./server.js'); +const { + PORT +} = require('./set.js'); start(PORT); const restart = () => { - const {exec} = require("child_process"); + const { + exec + } = require("child_process"); console.log(`Restarting`) exec("pm2 restart all"); } //catch exections process.on('uncaughtException', function (err) { -let e = String(err) -if (e.includes("Socket connection timeout")) return -if (e.includes("item-not-found")) return -if (e.includes("rate-overlimit")) return -if (e.includes("Connection Closed")) return -if (e.includes("Timed Out")) return -if (e.includes("Value not found")) return -if (e.includes("Authentication timed out")) restart() -console.log('Caught exception: ', err); + let e = String(err) + if (e.includes("Socket connection timeout")) return + if (e.includes("item-not-found")) return + if (e.includes("rate-overlimit")) return + if (e.includes("Connection Closed")) return + if (e.includes("Timed Out")) return + if (e.includes("Value not found")) return + if (e.includes("Authentication timed out")) restart() + console.log('Caught exception: ', err); }); - -