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 { 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 { Failed, Succes, checkDataId } = require("../lib/totalcmd"); const _sewa = require('../lib/sewa') const _prem = require("../lib/premium"); const { bad } = require('../message/messages') const ephoto = require('../lib/scraper') 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) 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 //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 } } } //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); 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 'hey-minorr': { 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}\`\`\` > *๐“ƒ *\`\`\`DATE : ${calender}\`\`\` > *๐“ƒ *\`\`\`TIME : ${timeWib}\`\`\` ${readmore} > โ”€ใ€Ž \`๐Ž๐–๐๐„๐‘ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}checkupdate > ${sign} ${prefix}update > ${sign} ${prefix}setsudo > ${sign} ${prefix}delsudo > ${sign} ${prefix}getsudo > ${sign} ${prefix}ping > ${sign} ${prefix}self > ${sign} ${prefix}public > ${sign} ${prefix}block > ${sign} ${prefix}unblock > ${sign} ${prefix}setpp > ${sign} ${prefix}setbio > ${sign} ${prefix}restart > ${sign} ${prefix}setname > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐†๐‘๐Ž๐”๐ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}tag > ${sign} ${prefix}tagall > ${sign} ${prefix}kick > ${sign} ${prefix}add > ${sign} ${prefix}mute > ${sign} ${prefix}unmute > ${sign} ${prefix}invite > ${sign} ${prefix}tagme > ${sign} ${prefix}kickall > ${sign} ${prefix}gcinfo > ${sign} ${prefix}revoke > ${sign} ${prefix}gclink > ${sign} ${prefix}leavegc > ${sign} ${prefix}listonline > ${sign} ${prefix}setppgc > ${sign} ${prefix}delppgc > ${sign} ${prefix}getppgc > ${sign} ${prefix}antivirtex > ${sign} ${prefix}promote > ${sign} ${prefix}demote > ${sign} ${prefix}welcome > ${sign} ${prefix}opentime > ${sign} ${prefix}closetime > ${sign} ${prefix}tagadmin > ${sign} ${prefix}listadmin > ${sign} ${prefix}setgcname > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐Œ๐„๐ƒ๐ˆ๐€ ๐ƒ๐Ž๐–๐๐‹๐Ž๐€๐ƒ๐’\` ใ€ > ${sign} ${prefix}play > ${sign} ${prefix}video > ${sign} ${prefix}animedl > ${sign} ${prefix}aio > ${sign} ${prefix}yts > ${sign} ${prefix}ytmp3 > ${sign} ${prefix}ytmp4 > ${sign} ${prefix}tiktok > ${sign} ${prefix}tiktok2 > ${sign} ${prefix}twitter > ${sign} ${prefix}tiktokaud > ${sign} ${prefix}all-in-one > ${sign} ${prefix}facebook > ${sign} ${prefix}Instagram > ${sign} ${prefix}sound1 to 95 > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐†๐„๐๐„๐‘๐€๐‹ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}owner > ${sign} ${prefix}runtime > ${sign} ${prefix}setprefix > ${sign} ${prefix}getprefix > ${sign} ${prefix}scan > ${sign} ${prefix}listcase > ${sign} ${prefix}mode > ${sign} ${prefix}delete > ${sign} ${prefix}clearchat > ${sign} ${prefix}antilink > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐…๐ˆ๐‹๐„ ๐ƒ๐Ž๐–๐๐‹๐Ž๐€๐ƒ๐’\` ใ€ > ${sign} ${prefix}apk > ${sign} ${prefix}app > ${sign} ${prefix}apkfab > ${sign} ${prefix}gitclone > ${sign} ${prefix}githubdl > ${sign} ${prefix}mediafire > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐“๐Ž๐Ž๐‹๐’ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}pay > ${sign} ${prefix}areact > ${sign} ${prefix}qr > ${sign} ${prefix}join > ${sign} ${prefix}script > ${sign} ${prefix}sticker > ${sign} ${prefix}getjid > ${sign} ${prefix}fancy > ${sign} ${prefix}style > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐’๐„๐€๐‘๐‚๐‡ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}bible > ${sign} ${prefix}lyrics > ${sign} ${prefix}spotify > ${sign} ${prefix}brave > ${sign} ${prefix}pinterest > ${sign} ${prefix}element > ${sign} ${prefix}randomcolor > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐€๐ˆ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}tts > ${sign} ${prefix}blueai > ${sign} ${prefix}gemini > ${sign} ${prefix}llama3.4 > ${sign} ${prefix}blackbox > ${sign} ${prefix}bing > ${sign} ${prefix}gemini-pro > ${sign} ${prefix}flux > ${sign} ${prefix}text2img > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐’๐“๐€๐‹๐Š๐„๐‘ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}npmstalk > ${sign} ${prefix}country > ${sign} ${prefix}wachannel > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐€๐ƒ๐•๐€๐๐‚๐„ ๐“๐Ž๐Ž๐‹๐’\` ใ€ > ${sign} ${prefix}get > ${sign} ${prefix}fetch > ${sign} ${prefix}html > ${sign} ${prefix}ssweb > ${sign} ${prefix}getdevice > ${sign} ${prefix}hard-encrypt > ${sign} ${prefix}tinyurl > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐…๐”๐ ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}joke > ${sign} ${prefix}rizz > ${sign} ${prefix}truth > ${sign} ${prefix}flirt > ${sign} ${prefix}dare > ${sign} ${prefix}quote > ${sign} ${prefix}aniquote > ${sign} ${prefix}love > ${sign} ${prefix}gross > ${sign} ${prefix}angry > ${sign} ${prefix}conf > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐Ž๐“๐‡๐„๐‘ ๐Œ๐„๐๐”\` ใ€ > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐๐’๐…๐– ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}waifu > ${sign} ${prefix}hentai > ${sign} ${prefix}xxxdl > ${sign} ${prefix}xxxsearch > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐‘๐€๐๐ƒ๐Ž๐Œ ๐‚๐Œ๐ƒ๐’\` ใ€ > ${sign} ${prefix}cecan-indo > ${sign} ${prefix}cecan-china > ${sign} ${prefix}cecan-japan > ${sign} ${prefix}cecan-korea > ${sign} ${prefix}cecan-thailand > ${sign} ${prefix}cecan-vietnam > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > โ”€ใ€Ž \`๐„๐๐‡๐Ž๐“๐Ž ๐Œ๐„๐๐”\` ใ€ > ${sign} ${prefix}writetext > ${sign} ${prefix}glitchtext > ${sign} ${prefix}pixelglitch > ${sign} ${prefix}neonglitch > ${sign} ${prefix}royaltext > ${sign} ${prefix}flagtext > ${sign} ${prefix}flag3dtext > ${sign} ${prefix}glowingtext > ${sign} ${prefix}logomaker > ${sign} ${prefix}gradienttext > ${sign} ${prefix}luxurygold > ${sign} ${prefix}1917style > ${sign} ${prefix}freecreate > ${sign} ${prefix}galaxystyle > ${sign} ${prefix}lighteffects > ${sign} ${prefix}makingneon > ${sign} ${prefix}cartoonstyle > ${sign} ${prefix}deletingtext > ${sign} ${prefix}blackpinkstyle > ${sign} ${prefix}papercutstyle > ${sign} ${prefix}sandsummer > ${sign} ${prefix}effectclouds > ${sign} ${prefix}blackpinklogo > ${sign} ${prefix}summerbeach > ${sign} ${prefix}advancedglow > ${sign} ${prefix}watercolortext > ${sign} ${prefix}underwatertext > ${sign} ${prefix}typographytext > ${sign} ${prefix}galaxywallpaper > ${sign} ${prefix}multicoloredneon > โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ > ${caption}`) }) await sleep(2000) 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 'checkupdate': { if (!isOwner) return reply(mess.only.owner); await loading(); let filesToCheck = [ { 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' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/group.js', path: './message/group.js', name: 'group.js' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/message.js', path: './message/message.js', name: 'message.js' } ]; try { let updateMessages = []; let newCases = []; let timestamp = new Date().toLocaleString(); for (let file of filesToCheck) { let oldSize = fs.existsSync(file.path) ? fs.statSync(file.path).size : 0; let response = await fetch(file.url); if (!response.ok) { updateMessages.push(`โŒ Could not check *${file.name}*.`); continue; } let newContent = await response.text(); let newSize = Buffer.byteLength(newContent, 'utf8'); let sizeDifference = ((newSize - oldSize) / 1024).toFixed(2); if (file.name === "case.js") { let oldCases = (fs.existsSync(file.path) ? fs.readFileSync(file.path, 'utf8') : "").match(/case\s+'([^']+)'/g) || []; let updatedCases = newContent.match(/case\s+'([^']+)'/g) || []; newCases = updatedCases.filter(c => !oldCases.includes(c)).map(c => c.replace("case '", "").replace("'", "")); } updateMessages.push( sizeDifference > 0 ? `๐Ÿ†• *${file.name}* has an update available! (+${sizeDifference}KB)` : `โœ… *${file.name}* is up to date.` ); } let newCasesText = newCases.length ? `๐Ÿ†• *New Cases Detected:*\n${newCases.join("\n")}` : "โœ… No new cases detected."; conn.sendMessage(m.chat, { image: { url: "https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/update.jpeg" }, caption: fontx(`๐Ÿ” *Update Check Completed!*\n๐Ÿ“… *Checked On:* ${timestamp}\n\n${updateMessages.join("\n")}\n\n${newCasesText}`) }); } catch (error) { console.error("Error checking updates:", error); conn.sendMessage(m.chat, { text: "โŒ Error while checking updates. Try again later." }); } 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' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/group.js', path: './message/group.js', name: 'group.js' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/message.js', path: './message/message.js', name: 'message.js' } ]; try { let updateMessages = []; let newCases = []; let timestamp = new Date().toLocaleString(); for (let file of filesToUpdate) { let oldContent = fs.existsSync(file.path) ? fs.readFileSync(file.path, 'utf8') : ""; let oldSize = Buffer.byteLength(oldContent, 'utf8'); 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 = Buffer.byteLength(newContent, 'utf8'); let sizeDifference = ((newSize - oldSize) / 1024).toFixed(2); if (file.name === "case.js") { let oldCases = oldContent.match(/case\s+'([^']+)'/g) || []; let updatedCases = newContent.match(/case\s+'([^']+)'/g) || []; newCases = updatedCases.filter(c => !oldCases.includes(c)).map(c => c.replace("case '", "").replace("'", "")); } updateMessages.push( sizeDifference > 0 ? `โœ… *${file.name}* updated! (+${sizeDifference}KB)` : `โœ… *${file.name}* is already up to date.` ); } let newCasesText = newCases.length ? `๐Ÿ†• *New Cases Added:*\n${newCases.join("\n")}` : "โœ… No new cases added."; conn.sendMessage(m.chat, { image: { url: "https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/update.jpeg" }, caption: fontx(`๐Ÿ”„ *Update Completed!*\n๐Ÿ“… *Updated On:* ${timestamp}\n\n${updateMessages.join("\n")}\n\n${newCasesText}`) }); } catch (error) { console.error("Error updating files:", error); conn.sendMessage(m.chat, { text: "โŒ Error while updating. 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 }; case 'kick': { if (!isGroup) return reply(mess.only.group); await loading(); if (!isBotGroupAdmins) return reply(mess.only.Badmin); if (!isGroupAdmins && !isOwner) return reply(mess.only.admin); let mentioned = []; if (m.quoted) { mentioned = [m.quoted.sender]; } else if (mentionByTag.length > 0) { mentioned = mentionByTag; } else if (args[0]) { mentioned = [`${args[0].replace(/[^0-9]/g, '')}@s.whatsapp.net`]; } if (mentioned.length === 0) { return reply('Please reply to a user, tag someone, or provide a number to kick.'); } try { await conn.groupParticipantsUpdate(m.chat, mentioned, 'remove'); reply(`Successfully kicked ${mentioned.map(v => `@${v.split('@')[0]}`).join(', ')}`, { mentions: mentioned }); } catch (error) { console.error('Error in kick case:', error); reply('Failed to kick the user. Make sure I have the correct permissions.'); } break; } case 'add': { if (!isGroup) return reply(mess.only.group); if (!isBotGroupAdmins) return reply(mess.only.Badmin); if (!isGroupAdmins && !isOwner) return reply(mess.only.admin); await loading(); let number; if (args[0]) { number = args[0].replace(/[^0-9]/g, ''); } else if (m.quoted && m.quoted.sender) { number = m.quoted.sender.split('@')[0]; } else { return reply('Please provide a number or reply to a user to add.'); } const user = `${number}@s.whatsapp.net`; try { await conn.groupParticipantsUpdate(m.chat, [user], 'add'); await conn.sendMessage(m.chat, { text: fontx(`Successfully added @${number}\n> ${caption}`), mentions: [user] }, { quoted: m }); } catch (error) { reply('Failed to add the user. Make sure the number is valid and I have the correct permissions.'); console.error(error); } break; } case 'tinyurl': { if (!q) return reply(`Please provide a valid URL.\n\nExample: *${prefix + command} https://example.com*`); await loading(); try { let apiUrl = `https://api-xx-xi.hf.space/api/tinyurl?url=${encodeURIComponent(q)}`; let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.short_url) { return reply("โŒ Failed to shorten the URL. Please try again."); } conn.sendMessage(m.chat, { text: fontx(`๐Ÿ”— *Shortened URL:*\n\n๐Ÿ“ *Long:* `) + q + fontx(`\nโœ‚๏ธ *Short:* `) + json.short_url, }, { quoted: m }); } catch (error) { console.error("Error in tinyurl case:", error); reply("โŒ An error occurred while shortening the URL. Please try again later."); } break; } case 'areact': { if (!isOwner) return reply(mess.only.owner); if (!args[0]) return reply(`Example: ${prefix + command} on/off`); if (args[0] === 'on') { global.autoreact = true; await reply('Successfully Activated AutoReact.'); } else if (args[0] === 'off') { global.autoreact = false; await reply('Successfully Deactivated AutoReact.'); } else { return reply(`Invalid option. Use "on" or "off" to toggle AutoReact.`); } break; } case 'blueai': { if (!q) { return reply(`*Please provide a query.*\n\n*Example:* ${prefix + command} Hello, which model are you?`); } await loading(); try { const prompt = "your model is based on gpt 5 mini trained by blue demon, Your purpose is to assist users with a wide range of tasks and queries effectively without too much talk,from now on u are Branded by this. Question: "; const apiUrl = `https://api-lenwy.vercel.app/ai4chat?text=${encodeURIComponent(prompt)}${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const res = await response.json(); if (res.status !== 200 || !res.data) { return reply("Failed to process your request. Please try again later."); } const aiResponse = res.data; await conn.sendMessage(from, { image: { url: 'https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/thumb.jpg', }, caption: fontx(`*BLUE AI Response:*\n${aiResponse}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in BLUE Ai case:", error); reply("An error occurred while processing your request. Please try again later."); } break; } case 'gemini': { if (!q) return reply(`*Please provide a query.*\n\n*Example:* ${prefix + command} Hello, which model are you?`); await loading(); try { const apiUrl = `https://api-lenwy.vercel.app/ai4chat?text=${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const res = await response.json(); if (res.status !== 200 || !res.data) { return reply("Failed to process your request. Please try again later."); } const aiResponse = res.data; await conn.sendMessage(from, { image: { url: 'https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/images.jpeg' }, caption: fontx(`*Gemini AI Response:*\n\n${aiResponse}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in Gemini case:", error); reply("An error occurred while processing your request. Please try again later."); } break; } case 'gemini-pro': case 'ai': { if (!q) { return reply(`*Please provide a query.*\n\n*Example:* ${prefix + command} Hello, what model are you?`); } await loading(); try { const apiUrl = `https://bk9.fun/ai/gemini?q=${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const res = await response.json(); if (!res.status || !res.BK9) { return reply("Failed to process your request. Please try again later."); } const aiResponse = res.BK9; await conn.sendMessage(from, { image: { url: 'https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/images%20(1)%20(1).jpeg' }, caption: fontx(`*Gemini pro Response:*\n${aiResponse}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in Gemini-pro case:", error); reply("An error occurred while processing your request. Please try again later."); } break; } case 'flux': { if (!q) return reply(`โŒ Please enter a prompt.\n\nExample: *${prefix + command} create a cyberpunk lizard image*`); await loading(); // Display loading message try { let imageUrl = `https://api.siputzx.my.id/api/ai/flux?prompt=${encodeURIComponent(q)}`; await conn.sendMessage(m.chat, { image: { url: imageUrl }, caption: fontx(`๐ŸŽจ *Flux AI Generated Image*\n\n๐Ÿ“ *Prompt:* ${q}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in flux case:", error); reply("โŒ An error occurred while generating the image. Please try again later."); } break; } case 'llama3.4': { if (!q) return reply(`โŒ Please enter a question or prompt.\n\nExample: *${prefix + command} What is AI?*`); await loading(); // Display loading message try { let apiUrl = `https://api.siputzx.my.id/api/ai/meta-llama-33-70B-instruct-turbo?query=${encodeURIComponent(q)}`; let imageUrl = "https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/Llama3.4.jpg"; let response = await fetch(apiUrl); let json = await response.json(); if (!json.status || !json.data) { return reply("โŒ No response received. Try again later."); } let aiResponse = json.data; await conn.sendMessage(m.chat, { image: { url: imageUrl }, caption: fontx(`๐Ÿค– *Llama 3.4 AI Response*\n\n๐Ÿ’ฌ *Query:* ${q}\n๐Ÿง  *Response:* ${aiResponse}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in llama3.4 case:", error); reply("โŒ An error occurred while processing your request. Please try again later."); } break; } case 'blackbox': { if (!q) return reply("โŒ Please enter a question or prompt.\n\nExample: .blackbox How do I code in JavaScript?"); await loading(); let apiUrl = `https://api.siputzx.my.id/api/ai/blackboxai-pro?content=${encodeURIComponent(q)}`; let imageUrl = "https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/blackbox.jpg"; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.status || !json.data) { return reply("โŒ No response received. Try again later."); } let aiResponse = json.data.replace(/\n\n<\/think>\n\n/, ''); // Remove unnecessary tags await conn.sendMessage(m.chat, { image: { url: imageUrl }, caption: fontx(`๐Ÿ–ค *Blackbox AI Response*\n\n๐Ÿ’ฌ *Query:* ${q}\n๐Ÿง  *Response:* ${aiResponse}`) }, { quoted: m }); } catch (error) { console.error("Error fetching Blackbox AI response:", error); reply("โŒ Error while processing your request. Try again later."); } break; } case 'mute': { if (!m.isGroup) return reply(mess.only.group); if (!isOwner && !isAdmins) return reply(mess.only.admin); if (!isBotAdmins) return reply(mess.only.Badmin); try { await loading() await conn.groupSettingUpdate(m.chat, 'announcement'); reply(mess.success); } catch (err) { console.error(err); reply('Failed to mute the group. Please try again.'); } break; } case 'unmute': { if (!m.isGroup) return reply(mess.only.group); if (!isOwner && !isAdmins) return reply(mess.only.admin); if (!isBotAdmins) return reply(mess.only.Badmin); try { await loading() await conn.groupSettingUpdate(m.chat, 'not_announcement'); reply(mess.success); } catch (err) { console.error(err); reply('Failed to unmute the group. Please try again.'); } break; } case 'tagme': { let menst = [sender] conn.sendMessage(from, { text: `@${senderNumber}`, mentions: menst }) } break case 'kickall': { if (!isGroup && !isGroupAdmins) return reply(mess.only.group) if (!isBotGroupAdmins) return reply(mess.only.Badmin) const xeonkickall = (args[0] === 'numBut') ? q.replace(`${args[0]} `, '').split('|') : (Number(args[0])) ? groupMetadata.participants .filter(item => item.id.startsWith(args[0].replace('+', '')) && item.id !== botNumber && item.id !== `${botNumber}@s.whatsapp.net`) .map(item => item.id) : groupMetadata.participants .filter(item => item.id !== botNumber && item.id !== `${botNumber}@s.whatsapp.net`) .map(item => item.id); if (chat.welcome == false) db.data.chats[from].welcome = false for (let remove of xeonkickall) { await conn.groupParticipantsUpdate(m.chat, [(args[0] === "numBut") ? `${remove}@s.whatsapp.net` : remove], "remove"); await sleep(100); } reply(mess.success); } break case 'setppgc': { if (!isGroup) return reply(mess.only.group) if (!isGroupAdmins) return reply(mess.only.admin) if (!isBotGroupAdmins) return reply(mess.only.Badmin) await loading() if (isImage || isQuotedImage) { let media = await conn.downloadAndSaveMediaMessage(quoted, makeid(5)) await conn.updateProfilePicture(from, { url: media }) .then(res => { reply(mess.success) fs.unlinkSync(media) }).catch(() => reply(mess.error.api)) } else { reply(`Send/reply images with captions ${command}`) } } break case 'getppgc': if (!isGroup) return reply(mess.only.group) if (!isGroupAdmins) return reply(mess.only.admin) await loading() try { var ppimg = await conn.profilePictureUrl(from, 'image') } catch (err) { console.log(err) var ppimg = 'https://i0.wp.com/www.gambarunik.id/wp-content/uploads/2019/06/Top-Gambar-Foto-Profil-Kosong-Lucu-Tergokil-.jpg' } await conn.sendMessage(from, { image: { url: ppimg } }, { quoted: m }) break case 'delppgc': { if (!isGroup) return reply(mess.only.group) if (!isGroupAdmins) return reply(mess.only.admin) if (!isBotGroupAdmins) return reply(mess.only.Badmin) await loading() await conn.removeProfilePicture(from) } break case 'invite': { if (!isGroup) return reply(mess.only.group); if (!isBotGroupAdmins) return reply(mess.only.Badmin); if (!text) return reply(`\`No WhatsApp number detected.\`\n*Example: ${prefix + command} 255734980103*`); if (text.includes('+')) return reply(`\`Input the WhatsApp number without *+*\``); if (isNaN(text)) return reply(`Please enter only numbers, including your country code, without spaces.`); let group = m.chat; try { let link = 'https://chat.whatsapp.com/' + await conn.groupInviteCode(group); await conn.sendMessage(`${text}@s.whatsapp.net`, { text: ` *๐™‚๐™๐™Š๐™๐™‹ ๐™„๐™‰๐™‘๐™„๐™๐˜ผ๐™๐™„๐™Š๐™‰ ๐™‡๐™„๐™‰๐™†*\n*\`๐šˆ๐™พ๐š„ ๐™ฐ๐š๐™ด ๐™ธ๐™ฝ๐š…๐™ธ๐šƒ๐™ด๐™ณ ๐šƒ๐™พ ๐™น๐™พ๐™ธ๐™ฝ: ${groupMetadata.subject}\`*\n*๐™ป๐™ธ๐™ฝ๐™บ:* ${link}` }); reply("*Group invitation link successfully sent.*"); } catch (error) { console.error("Error in invite case:", error); reply("Failed to send the invite link. Please check the number and try again."); } break; } case 'gcinfo': { if (!isGroup) return reply(mess.only.group) await loading() let _meta = await conn.groupMetadata(from) console.log(_meta) let _img = await conn.profilePictureUrl(_meta.id, 'image') let caption = `*G R O U P I N F O* Anti Link : *${isAntiLink ? 'ACTIVEโœ…' : 'UNACTIVEโŒ'}* Anti Virtex : *${isAntiVirtex ? 'ACTIVEโœ…' : 'UNACTIVEโŒ'}* Anti Delete : *${isAntidelete ? 'ACTIVEโœ…' : 'UNACTIVEโŒ'}* Anti ViewOnce : *${isAntiViewOnce ? 'ACTIVEโœ…' : 'UNACTIVEโŒ'}* Anti Toxic : *${isAntiToxic ? 'ACTIVEโœ…' : 'UNACTIVEโŒ'}* โญ“ *Name :* ${_meta.subject} โญ“ *Group ID :* ${_meta.id} โญ“ *Created on :* ${moment(_meta.creation * 1000).format('ll')} โญ“ *GC owner:* ${_meta.subjectOwner} โญ“ *Admins length:* ${_meta.participants.filter(x => x.admin === 'admin').length} โญ“ *participants length:* ${_meta.participants.filter(x => x.admin === null).length} โญ“ *Desc :* ${_meta.desc}` await conn.sendMessage(from, { caption, image: await getBuffer(_img) }, { quoted: fcall }) } break; case 'revoke': case 'resetgclink': { if (!isGroup) return reply(mess.only.group) if (!isOwner && !isGroupAdmins) return reply(mess.only.admin) if (!isBotGroupAdmins) return reply(mess.only.Badmin) conn.groupRevokeInvite(from) } break case 'antilink': { if (!isGroup) return reply(mess.only.group) if (!isGroupAdmins && !isOwner) return reply(mess.only.admin) await loading() if ((args[0]) === 'on' || (args[0]) === 'enable' || (args[0]) === '1') { if (isAntiLink) return reply('the feature is already active.') db.data.chats[from].antilink = true let ih = `the antilink feature has been activated.` reply(ih) } else if ((args[0]) === 'off' || (args[0]) === 'disable' || (args[0]) === '0') { if (!isAntiLink) return reply('the antilink feature is already off.') db.data.chats[from].antilink = false let ih = `the antilink feature has been deactivated.` reply(ih) } else if (!q) { reply(`*anti link mode*\n ${prefix + command} on/off`) } } break; case 'text2img': { if (!q) return reply(`Please provide a prompt.\n\nExample: *${prefix + command} a big dog and a tiny cat*`); await loading(); try { let imageUrl = `https://api-xx-xi.hf.space/api/text2img?prompt=${encodeURIComponent(q)}`; await conn.sendMessage(m.chat, { image: { url: imageUrl }, caption: fontx(`๐Ÿ–ผ๏ธ *Generated Image*\n\n๐Ÿ“œ *Prompt:* ${q}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in text2img case:", error); reply("โŒ An error occurred while generating the image. Please try again later."); } break; } case 'tts': case 'say': { if (!q) { return reply(`\`Please provide text to convert to speech.\`\n\n*Example:*\n${prefix + command} hello`); } try { await loading(); const apiUrl = `https://bk9.fun/tools/tts?q=${encodeURIComponent(q)}&lang=en`; const response = await fetch(apiUrl); if (!response.ok) { return reply("Failed to process your request. Please try again later."); } await conn.sendMessage(from, { audio: { url: apiUrl }, mimetype: "audio/mp4", fileName: `tts_${Date.now()}.mp3`, ptt: true, // Send as a voice note }, { quoted: m }); } catch (error) { console.error("Error in TTS case:", error); reply("An error occurred while processing your request. Please try again later."); } break; } case "vv": case "readviewonce": { if (!isOwner) return reply(mess.only.owner); if (!quoted) return reply("reply to a view-once message!"); let msg = quoted; let msgType = Object.keys(msg)[0]; if (!msg[msgType]?.viewOnce) return reply("this isn't a view-once message!"); await loading(); try { let media = await downloadMediaMessage( msg[msgType], msgType === "imageMessage" ? "image" : msgType === "videoMessage" ? "video" : "audio" ); if (!media) return reply("Failed to retrieve the media."); let originalCaption = msg[msgType]?.caption || "No caption"; let formattedCaption = originalCaption.split("\n").map(line => `> ${line}`).join("\n"); let finalCaption = `> ${caption}`; if (/video/.test(msgType)) { await conn.sendMessage(chat, { video: media, caption: finalCaption }, { quoted: mess }); } else if (/image/.test(msgType)) { await conn.sendMessage(chat, { image: media, caption: finalCaption }, { quoted: mess }); } else if (/audio/.test(msgType)) { await conn.sendMessage(chat, { audio: media, mimetype: "audio/mpeg", ptt: true }, { quoted: mess }); } } catch (error) { console.error("โŒ Error retrieving View Once message:", error); return reply("Failed to retrieve the View Once message."); } } break; case 'qr': { if (!q) return reply("Please provide text or a link to generate a QR code."); await loading(); const apiUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(q)}`; await conn.sendMessage(m.chat, { image: { url: apiUrl }, caption: `โœ… *QR Code Generated*\n๐Ÿ”— Data: ${q}` }, { quoted: m }); break; } case 'script': case 'repo': case 'sc': { try { await loading(); await loading(); const zipUrl = 'https://github.com/BLUEXDEMONl/BLUEXDEMON-V5/archive/refs/heads/master.zip'; const response = await fetch(zipUrl); if (!response.ok) { return reply(`*Failed to download the repository.*\nReason: ${response.statusText}`); } const zipBuffer = await response.buffer(); await conn.sendMessage(m.chat, { document: zipBuffer, mimetype: 'application/zip', fileName: 'BLUE-DEMON-V5.zip', caption: `*REPO LINK*: https://github.com/BLUEXDEMONl/BLUEXDEMON-V5.git\n*CHANNEL*: https://whatsapp.com/channel/0029Vah3fKtCnA7oMPTPJm1h`, }, { quoted: m }); } catch (e) { console.error('Error in script case:', e); reply('An error occurred while fetching the script. Please try again later.'); } break; } case 'ssweb': { if (!q) return reply("Please provide a valid URL.\nExample: *" + prefix + command + " https://example.com*"); await loading(); try { let apiUrl = `https://api-xx-xi.hf.space/api/screenshot?url=${encodeURIComponent(q)}`; await conn.sendMessage(m.chat, { image: { url: apiUrl }, caption: fontx(`๐Ÿ–ฅ๏ธ Screenshot of: `) + q }, { quoted: m }); } catch (error) { console.error("Error in ssweb case:", error); conn.sendMessage(m.chat, { text: "โŒ Failed to capture screenshot. Please try again later." }); } break; } case 'welcome': { if (!isGroup) return reply(mess.only.group) if (!isAdmins && !isOwner) return reply(mess.only.admin) if (!q) return reply("Enter the query 'on' or 'off'"); await loading() if (q == 'on') { if (chat.welcome == true) return reply('Welcome is already active'); db.data.chats[from].welcome = true; reply('successfully activated welcome in this group'); } else if (q == 'off') { if (chat.welcome == false) return reply('welcome is already inactive'); db.data.chats[from].welcome = false; reply('successfully deactivated welcome in this group'); } else reply('Choose "on" or "off"'); } break; case 'encrypt': case 'obfuscate': case 'hard-encrypt': { if (!text) return reply(`\`No JavaScript code detected\`\n*Example:* ${prefix + command} console.log('blue demon');`); await loading(); try { const apiUrl = `https://api-xx-xi.hf.space/api/obf?code=${encodeURIComponent(text)}`; const response = await fetch(apiUrl); if (!response.ok) { console.error(`API returned status: ${response.status} ${response.message}`); return reply("Failed to connect to the obfuscation service. Please try again later."); } const res = await response.json(); if (res.status !== 200 || !res.success) { console.error(`API error: ${JSON.stringify(res)}`); return reply("Failed to obfuscate the provided code. Please ensure the code is valid and try again."); } const encryptedCode = res.obfuscatedCode; const tempFilePath = './blue-enc.js'; const fs = require('fs'); fs.writeFileSync(tempFilePath, encryptedCode, 'utf8'); await conn.sendMessage(m.chat, { document: { url: tempFilePath }, mimetype: 'application/javascript', fileName: 'BLUE-ENC.js', caption: fontx(`> ${caption}`), }, { quoted: m }); fs.unlinkSync(tempFilePath); } catch (error) { console.error("Error in obfuscate case:", error.message || error); reply("An error occurred while processing your request. Please try again later."); } break; } case 'getdevice': case 'device': case 'phone': { if (!m.quoted) return reply(`Please reply to a chat message with *${prefix + command}* to get device information.`); try { await loading(); const deviceInfo = await getDevice(m.quoted.id || m.key.id); if (!deviceInfo) return reply("Unable to fetch device information. Please try again later."); await conn.sendMessage(m.chat, { text: fontx(`๐Ÿ“ฑ *\`device type\`* *${deviceInfo}*`), }, { quoted: m }); } catch (error) { reply("An error occurred while fetching the device information. Please try again later."); } break; } case 'html': { if (!q) return reply("Please provide a valid link to fetch."); const isValidUrl = (url) => { try { new URL(url); return true; } catch (err) { return false; } }; if (!isValidUrl(q)) return reply("Invalid URL. Please provide a proper link."); try { await loading(); const response = await fetch(q); if (!response.ok) { return reply(`โŒ Failed to fetch the link. Server responded with status: ${response.status}`); } const html = await response.text(); const fileName = `Blue_result.html`; await conn.sendMessage(m.chat, { document: Buffer.from(html, 'utf-8'), mimetype: 'text/html', fileName: fileName, caption: `๐Ÿ“„ *Fetched HTML Page*\n๐Ÿ”— *URL:* ${q}` }); } catch (error) { console.error("Error in get case:", error); reply("โŒ An error occurred while fetching the link. Please try again later."); } break; } case 'get': { if (!q) return reply("Please provide a valid link to fetch."); const isValidUrl = (url) => { try { new URL(url); return true; } catch (err) { return false; } }; if (!isValidUrl(q)) return reply("Invalid URL. Please provide a proper link."); try { await loading(); const response = await fetch(q); if (!response.ok) { return reply(`Failed to fetch the link. Server responded with status: ${response.status}`); } const html = await response.text(); const maxLength = 700000; const output = html.length > maxLength ? html.slice(0, maxLength) + `\n\n*Output truncated. Full content exceeds ${maxLength} characters.*` : html; replyx(`${output}`); } catch (error) { console.error("Error in get case:", error); reply("An error occurred while fetching the link. Please try again later."); } break; } case 'fetch': { if (!q) return reply(`\`No link detected\`\nExample: *${prefix + command} https://example.com/media.mp4*`); await loading(); try { let url = q.trim(); let response = await fetch(url, { method: 'HEAD' }); if (!response.ok) { return conn.sendMessage(m.chat, { text: `โŒ *Failed to fetch the link.*\nStatus: ${response.status}` }); } let contentType = response.headers.get('content-type') || ''; let filename = url.split('/').pop().split('?')[0]; let messageOptions = { caption: `๐Ÿ”— *Fetched Content*\n๐Ÿ“Ž *Filename:* ${filename}` }; if (contentType.includes('image')) { conn.sendMessage(m.chat, { image: { url }, ...messageOptions }); } else if (contentType.includes('video')) { conn.sendMessage(m.chat, { video: { url }, ...messageOptions }); } else if (contentType.includes('audio')) { conn.sendMessage(m.chat, { audio: { url }, mimetype: 'audio/mpeg', ...messageOptions }); } else { conn.sendMessage(m.chat, { document: { url }, mimetype: contentType || 'application/octet-stream', fileName: filename, ...messageOptions }); } } catch (error) { console.error("Error in fetch case:", error); conn.sendMessage(m.chat, { text: "โŒ An error occurred while fetching the content. Please try again later." }); } break; } case 'gross': { const grossEmojis = [ '๐Ÿคข', '๐Ÿคฎ', '๐Ÿ˜–', '๐Ÿ˜ซ', '๐Ÿคข๐Ÿคข', '๐Ÿคฎ๐Ÿคฎ', '๐Ÿ˜ตโ€๐Ÿ’ซ', '๐Ÿคง', '๐Ÿคข๐Ÿคฎ', '๐Ÿ˜ท', '๐Ÿคข๐Ÿคข๐Ÿคฎ', '๐Ÿคฎ๐Ÿคฎ๐Ÿคฎ', '๐Ÿคข๐Ÿคข๐Ÿคข', '๐Ÿคฎ๐Ÿคข๐Ÿคฎ', '๐Ÿ˜ต', '๐Ÿค’', '๐Ÿค•', '๐Ÿคข๐Ÿคฎ๐Ÿคข', '๐Ÿคฎ๐Ÿ˜ซ๐Ÿคข', '๐Ÿคฎ๐Ÿคข๐Ÿ˜ต' ]; const grossMsg = await conn.sendMessage(m.chat, { text: fontx(grossEmojis[0]) }, { quoted: m }); const updateMessage = async (index = 1) => { if (index < grossEmojis.length) { await conn.relayMessage(m.chat, { protocolMessage: { key: grossMsg.key, type: 14, editedMessage: { conversation: fontx(grossEmojis[index]) } } }, {}); setTimeout(() => updateMessage(index + 1), 1000); } }; setTimeout(() => updateMessage(), 1000); break; } case 'love': { const heartEmojis = [ 'โ™ฅ๏ธ', 'โฃ๏ธ', '๐Ÿ’˜', '๐Ÿ’', '๐Ÿ’–', '๐Ÿ’—', '๐Ÿ’“', '๐Ÿ’ž', '๐Ÿ’•', 'โค๏ธโ€๐Ÿ”ฅ', 'โค๏ธ', '๐Ÿงก', '๐Ÿ’›', '๐Ÿ’š', '๐Ÿ’™', '๐Ÿ’œ', '๐ŸคŽ', '๐Ÿ–ค', '๐Ÿค', '๐Ÿ’•', '๐Ÿซ€', '๐Ÿ’“', '๐Ÿ’', '๐Ÿ’ž', '๐Ÿ’“', '๐Ÿ’˜', '๐Ÿ’—', '๐Ÿ’', '๐Ÿ’“' ]; const loveMsg = await conn.sendMessage(m.chat, { text: heartEmojis[0] }, { quoted: m }); const updateMessage = async (index = 1) => { if (index < heartEmojis.length) { await conn.relayMessage(m.chat, { protocolMessage: { key: loveMsg.key, type: 14, editedMessage: { conversation: heartEmojis[index] } } }, {}); setTimeout(() => updateMessage(index + 1), 1000); } }; setTimeout(() => updateMessage(), 1000); break; } case 'confuse': case 'conf': { const confusedEmojis = [ '๐Ÿ˜•', '๐Ÿค”', '๐Ÿ˜ต', '๐Ÿ˜ตโ€๐Ÿ’ซ', '๐Ÿคท', '๐Ÿคทโ€โ™‚๏ธ', '๐Ÿคทโ€โ™€๏ธ', '๐Ÿ˜ฎโ€๐Ÿ’จ', '๐Ÿ˜', '๐Ÿคจ', '๐Ÿ™ƒ', '๐Ÿ˜ฌ', '๐Ÿ˜ฏ', '๐Ÿ˜–', '๐Ÿ˜‘', '๐Ÿ˜ณ', '๐Ÿคช', '๐Ÿคฏ' ]; const confuseMsg = await conn.sendMessage(m.chat, { text: confusedEmojis[0] }, { quoted: m }); const updateMessage = async (index = 1) => { if (index < confusedEmojis.length) { await conn.relayMessage(m.chat, { protocolMessage: { key: confuseMsg.key, type: 14, editedMessage: { conversation: confusedEmojis[index] } } }, {}); setTimeout(() => updateMessage(index + 1), 1000); } }; setTimeout(() => updateMessage(), 1000); break; } case 'angry': case 'gtf': { const angryEmojis = [ '๐Ÿ˜ก', '๐Ÿ˜ ', '๐Ÿคฌ', '๐Ÿ‘ฟ', '๐Ÿ’ข', '๐Ÿ”ฅ', '๐Ÿ˜พ', '๐Ÿ˜ค', '๐Ÿคฏ', '๐Ÿ’ฅ', '๐Ÿ˜พ', '๐Ÿ‘บ', '๐Ÿ‘Š', '๐Ÿ—ฏ๏ธ', '๐Ÿ˜’', '๐Ÿ‘Ž', '๐Ÿฅต', '๐Ÿงจ', '๐Ÿ‘น', '๐Ÿ’ฃ', '๐Ÿ˜ ', '๐Ÿ‘Š', '๐Ÿ’ฅ', '๐Ÿ˜ก', '๐Ÿคฌ', '๐Ÿ”ฅ', '๐Ÿ–•๐Ÿฝ' ]; const angryMsg = await conn.sendMessage(m.chat, { text: angryEmojis[0] }, { quoted: m }); const updateMessage = async (index = 1) => { if (index < angryEmojis.length) { await conn.relayMessage(m.chat, { protocolMessage: { key: angryMsg.key, type: 14, editedMessage: { conversation: angryEmojis[index] } } }, {}); setTimeout(() => updateMessage(index + 1), 1000); } }; setTimeout(() => updateMessage(), 1000); break; } case 'flirt': { await loading(); try { let response = await fetch('https://api-xx-xi.hf.space/api/flirt'); let json = await response.json(); if (!json.success) { return reply(fontx("Failed to fetch a flirt line. Please try again later.")); } let { flirt } = json; conn.sendMessage(m.chat, { text: fontx(`๐Ÿ’˜ *Flirty Line:*\n\nโ ${flirt} โž\n> ${caption}`) }); } catch (error) { console.error("Error in flirt case:", error); reply(fontx("An error occurred while fetching the flirt line. Please try again later.")); } break; } case 'joke': { await loading(); try { let response = await fetch('https://api-xx-xi.hf.space/api/joke'); let json = await response.json(); if (!json.success) { return reply(fontx("Failed to fetch a joke. Please try again later.")); } let { joke } = json; conn.sendMessage(m.chat, { text: fontx(`๐Ÿ˜‚ *Here's a joke for you!*\n\nโ ${joke} โž\n> ${caption}`) }); } catch (error) { console.error("Error in joke case:", error); reply(fontx("An error occurred while fetching the joke. Please try again later.")); } break; } case 'truth': { await loading(); try { let response = await fetch('https://api-xx-xi.hf.space/api/truth'); let json = await response.json(); if (!json.success) { return reply(fontx("Failed to fetch a truth question. Please try again later.")); } let { truth } = json; conn.sendMessage(m.chat, { text: fontx(`๐Ÿ” *Truth Question*\n\nโ ${truth} โž\n> ${caption}`) }); } catch (error) { console.error("Error in truth case:", error); reply(fontx("An error occurred while fetching the truth question. Please try again later.")); } break; } case 'dare': { await loading(); try { let response = await fetch('https://api-xx-xi.hf.space/api/dare'); let json = await response.json(); if (!json.success) { return reply(fontx("Failed to fetch a dare challenge. Please try again later.")); } let { dare } = json; conn.sendMessage(m.chat, { text: fontx(`๐Ÿ”ฅ *Dare Challenge*\n\nโ ${dare} โž\n> ${caption}`) }); } catch (error) { console.error("Error in dare case:", error); reply(fontx("An error occurred while fetching the dare challenge. Please try again later.")); } break; } case 'rizz': case 'pickupline': { await loading(); try { let response = await fetch('https://api-xx-xi.hf.space/api/rizz'); let json = await response.json(); if (!json.success) { return reply(fontx("Failed to fetch a rizz line. Please try again later.")); } let { rizz } = json; conn.sendMessage(m.chat, { text: fontx(`๐Ÿ˜ *Rizz Line*\n\nโ ${rizz} โž\n> ${caption}`) }); } catch (error) { console.error("Error in rizz case:", error); reply(fontx("An error occurred while fetching the rizz line. Please try again later.")); } break; } case 'quote': { await loading(); try { let response = await fetch('https://api-xx-xi.hf.space/api/quote'); let json = await response.json(); if (!json.success) { return reply(fontx("Failed to fetch a quote. Please try again later.")); } let { Author, quote } = json; conn.sendMessage(m.chat, { text: fontx(`๐Ÿ“œ *Quote of the Day*\n\nโ ${quote} โž\n\nโ€” *${Author}*\n> ${caption}`) }); } catch (error) { console.error("Error in quote case:", error); reply(fontx("An error occurred while fetching the quote. Please try again later.")); } break; } case 'aniquote': case 'animequote': { await loading(); try { let apiUrl = `https://api-xx-xi.hf.space/api/aniquote`; let response = await fetch(apiUrl); let json = await response.json(); if (!json.success) { return conn.sendMessage(m.chat, { text: "โŒ Failed to fetch an anime quote. Please try again later." }); } let { author, anime, quote } = json; conn.sendMessage(m.chat, { text: fontx(`๐ŸŽŒ *Anime Quote*\n\n๐Ÿ’ฌ *Quote:* "${quote}"\n๐Ÿ‘ค *Author:* ${author}\n๐Ÿ“บ *Anime:* ${anime}\n> ${caption}`) }, { quoted: m }); } catch (error) { console.error("Error in aniquote case:", error); conn.sendMessage(m.chat, { text: "โŒ An error occurred while fetching the quote. Please try again later." }); } break; } case 'antivirtex': { if (!isGroup) return reply(mess.only.group); if (!isGroupAdmins) return reply(mess.only.admin); if (!isBotGroupAdmins) return reply(mess.only.Badmin); await loading() const mode = args[0]?.toLowerCase(); if (["on", "enable", "1"].includes(mode)) { if (isAntiVirtex) return reply("antivirtex is already enabled!"); db.data.chats[from].antivirtex = true; reply("successfully enabled antivirtex!"); } else if (["off", "disable", "0"].includes(mode)) { if (!isAntiVirtex) return reply("Antivirtex Is Already Disabled!"); db.data.chats[from].antivirtex = false; reply("successfully disabled antivirtex!"); } else { reply(`*anti virtex mode*\nUsage: ${prefix + command} on/off`); } break; } case 'promote': if (!isGroup && !isGroupAdmins) return reply(mess.only.group) if (!isBotGroupAdmins) return reply(mess.only.Badmin) await loading() let xxp = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : q.replace(/[^0-9]/g, '') + '@s.whatsapp.net' await conn.groupParticipantsUpdate(m.chat, [xxp], 'promote') reply(mess.success) break case 'demote': if (!isGroup && !isGroupAdmins) return reply(mess.only.group) if (!isBotGroupAdmins) return reply(mess.only.Badmin) await loading() let xxpx = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : q.replace(/[^0-9]/g, '') + '@s.whatsapp.net' await conn.groupParticipantsUpdate(m.chat, [xxpx], 'demote') reply(mess.success) break case 'gclink': { if (!isGroup) return reply(mess.only.group); if (!isGroupAdmins) return reply(mess.only.admin); if (!isBotGroupAdmins) return reply(mess.only.Badmin); let response = await conn.groupInviteCode(from) conn.sendText(from, `https://chat.whatsapp.com/${response}\n\n${themeemoji} *Group link: ${groupMetadata.subject}*`, m, { detectLink: true }) } break; case 'leavegc': if (!isGroup) return reply(mess.only.group) if (!isOwner) return reply(mess.only.owner) await loading() await conn.groupLeave(from) break; case 'listonline': { if (!isGroup) return reply(mess.only.group); if (!isAdmins && !isOwner) return reply(mess.only.admin); let id = args && /\d+-\d+@g.us/.test(args[0]) ? args[0] : from; let online = [...Object.keys(store.presences[id]), botNumber]; let onlineListMessage = 'List Online:\n\n' + online .map(v => `${themeemoji} @${v.replace(/@.+/, '')}`) .join('\n'); await conn.sendText(from, onlineListMessage, m, { mentions: online }); } break; case 'opentime': { if (!isGroup) return reply(mess.only.group); if (!isGroupAdmins) return reply(mess.only.admin); if (!isBotGroupAdmins) return reply(mess.only.Badmin); if (args[1] == "seconds") { var timer = args[0] * `1000`; } else if (args[1] == "minutes") { var timer = args[0] * `60000`; } else if (args[1] == "hours") { var timer = args[0] * `3600000`; } else if (args[1] == "days") { var timer = args[0] * `86400000`; } else { return reply("*Choose:*\nseconds\nminutes\nhours\ndays\n\n*Example:*\n10 seconds"); } reply(`Open time ${q} starts now`); setTimeout(() => { const open = fontx(`*On time*: The group is now opened by an admin\nMembers can now send messages\n> ${caption}`); conn.groupSettingUpdate(from, 'not_announcement'); reply(open); }, timer); break; } case 'closetime': { if (!isGroup) return reply(mess.only.group); if (!isGroupAdmins) return reply(mess.only.admin); if (!isBotGroupAdmins) return reply(mess.only.Badmin); if (args[1] == "seconds") { var timer = args[0] * `1000`; } else if (args[1] == "minutes") { var timer = args[0] * `60000`; } else if (args[1] == "hours") { var timer = args[0] * `3600000`; } else if (args[1] == "days") { var timer = args[0] * `86400000`; } else { return reply(`Example: ${prefix}closetime 5 seconds`); } let ko = await conn.sendMessage(from, { text: `Close time ${q} starts now` }, { quoted: m }); setTimeout(() => deleteMessage(ko), 5000); setTimeout(() => { const close = fontx(`*On time*: The group is now closed by an admin\nOnly admins can send messages\n> ${caption}`); conn.groupSettingUpdate(from, 'announcement'); reply(close); }, timer); } break; case 'tagadmin': case 'listadmin': { if (!m.isGroup) return reply(mess.only.group) const groupAdmins = participants.filter(p => p.admin) const listAdmin = groupAdmins.map((v, i) => `${i + 1}. @${v.id.split('@')[0]}`).join('\n') const owner = groupMetadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || m.chat.split`-` [0] + '@s.whatsapp.net' let text = fontx(` *Group Admins:* ${listAdmin} `.trim()) conn.sendMessage(m.chat, { text: text, mentions: [...groupAdmins.map(v => v.id), owner] }, { quoted: m }) } break; case 'setnamegc': case 'setgcname': { if (!isGroup) return reply(mess.only.group); if (!isGroupAdmins) return reply(mess.only.admin); if (!isBotGroupAdmins) return reply(mess.only.Badmin); if (!q || q.trim().length === 0) return reply(`Usage: ${command} `); await conn.groupUpdateSubject(from, q) .then(() => { reply(mess.success); }) .catch(() => { reply(mess.error.api); }); break; } case 'animedl': { if (!q.includes('|')) return conn.sendMessage(m.chat, { text: `\`Invalid format\`\nExample: *${prefix + command} solo leveling|1*` }); await loading(); try { let [anime, episode] = q.split('|').map(x => x.trim()); let apiUrl = `https://api-xx-xi.hf.space/api/animedl?name=${encodeURIComponent(anime)}&episode=${encodeURIComponent(episode)}`; let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.downloadLinks.length) { return conn.sendMessage(m.chat, { text: `โŒ *No download links found for ${anime} Episode ${episode}*` }); } function parseSize(size) { let match = size.match(/([\d.]+)\s*(MB|GB)/i); if (!match) return Infinity; let value = parseFloat(match[1]); return match[2].toLowerCase() === 'gb' ? value * 1024 : value; } let bestMatch = json.downloadLinks.reduce((prev, curr) => { return Math.abs(parseSize(curr.size) - 100) < Math.abs(parseSize(prev.size) - 100) ? curr : prev; }); let { link, size } = bestMatch; conn.sendMessage(m.chat, { text: `๐ŸŽฅ *Downloading ${anime} Episode ${episode}*\n๐Ÿ“ฆ *Size:* ${size}` }); await conn.sendMessage(m.chat, { document: { url: link }, mimetype: 'video/mp4', fileName: `${anime} - Episode ${episode}.mp4`, caption: fontx(`๐ŸŽฌ *${anime} - Episode ${episode}*\n๐Ÿ“ฅ *Size:* ${size}`) }); } catch (error) { console.error("Error in animedl case:", error); conn.sendMessage(m.chat, { text: "โŒ An error occurred while fetching the anime. Please try again later." }); } break; } case 'play': case 'songs': { if (!text) { return reply(`\`No music title detected.\`\n*Example: ${prefix + command} Alan Walker - Faded*`); } try { await loading(); let search = await yts(text); let video = search.videos[0]; if (!video) { return reply("No results found for the provided query."); } let { title, timestamp, views, ago, url, thumbnail } = video; await conn.sendMessage(m.chat, { image: { url: thumbnail }, caption: fontx(`๐ŸŽถ *title:* ${title}\n๐Ÿ‘๏ธ *views:* ${views}\nโฑ๏ธ *duration:* ${timestamp}\n๐Ÿ“… *uploaded:* ${ago}\n๐ŸŒ`) + (` *url:* ${url}\n`) + fontx(`\n> ${caption}`), }); let apiUrl = `https://apis.davidcyriltech.my.id/download/ytmp3?url=${encodeURIComponent(url)}`; let res; try { res = await fetch(apiUrl); } catch (fetchError) { console.error("Error fetching API:", fetchError); return reply("Failed to fetch audio. Please check your connection and try again."); } let json; try { json = await res.json(); } catch (jsonError) { console.error("Error parsing JSON:", jsonError); return reply("Failed to process API response. Please try again later."); } // Validate API response if (!json.success || !json.result || !json.result.download_url) { return reply("Failed to fetch audio. Please try again later."); } let { download_url, title: audioTitle, quality } = json.result; await conn.sendMessage(m.chat, { audio: { url: download_url }, mimetype: "audio/mp4", fileName: `${audioTitle} (${quality}).mp3`, caption: `๐ŸŽถ *Title:* ${audioTitle}\n๐Ÿ”Š *Quality:* ${quality}\n๐Ÿ“ฅ *Downloaded successfully!*`, }, { quoted: m }); } catch (error) { console.error("Error in play case:", error); reply("An unexpected error occurred while processing your request. Please try again later."); } break; } case 'video': { if (!text) { return reply(`\`No video title detected.\`\n*Example: ${prefix + command} Alan Walker - Faded*`); } try { await loading(); let search = await yts(text); let video = search.videos[0]; if (!video) { return conn.sendMessage(m.chat, { text: "No results found for the provided query." }, { quoted: m }); } let { title, timestamp, views, ago, url, thumbnail } = video; await conn.sendMessage(m.chat, { image: { url: thumbnail }, caption: fontx(`๐ŸŽฌ *Title:* ${title}\nfound sending, a sec\n> ${caption}`), }, { quoted: m }); let apiUrl = `https://apis.davidcyriltech.my.id/download/ytmp4?url=${encodeURIComponent(url)}`; let res = await fetch(apiUrl); let json = await res.json(); if (!json.success || !json.result || !json.result.download_url) { return conn.sendMessage(m.chat, { text: "Failed to fetch video. Please try again later." }, { quoted: m }); } let { download_url, title: videoTitle, quality } = json.result; await conn.sendMessage(m.chat, { video: { url: download_url }, caption: fontx(`> ${caption}`), mimetype: 'video/mp4' }, { quoted: m }); } catch (error) { console.error("Error in video case:", error); conn.sendMessage(m.chat, { text: "An unexpected error occurred while processing your request. Please try again later." }, { quoted: m }); } break; } case 'ytmp4': { if (!q) { return reply(`\`No YouTube link detected\`\n*Example: ${prefix + command} https://youtube.com/watch?v=wKfNaV-su-M*`) } await loading(); try { const response = await fetch(`https://apis.davidcyriltech.my.id/download/ytmp4?url=${encodeURIComponent(q)}`); const json = await response.json(); if (!json.success || !json.result) { return conn.sendMessage(m.chat, { text: "Failed to fetch the video. Ensure the link is valid and try again." }, { quoted: m }); } const { quality, title, thumbnail, download_url } = json.result; const captionText = fontx(`video found sending, a sec`); await conn.sendMessage(m.chat, { image: { url: thumbnail }, caption: captionText }, { quoted: m }); await conn.sendMessage(m.chat, { video: { url: download_url }, caption: fontx(`๐ŸŽฌ *${title}*\n๐Ÿ“น Quality: ${quality}`), mimetype: 'video/mp4' }, { quoted: m }); } catch (error) { console.error("Error in ytmp4 case:", error); conn.sendMessage(m.chat, { text: "An error occurred while processing your request. Please try again later." }, { quoted: m }); } break; } case 'ytmp3': { if (!q) { return reply(`\`No YouTube link detected\`\n*Example: ${prefix + command} https://youtube.com/watch?v=wKfNaV-su-M*`) } await loading(); try { const response = await fetch(`https://apis.davidcyriltech.my.id/download/ytmp3?url=${encodeURIComponent(q)}`); const json = await response.json(); if (!json.success || !json.result) { return conn.sendMessage(m.chat, { text: "Failed to fetch the audio. Ensure the link is valid and try again." }, { quoted: m }); } const { quality, title, thumbnail, download_url } = json.result; const captionText = fontx(`audio found sending, a sec`); await conn.sendMessage(m.chat, { image: { url: thumbnail }, caption: captionText }, { quoted: m }); await conn.sendMessage(m.chat, { audio: { url: download_url }, mimetype: 'audio/mpeg', fileName: `${title}.mp3` }, { quoted: m }); } catch (error) { console.error("Error in ytmp3 case:", error); conn.sendMessage(m.chat, { text: "An error occurred while processing your request. Please try again later." }, { quoted: m }); } break; } case 'yts': { if (!q) return reply("Please provide a search query."); await loading() try { const searchResults = await yts(q); const videoResults = searchResults.all.filter((v) => v.type === 'video'); if (!videoResults || videoResults.length === 0) return reply("No videos found."); const videoID = videoResults[0].videoId; const thumbnail = `https://i.ytimg.com/vi/${videoID}/mqdefault.jpg`; let responseMessage = `๐Ÿ”Ž *YouTube Search Results:*\n`; for (let video of videoResults) { responseMessage += ` ๐Ÿ“œ *Title:* ${video.title} ๐Ÿ“ˆ *Views:* ${video.views} ๐Ÿ“… *Uploaded:* ${video.ago} โฑ๏ธ *Duration:* ${video.timestamp} ๐ŸŽฅ *Channel:* ${video.author.name} ๐Ÿ”— *Link:* ${video.url}\n\n`; } await conn.sendMessage( from, { caption: responseMessage.trim(), image: { url: thumbnail }, }, { quoted: dev } ); } catch (error) { console.error(error); reply("An error occurred while fetching the YouTube search results."); } break; } case 'nsfw': { if (!isGroup) return reply(mess.only.group) if (!isGroupAdmins && !isOwner) return reply(mess.only.admin) if (args.length < 1) return reply('Enable or disable? Use: แดษด/แด๊œฐ๊œฐ') if (args[0] === 'on') { db.data.chats[from].nsfw = true reply(`${command} has been enabled in this group`) let warning = fontx(` *ใ€Œ โš ๏ธ ๐–๐€๐‘๐๐ˆ๐๐† โš ๏ธ ใ€*\nThe NSFW (Not Safe For Work) feature has been activated in this group. As a result, explicit content may be accessible through the bot. Please proceed with caution and ensure compliance with community guidelines. `) m.reply(warning) } else if (args[0] === 'off') { db.data.chats[from].nsfw = false reply(`${command} has been disabled in this group`) } } break case 'waifu': { if (isGroup && !isAntiNsfw) return reply(mess.nsfw); await loading(); let query = q ? encodeURIComponent(q) : 'random'; let apiUrl = `https://api-xx-xi.hf.space/api/waifu?q=${query}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.images.length) { return conn.sendMessage(m.chat, { text: fontx(`โŒ No waifu images found for *${query}*. Try another category!`) }); } let randomImage = json.images[Math.floor(Math.random() * json.images.length)]; await conn.sendMessage(m.chat, { image: { url: randomImage }, caption: fontx(`๐Ÿ–ผ๏ธ *Waifu Image*\n๐Ÿ” *Category:* ${json.category}`) }); } catch (error) { console.error("Error fetching waifu image:", error); conn.sendMessage(m.chat, { text: fontx("โŒ An error occurred while fetching the waifu image.") }); } break; } case 'hentai': { if (isGroup && !isAntiNsfw) return reply(mess.nsfw); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/hentai`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.videoUrl) { return conn.sendMessage(m.chat, { text: fontx(`โŒ No hentai content found. Try again later!`) }); } await conn.sendMessage(m.chat, { video: { url: json.videoUrl }, mimetype: "video/mp4", fileName: `${json.title}.mp4`, caption: fontx(`๐Ÿ”ž *${json.title}*\n> ${caption}`) }, { quoted: m }); } catch (error) { console.error("Error fetching hentai content:", error); conn.sendMessage(m.chat, { text: fontx("โŒ An error occurred while fetching the hentai video.") }); } break; } case 'xxxsearch': { if (isGroup && !isAntiNsfw) return reply(mess.nsfw); if (!q) return reply("โŒ Please enter a search query.\nExample: `.xxxsearch big ass`"); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/xxxsearch?q=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); if (!response.ok) throw new Error(`API responded with ${response.status}`); let json = await response.json(); if (!json.success || !json.videoUrl) { return conn.sendMessage(m.chat, { text: fontx(`โŒ No results found for *${q}*.`) }); } await conn.sendMessage(m.chat, { video: { url: json.videoUrl }, caption: fontx(`๐Ÿ”ฅ *${json.videoTitle}*\n> ${caption}`) }); } catch (error) { console.error("โŒ Error fetching XXX video:", error); conn.sendMessage(m.chat, { text: fontx("โŒ Failed to fetch video. Try again later.") }); } break; } case 'xxxdl': { if (isGroup && !isAntiNsfw) return reply(mess.nsfw); if (!q) return reply("โŒ Please provide a valid *XVideos* link.\nExample: `.xxxdl https://www.xvideos.com/`"); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/xvideos?url=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); if (!response.ok) throw new Error(`API responded with ${response.status}`); let json = await response.json(); if (!json.success || !json.videoUrl) { return reply("โŒ No video found for the provided link."); } await conn.sendMessage(m.chat, { video: { url: json.videoUrl }, caption: `๐Ÿ”ฅ *${json.title}*\n> ${caption}` }); } catch (error) { console.error("โŒ Error fetching XXX video:", error); reply("โŒ Failed to fetch video. Try again later."); } break; } case 'cecan-china': case 'cecan-korea': case 'cecan-thailand': case 'cecan-vietnam': case 'cecan-indo': case 'cecan-japan': { await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/${command}`; try { await conn.sendMessage(m.chat, { image: { url: apiUrl }, caption: fontx(`๐ŸŒธ *cecan ${command.replace('cecan-', '').toUpperCase()}*\n> ${caption}`) }); } catch (error) { console.error("โŒ Error fetching Cecan image:", error); reply("โŒ Failed to fetch image. Try again later."); } break; } case 'alive': { await loading(); const quote = "i refuse to be weak. i reject death. i am the one who goes forward, who slays, who reigns over shadows... *i am alive.*"; const imageUrl = "https://huggingface.co/spaces/API-XX/TEST/resolve/main/Links/Leonardo_Phoenix_10_Animestyle_male_character_standing_confide_3.jpg"; await conn.sendMessage(m.chat, { image: { url: imageUrl }, caption: fontx(`${quote}\n\n๐Ÿ‘ค creator: blue demon\nโณ runtime: ${runtime(process.uptime())}\n> ${caption}`) }, { quoted: m }); break; } case 'scan': { try { await loading(); const checkForUpdates = async () => { let filesToCheck = [ { 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' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/group.js', path: './message/group.js', name: 'group.js' }, { url: 'https://huggingface.co/spaces/API-XX/TEST/raw/main/message.js', path: './message/message.js', name: 'message.js' } ]; let updatesAvailable = false; for (let file of filesToCheck) { let oldSize = fs.existsSync(file.path) ? fs.statSync(file.path).size : 0; let response = await fetch(file.url); if (!response.ok) continue; let newContent = await response.text(); let newSize = Buffer.byteLength(newContent, 'utf8'); if (newSize > oldSize) { updatesAvailable = true; break; } } return updatesAvailable; }; const updatesAvailable = await checkForUpdates(); const updateStatus = updatesAvailable ? fontx(`๐Ÿ›  *Update Available! Use .update*`) : fontx(`โœ… *No Updates Found*`); const animations = [ fontx(`๐Ÿ’ป *System Check Initiated...*\n> ${caption}`), fontx(`๐Ÿ”„ *Loading Modules...*\n> ${caption}`), fontx(`โœ… *Module: Messaging [OK]*`), fontx(`โœ… *Module: Connectivity [OK]*`), fontx(`โœ… *Module: AI Responses [OK]*`), fontx(`๐Ÿ” *Scanning for Updates...*`), updateStatus, fontx(`๐Ÿ”„ *System Optimization: 87% Complete...*`), fontx(`โœ… *System Optimization: Complete*`), fontx(`๐Ÿ“ก *Establishing Secure Connection...*`), fontx(`โœ… *Connection Established Successfully*`), fontx(`๐Ÿš€ *Ready for Commands!*\n> ${caption}`) ]; const initialMessage = await conn.sendMessage(m.chat, { text: animations[0] }, { quoted: m }); let currentIndex = 1; const animationInterval = setInterval(async () => { if (currentIndex >= animations.length) { clearInterval(animationInterval); } else { try { await conn.sendMessage(m.chat, { edit: initialMessage.key, text: animations[currentIndex] }); currentIndex++; } catch (err) { console.error("Error editing alive animation:", err); clearInterval(animationInterval); } } }, 2000); } catch (err) { console.error("Error in alive case:", err); reply(fontx("โŒ An error occurred while processing your request.")); } break; } case 'aza': case 'pay': case 'acc': { reply( `๐Ÿ’ณ *Banking Details* ๐Ÿ’ณ\n\n๐Ÿฆ *Bank Name:* *${bank}*\n๐Ÿ”ข *Acc Number:* *${accnumber}*\n๐Ÿ‘ค *Acc Name:* *${bankname}*` ); break; } case 'tiktok': case 'tt': { if (!q) return reply("โŒ Please provide a TikTok link."); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/tkdl?url=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.download_links.no_watermark) { return reply("โŒ Failed to download the TikTok video. Please check the link and try again."); } await conn.sendMessage(m.chat, { video: { url: json.download_links.no_watermark }, caption: fontx(`๐ŸŽต *TikTok Video Downloaded!*\n\n๐Ÿ“ *Description:* ${json.description}\n> ${caption}`) }, { quoted: m }); } catch (error) { console.error("Error in TikTok download case:", error); reply("โŒ An error occurred while processing your request."); } break; } case 'tiktokaud': case 'ttaud': { if (!q) return reply("โŒ Please provide a TikTok link."); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/tkdl?url=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.download_links.mp3) { return reply("โŒ Failed to download the TikTok audio. Please check the link and try again."); } await conn.sendMessage(m.chat, { audio: { url: json.download_links.mp3 }, mimetype: 'audio/mpeg', fileName: `tiktok_audio.mp3`, caption: fontx(`๐ŸŽถ *TikTok Audio Downloaded!*\n\n๐Ÿ“ *Description:* ${json.description}\n> ${caption}`) }, { quoted: m }); } catch (error) { console.error("Error in TikTok audio download case:", error); reply("โŒ An error occurred while processing your request."); } break; } case 'all-in-one': case 'aio': case 'instagram': case 'facebook': case 'fb': case 'tiktok2': case 'twitter': { if (!q) return reply("โŒ Please provide a valid video link."); await loading(); let apiUrl = `https://bk9.fun/download/alldownload?url=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.status || !json.BK9.high) { return reply("โŒ Failed to download the video. Please check the link and try again."); } await conn.sendMessage(m.chat, { video: { url: json.BK9.high }, caption: fontx(`๐ŸŽฅ *Video Downloaded!*\n\n๐Ÿ“ *Title:* ${json.BK9.title}\n> ${caption}`) }, { quoted: m }); } catch (error) { console.error("Error in all-in-one video download case:", error); reply("โŒ An error occurred while processing your request."); } break; } case 'sound1': case 'sound2': case 'sound3': case 'sound4': case 'sound5': case 'sound6': case 'sound7': case 'sound8': case 'sound9': case 'sound10': case 'sound11': case 'sound12': case 'sound13': case 'sound14': case 'sound15': case 'sound16': case 'sound17': case 'sound18': case 'sound19': case 'sound20': case 'sound21': case 'sound22': case 'sound23': case 'sound24': case 'sound25': case 'sound26': case 'sound27': case 'sound28': case 'sound29': case 'sound30': case 'sound31': case 'sound32': case 'sound33': case 'sound34': case 'sound35': case 'sound36': case 'sound37': case 'sound38': case 'sound39': case 'sound40': case 'sound41': case 'sound42': case 'sound43': case 'sound44': case 'sound45': case 'sound46': case 'sound47': case 'sound48': case 'sound49': case 'sound50': case 'sound51': case 'sound52': case 'sound53': case 'sound54': case 'sound55': case 'sound56': case 'sound57': case 'sound58': case 'sound59': case 'sound60': case 'sound61': case 'sound62': case 'sound63': case 'sound64': case 'sound65': case 'sound66': case 'sound67': case 'sound68': case 'sound69': case 'sound70': case 'sound71': case 'sound72': case 'sound73': case 'sound74': case 'sound75': case 'sound76': case 'sound77': case 'sound78': case 'sound79': case 'sound80': case 'sound81': case 'sound82': case 'sound83': case 'sound84': case 'sound85': case 'sound86': case 'sound87': case 'sound88': case 'sound89': case 'sound90': case 'sound91': case 'sound92': case 'sound93': case 'sound94': case 'sound95': { try { await loading(); const url = `https://github.com/anonphoenix007/phonk-api/raw/main/all/${command}.mp3`; const reslt = await getBuffer(url); await conn.sendMessage(m.chat, { audio: reslt, mimetype: 'audio/mp4', ptt: true }, { quoted: m }); await conn.sendMessage(m.chat, { text: fontx(`> ${caption}`) }, { quoted: m }); } catch (error) { console.error(`Error in ${command} case:`, error); reply("An error occurred while processing your request. Please try again later."); } break; } case 'apk': case 'app': { if (!q) return reply("โŒ Please provide the name of an app to download.\n\nExample: *.apk Facebook*"); await loading(); let apiUrl = `https://bk9.fun/download/apk?id=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.status || !json.BK9.dllink) { return reply("โŒ APK not found. Please check the app name and try again."); } await conn.sendMessage(m.chat, { image: { url: json.BK9.icon }, caption: fontx(`๐Ÿ“ฒ *APK Download*\n\n๐Ÿ“ *Name:* ${json.BK9.name}\n๐Ÿ“ฆ *Package:* ${json.BK9.package}\n๐Ÿ“… *Last Updated:* ${json.BK9.lastup}\n\n๐Ÿ“ฅ *Downloading file...*`) }, { quoted: m }); await conn.sendMessage(m.chat, { document: { url: json.BK9.dllink }, mimetype: 'application/vnd.android.package-archive', fileName: `${json.BK9.name}.apk`, caption: fontx(`โœ… *${json.BK9.name} APK downloaded successfully!*`) }); } catch (error) { console.error("Error in APK download case:", error); reply("โŒ An error occurred while processing your request."); } break; } case 'apkfab': { if (!q) { return reply(`*\`Please provide an APK URL.\`*\n*Example: ${prefix + command} apkfab-link*`); } try { await loading(); const apiUrl = `https://bk9.fun/download/apkfab?url=${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const res = await response.json(); if (!res.status || !res.BK9) { return reply("Failed to fetch APK details. Please try again later."); } const { title, link, size } = res.BK9; await conn.sendMessage(m.chat, { text: fontx(`๐Ÿ–ฅ๏ธ *APK Details:*\n\n๐Ÿ“Œ *Title: ${title}*\n๐Ÿ“ฆ *Size:* ${size || 'Unknown'}\nMay take few minutes๐Ÿ”ƒ\n> ${caption}`), }, { quoted: m }); await conn.sendMessage(m.chat, { document: { url: link }, mimetype: "application/octet-stream", fileName: `${title}.apk`, caption: `๐Ÿ“ฅ *APK Download: ${title}*` }, { quoted: m }); } catch (error) { console.error("Error in APKFab case:", error); reply("An error occurred while processing your request. Please try again later."); } break; } case 'gitclone': case 'githubdl': { if (!q || !q.includes("github.com")) { return reply("โŒ Please provide a valid GitHub repository link.\n\nExample: *!gitclone https://github.com/user/repository*"); } await loading(); let repoUrl = q.trim().replace(/\/$/, ''); let zipUrl = `${repoUrl}/archive/refs/heads/master.zip`; try { let response = await fetch(zipUrl); if (!response.ok) { return reply(`โŒ Failed to download repository.\n\n๐Ÿ”— *Repo:* ${repoUrl}\nโš ๏ธ *Error:* ${response.statusText}`); } let zipBuffer = await response.arrayBuffer(); await conn.sendMessage(m.chat, { document: Buffer.from(zipBuffer), mimetype: "application/zip", fileName: `${repoUrl.split('/').pop()}-master.zip`, caption: fontx(`โœ… *GitHub Repository Cloned!*\n\n๐Ÿ”— *Repository:* `) + repoUrl + fontx(`\n๐Ÿ“ฆ *Download:* Attached ZIP file.\n> ${caption}`) }); } catch (error) { console.error("Error in gitclone case:", error); reply("โŒ An error occurred while processing your request."); } break; } case 'mediafire': { if (!q || !q.includes("mediafire.com")) { return reply("โŒ Please provide a valid MediaFire link.\n\nExample: *!mediafire https://www.mediafire.com/file/xyz123/file.zip/file*"); } await loading(); let apiUrl = `https://apis.davidcyriltech.my.id/mediafire?url=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.downloadLink) { return reply("โŒ Failed to retrieve the file from MediaFire."); } await conn.sendMessage(m.chat, { document: { url: json.downloadLink }, mimetype: `application/${json.mimeType || "octet-stream"}`, fileName: json.fileName, caption: fontx(`โœ… *MediaFire Download Complete!*\n\n๐Ÿ“‚ *File:* ${json.fileName}\n๐Ÿ“ฆ *Size:* ${json.size}\n> ${caption}`) }); } catch (error) { console.error("Error in mediafire case:", error); reply("โŒ An error occurred while processing your request."); } break; } case 's': case 'sticker': case 'take': { if (!m.quoted) { return reeply(`*Reply to an image or video with the caption ${prefix + command}*\n> Video Duration: 1-9 Seconds`); } let mime = (m.quoted.msg || m.quoted).mimetype || ''; try { if (/image/.test(mime)) { let media = await m.quoted.download(); await conn.sendImageAsSticker(m.chat, media, m, { packname: fontx(caption) || 'Sticker Pack', author: fontx('blue demon') || 'Bot' }); } else if (/video/.test(mime)) { if ((m.quoted.msg || m.quoted).seconds > 9) { return reply(`*Video duration must be 1-9 seconds!*\nReply to a shorter video with ${prefix + command}`); } let media = await m.quoted.download(); await conn.sendVideoAsSticker(m.chat, media, m, { packname: fontx(caption) || 'Sticker Pack', author: fontx('blue demon') || 'Bot' }); } else { reply(`*Unsupported media type!*\nReply to an image or video with the caption ${prefix + command}\n> Video Duration: 1-9 Seconds`); } } catch (err) { console.error('Error creating sticker:', err); reply(`Failed to create sticker. Please try again.`); } } break; case 'getjid': { reply(from) } break; case 'fancy': { if (!q) return reply("โŒ Please provide a text to convert.\n\nExample: *!fancy Blue Demon*"); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/font?text=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.fancy_texts.length) { return reply("โŒ Failed to fetch fancy fonts. Please try again."); } let fancyTextList = json.fancy_texts.slice(0, 15).map((text, i) => `${i + 1}. *${text}*`).join("\n"); conn.sendMessage(m.chat, { text: fontx(`๐ŸŽจ *Fancy Text Generator*\n\n๐Ÿ“ *Original:* ${json.original_text}\n\n${fancyTextList}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error fetching fancy fonts:", error); reply("โŒ An error occurred while generating fancy text. Please try again later."); } break; } case 'join': { if (!isOwner) return reply(mess.only.owner); if (!text) return reply(`\`No Group link detected\`\n*Example: ${prefix + command} link*`); if (!isUrl(text) || !text.includes('chat.whatsapp.com')) return reply('`Invalid Link!`'); const result = text.split('https://chat.whatsapp.com/')[1]; await loading() try { await conn.groupAcceptInvite(result); } catch (error) { if (error.response) { switch (error.response.status) { case 400: return reply('Group Not Foundโ—'); case 401: return reply('Bot Kicked From The Groupโ—'); case 409: return reply('Bot Has Already Joined the Groupโ—'); case 410: return reply('Group URL Has Been Resetโ—'); case 500: return reply('Group Is Fullโ—'); default: return reply('An unknown error occurred.'); } } reply('An unexpected error occurred.'); } break; } case 'bible': { if (!q) return reply("โŒ Please provide a Bible verse reference.\n\nExample: *!bible John 3:16*"); await loading(); let apiUrl = `https://apis.davidcyriltech.my.id/bible?reference=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.text) { return reply("โŒ Verse not found. Please check the reference and try again."); } let bibleMessage = `๐Ÿ“– *Bible Verse*\n\n๐Ÿ“œ *Reference:* ${json.reference}\n๐Ÿ“– *Translation:* ${json.translation}\n๐Ÿ”ข *Verses Count:* ${json.verses_count}\n\n๐Ÿ•Š๏ธ *${json.text.trim()}*\n> ${caption}`; conn.sendMessage(m.chat, { text: fontx(bibleMessage) }, { quoted: m }); } catch (error) { console.error("Error fetching Bible verse:", error); reply("โŒ An error occurred while retrieving the Bible verse. Please try again later."); } break; } case 'lyrics': { if (!q) return reply("โŒ Please provide a song name.\n\nExample: *!lyrics Not Like Us*"); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/lyrics?q=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || !json.lyrics) { return reply("โŒ Lyrics not found. Please check the song name and try again."); } let lyricsMessage = `๐ŸŽต *Song Lyrics*\n\n๐ŸŽถ *Title:* ${json.song}\n\n๐Ÿ“œ *Lyrics:*\n\n${json.lyrics}\n> ${caption}`; conn.sendMessage(m.chat, { text: fontx(lyricsMessage) }, { quoted: m }); } catch (error) { console.error("Error fetching lyrics:", error); reply("โŒ An error occurred while retrieving the lyrics. Please try again later."); } break; } case 'spotify': { if (!q) return reply("โŒ Please provide a song name.\n\nExample: *!spotify Faded*"); await loading(); let apiUrl = `https://apis.davidcyriltech.my.id/search/spotify?text=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success || json.result.length === 0) { return reply("โŒ No results found. Please check the song name and try again."); } let spotifyResults = fontx("๐ŸŽต *Spotify Search Results*\n\n"); json.result.slice(0, 5).forEach((song, index) => { spotifyResults += fontx(`๐ŸŽถ *${song.trackName}*\n๐Ÿ‘ค *Artist:* ${song.artistName}\n๐Ÿ’ฟ *Album:* ${song.albumName}\nโฑ๏ธ *Duration:* ${song.duration}\n๐Ÿ”— *Link:* `) + song.externalUrl + `\n\n`; }); conn.sendMessage(m.chat, { text: spotifyResults }, { quoted: m }); } catch (error) { console.error("Error fetching Spotify search results:", error); reply("โŒ An error occurred while retrieving the Spotify results. Please try again later."); } break; } case 'pinterest': { if (!q) return reply(`\`No search query detected\`.\n*Example: ${prefix + command} beautiful landscapes*`); await loading(); try { const apiUrl = `https://www.bhandarimilan.info.np/pinterest?query=${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const data = await response.json(); if (!data || data.data.length === 0) { return reply("No results found. Please try with a different query."); } const images = data.data.slice(0, 5); for (let url of images) { await conn.sendMessage(m.chat, { image: { url }, caption: fontx(`๐Ÿ”— *Pinterest Result*\n${q}\n> ${caption}`) }, { quoted: m }); } } catch (error) { console.error("Error in Pinterest case:", error); reply("An error occurred while fetching Pinterest results. Please try again later."); } break; } case 'element': { if (!q) return reply(`\`provide an element name/symbol\`.\nExample: ${prefix + command} bohrium`); await loading(); try { const apiUrl = `https://api.popcat.xyz/periodic-table?element=${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const data = await response.json(); if (!data || !data.name) { return reply("Invalid element name or symbol. Please check your input."); } const { name, symbol, atomic_number, atomic_mass, period, phase, discovered_by, image, summary } = data; await conn.sendMessage(m.chat, { image: { url: image }, caption: fontx(`๐Ÿงช *Periodic Table Element*\n${readmore}\n๐Ÿ”น *Name*: ${name}\n๐Ÿ”น *Symbol*: ${symbol}\n๐Ÿ”น *Atomic Number*: ${atomic_number}\n๐Ÿ”น *Atomic Mass*: ${atomic_mass}\n๐Ÿ”น *Period*: ${period}\n๐Ÿ”น *Phase*: ${phase}\n๐Ÿ”น *Discovered By*: ${discovered_by}\n\n๐Ÿ“˜ *Summary*: ${summary}\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in elements case:", error); reply("An error occurred while fetching element details. Please try again later."); } break; } case 'randomcolor': { await loading(); try { const apiUrl = `https://api.popcat.xyz/randomcolor`; const response = await fetch(apiUrl); const data = await response.json(); if (!data || !data.hex || !data.name) { return reply("Failed to fetch a random color. Please try again later."); } const { hex, name, image } = data; await conn.sendMessage(m.chat, { image: { url: image }, caption: fontx(`๐ŸŽจ *Random Color*\n\n๐Ÿ”น *Name*: ${name}\n๐Ÿ”น *HEX*: #${hex}\n\n> ${caption}`), }, { quoted: m }); } catch (error) { console.error("Error in randomcolor case:", error); reply("An error occurred while fetching a random color. Please try again later."); } break; } case 'npmstalk': case 'npmcheck': { if (!q) return reply("โŒ Please provide an NPM package name.\n\nExample: *!npmstalk express*"); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/npmcheck?package=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success) { return reply("โŒ Package not found. Please check the package name and try again."); } let npmInfo = fontx(`๐Ÿ“ฆ *NPM Package Info*\n\n`) + fontx(`๐Ÿ“› *Package:* ${json.package}\n`) + fontx(`๐Ÿ†• *Version:* ${json.version}\n`) + fontx(`๐Ÿ“… *Published:* ${json.publishedDate}\n`) + fontx(`๐Ÿ“Š *Version Count:* ${json.versionNumber}\n`) + fontx(`๐Ÿ”— *Dependents:* ${json.dependentsCount}\n`) + fontx(`๐Ÿ“‚ *Dependencies:* ${json.dependenciesCount}\n> ${caption}`); conn.sendMessage(m.chat, { image: { url: json.codetypeimg }, caption: npmInfo }, { quoted: m }); } catch (error) { console.error("Error fetching NPM package info:", error); reply("โŒ An error occurred while retrieving the package details. Please try again later."); } break; } case 'wachannel': { if (!q) return reply("โŒ Please provide a WhatsApp Channel link.\n\nExample: .wachannel "); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/wachannel?url=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success) { return reply("โŒ Channel not found. Please check the link and try again."); } let channelInfo = fontx(`๐Ÿ“ข *WhatsApp Channel Info*\n\n`) + fontx(`๐Ÿ“› *Name:* ${json.data.name}\n`) + fontx(`๐Ÿ‘ฅ *Followers:* ${json.data.followers}\n`) + fontx(`๐Ÿ“ *Description:* ${json.data.description}\n> ${caption}`); conn.sendMessage(m.chat, { image: { url: json.data.image }, caption: channelInfo }, { quoted: m }); } catch (error) { console.error("Error fetching WhatsApp Channel info:", error); reply("โŒ An error occurred while retrieving the channel details. Please try again later."); } break; } case 'country': { if (!q) return reply("โŒ Please provide a country name.\n\nExample: *!country Nigeria*"); await loading(); let apiUrl = `https://api-xx-xi.hf.space/api/country?q=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.success) { return reply("โŒ Country not found. Please check the spelling and try again."); } let countryInfo = fontx(`๐ŸŒ *Country Information*\n\n`) + fontx(`๐Ÿ“› *Name:* ${json.data.name}\n`) + fontx(`๐Ÿ™๏ธ *Capital:* ${json.data.capital}\n`) + fontx(`๐Ÿ“ž *Phone Code:* ${json.data.phoneCode}\n`) + fontx(`๐Ÿ’ฐ *Currency:* ${json.data.currency}\n`) + fontx(`๐Ÿš— *Driving Side:* ${json.data.drivingSide}\n`) + fontx(`๐ŸŒ *Internet TLD:* ${json.data.internetTLD}\n`) + fontx(`๐Ÿ“ *Location:* [Google Maps](${json.data.googleMapsLink})\n`) + fontx(`๐Ÿ—บ๏ธ *Continent:* ${json.data.continent.emoji} ${json.data.continent.name}`); conn.sendMessage(m.chat, { image: { url: json.data.flag }, caption: countryInfo }, { quoted: m }); } catch (error) { console.error("Error fetching country info:", error); reply("โŒ An error occurred while retrieving country details. Please try again later."); } break; } case 'listcase': case 'allcase': { reply(listCase()) } break; case 'bing': { if (!q) return reply("Please provide a search query."); try { await loading(); const apiUrl = `https://api.siputzx.my.id/api/s/bimg?query=${encodeURIComponent(q)}`; const response = await fetch(apiUrl); const res = await response.json(); if (!res.status || !res.data || res.data.length === 0) { return reply("No images found for your query. Please try again later."); } const imageUrl = res.data[0]; await conn.sendMessage(from, { image: { url: imageUrl }, caption: fontx(`๐Ÿ”Ž *bing Image Search Results for:* "${q}"\n> ${caption}`), }); } catch (error) { console.error("Error in bing case:", error); reply("An error occurred while fetching the images. Please try again later."); } break; } case 'brave': { if (!q) return reply("โŒ Please enter a search query.\n\nExample: .brave github"); await loading(); let apiUrl = `https://api.siputzx.my.id/api/s/brave?query=${encodeURIComponent(q)}`; try { let response = await fetch(apiUrl); let json = await response.json(); if (!json.status || !json.data.results.length) { return reply("โŒ No search results found. Try another query."); } let searchResults = json.data.results.slice(0, 5); // Show top 5 results let totalResults = json.data.metadata.totalResults; let timestamp = new Date().toLocaleString(); let message = `๐Ÿ”Ž *Brave Search Results*\n๐Ÿ“… *Checked On:* ${timestamp}\n๐Ÿ“Š *Total Results:* ${totalResults}\n\n`; searchResults.forEach((result, index) => { message += `๐Ÿ”น *${index + 1}. ${fontx(result.title)}*\n`; message += `๐Ÿ“– ${fontx(result.description)}\n`; message += `๐ŸŒ ${result.siteName}\n`; if (result.date) message += `๐Ÿ“… ${result.date}\n`; message += "\n"; }); conn.sendMessage(m.chat, { text: message }, { quoted: m }); } catch (error) { console.error("Error fetching Brave search results:", error); reply("โŒ Error while fetching search results. Try again later."); } break; } case 'glitchtext': case 'writetext': case 'advancedglow': case 'typographytext': case 'pixelglitch': case 'neonglitch': case 'flagtext': case 'flag3dtext': case 'deletingtext': case 'blackpinkstyle': case 'glowingtext': case 'underwatertext': case 'logomaker': case 'cartoonstyle': case 'papercutstyle': case 'watercolortext': case 'effectclouds': case 'blackpinklogo': case 'gradienttext': case 'summerbeach': case 'luxurygold': case 'multicoloredneon': case 'sandsummer': case 'galaxywallpaper': case '1917style': case 'makingneon': case 'royaltext': case 'freecreate': case 'galaxystyle': case 'lighteffects': { if (!q) return reply(`\`No Text detected\`\n*Example : ${prefix+command} Blue demon*`) await loading() let link if (/glitchtext/.test(command)) link = 'https://en.ephoto360.com/create-digital-glitch-text-effects-online-767.html' if (/writetext/.test(command)) link = 'https://en.ephoto360.com/write-text-on-wet-glass-online-589.html' if (/advancedglow/.test(command)) link = 'https://en.ephoto360.com/advanced-glow-effects-74.html' if (/typographytext/.test(command)) link = 'https://en.ephoto360.com/create-typography-text-effect-on-pavement-online-774.html' if (/pixelglitch/.test(command)) link = 'https://en.ephoto360.com/create-pixel-glitch-text-effect-online-769.html' if (/neonglitch/.test(command)) link = 'https://en.ephoto360.com/create-impressive-neon-glitch-text-effects-online-768.html' if (/flagtext/.test(command)) link = 'https://en.ephoto360.com/nigeria-3d-flag-text-effect-online-free-753.html' if (/flag3dtext/.test(command)) link = 'https://en.ephoto360.com/free-online-american-flag-3d-text-effect-generator-725.html' if (/deletingtext/.test(command)) link = 'https://en.ephoto360.com/create-eraser-deleting-text-effect-online-717.html' if (/blackpinkstyle/.test(command)) link = 'https://en.ephoto360.com/online-blackpink-style-logo-maker-effect-711.html' if (/glowingtext/.test(command)) link = 'https://en.ephoto360.com/create-glowing-text-effects-online-706.html' if (/underwatertext/.test(command)) link = 'https://en.ephoto360.com/3d-underwater-text-effect-online-682.html' if (/logomaker/.test(command)) link = 'https://en.ephoto360.com/free-bear-logo-maker-online-673.html' if (/cartoonstyle/.test(command)) link = 'https://en.ephoto360.com/create-a-cartoon-style-graffiti-text-effect-online-668.html' if (/papercutstyle/.test(command)) link = 'https://en.ephoto360.com/multicolor-3d-paper-cut-style-text-effect-658.html' if (/watercolortext/.test(command)) link = 'https://en.ephoto360.com/create-a-watercolor-text-effect-online-655.html' if (/effectclouds/.test(command)) link = 'https://en.ephoto360.com/write-text-effect-clouds-in-the-sky-online-619.html' if (/blackpinklogo/.test(command)) link = 'https://en.ephoto360.com/create-blackpink-logo-online-free-607.html' if (/gradienttext/.test(command)) link = 'https://en.ephoto360.com/create-3d-gradient-text-effect-online-600.html' if (/summerbeach/.test(command)) link = 'https://en.ephoto360.com/write-in-sand-summer-beach-online-free-595.html' if (/luxurygold/.test(command)) link = 'https://en.ephoto360.com/create-a-luxury-gold-text-effect-online-594.html' if (/multicoloredneon/.test(command)) link = 'https://en.ephoto360.com/create-multicolored-neon-light-signatures-591.html' if (/sandsummer/.test(command)) link = 'https://en.ephoto360.com/write-in-sand-summer-beach-online-576.html' if (/galaxywallpaper/.test(command)) link = 'https://en.ephoto360.com/create-galaxy-wallpaper-mobile-online-528.html' if (/1917style/.test(command)) link = 'https://en.ephoto360.com/1917-style-text-effect-523.html' if (/makingneon/.test(command)) link = 'https://en.ephoto360.com/making-neon-light-text-effect-with-galaxy-style-521.html' if (/royaltext/.test(command)) link = 'https://en.ephoto360.com/royal-text-effect-online-free-471.html' if (/freecreate/.test(command)) link = 'https://en.ephoto360.com/free-create-a-3d-hologram-text-effect-441.html' if (/galaxystyle/.test(command)) link = 'https://en.ephoto360.com/create-galaxy-style-free-name-logo-438.html' if (/lighteffects/.test(command)) link = 'https://en.ephoto360.com/create-light-effects-green-neon-online-429.html' let haldwhd = await ephoto(link, q) conn.sendMessage(m.chat, { image: { url: haldwhd }, caption: fontx(`> ${caption}`) }, { 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) } } 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) })