HEX
Server: LiteSpeed
System: Linux server137.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: bibuzptr (1123)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/bibuzptr/elearning.bibu-edu.us/main.js
require("./setting")
const { Telegraf } = require("telegraf")
const fs = require("fs")
const chalk = require('chalk')
const moment = require("moment-timezone")
const yargs = require('yargs/yargs')
const figlet = require("figlet")

const { simple } = require("./function/myfunc")

//Waktu
moment.tz.setDefault("Asia/Jakarta").locale("id");
const d = new Date
const tanggal = d.toLocaleDateString('id', {
  day: 'numeric',
  month: 'long',
  year: 'numeric'
})
const jamwib = moment.tz('Asia/Jakarta').format('HH:mm:ss')
const dnew = new Date(new Date + 3600000)
const dateIslamic = Intl.DateTimeFormat('id' + '-TN-u-ca-islamic', { day: 'numeric', month: 'long', year: 'numeric' }).format(dnew)

if (BOT_TOKEN == "" || BOT_TOKEN == "") {
  return console.log("Bot token tidak boleh kosong, silahkan buat bot melalui https://t.me/BotFather")
}


//DATABASE
global.opts = new Object(yargs(process.argv.slice(2)).exitProcess(false).parse())
global.db = new (require('./function/database'))(`${opts._[0] ? opts._[0] + '_' : ''}options/database.json`, null, 2)

if (!db.data.order) db.data.order = {}
if (!db.data.testi) db.data.testi = []
if (!db.data.chat) db.data.chat = {}
if (!db.data.user) db.data.user = []
if (!db.data.sewa) db.data.sewa = {}
if (!db.data.produk) db.data.produk = {}
if (!db.data.transaksi) db.data.transaksi = []

let lastJSON = JSON.stringify(db.data)
if (!opts['test']) setInterval(async () => {
  if (JSON.stringify(db.data) == lastJSON) return
  await db.save()
  lastJSON = JSON.stringify(db.data)
}, 30 * 1000)

const bot = new Telegraf(BOT_TOKEN)

async function startronzz() {
  bot.on('callback_query', async (ronzz) => {
    action = ronzz.callbackQuery.data.split(" ")
    args = action
    user_id = Number(action[1])
    const user = simple.getUserName(ronzz.callbackQuery.from)
    const isOwner = [ronzz.botInfo.username, ...global.OWNER].map(v => v.replace("https://t.me/", '')).includes(user.username ? user.username : "-")
    
    if (ronzz.callbackQuery.from.id != user_id && !isOwner) return ronzz.answerCbQuery('Uppss... button ini bukan untukmu!', { show_alert: true })
    
    const pushname = user.full_name.replace("@", "")
    const username = user.username ? user.username : "-";
    const userId = user.id.toString()
    
    if (!userId.length <= 8 && !db.data.user.includes(userId + " ")) db.data.user.push(userId + " ")

    const reply = async (text) => {
      for (var x of simple.range(0, text.length, 4096)) {
        return await ronzz.replyWithMarkdown(text.substr(x, 4096), { disable_web_page_preview: true })
      }
    }

    function toRupiah(angka) {
      var saldo = '';
      var angkarev = angka.toString().split('').reverse().join('');
      for (var i = 0; i < angkarev.length; i++)
        if (i % 3 == 0) saldo += angkarev.substr(i, 3) + '.';
      return '' + saldo.split('', saldo.length - 1).reverse().join('');
    }

    try {
      switch (action[0]) {
        case "menucmd": {
          let button = [[{ text: 'πŸ’° ORDER MENU', callback_data: 'ordercmd ' + userId }, { text: 'STORE MENU πŸ›οΈ', callback_data: 'storecmd ' + userId }], [{ text: 'πŸ“’ INFO BOT', callback_data: 'infocmd ' + userId }, { text: 'OWNER MENU πŸ§’πŸ»', callback_data: 'ownercmd ' + userId }]]
          let teks = `*πŸ€– BOT INFO πŸ€–*
β€’ Bot Name: ${BOT_NAME}
β€’ Runtime: ${simple.runtime(process.uptime())}
β€’ User: ${db.data.user.length} Users
β€’ Owner: [@${OWNER_NAME}](${OWNER[0]})

*πŸ‘€ USER INFO πŸ‘€*
β€’ Tag: [@${pushname}](https://t.me/${username})
β€’ Username: ${username}
β€’ Name: ${pushname}

*πŸ“† DATE INFO πŸ“†*
β€’ Masehi: ${moment.tz("Asia/Jakarta").format("DD MMMM YYYY")}
β€’ Hijriah: ${dateIslamic}

*⏰ TIME INFO ⏰*
β€’ WIB: ${moment.tz('Asia/Jakarta').format('HH:mm:ss')}
β€’ WITA: ${moment.tz('Asia/Makassar').format('HH:mm:ss')}
β€’ WIT: ${moment.tz('Asia/Jayapura').format('HH:mm:ss')}

_Silahkan pilih menu di bawah ini._`
          try {
            await ronzz.editMessageMedia({
              type: "photo",
              media: {
                source: thumbnail
              },
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            }, {
              reply_markup: {
                inline_keyboard: button
              }
            })
          } catch {
            await ronzz.replyWithPhoto({
              source: thumbnail
            }, {
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true,
              reply_markup: {
                inline_keyboard: button
              }
            })
          }
        }
          break

        case "ordercmd": {
          let button = [[{ text: 'πŸ“– MENU', callback_data: 'menucmd ' + userId }, { text: 'STORE MENU πŸ›οΈ', callback_data: 'storecmd ' + userId }], [{ text: 'πŸ“’ INFO BOT', callback_data: 'infocmd ' + userId }, { text: 'OWNER MENU πŸ§’πŸ»', callback_data: 'ownercmd ' + userId }]]
          let teks = `*πŸ€– BOT INFO πŸ€–*
β€’ Bot Name: ${BOT_NAME}
β€’ Runtime: ${simple.runtime(process.uptime())}
β€’ User: ${db.data.user.length} Users
β€’ Owner: [@${OWNER_NAME}](${OWNER[0]})
  
*πŸ‘€ USER INFO πŸ‘€*
β€’ Tag: [@${pushname}](https://t.me/${username})
β€’ Username: ${username}
β€’ Name: ${pushname}
  
*πŸ“† DATE INFO πŸ“†*
β€’ Masehi: ${moment.tz("Asia/Jakarta").format("DD MMMM YYYY")}
β€’ Hijriah: ${dateIslamic}
  
*⏰ TIME INFO ⏰*
β€’ WIB: ${moment.tz('Asia/Jakarta').format('HH:mm:ss')}
β€’ WITA: ${moment.tz('Asia/Makassar').format('HH:mm:ss')}
β€’ WIT: ${moment.tz('Asia/Jayapura').format('HH:mm:ss')}
  
β•­β”€β”€β”€β”€β”€β•Όγ€Œ *ORDER MENU* 」
β”‚β˜› /stok
β”‚β˜› /buy
╰─────╼`
          try {
            await ronzz.editMessageMedia({
              type: "photo",
              media: {
                source: thumbnail
              },
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            }, {
              reply_markup: {
                inline_keyboard: button
              }
            })
          } catch {
            await ronzz.replyWithPhoto({
              source: thumbnail
            }, {
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true,
              reply_markup: {
                inline_keyboard: button
              }
            })
          }
        }
          break

        case "storecmd": {
          let button = [[{ text: 'πŸ“– MENU', callback_data: 'menucmd ' + userId }, { text: 'ORDER MENU πŸ’°', callback_data: 'ordercmd ' + userId }], [{ text: 'πŸ“’ INFO BOT', callback_data: 'infocmd ' + userId }, { text: 'OWNER MENU πŸ§’πŸ»', callback_data: 'ownercmd ' + userId }]]
          let teks = `*πŸ€– BOT INFO πŸ€–*
β€’ Bot Name: ${BOT_NAME}
β€’ Runtime: ${simple.runtime(process.uptime())}
β€’ User: ${db.data.user.length} Users
β€’ Owner: [@${OWNER_NAME}](${OWNER[0]})
    
*πŸ‘€ USER INFO πŸ‘€*
β€’ Tag: [@${pushname}](https://t.me/${username})
β€’ Username: ${username}
β€’ Name: ${pushname}
    
*πŸ“† DATE INFO πŸ“†*
β€’ Masehi: ${moment.tz("Asia/Jakarta").format("DD MMMM YYYY")}
β€’ Hijriah: ${dateIslamic}
    
*⏰ TIME INFO ⏰*
β€’ WIB: ${moment.tz('Asia/Jakarta').format('HH:mm:ss')}
β€’ WITA: ${moment.tz('Asia/Makassar').format('HH:mm:ss')}
β€’ WIT: ${moment.tz('Asia/Jayapura').format('HH:mm:ss')}
    
β•­β”€β”€β”€β”€β”€β•Όγ€Œ *STORE MENU* 」
β”‚β˜› /testi
β”‚β˜› /addtesti
β”‚β˜› /deltesti
β”‚β˜› /settesti
β”‚β˜› /kalkulator
β”‚β˜› /done
β”‚β˜› /setdone
β”‚β˜› /deldone
β”‚β˜› /changedone
β”‚β˜› /proses
β”‚β˜› /setproses
β”‚β˜› /delproses
β”‚β˜› /changeproses
╰─────╼`
          try {
            await ronzz.editMessageMedia({
              type: "photo",
              media: {
                source: thumbnail
              },
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            }, {
              reply_markup: {
                inline_keyboard: button
              }
            })
          } catch {
            await ronzz.replyWithPhoto({
              source: thumbnail
            }, {
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true,
              reply_markup: {
                inline_keyboard: button
              }
            })
          }
        }
          break

        case "infocmd": {
          let button = [[{ text: 'πŸ“– MENU', callback_data: 'menucmd ' + userId }, { text: 'ORDER MENU πŸ’°', callback_data: 'ordercmd ' + userId }], [{ text: 'πŸ›οΈ STORE MENU', callback_data: 'storecmd ' + userId }, { text: 'OWNER MENU πŸ§’πŸ»', callback_data: 'ownercmd ' + userId }]]
          let teks = `*πŸ€– BOT INFO πŸ€–*
β€’ Bot Name: ${BOT_NAME}
β€’ Runtime: ${simple.runtime(process.uptime())}
β€’ User: ${db.data.user.length} Users
β€’ Owner: [@${OWNER_NAME}](${OWNER[0]})
      
*πŸ‘€ USER INFO πŸ‘€*
β€’ Tag: [@${pushname}](https://t.me/${username})
β€’ Username: ${username}
β€’ Name: ${pushname}
      
*πŸ“† DATE INFO πŸ“†*
β€’ Masehi: ${moment.tz("Asia/Jakarta").format("DD MMMM YYYY")}
β€’ Hijriah: ${dateIslamic}
      
*⏰ TIME INFO ⏰*
β€’ WIB: ${moment.tz('Asia/Jakarta').format('HH:mm:ss')}
β€’ WITA: ${moment.tz('Asia/Makassar').format('HH:mm:ss')}
β€’ WIT: ${moment.tz('Asia/Jayapura').format('HH:mm:ss')}
      
β•­β”€β”€β”€β”€β”€β•Όγ€Œ *INFO BOT* 」
β”‚β˜› /creator
β”‚β˜› /owner
β”‚β˜› /ping
β”‚β˜› /runtime
β”‚β˜› /script
╰─────╼`
          try {
            await ronzz.editMessageMedia({
              type: "photo",
              media: {
                source: thumbnail
              },
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            }, {
              reply_markup: {
                inline_keyboard: button
              }
            })
          } catch {
            await ronzz.replyWithPhoto({
              source: thumbnail
            }, {
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true,
              reply_markup: {
                inline_keyboard: button
              }
            })
          }
        }
          break

        case "ownercmd": {
          let button = [[{ text: 'πŸ“– MENU', callback_data: 'menucmd ' + userId }, { text: 'ORDER MENU πŸ’°', callback_data: 'ordercmd ' + userId }], [{ text: 'πŸ›οΈ STORE MENU', callback_data: 'storecmd ' + userId }, { text: 'INFO BOT πŸ“’', callback_data: 'infocmd ' + userId }]]
          let teks = `*πŸ€– BOT INFO πŸ€–*
β€’ Bot Name: ${BOT_NAME}
β€’ Runtime: ${simple.runtime(process.uptime())}
β€’ User: ${db.data.user.length} Users
β€’ Owner: [@${OWNER_NAME}](${OWNER[0]})
    
*πŸ‘€ USER INFO πŸ‘€*
β€’ Tag: [@${pushname}](https://t.me/${username})
β€’ Username: ${username}
β€’ Name: ${pushname}
    
*πŸ“† DATE INFO πŸ“†*
β€’ Masehi: ${moment.tz("Asia/Jakarta").format("DD MMMM YYYY")}
β€’ Hijriah: ${dateIslamic}
    
*⏰ TIME INFO ⏰*
β€’ WIB: ${moment.tz('Asia/Jakarta').format('HH:mm:ss')}
β€’ WITA: ${moment.tz('Asia/Makassar').format('HH:mm:ss')}
β€’ WIT: ${moment.tz('Asia/Jayapura').format('HH:mm:ss')}
    
β•­β”€β”€β”€β”€β”€β•Όγ€Œ *OWNER MENU* 」
β”‚β˜› /addproduk
β”‚β˜› /delproduk
β”‚β˜› /setkode
β”‚β˜› /setjudul
β”‚β˜› /setdesk
β”‚β˜› /setsnk
β”‚β˜› /setharga
β”‚β˜› /setprofit
β”‚β˜› /addstok
β”‚β˜› /delstok
β”‚β˜› /rekap
β”‚β˜› /backup
β”‚β˜› /broadcast
β”‚β˜› /welcome
β”‚β˜› /goodbye
╰─────╼`
          try {
            await ronzz.editMessageMedia({
              type: "photo",
              media: {
                source: thumbnail
              },
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            }, {
              reply_markup: {
                inline_keyboard: button
              }
            })
          } catch {
            await ronzz.replyWithPhoto({
              source: thumbnail
            }, {
              caption: teks,
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true,
              reply_markup: {
                inline_keyboard: button
              }
            })
          }
        }
          break

        case 'rekapminggu': {
          function kelompokkanTransaksi(transaksi) {
            let today = new Date(moment.tz("Asia/Jakarta").format("YYYY-MM-DD"));
            let startOfWeek = new Date(today);
            startOfWeek.setDate(today.getDate() - today.getDay());

            let endOfWeek = new Date(today);
            endOfWeek.setDate(startOfWeek.getDate() + 6);
            endOfWeek.setHours(23);
            endOfWeek.setMinutes(59);

            let transaksiMingguIni = transaksi.filter(data => {
              let transaksiDate = new Date(data.date);
              transaksiDate.setDate(transaksiDate.getDate());
              return transaksiDate >= startOfWeek && transaksiDate <= endOfWeek;
            });

            let transaksiMingguan = {};
            transaksiMingguIni.forEach(data => {
              let tanggall = new Date(data.date).toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
              if (!transaksiMingguan[tanggall]) {
                transaksiMingguan[tanggall] = [];
              }
              transaksiMingguan[tanggall].push(data);
            });

            let sortedTransaksiMingguan = {};
            Object.keys(transaksiMingguan).sort((a, b) => {
              let days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
              return days.indexOf(a.split(',')[0]) - days.indexOf(b.split(',')[0]);
            }).forEach(key => {
              sortedTransaksiMingguan[key] = transaksiMingguan[key];
            });

            return sortedTransaksiMingguan;
          }

          function rekapMingguan(transaksiHarian) {
            let totalStokTerjual = 0;
            let totalPendapatanKotor = 0;
            let totalPendapatanBersih = 0;
            let rekap = "*Rekap Mingguan:*\n\n";

            let sortedDates = Object.keys(transaksiHarian).sort((a, b) => {
              let dateA = new Date(a.split(',')[1]);
              let dateB = new Date(b.split(',')[1]);
              return dateA - dateB;
            });

            sortedDates.forEach((tanggall, index) => {
              let dataTransaksi = transaksiHarian[tanggall];
              let stokTerjualHarian = 0;
              let pendapatanKotorHarian = 0;
              let pendapatanBersihHarian = 0;

              dataTransaksi.forEach(data => {
                stokTerjualHarian += parseInt(data.jumlah);
                pendapatanKotorHarian += parseInt(data.price) * parseInt(data.jumlah);
                pendapatanBersihHarian += parseInt(data.profit) * parseInt(data.jumlah);
              });

              totalStokTerjual += stokTerjualHarian;
              totalPendapatanKotor += pendapatanKotorHarian;
              totalPendapatanBersih += pendapatanBersihHarian;

              rekap += `${index + 1}. *${new Date(tanggall.split(',')[1] + tanggall.split(',')[2]).toLocaleDateString('id-ID', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}*\n`;
              rekap += `- *Stok Terjual:* ${stokTerjualHarian}\n`;
              rekap += `- *Pendapatan Kotor:* Rp${toRupiah(pendapatanKotorHarian)}\n`;
              rekap += `- *Pendapatan Bersih:* Rp${toRupiah(pendapatanBersihHarian)}\n\n`;
            });
            rekap += `- *Total Stok Terjual:* ${totalStokTerjual}\n`;
            rekap += `- *Total Pendapatan Kotor:* Rp${toRupiah(totalPendapatanKotor)}\n`;
            rekap += `- *Total Pendapatan Bersih:* Rp${toRupiah(totalPendapatanBersih)}\n\n`;

            return rekap;
          }

          let mingguan = kelompokkanTransaksi(db.data.transaksi);

          try {
            ronzz.editMessageText(rekapMingguan(mingguan), {
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            })
          } catch {
            reply(rekapMingguan(mingguan))
          }
        }
          break

        case 'rekapbulan': {
          function bulankelompok(transaksi) {
            let transaksiHarian = {};

            transaksi.forEach(data => {
              let tanggall = new Date(data.date).toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
              if (!transaksiHarian[tanggall]) {
                transaksiHarian[tanggall] = [];
              }
              transaksiHarian[tanggall].push(data);
            });

            return transaksiHarian;
          }

          function rekapBulanan(transaksiHarian) {
            let totalStokTerjual = 0;
            let totalPendapatanKotor = 0;
            let totalPendapatanBersih = 0;
            let rekap = "*Rekap Bulanan:*\n\n";

            const bulanan = {};

            Object.entries(transaksiHarian).forEach(([tanggall, dataTransaksi]) => {
              let bulan = new Date(tanggall).toLocaleDateString('id-ID', { month: 'long', year: 'numeric' });

              if (!bulanan[bulan]) {
                bulanan[bulan] = {
                  stokTerjual: 0,
                  pendapatanKotor: 0,
                  pendapatanBersih: 0,
                  transaksiPerHari: {}
                };
              }

              dataTransaksi.forEach(data => {
                let hari = new Date(data.date).toLocaleDateString('id-ID', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });

                if (!bulanan[bulan].transaksiPerHari[hari]) {
                  bulanan[bulan].transaksiPerHari[hari] = [];
                }

                bulanan[bulan].transaksiPerHari[hari].push(data);
              });

              dataTransaksi.forEach(data => {
                bulanan[bulan].stokTerjual += parseInt(data.jumlah);
                bulanan[bulan].pendapatanKotor += parseInt(data.price) * parseInt(data.jumlah);
                bulanan[bulan].pendapatanBersih += parseInt(data.profit) * parseInt(data.jumlah);
              });
            });

            Object.entries(bulanan).forEach(([bulan, dataBulan]) => {
              rekap += `\`${bulan}:\`\n`;

              Object.entries(dataBulan.transaksiPerHari).forEach(([hari, transaksiHari]) => {
                let stokTerjualHari = 0;
                let pendapatanKotorHari = 0;
                let pendapatanBersihHari = 0;
                transaksiHari.forEach(transaksi => {
                  stokTerjualHari += parseInt(transaksi.jumlah);
                  pendapatanKotorHari += parseInt(transaksi.price) * parseInt(transaksi.jumlah);
                  pendapatanBersihHari += parseInt(transaksi.profit) * parseInt(transaksi.jumlah);
                });
                rekap += `- *${hari}:*\n`;
                rekap += `  - *Stok Terjual:* ${stokTerjualHari}\n`;
                rekap += `  - *Pendapatan Kotor:* Rp${toRupiah(parseInt(pendapatanKotorHari))}\n`;
                rekap += `  - *Pendapatan Bersih:* Rp${toRupiah(parseInt(pendapatanBersihHari))}\n\n`;
              });

              rekap += `- *Total Stok Terjual:* ${dataBulan.stokTerjual}\n`;
              rekap += `- *Total Pendapatan Kotor:* Rp${toRupiah(dataBulan.pendapatanKotor)}\n`;
              rekap += `- *Total Pendapatan Bersih:* Rp${toRupiah(dataBulan.pendapatanBersih)}\n\n`;

              totalStokTerjual += dataBulan.stokTerjual;
              totalPendapatanKotor += dataBulan.pendapatanKotor;
              totalPendapatanBersih += dataBulan.pendapatanBersih;
            });

            return rekap;
          }

          let bulanan = bulankelompok(db.data.transaksi);

          try {
            ronzz.editMessageText(rekapBulanan(bulanan), {
              parse_mode: "MARKDOWN",
              disable_web_page_preview: true
            })
          } catch {
            reply(rekapBulanan(bulanan))
          }
        }
          break
          
        case 'welcome': {
          if (action[2] == "on") {
            db.data.chat[action[3]].welcome = true
            
            try {
              ronzz.editMessageText("Welcome berhasil diaktifkan di Group ini.", {
                parse_mode: "MARKDOWN",
                disable_web_page_preview: true
              })
            } catch {
              reply("Welcome berhasil diaktifkan di Group ini.")
            }
          } else if (action[2] == "off") {
            db.data.chat[action[3]].welcome = false
            
            try {
              ronzz.editMessageText("Welcome berhasil dinonaktifkan di Group ini.", {
                parse_mode: "MARKDOWN",
                disable_web_page_preview: true
              })
            } catch {
              reply("Welcome berhasil dinonaktifkan di Group ini.")
            }
          }
        }
          break
          
        case 'goodbye': {
          if (action[2] == "on") {
            db.data.chat[action[3]].goodbye = true
            
            try {
              ronzz.editMessageText("Good Bye berhasil diaktifkan di Group ini.", {
                parse_mode: "MARKDOWN",
                disable_web_page_preview: true
              })
            } catch {
              reply("Good Bye berhasil diaktifkan di Group ini.")
            }
          } else if (action[2] == "off") {
            db.data.chat[action[3]].goodbye = false
            
            try {
              ronzz.editMessageText("Good Bye berhasil dinonaktifkan di Group ini.", {
                parse_mode: "MARKDOWN",
                disable_web_page_preview: true
              })
            } catch {
              reply("Good Bye berhasil dinonaktifkan di Group ini.")
            }
          }
        }
          break

        case 'tambah': {
          try {
            ronzz.editMessageText(`${Number(action[2]) + Number(action[3])}`)
          } catch {
            ronzz.reply(`${Number(action[2]) + Number(action[3])}`)
          }
        }
          break

        case 'kurang': {
          try {
            ronzz.editMessageText(`${Number(action[2]) - Number(action[3])}`)
          } catch {
            ronzz.reply(`${Number(action[2]) - Number(action[3])}`)
          }
        }
          break

        case 'bagi': {
          try {
            ronzz.editMessageText(`${Number(action[2]) / Number(action[3])}`)
          } catch {
            ronzz.reply(`${Number(action[2]) / Number(action[3])}`)
          }
        }
          break

        case 'kali': {
          try {
            ronzz.editMessageText(`${Number(action[2]) * Number(action[3])}`)
          } catch {
            ronzz.reply(`${Number(action[2]) * Number(action[3])}`)
          }
        }
          break
      }
    } catch (e) {
      console.log(e)
    }
  })

  bot.command('start', async (ronzz) => {
    let user = simple.getUserName(ronzz.message.from)
    await ronzz.reply(`Halo ${user.full_name}! Nama saya ${BOT_NAME} - Saya adalah Bot Telegram Auto Order! Klik /menu untuk mengetahui lebih lanjut tentang cara menggunakan bot ini.\n\nBergabunglah dengan [Channel Saya](${CHANNEL}) untuk mendapatkan informasi tentang semua pembaruan terbaru.`, {
      parse_mode: "MARKDOWN",
      disable_web_page_preview: true,
      reply_markup: {
        inline_keyboard: [
          [{
            text: 'πŸ“’ MENU πŸ“’',
            callback_data: 'menucmd ' + user.id.toString()
          }],
          [{
            text: 'SCRIPT',
            url: "https://t.me/ZammSec01"
          }, {
            text: 'OWNER',
            url: OWNER[0]
          }]
        ]
      }
    })
  })

  bot.on('message', async (ronzz) => {
    if (ronzz.message.new_chat_member && ronzz.message.new_chat_member.id !== ronzz.botInfo.id && db.data.chat[ronzz.message.chat.id].welcome) {
      let message = ronzz.message
      let groupname = message.chat.title
      let groupmembers = await bot.telegram.getChatMembersCount(message.chat.id)
      let pp_user = await simple.getPhotoProfile(message.new_chat_member.id)
      let full_name = simple.getUserName(message.new_chat_member).full_name
      let teks = `*Welcome To ${groupname}*
      
πŸ“› : [@${full_name}](https://t.me/${message.from.username})
πŸͺͺ : ${message.from.id}
🌐 : ${message.from.language_code !== undefined ? message.from.language_code : "id"}
πŸ… : ${groupmembers} Members
πŸ“† : ${moment.tz('Asia/Jakarta').format('dddd')}, ${tanggal}
⏰ : ${jamwib} *WIB*`

      await ronzz.replyWithPhoto({
        url: pp_user
      }, {
        caption: teks,
        parse_mode: "Markdown",
        disable_web_page_preview: true
      })
    }
    if (ronzz.message.left_chat_member && ronzz.message.left_chat_member.id !== ronzz.botInfo.id && db.data.chat[ronzz.message.chat.id].goodbye) {
      let message = ronzz.message
      let groupname = message.chat.title
      let groupmembers = await bot.telegram.getChatMembersCount(message.chat.id)
      let pp_user = await simple.getPhotoProfile(message.left_chat_member.id)
      let full_name = simple.getUserName(message.left_chat_member).full_name
      let teks = `*Leave From Group ${groupname}*
      
πŸ“› : [@${full_name}](https://t.me/${message.from.username})
πŸͺͺ : ${message.from.id}
🌐 : ${message.from.language_code !== undefined ? message.from.language_code : "id"}
πŸ… : ${groupmembers} Members
πŸ“† : ${moment.tz('Asia/Jakarta').format('dddd')}, ${tanggal}
⏰ : ${jamwib} *WIB*

*┗━━ ❑ Good ByeπŸ‘‹*`

      await ronzz.replyWithPhoto({
        url: pp_user
      }, {
        caption: teks,
        parse_mode: "Markdown",
        disable_web_page_preview: true
      })
    }
    ronzz.download = async (save = false, path = '') => {
      const id = await simple.getFileId(ronzz);
      const { href } = await bot.telegram.getFileLink(id);
      if (save) {
        let res = await simple.fetchBuffer(href)
        fs.writeFileSync(path, res?.data)
        return path
      } else if (!save) {
        return href;
      }
    }
    require("./index")(ronzz, bot)
  })

  bot.launch({
    dropPendingUpdates: true
  })

  bot.telegram.getMe().then(async (getme) => {
    console.log(chalk.bold.green(figlet.textSync('NdutvpsBOT', {
      font: 'Standard',
      horizontalLayout: 'default',
      vertivalLayout: 'default',
      whitespaceBreak: false
    })))
    await simple.sleep(100)
    console.log(`\n${chalk.yellow("[ BOT INFO ]")}\n${chalk.green("Bot Name:")} ${chalk.white(getme.first_name + (getme.last_name !== undefined ? ` ${getme.last_name}` : ""))}\n${chalk.green("Username:")} ${chalk.white("@" + getme.username)}\n${chalk.green("Id:")} ${chalk.white(getme.id)}\n${chalk.green("Link:")} ${chalk.white("https://t.me/" + getme.username)}\n \n `)
    await simple.sleep(100)
    console.log(chalk.yellow(`${chalk.red('[ CREATOR NdutVps ID ]')}\n\n${chalk.italic.magenta(`SV NdutVps ID\nNomor: 085789116062\nSebut namaπŸ‘†,`)}\n\n${chalk.red(`ADMIN MENYEDIAKAN`)}\n${chalk.white(`- SC BOT TOPUP\n- SC BOT CPANEL\n- SC BOT AUTO ORDER\n- SC BOT PUSH KONTAK\n- ADD FITUR JADIBOT\n- UBAH SC LAMA KE PAIRING CODE\n- FIXS FITUR/SC ERROR\n`)}`))
  })
}

startronzz()

process.once('SIGINT', () => bot.stop('SIGINT'))
process.once('SIGTERM', () => bot.stop('SIGTERM'))