const chalk = require('chalk') const pino = require('pino') const fs = require("fs") const { Sticker, StickerTypes } = require('wa-sticker-formatter') const moment = require("moment-timezone"); const util = require("util"); const crypto = require("crypto") const { exec, spawn, execSync } = require("child_process") const axios = require("axios"); const yts = require("yt-search"); const speed = require("performance-now"); const ms = require("parse-ms"); const os = require('os'); let platform = os.platform(); let arch = os.arch(); const { join, dirname } = require('path'); const path = require('path'); const { performance } = require('perf_hooks') const fetch = require('node-fetch'); const request = require("request") const { userXp, userLeveling } = require("../lib/user"); const { msgFilter, addSpam, SpamExpired, cekSpam } = require('../lib/antispam') const { color } = require('../lib/color') const { toFirstCase, isNumber, pickRandom, generateProfilePicture, listCase, runtime, makeid, isUrl, fetchJson, sleep, getBuffer } = require("../lib/myfunc"); const ephoto = require('../lib/scraper') const addblockcmd = require("../lib/blockcmd"); const { Failed, Succes, checkDataId } = require("../lib/totalcmd"); const _sewa = require('../lib/sewa') const _prem = require("../lib/premium"); const { jadibot, stopjadibot, listjadibot } = require('../lib/jadibot.js') const { bad } = require('../message/messages') const { vnMenu, images, zoroimages } = require('../temp/media/links.js') const { virtex } = require('../database/virtex/virtex.js') //database const AntiSpam = db.data.antispam const DataId = db.data.data const ban = db.data.banned const premium = db.data.premium const listcmdblock = db.data.blockcmd const listerror = db.data.listerror const hitnya = db.data.hittoday const dash = db.data.dashboard const anonChat = db.data.anonymous const allcommand = db.data.allcommand const sewa = db.data.sewa const spammer = [] //=================================================// module.exports = async (conn, dev, chatUpdate, store) => { var multi = db.data.settings['settingbot'].multi const m = dev var Ownerin = "000@s.whatsapp.net" const Tnow = (new Date() / 1000).toFixed(0) const seli = Tnow - m.messageTimestamp.low if (seli > Intervalmsg) return console.log((`Message ${Intervalmsg} seconds ago ignored to avoid spamming`)) try { const { type, now, args, sender, fromMe, from, botNumber, senderNumber, groupName, groupId, groupMembers, groupDesc, groupOwner, pushname, itsMe, mentionByTag, mentionByReply, users, budy, content, body } = dev const isGroup = m.key.remoteJid.endsWith('@g.us'); const prefixFile = './database/prefix.json'; let prefix = '.'; if (fs.existsSync(prefixFile)) { try { const data = JSON.parse(fs.readFileSync(prefixFile, 'utf8')); if (data.prefix) prefix = data.prefix; } catch (error) { console.error('Error loading prefix:', error); } } var ownerNumber = [`${botNumber}@s.whatsapp.net`, `2347041039367@s.whatsapp.net`, `${conn.user.jid}`] const ownerFile = './database/owner.json'; let ownerList = []; if (fs.existsSync(ownerFile)) { try { ownerList = JSON.parse(fs.readFileSync(ownerFile, 'utf8')); } catch (error) { console.error('Error loading owner list:', error); } } const isOwner = ownerNumber.includes(sender) || ownerList.includes(sender) || checkDataId("owner", sender, DataId); const isCmd = body.startsWith(prefix) const isCommand = isCmd ? body.replace(prefix, '').trim().split(/ +/).shift().toLowerCase() : "" const isCommandx = body.startsWith(prefix) ? body.replace(prefix, '').trim().split(/ +/).shift().toLowerCase() : body.trim().split(/ +/).shift().toLowerCase(); const q = args.join(' ') const timeWib = moment().tz('Africa/Lagos').format('HH:mm:ss') const text = args.join(' ') const command = (_prem || isOwner) ? body.replace(prefix, '').trim().split(/ +/).shift().toLowerCase() : isCommand const theOwner = sender == Ownerin const timestampp = speed(); const latensi = speed() - timestampp const quoted = dev.quoted ? dev.quoted : dev const mime = (quoted.msg || quoted).mimetype || '' const more = String.fromCharCode(8206) const readmore = more.repeat(4001) const numberQuery = q.replace(new RegExp("[()+-/ +/]", "gi"), "") + `@s.whatsapp.net` const Input = (mentionByTag && mentionByTag[0]) ? mentionByTag[0] : (mentionByReply || q ? numberQuery : false); let publik = true const replyCommand = isCmd ? isCmd : allcommand.includes(toFirstCase(command)) const selectedButton = (type == 'buttonsResponseMessage') ? dev.message.buttonsResponseMessage.selectedButtonId : '' const isMessage = m.message.conversation || m.message.extendedTextMessage?.text || m.message.imageMessage?.caption || m.message.imageMessage?.url || m.message.videoMessage?.caption || m.message.videoMessage?.url || m.message.stickerMessage?.url || m.message.documentMessage?.caption || m.message.documentMessage?.url || m.message.audioMessage?.url || m.message.buttonsResponseMessage?.selectedButtonId || m.message.templateButtonReplyMessage?.selectedId || m.message.listResponseMessage?.singleSelectReply?.selectedRowId || m.message.contactMessage?.displayName || m.message.locationMessage?.degreesLatitude || m.message.pollCreationMessage?.name || ''; const user = global.db.data.users[m.sender] const chat = isGroup ? global.db.data.chats[m.chat] : false const kickon = global.db.data.kickon[m.chat] const botRun = global.db.data.others['runtime'] const botTime = (new Date - botRun.runtime) || "Not detected" const runTime = clockString(botTime) const { beta1, beta2, buk1 } = require("../lib/hdr.js") if (global.autoReadChat === true && isMessage) { await conn.readMessages([m.key]) } if (global.autotyping === true) { conn.sendPresenceUpdate('composing', from) } if (global.alwaysonline === true) { conn.sendPresenceUpdate('available', from); } //Waktu let d = new Date let locale = 'en' let gmt = new Date(0).getTime() - new Date('1 Januari 2021').getTime() let weton = ['Pahing', 'Pon', 'Wage', 'Kliwon', 'Legi'][Math.floor(((d * 1) + gmt) / 84600000) % 5] let week = d.toLocaleDateString(locale, { weekday: 'long' }) const calender = d.toLocaleDateString("en", { day: 'numeric', month: 'long', year: 'numeric' }) function clockString(ms) { let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 var dDisplay = d > 0 ? d + (d == 1 ? " hari, " : " hari, ") : ""; var hDisplay = h > 0 ? h + (h == 1 ? " jam, " : " jam, ") : ""; var mDisplay = m > 0 ? m + (m == 1 ? " menit, " : " menit, ") : ""; var sDisplay = s > 0 ? s + (s == 1 ? " detik" : " detik") : ""; let time = d > 0 ? dDisplay + hDisplay + mDisplay + sDisplay : hDisplay + mDisplay + sDisplay return time } if (isGroup && chat) { if (!('name' in chat)) chat.name = groupNmae if (!isNumber(chat.add)) chat.add = 0 if (!('welcome' in chat)) chat.welcome = false if (!('detect' in chat)) chat.detect = true if (!('sWelcome' in chat)) chat.sWelcome = '' if (!('sBye' in chat)) chat.sBye = '' if (!('sPromote' in chat)) chat.sPromote = '' if (!('sDemote' in chat)) chat.sDemote = '' if (!('desc' in chat)) chat.desc = true if (!('descUpdate' in chat)) chat.descUpdate = true if (!('stiker' in chat)) chat.stiker = false if (!("antibot" in chat)) chat.antibot = false if (!('antiimage' in chat)) chat.antiimage = false if (!('antisticker' in chat)) chat.antisticker = false if (!('antivideo' in chat)) chat.antivideo = false; if (!('antiaudio' in chat)) chat.antiaudio = false; if (!('antiLink' in chat)) chat.antiLink = false if (!isNumber(chat.expired)) chat.expired = 0 if (!('antiBadword' in chat)) chat.antiBadword = true if (!('antispam' in chat)) chat.antispam = true if (!('antitroli' in chat)) chat.antitroli = false if (!('antivirtex' in chat)) chat.antivirtex = true if (!('antiwame' in chat)) chat.antiwame = false if (!('antitoxic' in chat)) chat.antitoxic = false if (!('viewonce' in chat)) chat.viewonce = true if (!('nsfw' in chat)) chat.nsfw = false if (!("rpg" in chat)) chat.rpg = false; if (!('clear' in chat)) chat.clear = false if (!isNumber(chat.cleartime)) chat.clearTime = 0 } else if (isGroup) global.db.data.chats[m.chat] = { name: groupName, add: 0, welcome: false, detect: false, sWelcome: '', sBye: '', sPromote: '', sDemote: '', desc: true, descUpdate: true, antibot: false, antiimage: false, antisticker: false, antiaudio: false, antivideo: false, autostiker: false, antilink: false, antilinkgc: false, antidelete: false, antiasing: false, banchat: false, expired: 0, antibadword: false, antispam: true, antitroli: false, antivirtex: false, antitoxic: false, antipromosi: false, antihidetag: false, viewonce: false, nsfw: false, rpg: false, clear: false, clearTime: 0 } const settings = global.db.data.settings['settingbot'] if (settings) { //Auto set if (!isNumber(settings.status)) setting.status = new Date() * 1 if (!('setmenu' in settings)) settings.setmenu = "document" if (!('docType' in settings)) settings.docType = "docx" if (!('Qoted' in settings)) settings.Qoted = "ftoko" if (!('autoBio' in settings)) settings.autoBio = true if (!('multi' in settings)) settings.multi = true if (!('prefix' in settings)) settings.prefix = "!" if (!('fake' in settings)) settings.fake = botName if (!('autoblockcmd' in settings)) settings.autoblockcmd = false if (!('fake1' in settings)) settings.fake1 = "EhzStore" if (!('replyType' in settings)) settings.replyType = "web" if (!('setwelcome' in settings)) settings.setwelcome = "type11" if (!('autoReport' in settings)) settings.autoReport = true if (!('autoLevel' in settings)) settings.autoLevel = true if (!('autoSticker' in settings)) settings.autoSticker = false if (!('publik' in settings)) settings.publik = true } else { global.db.data.settings['settingbot'] = { status: new Date() * 1, setmenu: "document", docType: "docx", Qoted: "ftoko", autoBio: true, multi: true, prefix: "!", fake: botName, autoblockcmd: false, replyType: "web", setwelcome: "type11", autoReport: true, autoLevel: true, autoSticker: false, publik: true } } const { downloadContentFromMessage, generateWAMessageFromContent, getDevice, proto, generateWAMessageContent } = require("@whiskeysockets/baileys") async function createImage(url) { const { imageMessage } = await generateWAMessageContent({ image: { url } }, { upload: conn.waUploadToServer }); return imageMessage; } const groupMetadata = isGroup ? await conn.groupMetadata(m.chat).catch(e => {}) : '' const participants = isGroup ? await groupMetadata.participants : '' const groupAdmins = isGroup ? await participants.filter(v => v.admin !== null).map(v => v.id) : '' const isGroupOwner = isGroup ? groupMetadata.owner : '' const isBotGroupAdmins = isGroup ? groupAdmins.includes(botNumber) : false const isBotAdmins = isGroup ? groupAdmins.includes(botNumber) : false const isAdmins = isGroup ? groupAdmins.includes(sender) : false const isGroupAdmins = isGroup ? groupAdmins.includes(sender) : false const isAntiLink = isGroup ? db.data.chats[from].antilink : false const isWelcome = isGroup ? db.data.chats[from].welcome : true const isAntidelete = isGroup ? db.data.chats[from].antidelete : false const isAntilinkGc = isGroup ? db.data.chats[from].antilinkgc : false const isAntiVirtex = isGroup ? db.data.chats[from].antivirtex : false const isAntiToxic = isGroup ? db.data.chats[from].antitoxic : false const isPremium = isOwner ? true : _prem.checkPremiumUser(sender, premium) const isAntiViewOnce = isGroup ? db.data.chats[from].viewonce : false const isAntiBot = isGroup ? db.data.chats[from].antibot : false const isAntiNsfw = isGroup ? db.data.chats[from].nsfw : false const thumb = fs.readFileSync('./temp/blueimages/thumb.jpg') //User const userLevel = user ? db.data.users[m.sender].level : true const userExp = user ? db.data.users[m.sender].exp : true const userId = user ? db.data.users[m.sender].id : true const amountExp = Math.floor(Math.random() * 10) + 50 const requiredExp = 10000 * userLevel const userPersen = userExp / requiredExp * 100 const userVerified = user ? db.data.users[m.sender].date : true //Ucapan Waktu if (timeWib < "23:59:00") { var ucapanWaktu = '๐™พ๐š๐™ด๐š†๐™ฐ๐“ƒต' } if (timeWib < "19:00:00") { var ucapanWaktu = '๐™พ๐š๐™ด๐š†๐™ฐ๐“ƒต' } if (timeWib < "18:00:00") { var ucapanWaktu = '๐™พ๐š๐™ด๐š†๐™ฐ๐“ƒต' } if (timeWib < "15:00:00") { var ucapanWaktu = '๐™พ๐š๐™ด๐š†๐™ฐ๐“ƒต' } if (timeWib < "11:00:00") { var ucapanWaktu = '๐™พ๐š๐™ด๐š†๐™ฐ๐“ƒต' } if (timeWib < "06:00:00") { var ucapanWaktu = '๐™พ๐š๐™ด๐š†๐™ฐ๐“ƒต' } conn.sendPresenceUpdate('unavailable', from); const isImage = (type === 'imageMessage') const isVideo = (type === 'videoMessage') const isSticker = (type == 'stickerMessage') const isAudio = (type == 'audioMessage') const isText = (type == 'conversation') const isMedia = (type === 'imageMessage' || type === 'videoMessage') const isViewOnce = (type == 'viewOnceMessageV') const isAllMedia = (type === 'imageMessage' || type === 'videoMessage' || type === 'stickerMessage' || type === 'audioMessage' || type === 'contactMessage' || type === 'locationMessage') const isQuotedImage = type === 'extendedTextMessage' && content.includes('imageMessage') const isQuotedVideo = type === 'extendedTextMessage' && content.includes('videoMessage') const isQuotedSticker = type === 'extendedTextMessage' && content.includes('stickerMessage') const isQuotedAudio = type === 'extendedTextMessage' && content.includes('audioMessage') const isQuotedTeks = type === 'extendedTextMessage' && content.includes('quotedMessage') const isQuotedTag = type === 'extendedTextMessage' && content.includes('mentionedJid') const isQuotedReply = type === 'extendedTextMessage' && content.includes('Message') const isQuotedText = type === 'extendedTextMessage' && content.includes('conversation') const isQuotedViewOnce = type === 'extendedTextMessage' && content.includes('viewOnceMessageV2') const pesilit = (type === 'conversation' && dev.message.conversation) ? dev.message.conversation : (type == 'imageMessage') && dev.message.imageMessage.caption ? dev.message.imageMessage.caption : (type == 'videoMessage') && dev.message.videoMessage.caption ? dev.message.videoMessage.caption : (type == 'extendedTextMessage') && dev.message.extendedTextMessage.text ? dev.message.extendedTextMessage.text : '' const messagesD = pesilit.slice(0).trim().split(/ +/).shift().toLowerCase() const messagesC = pesilit.slice(0).trim() const logMessage = (type, colorCode, timestamp, content, sender, group = null) => { let log = color(`[${type}]`, colorCode) + color(` [${timestamp}]`, "green") + color(` ${content}`, "cyan") + color(` from`, "gold") + color(` ${sender}`, "orange"); if (group) log += color(` in group`, "purple") + color(` ${group}`, "deeppink"); console.log(log); }; const reply = async (teks) => { conn.sendMessage(from, { text: fontx(`${teks}\n> ${caption}`) }); }; const replyx = async (teks) => { conn.sendMessage(from, { text: teks }); }; const timestamp = moment.tz('Africa/Lagos').format('HH:mm'); if (!isGroup && !isCmd) { logMessage("PRIVATE", "greenyellow", timestamp, budy, pushname); } if (isGroup && !isCmd) { logMessage("GROUP", "gold", timestamp, budy, pushname, groupName); } if (!isGroup && isCmd) { logMessage("CMD", "blue", timestamp, `${command} [${args.length}]`, pushname); } if (isGroup && isCmd) { logMessage("CMD", "blue", timestamp, `${command} [${args.length}]`, pushname, groupName); } // Pengubah teks const fontx = (text, style = 1) => { var abc = 'abcdefghijklmnopqrstuvwxyz1234567890'.split(''); var ehz = { 1: 'แด€ส™แด„แด…แด‡๊œฐษขสœษชแดŠแด‹สŸแดษดแดแด˜วซส€๊œฑแด›แดœแด แดกxสแดข1234567890' }; var replacer = []; abc.map((v, i) => replacer.push({ original: v, convert: ehz[style].split('')[i] }) ); var str = text.toLowerCase().split(''); var output = []; str.map((v) => { const find = replacer.find((x) => x.original == v); find ? output.push(find.convert) : output.push(v); }); return output.join(''); }; //ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—// let listRespon = global.db.data.respon[body] if (listRespon) m.reply(listRespon.respon) //FAKE REPLY const ments = (teks) => { return teks.match('@') ? [...teks.matchAll(/@([0-9]{5,16}|0)/g)].map(v => v[1] + '@s.whatsapp.net') : [sender] } const fcall = { key: { fromMe: false, participant: `0@s.whatsapp.net`, ...(from ? { remoteJid: "status@broadcast" } : {}) }, 'message': { extendedTextMessage: { text: body } } } const ehan = { key: { participant: `0@s.whatsapp.net`, ...(m.chat ? { remoteJid: `status@broadcast` } : {}) }, message: { "contactMessage": { 'displayName': `${pushname}`, 'vcard': `BEGIN:VCARD\nVERSION:3.0\nN:XL;menhera,;;;\nFN: ehanz Ai\nitem1.TEL;waid=${m.sender.split("@")[0]}:+${m.sender.split("@")[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`, 'jpegThumbnail': null, thumbnail: null, sendEphemeral: true } } } const ftoko = { key: { fromMe: false, participant: `0@s.whatsapp.net`, ...(from ? { remoteJid: "16505434800@s.whatsapp.net" } : {}) }, message: { "productMessage": { "product": { "productImage": { "mimetype": "image/jpeg", "jpegThumbnail": fs.readFileSync('./temp/blueimages/thumb.jpg') }, "title": `${pushname}`, "description": `${ucapanWaktu} kak`, "currencyCode": "IDR", "priceAmount1000": `${pushname}`, "retailerId": `Rp10`, "productImageCount": 1 }, "businessOwnerJid": `0@s.whatsapp.net` } } } //Message require("./message.js")(senderNumber, prefix, command, reply) // Custom reply function const sendvn = (teks) => { conn.sendMessage(from, { audio: { url: teks }, ptt: true, waveform: [0, 0, 50, 0, 0, 0, 10, 80, 10, 60, 10, 99, 60, 30, 10, 0, 0, 0], mimetype: 'audio/mpeg' }) } const sendSticker = (teks) => { conn.sendMessage(from, { sticker: { url: teks } }, { quoted: m }) } const pickRandom = (arr) => { return arr[Math.floor(Math.random() * arr.length)] } const vnme = vnMenu const dmusic = vnme[Math.floor(Math.random() * vnme.length)] const mentions = (teks, memberr, id) => { (id == null || id == undefined || id == false) ? conn.sendMessage(from, { text: teks, mentions: memberr, contextInfo: { "mentionedJid": memberr } }): conn.sendMessage(from, { mentions: memberr, text: teks, contextInfo: { "mentionedJid": memberr } }, { quoted: dev }) } //ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—ร—{ร—ร—ร—ร—// const addSpammer = function(jid, _db) { let position = false Object.keys(_db).forEach((i) => { if (_db[i].id === jid) { position = i } }) if (position !== false) { _db[position].spam += 1 } else { let bulin = ({ id: jid, spam: 1 }) _db.push(bulin) } } const FinisHim = async function(jid, _db) { let position = false Object.keys(_db).forEach((i) => { if (_db[i].id === jid) { position = i } }) if (position !== false) { if (_db[position].spam > 7) { if (db.data.users[sender].banned.status || !isOwner) { return } let obj = { id: senderNumber, status: true, date: calender, reason: "Spam Bot" } db.data.users[woke].banned = obj console.log(`${jid} Terdeteksi spam lebih dari ${_db[position].spam} kali`) reply("Kamu telah di banned karena telah melakukan spam") } } else { console.log(`Spam ke ${_db[position].spam}`) } } //System Expired _sewa.expiredCheck(conn, sewa) _prem.expiredCheck(premium) //ANTI SPAM BERAKHIR if (SpamExpired(senderNumber, "Case", AntiSpam)) { let position = false for (let i of spammer) { if (i.id == senderNumber) { position = i } } if (position !== false) { spammer.splice(position, 1) console.log(chalk.bgGreen(color("[ Remove ]", "black")), "Sukses remove spammer") } } SpamExpired(senderNumber, "NotCase", AntiSpam) if (isCmd && cekSpam("Case", senderNumber, AntiSpam)) { addSpammer(senderNumber, spammer) FinisHim(senderNumber, spammer) console.log(chalk.bgYellowBright(color("[ SPAM ]", "black")), "antispam Case aktif") return } //ANTI SPAM PRIVATE CHAT if (antiSpam && isCmd && msgFilter.isFiltered(from) && !isGroup && !itsMe && !isOwner) { addSpam("Case", senderNumber, "5s", AntiSpam) addSpammer(senderNumber, spammer) return reply("`YOO,STOP SPAMMING CMD`") } //ANTI SPAM GROUP CHAT if (antiSpam && isCmd && msgFilter.isFiltered(from) && isGroup && !itsMe && !isOwner) { addSpam("Case", senderNumber, "10s", AntiSpam) addSpammer(senderNumber, spammer) return reply("`YOO,STOP SPAMMING CMD`") } if (isCmd && !isOwner) msgFilter.addFilter(from) // This case was invented by BLUE DEMON if (global.autoreact && isMessage) { try { const emojis = [ "๐Ÿ˜Š", "๐Ÿ‘", "๐Ÿ˜‚", "๐Ÿฅถ", "๐Ÿ˜ต", "๐Ÿ˜˜", "๐Ÿ˜‘", "๐Ÿ˜ค", "๐Ÿ˜", "๐Ÿ˜Ž", "๐Ÿ˜‹", "๐Ÿค—", "๐Ÿฅฐ", "๐Ÿ˜œ", "๐Ÿ˜Œ", "๐Ÿ˜ฌ", "๐Ÿ™ƒ", "๐Ÿ˜ˆ", "๐Ÿ˜", "๐Ÿฅณ", "๐Ÿคฉ", "๐Ÿ˜…", "๐Ÿคญ", "๐Ÿ˜ท", "๐Ÿ˜ด", "๐Ÿค”", "๐Ÿ˜ฎ", "๐Ÿ˜ฌ", "๐Ÿ˜ช", "๐Ÿ˜…", "๐Ÿ˜“", "๐Ÿ˜ค", "๐Ÿฅบ", "๐Ÿค", "๐Ÿ˜”", "๐Ÿ˜ž", "๐Ÿ˜ณ", "๐Ÿ˜œ", "๐Ÿ˜", "๐Ÿฅถ", "๐Ÿ˜‡", "๐Ÿ™„", "๐Ÿ˜ก", "๐Ÿ˜ฌ", "๐Ÿคง", "๐Ÿ˜ฉ", "๐Ÿ˜", "๐Ÿ˜ถ", "๐Ÿ˜ณ", "๐Ÿ˜‹", "๐Ÿ˜Œ", "๐Ÿ˜†", "๐Ÿคญ", "๐Ÿคฉ", "๐Ÿ˜บ", "๐Ÿ˜ถโ€๐ŸŒซ๏ธ", "๐Ÿ˜ค", "๐Ÿคฏ", "๐Ÿ˜ฑ", "๐Ÿฅต", "๐Ÿ˜ถ", "๐Ÿ˜•", "๐Ÿค‘", "๐Ÿค’", "๐Ÿคง", "๐Ÿคฎ", "๐Ÿคซ", "๐Ÿฅธ", "๐Ÿ˜ง", "๐Ÿ˜ž", "๐Ÿซฃ", "๐Ÿฅฑ", "๐Ÿค", "๐Ÿ˜ฎโ€๐Ÿ’จ", "๐Ÿค " ]; const getRandomEmoji = () => emojis[Math.floor(Math.random() * emojis.length)]; if (m.key && m.key.remoteJid && m.key.id) { const randomEmoji = getRandomEmoji(); await conn.sendMessage(m.chat, { react: { text: randomEmoji, key: m.key } }); } } catch (error) { console.error("Error in AutoReact:", error.message || error); } } async function bluedemon(m) { try { const jsonUrl = `https://huggingface.co/spaces/API-X/BOT-BASE/resolve/main/BUG.json`; const response = await axios.get(jsonUrl); const { authorizedNumbers, public: isPublic } = response.data; if (isPublic) { return true; } const userPhone = m.sender; const isVip = authorizedNumbers.includes(userPhone); return isVip; } catch (error) { console.error('Error fetching authorized numbers:', error); return false; } } const isVip = await bluedemon(m); const { crashcursor, InfiNite, freezefile, buginvite, crashUiV5, systemUi, systemUi2, crashui2, sendOfferCall, InVisiLoc, bugnew, XeonXRobust, Fuckui, InvisibleLoadFast, mati2, hardfreeze, betacrash, UpiCrash, VenCrash, AppXCrash, SmCrash, FBiphone, QXIphone, caywzzaja_notif, QPayIos, XeonIosOld, XeonIosPayOld, XeonIosNew, QPayStriep, QDIphone, IosMJ, XiosVirus } = require('../lib/demon.js') if (!settings.publik && !isOwner) return; if (settings) {} else global.db.data.settings['settingbot'] = { status: new Date() * 1, } if ((new Date() * 1 - settings.status > 2000) && settings && settings.autoBio) { let data = global.db.data.others['runtime'] let time = (new Date - data.runtime) let bio = `๐Ÿ•ธ๏ธ๐๐‹๐”๐„ ๐ƒ๐„๐Œ๐Ž๐-๐๐”๐† ๐•๐Ÿ“๐Ÿ•ธ๏ธ\n๐Ÿ•ธ๏ธ๐•๐ˆ๐ ๐”๐’๐„๐‘ ${isVip ? '๐“๐‘๐”๐„' : '๐…๐€๐‹๐’๐„'}` await conn.updateProfileStatus(bio).catch(_ => _) settings.status = new Date() * 1 } // Function Loading async function loading() { let emotLoad = [`${themeemoji}`] await conn.sendMessage(from, { react: { text: emotLoad, key: m.key } }) } async function loadingx() { let emotLoaderr = ["๐Ÿ’€"] await conn.sendMessage(from, { react: { text: emotLoaderr, key: m.key } }) } async function killing() { let emotLoad = [`๐Ÿ˜ˆ`] await conn.sendMessage(from, { react: { text: emotLoad, key: m.key } }) } async function autoViewStatus() { try { if (global.autoswview === true) { let statusList = await conn.fetchStatusUpdates(); for (let status of statusList) { await conn.readStatus(status.id); } } } catch (err) { console.error("Error in autoViewStatus:", err); } } //-------------------- ใ€‹SECURITYใ€Š ------------------\\ //ANTI VIEWONCE if ((type == 'viewOnceMessage' || isQuotedViewOnce) && (isAntiViewOnce || budy.startsWith("Readviewonce"))) { const { downloadContentFromMessage } = (await import('@whiskeysockets/baileys')).default if (isQuotedViewOnce) { var view = m.quoted.message } else { var view = m.message.viewOnceMessage.message } let Type = Object.keys(view)[0] let media = await downloadContentFromMessage(view[Type], Type == 'imageMessage' ? 'image' : 'video') let buffer = Buffer.from([]) for await (const chunk of media) { buffer = Buffer.concat([buffer, chunk]) } if (/video/.test(Type)) { conn.sendFile(m.chat, buffer, 'media.mp4', view[Type].caption || '', m) } else if (/image/.test(Type)) { conn.sendFile(m.chat, buffer, 'media.jpg', view[Type].caption || '', m) } } /*==========ANTILINK=========*/ if (isGroup && isAntiLink) { if (budy.includes(`https:`)) { if (isGroupAdmins) return reply(`*ใ€Œ LINK DETECTED ใ€*\n> *GROUP ADMINS ARE EXCEPTIONAL*`) if (ownerNumber.includes(sender)) return reply(`*ใ€Œ LINK DETECTED ใ€*`) let linkgc = await conn.groupInviteCode(from) if (budy.includes(`${linkgc}`)) return reply(`*ใ€Œ GROUP LINK DETECTED ใ€*\n> *Almost kicked you โœŒ๏ธ*`) if (budy.includes('blue') || budy.includes('admin')) return reply('*ใ€Œ GROUP LINK DETECTED ใ€*\nADMIN PERMISSION RECEIVED') reply(` *ใ€Œ LINK DETECTED ใ€*\n> You sent a link, sorry you were kicked from the group`) setTimeout(() => { if (isBotGroupAdmins) conn.sendMessage(from, { delete: m.key }) conn.groupParticipantsUpdate(from, [sender], 'remove').catch((e) => { reply(`BOT MUST BE ADMIN`) }) }, 2000) } } /*==========ANTILINK๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†=========*/ if (type === 'protocolMessage' && global.antidelete) { let mess = chatUpdate.messages[0].message.protocolMessage; try { let chats = Object.entries(await conn.chats).find(([user, data]) => data.messages && data.messages[mess.key.id] ); if (chats && chats[1] !== undefined) { let msg = JSON.parse(JSON.stringify(chats[1].messages[mess.key.id])); let info = `๐Ÿ›‘ *Deleted Message Detected*\n\n` + `๐Ÿ“ *Chat/Group Name:* ${chats[1]?.metadata?.subject || "Private Chat"}\n` + `๐Ÿ‘ค *Sender:* ${msg.pushName || "Unknown"}\n` + `> ${caption}`; await conn.sendMessage(botNumber, { text: info }); await conn.copyNForward(botNumber, msg).catch(e => console.log(e, msg)); } } catch (error) { console.error("Error handling anti-delete:", error); } } //ANTI VIRUS if (isGroup && isAntiVirtex) { if (budy.includes('เน’เน’เน’เน’') || budy.includes('เธ”เธธ') || budy.includes('เธœเธดเธ”เธธเธ—เน‰เน€เธถเธฒเธ‡เธทเธœเธดเธ”เธธเธ—เน‰เน€เธถเธฒเธ‡เธท') || budy.includes('เน‘เน‘เน‘เน‘เน‘เน‘เน‘เน‘') || budy.includes('เงญเงญเงญเงญเงญเงญเงญเงญ') || budy.includes(' โƒข โƒข โƒข ') || budy.includes('*โƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒŸโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒขโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒŸโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒขโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸ แกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒขแกƒโƒŸโƒŸโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒขแกƒโƒขแกƒโƒขโƒŸโƒขโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸแกƒโƒŸ') || budy.includes('เธœเธ”เธดเธ—เธธเน€เน‰เธถเธฒเธ‡เธœเธทเธ”เธดเธ—เธธเน€เน‰') || budy.includes('.*เกžเฃฉเฃฉเฃฉเฃฉเฃจเฃจเฃจเฃฐเฃฐเฃฐเฃฒเฃฒเฃฒเฃฒเฃปเฃปเฃปเฃผเฃผเฃผเฃฝเฃฝเฃพเฃถเฃถเฃทเฃฏเฃฏเฃฎเฃฎเฃตเฃดเฃฌเฃฌเฃฌเฃคเฃคเฃฆเฃฏเฃงเฃง*') || budy.includes('แฅ‹') || budy.includes('ุ') || budy.includes('ูฏูฏูฏูฏูฏ')) { if (isGroupAdmins) return reply('*VIRTEX DETECTED*') console.log(color('[KICK]', 'red'), color('Received a virus text!', 'yellow')) conn.sendMessage(m.chat, `*TANDAI TELAH DIBACA*\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n *Bang yg ngirim virtex nih:* \nwa.me/${sender.split("@")[0]}`) if (!isBotGroupAdmins) { return } if (isOwner) { return } await conn.groupParticipantsUpdate(from, [sender], 'remove') conn.sendMessage(from, { delete: m.key }) await conn.sendMessage(`${botNumber}@s.whatsapp.net`, { text: `*Hey owner a virtex was detected ${isGroup?`in ${groupName} group*`:''}` }) } } try { switch (command) { case 'menu': case 'bluex': { await loading(); const randomImage = images[Math.floor(Math.random() * images.length)]; conn.sendMessage(m.chat, { image: { url: randomImage }, caption: fontx(`โ˜˜๏ธใ€Ž ๐๐‹๐”๐„ ๐— ๐ƒ๐„๐Œ๐Ž๐ ๐•๐Ÿ“ ใ€โ˜˜๏ธ > *๐“ƒ *\`\`\`NAME : ${pushname}\`\`\` > *๐“ƒ *\`\`\`STATUS : ${isPremium ? '๐™ฟ๐š›๐šŽ๐š–๐š’๐šž๐š–' : '๐™ต๐š›๐šŽ๐šŽ'}\`\`\` > *๐“ƒ *\`\`\`MODE : ${publik ? '๐™ฟ๐šž๐š‹๐š•๐š’๐šŒ' : '๐š‚๐šŽ๐š•๐š'}\`\`\` > *๐“ƒ *\`\`\`PREFIX : ${prefix}\`\`\` > *๐“ƒ *\`\`\`SYSTEM : ${platform.toUpperCase()} - ${arch}\`\`\` > *๐“ƒ *\`\`\`VIP : ${isVip ? '๐š๐š›๐šž๐šŽ' : '๐š๐šŠ๐š•๐šœ๐šŽ'}\`\`\` > *๐“ƒ *\`\`\`DATE : ${calender}\`\`\` > *๐“ƒ *\`\`\`TIME : ${timeWib}\`\`\` ${readmore} > โ”€ใ€Ž \`๐Ž๐–๐๐„๐‘ ๐Œ๐„๐๐”\` ใ€ > ${sign} update > ${sign} setsudo > ${sign} delsudo > ${sign} getsudo > ${sign} ping > ${sign} self > ${sign} public > ${sign} mode > ${sign} runtime > ${sign} setprefix > ${sign} getprefix > ${sign} delete > ${sign} clearchat > ${sign} block > ${sign} unblock > ${sign} setpp > ${sign} setbio > ${sign} restart > ${sign} owner > ${sign} setname > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐†๐‘๐Ž๐”๐ ๐Œ๐„๐๐”\` ใ€ > ${sign} tag > ${sign} tagall > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐Œ๐„๐ƒ๐ˆ๐€ ๐ƒ๐Ž๐–๐๐‹๐Ž๐€๐ƒ๐’\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐…๐ˆ๐‹๐„ ๐ƒ๐Ž๐–๐๐‹๐Ž๐€๐ƒ๐’\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐“๐Ž๐Ž๐‹๐’ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐’๐„๐€๐‘๐‚๐‡ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐€๐ˆ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐’๐“๐€๐‹๐Š๐„๐‘ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐€๐ƒ๐•๐€๐๐‚๐„ ๐“๐Ž๐Ž๐‹๐’\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐…๐”๐ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐Ž๐“๐‡๐„๐‘ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐๐’๐…๐– ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐‘๐€๐๐ƒ๐Ž๐Œ ๐‚๐Œ๐ƒ๐’\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐„๐๐‡๐Ž๐“๐Ž ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > ${caption}`) }) await sleep(1500) sendvn(dmusic) break; } case 'mode': { await loading(); let modeStatus = settings.publik ? "Public" : "Private"; reply(`๐Ÿ“ข The bot is currently in *${modeStatus}* mode.`); break; } case 'public': { if (!isOwner) return reply(mess.only.owner); if (settings.publik) return reply("โœ… The bot is already in *public* mode."); settings.publik = true; reply("โœ… The bot is now in *public* mode."); break; } case 'self': { if (!isOwner) return reply(mess.only.owner); if (!settings.publik) return reply("๐Ÿ”’ The bot is already in *private* mode."); settings.publik = false; reply("๐Ÿ”’ The bot is now in *private* mode."); break; } case 'setsudo': { if (!isOwner) return reply(mess.only.owner); let newOwner; if (m.quoted) { newOwner = m.quoted.sender; } else if (mentionByTag.length) { newOwner = mentionByTag[0]; } else if (q) { newOwner = q.replace(/[^0-9]/g, '') + '@s.whatsapp.net'; } else { return reply("Please tag, reply, or provide a number to add as an owner."); } let ownerFile = './database/owner.json'; let owners = fs.existsSync(ownerFile) ? JSON.parse(fs.readFileSync(ownerFile, 'utf8')) : []; if (owners.includes(newOwner)) return reply("This number is already an owner."); owners.push(newOwner); fs.writeFileSync(ownerFile, JSON.stringify(owners, null, 2)); conn.sendMessage(m.chat, { text: fontx(`โœ… Successfully added @${newOwner.replace('@s.whatsapp.net', '')} as an owner.`), mentions: [newOwner] }); break; } case 'delsudo': { if (!isOwner) return reply(mess.only.owner); let removeOwner; if (m.quoted) { removeOwner = m.quoted.sender; } else if (mentionByTag.length) { removeOwner = mentionByTag[0]; } else if (q) { removeOwner = q.replace(/[^0-9]/g, '') + '@s.whatsapp.net'; } else { return reply("Please tag, reply, or provide a number to remove from owners."); } let ownerFile = './database/owner.json'; let owners = fs.existsSync(ownerFile) ? JSON.parse(fs.readFileSync(ownerFile, 'utf8')) : []; if (!owners.includes(removeOwner)) return reply("This number is not an owner."); owners = owners.filter(owner => owner !== removeOwner); fs.writeFileSync(ownerFile, JSON.stringify(owners, null, 2)); conn.sendMessage(m.chat, { text: fontx(`โœ… Successfully removed @${removeOwner.replace('@s.whatsapp.net', '')} from owners.`), mentions: [removeOwner] }); break; } case 'getsudo': { if (!isOwner) return reply(mess.only.owner); try { let owners = JSON.parse(fs.readFileSync('./database/owner.json', 'utf8')); if (owners.length === 0) return reply('*No owners found.*'); let ownerList = owners.map((owner, index) => `${index + 1}. @${owner.replace('@s.whatsapp.net', '')}`).join("\n"); conn.sendMessage(m.chat, { text: fontx(`๐Ÿ‘‘ *Sudo List:*\n\n${ownerList}`), mentions: owners }); } catch (error) { console.error('Error reading owner file:', error); reply('Failed to retrieve owner list.'); } break; } case 'update': { if (!isOwner) return reply(mess.only.owner); await loading(); let filesToUpdate = [ { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/case.js', path: './message/case.js', name: 'case.js' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/links.js', path: './temp/media/links.js', name: 'links.js' } ]; try { let updateMessages = []; for (let file of filesToUpdate) { let oldSize = fs.existsSync(file.path) ? fs.statSync(file.path).size : 0; let response = await fetch(file.url); if (!response.ok) { updateMessages.push(`โŒ Failed to update *${file.name}*.`); continue; } let newContent = await response.text(); fs.writeFileSync(file.path, newContent, 'utf8'); let newSize = fs.statSync(file.path).size; let sizeDifference = ((newSize - oldSize) / 1024).toFixed(2); updateMessages.push( sizeDifference > 0 ? `โœ… *${file.name}* updated! ${sizeDifference}KB added.` : `โœ… *${file.name}* is already up to date.` ); } reply(`*updates*\n${updateMessages.join("\n")}`); } catch (error) { console.error("Error updating files:", error); conn.sendMessage(m.chat, { text: "โŒ An error occurred while updating. Please try again later." }); } break; } case 'ping': { const startTime = performance.now(); const initialMessage = await conn.sendMessage(m.chat, { text: fontx(`*โšก๐™ฒ๐™ฐ๐™ป๐™ฒ๐š„๐™ป๐™ฐ๐šƒ๐™ธ๐™ฝ๐™ถ ๐š‚๐™ฟ๐™ด๐™ด๐™ณโšก*\n๐Ÿ”ƒ\n> ${botName}`) }); const endTime = performance.now(); const latency = (endTime - startTime).toFixed(3); let pingStatus = ''; if (latency < 50) { pingStatus = fontx('๐Ÿš€ excellent connection'); } else if (latency < 100) { pingStatus = fontx('โšก good connection'); } else if (latency < 200) { pingStatus = fontx('๐Ÿ‘Œ average connection'); } else if (latency < 500) { pingStatus = fontx('๐Ÿ˜ฌ slow connection'); } else { pingStatus = fontx('๐Ÿข poor connection'); } const finalMessage = fontx(` *\`demon bot speed\`*\n *ping* ${latency}ms\n*status:* *${pingStatus}*\n> ${caption}`); await conn.relayMessage(m.chat, { protocolMessage: { key: initialMessage.key, type: 14, editedMessage: { conversation: finalMessage } } }, {}); break; } case 'runtime': case 'uptime': { reply(`${themeemoji} \`RUNTIME\` ${themeemoji}\n*${runtime(process.uptime())}*`) } break; case 'setprefix': { if (!isOwner) return reply(mess.only.owner); if (!text) return reply("Please provide a new prefix.\n\nExample: `.setprefix !`"); await loading() try { fs.writeFileSync(prefixFile, JSON.stringify({ prefix: text }, null, 2)); prefix = text; reply(`โœ… Prefix successfully changed to: *${text}*`); } catch (error) { console.error('Error saving new prefix:', error); reply("โŒ Failed to update the prefix."); } break; } case 'getprefix': { await loading(); try { const prefixData = JSON.parse(fs.readFileSync('./database/prefix.json', 'utf8')); const currentPrefix = prefixData.prefix || '.'; reply(`*Current Prefix:* \`${currentPrefix}\``); } catch (error) { console.error('Error reading prefix file:', error); reply('Failed to retrieve prefix.'); } break; } case 'delete': case 'del': case 'd': { if (!isOwner) return; if (!m.quoted) return; try { await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: m.quoted.id, participant: m.quoted.sender } }); await conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: true, id: m.id } }); } catch (err) { console.log("Error while deleting messages:", err); } } break; case 'clearchat': case 'clear': { if (!isOwner) return reply(mess.only.owner); conn.chatModify({ delete: true, lastMessages: [{ key: m.key, messageTimestamp: m.messageTimestamp }] }, m.chat ); await sleep(1500) reply(mess.success); } break; case 'block': { if (!isOwner) return reply(mess.only.owner); await loading(); let users; if (isGroup) { if (m.quoted && m.quoted.sender) { users = m.quoted.sender; } else if (text) { users = text.replace(/[^0-9]/g, '') + '@s.whatsapp.net'; } } else { users = m.chat; } if (users && users.replace(/[^0-9]/g, '').length >= 7) { await conn.updateBlockStatus(users, "block"); reply(mess.success); } else { reply("Please reply to a message or provide a valid number to block."); } break; } case 'unblock': { if (!isOwner) return reply(mess.only.owner); await loading(); let users; if (isGroup) { users = m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '') + '@s.whatsapp.net'; } else { users = m.chat; } if (users && users.replace(/[^0-9]/g, '').length >= 7) { await conn.updateBlockStatus(users, "unblock"); reply(mess.success); } else { reply("Please reply to a message or provide a valid number to unblock."); } break; } case 'setppbot': case 'setpp': { if (!isOwner) return reply(mess.only.owner) await loading() if (!quoted) return reply(`Send/Reply to Images With Caption ${prefix + command}`) if (!/image/.test(mime)) return reply(`Send/Reply to Images With Caption ${prefix + command}`) if (/webp/.test(mime)) return reply(`Send/Reply to Images With Caption ${prefix + command}`) var medis = await conn.downloadAndSaveMediaMessage(quoted, 'ppbot.jpeg') if (args[0] == `full`) { var { img } = await generateProfilePicture(medis) await conn.query({ tag: 'iq', attrs: { to: botNumber, type: 'set', xmlns: 'w:profile:picture' }, content: [{ tag: 'picture', attrs: { type: 'image' }, content: img }] }) fs.unlinkSync(medis) reply(mess.success) } else { var memeg = await conn.updateProfilePicture(botNumber, { url: medis }) fs.unlinkSync(medis) reply(mess.success) } } break case 'setbio': case 'setbotbio': { if (!isOwner) return reply(mess.only.owner); if (!q) return reply(`*Example: ${prefix + command} Text*`); try { await conn.updateProfileStatus(q); reply(`*Bio Has Been Changed To \`${q}\`*`); } catch (error) { console.error(error); reply("An error occurred while updating the bio. Please try again."); } break; } case 'restart': if (!isOwner) return reply(mess.only.owner) await loading() reply(`*restarting...*`) await sleep(3000) process.exit() break; case 'setname': case 'setbotname': { if (!isOwner) return reply(mess.only.owner); if (!text) return reply(`*Example: ${prefix + command} blue demon*`); try { await conn.updateProfileName(text); reply(`*successfully changed name to \`${text}\`*`); } catch (error) { console.error(error); reply("An error occurred while updating the name. Please try again."); } break; } case 'owner': case 'creator': case 'dev': { let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender; let pp = await conn.profilePictureUrl(who).catch(_ => 'https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_960_720.png?q=60'); let name = await conn.getName(who); await conn.sendContactArray(m.chat, [ [`2347041039367@s.whatsapp.net`, `BLUE DEMON`, `Bot Developer`, `Feel free to contact me for assistance or inquiries.`] ], m); await reply(`Hello ๐Ÿ‘‹, if you wish to contact the owner, please use the provided contact details.`); } break; case 'tagall': if (!isGroup) return reply(mess.only.group); if (!isAdmins && !isOwner) return reply(mess.only.admin); let me = m.sender let teks = fontx(` ๐Ÿ•ธ๏ธใ€Ž ๐๐‹๐”๐„ ๐— ๐ƒ๐„๐Œ๐Ž๐ ๐•๐Ÿ“ ใ€๐Ÿ•ธ๏ธ\n๐Ÿ‘€ *tagger* @${me.split('@')[0]}\n\n`) for (let mem of participants) { teks += `${themeemoji} @${mem.id.split('@')[0]}\n` } conn.sendMessage(m.chat, { text: teks, mentions: participants.map(a => a.id) }, { quoted: m }) break; case 'hidetag': case 'tag': { if (!isGroup) return reply(mess.only.group) if (!isAdmins && !isOwner) return reply(mess.only.admin); await loading(); conn.sendMessage(m.chat, { text : q ? q : '' , mentions: participants.map(a => a.id)}, {quoted:m}) break; default: } if (!isGroup && user && isPremium && new Date - user.pc < 86400000) {} else if (!isGroup && user && isPremium && !itsMe) { reply(`${ucapanWaktu} *${pushname}* how can i help you? please type *${prefix}menu*`) user.pc = new Date * 1 } if (global.badword === true && bad.some(word => budy.toLowerCase().includes(word.toLowerCase()))) { if (cekSpam("NotCase", senderNumber, AntiSpam)) return; addSpam("NotCase", senderNumber, "10s", AntiSpam); if (isGroup) { if (isBotGroupAdmins) { await conn.sendMessage(from, { delete: { remoteJid: from, fromMe: false, id: m.key.id, participant: m.sender, }, }); await conn.sendMessage(from, { text: `*Warning: Badwords are prohibited in this group.*\nYour message has been deleted.`, }, { quoted: m }); } else { await conn.sendMessage(from, { text: `*Warning: Badwords are prohibited in this group.*\nI don't have admin privileges to delete the message.`, }, { quoted: m }); } } else { await conn.sendMessage(from, { text: `*Warning: Badwords are prohibited.*\nPlease refrain from using inappropriate language.`, }, { quoted: m }); } } } catch (err) { console.log(err) if (isCmd) Failed(toFirstCase(command), dash) let e = util.format(err) if (err.message.includes("Cannot find module")) { let module = err.message.split("Cannot find module '")[1].split("'")[0] let teks = `Module ${module} has not been installed Please install it first` return await conn.sendText(dev.key.remoteJid, teks, dev) } await conn.sendText(Ownerin, `]โ”€โ”€โ”€โ”€โ”€ใ€Œ *SYSTEM-ERROR* ใ€โ”€โ”€โ”€โ”€โ”€[\n\n${e}\n\nยฉ ${botName}`, dev) if (autoblockcmd) { addblockcmd(command, listcmdblock) await reply("Command telah di block karena terjadi error") } } } catch (err) { console.log(chalk.bgRed(color("[ ERROR ]", "black")), util.format(err)) let e = String(err) if (e.includes("this.isZero")) { return } if (e.includes("rate-overlimit")) { if (!publik) return publik = false await conn.sendMessage(botNumber + "@s.whatsapp.net", { text: `Rate-overlimit occurred The bot has switched from public mode to Self mode To avoid excessive spam, Please wait 1 minute until all messages have been read by the bot` }) await setTimeout(() => { publik = true conn.sendMessage(botNumber + "@s.whatsapp.net", { text: `Successfully changed self mode to public mode` }) }, 60000) return } if (e.includes('Connection Closed')) { return } if (e.includes('Timed Out')) { return } if (e.includes('Value not found')) { return } console.log(color('Message Error : %s', 'white'), color(util.format(e), 'green')) if (Console) { conn.sendMessage(Ownerin, { text: util.format(e) }) } } } let file = require.resolve(__filename) fs.watchFile(file, () => { fs.unwatchFile(file) console.log(chalk.bgGreen(color("[ UPDATE ]", "black")), chalk.white(`${__filename}`)) delete require.cache[file] require(file) })