text: /**
     * Create By Dika Ardnt.
     * Contact Me on wa.me/6288292024190
     * Follow https://github.com/DikaArdnt
  */
  
  require('./config')
  const { default: makeWASocket, BufferJSON, WA_DEFAULT_EPHEMERAL, generateWAMessageFromContent, downloadContentFromMessage, downloadHistory, proto, getMessage, generateWAMessageContent, prepareWAMessageMedia } = require('@adiwajshing/baileys-md')
  const fs = require('fs')
  const util = require('util')
  const chalk = require('chalk')
  const { exec, spawn, execSync } = require("child_process")
  const axios = require('axios')
  const { fromBuffer } = require('file-type')
  const path = require('path')
  const os = require('os')
  const speed = require('performance-now')
  const { performance } = require('perf_hooks')
  const { pinterest, wallpaper, wikimedia, porno, hentai, quotesAnime } = require('./lib/scraper')
  const { UploadFileUgu, webp2mp4File, TelegraPh } = require('./lib/uploader')
  const { smsg, getGroupAdmins, formatp, tanggal, formatDate, getTime, isUrl, sleep, clockString, runtime, fetchJson, getBuffer, jsonformat, delay, format, logic, generateProfilePicture, parseMention, getRandom } = require('./lib/myfunc')
  const database = require('./database.json')
  
  
  module.exports = hisoka = async (hisoka, m, chatUpdate) => {
      try {
          var body = (m.mtype === 'conversation') ? m.message.conversation : (m.mtype == 'imageMessage') ? m.message.imageMessage.caption : (m.mtype == 'videoMessage') ? m.message.videoMessage.caption : (m.mtype == 'extendedTextMessage') ? m.message.extendedTextMessage.text : (m.mtype == 'buttonsResponseMessage') ? m.message.buttonsResponseMessage.selectedButtonId : (m.mtype == 'listResponseMessage') ? m.message.listResponseMessage.singleSelectReply.selectedRowId : (m.mtype == 'templateButtonReplyMessage') ? m.message.templateButtonReplyMessage.selectedId : (m.mtype === 'messageContextInfo') ? m.message.buttonsResponseMessage.selectedButtonId : ''
          var budy = (typeof m.text == 'string' ? m.text : '')
          var prefix = prefa ? /^[°•π÷×¶∆£¢€¥®™+✓_=|~!?@#$%^&.©^]/gi.test(body) ? body.match(/^[°•π÷×¶∆£¢€¥®™+✓_=|~!?@#$%^&.©^]/gi)[0] : "" : prefa ?? global.prefix
          const isCmd = body.startsWith(prefix)
          const command = body.replace(prefix, '').trim().split(/ +/).shift().toLowerCase()
          const args = body.trim().split(/ +/).slice(1)
          const pushname = m.pushName || "No Name"
          const isCreator = [hisoka.user.id, ...global.owner].map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').includes(m.sender)
          const itsMe = m.sender == hisoka.user.id ? true : false
          const text = q = args.join(" ")
          const quoted = m.quoted ? m.quoted : m
          const mime = (quoted.msg || quoted).mimetype || ''
  	const isMedia = /image|video|sticker|audio/.test(mime)
  	
          // Group
          const groupMetadata = m.isGroup ? await hisoka.groupMetadata(m.chat).catch(e => {}) : ''
          const groupName = m.isGroup ? groupMetadata.subject : ''
          const participants = m.isGroup ? await groupMetadata.participants : ''
          const groupAdmins = m.isGroup ? await getGroupAdmins(participants) : ''
  	const isBotAdmins = m.isGroup ? groupAdmins.includes(m.sender) : false
          const isGroupAdmins = m.isGroup ? groupAdmins.includes(m.sender) : false
  
          // Bot Status
          const used = process.memoryUsage()
          const cpus = os.cpus().map(cpu => {
              cpu.total = Object.keys(cpu.times).reduce((last, type) => last + cpu.times[type], 0)
  			return cpu
          })
          const cpu = cpus.reduce((last, cpu, _, { length }) => {
              last.total += cpu.total
  			last.speed += cpu.speed / length
  			last.times.user += cpu.times.user
  			last.times.nice += cpu.times.nice
  			last.times.sys += cpu.times.sys
  			last.times.idle += cpu.times.idle
  			last.times.irq += cpu.times.irq
  			return last
          }, {
              speed: 0,
  			total: 0,
  			times: {
  			    user: 0,
  			    nice: 0,
  			    sys: 0,
  			    idle: 0,
  			    irq: 0
              }
          })
  
          // Public & Self
          if (!hisoka.public) {
              if (!m.key.fromMe) return
          }
  
          // Push Message To Console
          if (m.message) {
              console.log(chalk.black(chalk.bgWhite('[ PESAN ]')), chalk.black(chalk.bgGreen(new Date)), chalk.black(chalk.bgBlue(budy || m.mtype)) + '\n' + chalk.magenta('=> Dari'), chalk.green(pushname), chalk.yellow(m.sender) + '\n' + chalk.blueBright('=> Di'), chalk.green(m.isGroup ? pushname : 'Private Chat', m.chat))
          }
  
          switch(command) {
  	    case 'sc': {
                  m.reply('Script : https://github.com/DikaArdnt/Hisoka-Morou\n\n Dont Forget Give Star\n\nDonate : https://ko-fi.com/cak_haho\n\n Dont Forget Donate')
              }
              break
              case 'chat': {
                  if (!isCreator) throw mess.owner
                  if (!q) throw 'Option : 1. mute\n2. unmute\n3. archive\n4. unarchive\n5. read\n6. unread\n7. delete'
                  if (args[0] === 'mute') {
                      hisoka.chatModify({ mute: 'Infinity' }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'unmute') {
                      hisoka.chatModify({ mute: null }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'archive') {
                      hisoka.chatModify({  archive: true }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'unarchive') {
                      hisoka.chatModify({ archive: false }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'read') {
                      hisoka.chatModify({ markRead: true }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'unread') {
                      hisoka.chatModify({ markRead: false }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'delete') {
                      hisoka.chatModify({ clear: { message: { id: m.quoted.id, fromMe: true }} }, m.chat, []).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  }
              }
              break
              case 'join': {
                  if (!isCreator) throw mess.owner
                  if (!text) throw 'Masukkan Link Group!'
                  if (!isUrl(args[0]) && !args[0].includes('whatsapp.com')) throw 'Link Invalid!'
                  m.reply(mess.wait)
                  let result = args[0].split('https://chat.whatsapp.com/')[1]
                  await hisoka.acceptInvite(result).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
              }
              break
              case 'leave': {
                  if (!isCreator) throw mess.owner
                  await hisoka.groupLeave(m.chat).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
              }
              break
  	case 'kick': {
  		if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
  		let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
  		await hisoka.groupParticipantsUpdate(m.chat, [users], 'remove').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
  	}
  	break
  	case 'add': {
  		if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
  		let users = m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
  		await hisoka.groupParticipantsUpdate(m.chat, [users], 'add').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
  	}
  	break
  	case 'promote': {
  		if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
  		let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
  		await hisoka.groupParticipantsUpdate(m.chat, [users], 'promote').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
  	}
  	break
  	case 'demote': {
  		if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
  		let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
  		await hisoka.groupParticipantsUpdate(m.chat, [users], 'demote').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
  	}
  	break
          case 'block': {
  		if (!isCreator) throw mess.owner
  		let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
  		await hisoka.updateBlockStatus(users, 'block').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
  	}
  	break
          case 'block': {
  		if (!isCreator) throw mess.owner
  		let users = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text.replace(/[^0-9]/g, '')+'@s.whatsapp.net'
  		await hisoka.updateBlockStatus(users, 'unblock').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
  	}
  	break
  	    case 'setname': case 'setsubject': {
                  if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
                  if (!text) throw 'Text ?'
                  await hisoka.groupUpdateSubject(m.chat, text).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
              }
              break
              case 'setprofile': case 'setpp': {
                  if (!isCreator) throw mess.owner
                  if (!quoted) throw 'Reply Image'
                  if (/image/.test(mime)) throw `balas image dengan caption *${prefix + command}*`
                  let media = await hisoka.downloadAndSaveMediaMessage(quoted)
                  if (!m.isGroup && !isBotAdmins && !isGroupAdmins) {
                      await hisoka.updateProfilePicture(m.chat, { url: media }).catch((err) => fs.unlinkSync(media))
  		    await fs.unlinkSync(media)
                  } else if (!isCreator) {
                      await hisoka.updateProfilePicture(hisoka.user.id, { url: media }).catch((err) => fs.unlinkSync(media))
  		    await fs.unlinkSync(media)
                  }
              }
              break
              case 'group': case 'grup': {
                  if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
                  if (!text) throw 'Masukkan value open/close'
                  if (args[0].toLowerCase() === 'close') {
                      await hisoka.groupSettingUpdate(m.chat, 'announcement').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0].toLowerCase() === 'open') {
                      await hisoka.groupSettingUpdate(m.chat, 'not_announcement').then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  }
              }
              break
              case 'linkgroup': case 'linkgc': {
                  if (!m.isGroup) throw mess.group
                  let response = await hisoka.groupInviteCode(m.chat)
                  hisoka.sendText(m.chat, `https://chat.whatsapp.com/${response}\n\nLink Group : ${groupMetadata.subject}`, m, { detectLink: true })
              }
              break
              case 'ephemeral': {
                  if (!m.isGroup) throw mess.group
                  if (!isBotAdmins) throw mess.botAdmin
                  if (!isGroupAdmins) throw mess.admin
                  if (!text) throw 'Masukkan value enable/disable'
                  if (args[0] === 'enable') {
                      await hisoka.sendMessage(m.chat, { disappearingMessagesInChat: WA_DEFAULT_EPHEMERAL }).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  } else if (args[0] === 'disable') {
                      await hisoka.sendMessage(m.chat, { disappearingMessagesInChat: false }).then((res) => m.reply(jsonformat(res))).catch((err) => m.reply(jsonformat(err)))
                  }
              }
              break
              case 'delete': case 'del': {
                  if (!m.quoted) throw false
                  let { chat, fromMe, id, isBaileys } = m.quoted
                  if (!isBaileys) throw 'Pesan tersebut bukan dikirim oleh bot!'
                  hisoka.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: true, id: m.quoted.id, participant: m.quoted.sender } })
              }
              break
  	    case 'sticker': case 's': case 'stickergif': case 'sgif': {
  		if (!quoted) throw `Balas Video/Image Dengan Caption ${prefix + command}`
  		m.reply(mess.wait)
                  if (/image/.test(mime)) {
  		    let media = await quoted.download()
  		    let encmedia = await hisoka.sendImageAsSticker(m.chat, media, m, { packname: global.packname, author: global.author })
  		    await fs.unlinkSync(encmedia)
  		} else if (/video/.test(mime)) {
  		    if ((quoted.msg || quoted).seconds > 11) return m.reply('Maksimal 10 detik!')
  		    let media = await quoted.download()
  		    let encmedia = await hisoka.sendVideoAsSticker(m.chat, media, m, { packname: global.packname, author: global.author })
  		    await fs.unlinkSync(encmedia)
  		} else {
              	    throw `Kirim Gambar/Video Dengan Caption ${prefix + command}\nDurasi Video 1-9 Detik`
          	}
  	    }
  	    break
  	    case 'toimage': case 'toimg': {
                  if (!quoted) throw 'Reply Image'
                  if (!/webp/.test(mime)) throw `balas stiker dengan caption *${prefix + command}*`
                  m.reply(mess.wait)
                  let media = await hisoka.downloadAndSaveMediaMessage(quoted)
                  let ran = await getRandom('.png')
                  exec(`ffmpeg -i ${media} ${ran}`, (err) => {
                      fs.unlinkSync(media)
                      if (err) throw err
                      let buffer = fs.readFileSync(ran)
                      hisoka.sendMessage(m.chat, { image: buffer }, { quoted: m })
                      fs.unlinkSync(ran)
                  })
              }
              break
  	    case 'tomp4': case 'tovideo': {
                  if (!quoted) throw 'Reply Image'
                  if (!/webp/.test(mime)) throw `balas stiker dengan caption *${prefix + command}*`
                  m.reply(mess.wait)
                  let media = await hisoka.downloadAndSaveMediaMessage(quoted)
                  let webpToMp4 = await webp2mp4File(media)
                  await hisoka.sendMessage(m.chat, { video: { url: webpToMp4.result, caption: 'Convert Webp To Video' } }, { quoted: m })
                  await fs.unlinkSync(media)
              }
              break
              case 'togif': {
                  if (!quoted) throw 'Reply Image'
                  if (!/webp/.test(mime)) throw `balas stiker dengan caption *${prefix + command}*`
                  m.reply(mess.wait)
                  let media = await hisoka.downloadAndSaveMediaMessage(quoted)
                  let webpToMp4 = await webp2mp4File(media)
                  await hisoka.sendMessage(m.chat, { video: { url: webpToMp4.result, caption: 'Convert Webp To Video' }, gifPlayback: true }, { quoted: m })
                  await fs.unlinkSync(media)
              }
              break
  	    case 'tourl': {
                  m.reply(mess.wait)
                  let media = await hisoka.downloadAndSaveMediaMessage(quoted)
                  if (/image/.test(mime)) {
                      let anu = await TelegraPh(media)
                      m.reply(util.format(anu))
                  } else if (!/image/.test(mime)) {
                      let anu = await UploadFileUgu(media)
                      m.reply(util.format(anu))
                  }
                  await fs.unlinkSync(media)
              }
              break
              case 'pinterest': {
                  m.reply(mess.wait)
                  anu = await pinterest(text)
                  result = anu[Math.floor(Math.random(), anu.length)]
                  hisoka.sendMessage(m.chat, { image: { url: result }, caption: '⭔ Media Url : '+result }, { quoted: m })
              }
              break
              case 'wallpaper': {
                  m.reply(mess.wait)
                  anu = await wallpaper(text)
                  result = anu[Math.floor(Math.random(), anu.length)]
                  hisoka.sendMessage(m.chat, { image: { url: result.image }, caption: `⭔ Title : ${result.title}\n⭔ Category : ${result.type}\n⭔ Media Url : ${result.image}` }, { quoted: m })
              }
              break
              case 'wikimedia': {
                  m.reply(mess.wait)
                  anu = wikimedia(text)
                  result = anu[Math.floor(Math.random(), anu.length)]
                  hisoka.sendMessage(m.chat, { image: { url: result.image }, caption: `⭔ Title : ${result.title}\n⭔ Source : ${result.source}\n⭔ Media Url : ${result.image}` }, { quoted: m })
              }
              break
              case 'porno': case 'porn': case 'bokep': {
                  m.reply(mess.wait)
                  anu = await porno()
                  hisoka.sendMessage(m.chat, { video: { url: 'https://tikporntok.com/'+anu.video }, caption: `⭔ Title : ${anu.title}\n⭔ Viewers : ${anu.views}\n⭔ Tags : ${anu.tags}\n⭔ Likes : ${anu.like}\n⭔ Dislikes : ${anu.dislike}\n⭔ Favourite : ${anu.favorite}\n⭔ Time Upload : ${anu.upload}\n⭔ Description : ${anu.desc}\n⭔ Source : https://tikporntok.com/${anu.source}` }, { quoted: m })
              }
              break
              case 'hentai': {
                  m.reply(mess.wait)
                  anu = await hentai()
                  result = anu[Math.floor(Math.random(), anu.length)]
                  hisoka.sendMessage(m.chat, { video: { url: result.video_1 }, caption: `⭔ Title : ${result.title}\n⭔ Category : ${result.category}\n⭔ Mimetype : ${result.type}\n⭔ Views : ${result.views_count}\n⭔ Shares : ${result.share_count}\n⭔ Source : ${result.link}\n⭔ Media Url : ${result.video_1}` }, { quoted: m })
              }
              break
              case 'quotesanime': case 'quoteanime': {
                  m.reply(mess.wait)
                  anu = await quotesAnime()
                  result = anu[Math.floor(Math.random(), anu.length)]
                  hisoka.sendMessage(m.chat, { text: `~_${result.quotes}\n\nBy '${result.karakter}', ${result.anime}\n\n- ${result.up_at}` })
              }
              break
              case 'public': {
                  if (!isCreator) throw mess.owner
                  hisoka.public = true
                  m.reply('Sukse Change To Public Usage')
              }
              break
              case 'self': {
                  if (!isCreator) throw mess.owner
                  hisoka.public = false
                  m.reply('Sukses Change To Self Usage')
              }
              break
              case 'ping': case 'botstatus': case 'statusbot': {
                  let timestamp = speed()
                  let latensi = speed() - timestamp
                  neww = performance.now()
                  oldd = performance.now()
                  respon = `
  Kecepatan Respon ${latensi.toFixed(4)} _Second_ \n ${oldd - neww} _miliseconds_\n\nRuntime : ${runtime(process.uptime())}
  
  💻 Info Server
  RAM: ${formatp(os.totalmem() - os.freemem())} / ${formatp(os.totalmem())}
  
  _NodeJS Memory Usaage_
  ${Object.keys(used).map((key, _, arr) => `${key.padEnd(Math.max(...arr.map(v=>v.length)),' ')}: ${formatp(used[key])}`).join('\n')}
  
  ${cpus[0] ? `_Total CPU Usage_
  ${cpus[0].model.trim()} (${cpu.speed} MHZ)\n${Object.keys(cpu.times).map(type => `- *${(type + '*').padEnd(6)}: ${(100 * cpu.times[type] / cpu.total).toFixed(2)}%`).join('\n')}
  _CPU Core(s) Usage (${cpus.length} Core CPU)_
  ${cpus.map((cpu, i) => `${i + 1}. ${cpu.model.trim()} (${cpu.speed} MHZ)\n${Object.keys(cpu.times).map(type => `- *${(type + '*').padEnd(6)}: ${(100 * cpu.times[type] / cpu.total).toFixed(2)}%`).join('\n')}`).join('\n\n')}` : ''}
                  `.trim()
                  m.reply(respon)
              }
              break
              case 'owner': case 'creator': {
                  let vcard = 'BEGIN:VCARD\n' // metadata of the contact card
                      + 'VERSION:3.0\n' 
                      + 'N:;Dika Ardnt.;;;'
                      + 'FN:Dika Ardnt.\n' // full name
                      + 'ORG:Owner Bot;\n' // the organization of the contact
                      + 'TEL;type=CELL;type=VOICE;waid=6288292024190:+62 882-9202-4190\n' // WhatsApp ID + phone number
                      + 'END:VCARD'
                  hisoka.sendMessage(m.chat, { contacts: { displayName: 'Dika Ardnt.', contacts: [{ vcard }] } }, { quoted: m })
              }
              break
              case 'eval': {
                  if (!isCreator) return m.reply(mess.owner)
                  function Return(sul) {
                      sat = JSON.stringify(sul, null, 2)
                      bang = util.format(sat)
                          if (sat == undefined) {
                              bang = util.format(sul)
                          }
                          return m.reply(bang)
                  }
                  try {
                      m.reply(util.format(eval(`(async () => { return ${budy.slice(3)} })()`)))
                  } catch (e) {
                      m.reply(String(e))
                  }
              }
              break
              case 'bot': {
                  m.reply(mess.wait)
                  let buttons = [
                      {buttonId: 'ping', buttonText: {displayText: 'Status Bot'}, type: 1}
                  ]
                  let buttonMessage = {
                      image: {url: 'https://telegra.ph/file/bb15c9a53c4a0b68a99fa.jpg' },
                      caption: `Hello @${m.sender.split("@")[0]}`,
                      footerText: 'Hi Im Hisoka Bot',
                      buttons: buttons,
                      headerType: 4
                  }
                  hisoka.sendMessage(m.chat, buttonMessage, { quoted: m })
              }
              break
              case 'tes': case 'menu': case 'help': case '?': {
                  anu = `
  ┌──⭓ *Group Menu*
  │
  │⭔ ${prefix}linkgroup
  │⭔ ${prefix}ephemeral [option]
  │⭔ ${prefix}setpp
  │⭔ ${prefix}setname [text]
  │⭔ ${prefix}group [option]
  │⭔ ${prefix}add @user
  │⭔ ${prefix}kick @user
  │⭔ ${prefix}promote @user
  │⭔ ${prefix}demote @user
  │
  └───────⭓
  
  ┌──⭓ *Search Menu*
  │
  │⭔ ${prefix}pinterest
  │⭔ ${prefix}wallpaper
  │⭔ ${prefix}wikimedia
  │
  └───────⭓
  
  ┌──⭓ *Random Menu*
  │
  │⭔ ${prefix}porno
  │⭔ ${prefix}hentai
  │⭔ ${prefix}quotesanime
  │
  └───────⭓
  
  ┌──⭓ *Convert Menu*
  │
  │⭔ ${prefix}toimage
  │⭔ ${prefix}sticker
  │⭔ ${prefix}tovideo
  │⭔ ${prefix}togif
  │⭔ ${prefix}tourl
  │
  └───────⭓
  
  ┌──⭓ *Main Menu*
  │
  │⭔ ${prefix}ping
  │⭔ ${prefix}owner
  │⭔ ${prefix}menu / ${prefix}help / ${prefix}?
  │⭔ ${prefix}delete
  │
  └───────⭓
  
  ┌──⭓ *Owner Menu*
  │
  │⭔ ${prefix}chat [option]
  │⭔ ${prefix}join [link]
  │⭔ ${prefix}leave
  │⭔ ${prefix}block @user
  │⭔ ${prefix}unblock @user
  │
  └───────⭓
  `
                  let message = await prepareWAMessageMedia({ image: fs.readFileSync('./lib/hisoka.jpg') }, { upload: hisoka.waUploadToServer })
                  const template = generateWAMessageFromContent(m.chat, proto.Message.fromObject({
                      templateMessage: {
                          hydratedTemplate: {
                              imageMessage: message.imageMessage,
                              hydratedContentText: anu,
                              hydratedButtons: [{
                                  urlButton: {
                                      displayText: 'Source Code',
                                      url: 'https://github.com/DikaArdnt/Hisoka-Morou'
                                  }
                              }, {
                                  callButton: {
                                      displayText: 'Number Phone Owner',
                                      phoneNumber: '+62 882-9202-4190'
                                  }
                              }, {
                                  quickReplyButton: {
                                      displayText: 'Status Bot',
                                      id: 'ping'
                                  }
                              }, {
                                  quickReplyButton: {
                                      displayText: 'Contact Owner',
                                      id: 'owner'
                                  }  
                              }, {
                                  quickReplyButton: {
                                      displayText: 'Script',
                                      id: 'sc'
                                  }
                              }]
                          }
                      }
                  }), { userJid: m.chat, quoted: m })
                  hisoka.relayMessage(m.chat, template.message, { messageId: template.key.id })
              }
              break
              default:
                  if (budy.startsWith('=>')) {
                      if (!isCreator) return m.reply(mess.owner)
                      function Return(sul) {
                          sat = JSON.stringify(sul, null, 2)
                          bang = util.format(sat)
                              if (sat == undefined) {
                                  bang = util.format(sul)
                              }
                              return m.reply(bang)
                      }
                      try {
                          m.reply(util.format(eval(`(async () => { return ${budy.slice(3)} })()`)))
                      } catch (e) {
                          m.reply(String(e))
                      }
                  }
  
                  if (budy.startsWith('>')) {
                      if (!isCreator) return m.reply(mess.owner)
                      try {
                          let evaled = await eval(budy.slice(2))
                          if (typeof evaled !== 'string') evaled = require('util').inspect(evaled)
                          await m.reply(evaled)
                      } catch (err) {
                          m = String(err)
                          await m.reply(m)
                      }
                  }
  
                  if (budy.startsWith('$')) {
                      if (!isCreator) return reply(mess.owner)
                      exec(budy.slice(2), (err, stdout) => {
                          if(err) return m.reply(err)
                          if (stdout) return m.reply(stdout)
                      })
                  }
          }
          
  
      } catch (err) {
          m.reply(util.format(err))
      }
  }
  
  
  let file = require.resolve(__filename)
  fs.watchFile(file, () => {
  	fs.unwatchFile(file)
  	console.log(chalk.redBright(`Update ${__filename}`))
  	delete require.cache[file]
  	require(file)
  })
  