Piring code

by XshopTopup

16
Raw
require('./db/config')
const { default: makeWASocket, useMultiFileAuthState, DisconnectReason, fetchLatestBaileysVersion, generateForwardMessageContent, prepareWAMessageMedia, generateWAMessageFromContent, generateMessageID, downloadContentFromMessage, jidDecode, getAggregateVotesInPollMessage, proto } = require("@whiskeysockets/baileys")
const fs = require('fs')
const pino = require('pino')
const chalk = require('chalk')
const path = require('path')
const readline = require("readline");
const CFonts = require('cfonts')
const spin = require('spinnies')
const axios = require('axios')
const FileType = require('file-type')
const yargs = require('yargs/yargs')
const _ = require('lodash')
const { Boom } = require('@hapi/boom')
const PhoneNumber = require('awesome-phonenumber')
const { color, bgcolor } = require('./lib/color')
const ff = require("fluent-ffmpeg");
const { tmpdir } = require("os")
const crypto = globalThis.crypto || require('crypto');
if (!globalThis.crypto) globalThis.crypto = require('crypto');
let d = new Date
let locale = 'id'
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("id", {
day: 'numeric',
month: 'long',
year: 'numeric'
})
const usePairingCode = true

const { smsg, isUrl, generateMessageTag, getBuffer, getSizeMedia, fetchJson, await, sleep } = require('./lib/myfunc')
const question = (text) => {
  const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
  });
  return new Promise((resolve) => {
rl.question(text, resolve)
  })
};
//=================================================//
const store = {
  contacts: new Map(),
  chats: new Map(),
  messages: new Map(),
  saveMessage(jid, id, message, expireMs = 1200000) {
    if (!jid || !id || !message) return false;
    if (!this.messages.has(jid)) this.messages.set(jid, new Map());
    const msgs = this.messages.get(jid);
    if (msgs.has(id)) clearTimeout(msgs.get(id).timer);
    msgs.set(id, {
      data: message,
      timer: setTimeout(() => {
        msgs.delete(id);
        if (!msgs.size) this.messages.delete(jid);
      }, expireMs),
      savedAt: Date.now()
    });
    return true;
  },
  loadMessage(jid, id) {
    return this.messages.get(jid)?.get(id)?.data;
  },
  hasMessage(jid, id) {
    return !!this.messages.get(jid)?.has(id);
  },
  deleteMessage(jid, id) {
    const msgs = this.messages.get(jid);
    if (!msgs?.has(id)) return false;
    clearTimeout(msgs.get(id).timer);
    msgs.delete(id);
    if (!msgs.size) this.messages.delete(jid);
    return true;
  },
  flushMessages() {
    this.messages.forEach(msgs => msgs.forEach(m => clearTimeout(m.timer)));
    this.messages.clear();
  }
};
//=================================================//
//=================================================//
const spinner = { 
  "interval": 120,
  "frames": [
"✖ [░░░░░░░░░░░░░░░]",
"✖ [■░░░░░░░░░░░░░░]",
"✖ [■■░░░░░░░░░░░░░]",
"✖ [■■■░░░░░░░░░░░░]",
"✖ [■■■■░░░░░░░░░░░]",
"✖ [■■■■■░░░░░░░░░░]",
"✖ [■■■■■■░░░░░░░░░]",
"✖ [■■■■■■■░░░░░░░░]",
"✖ [■■■■■■■■░░░░░░░]",
"✖ [■■■■■■■■■░░░░░░]",
"✖ [■■■■■■■■■■░░░░░]",
"✖ [■■■■■■■■■■■░░░░]",
"✖ [■■■■■■■■■■■■░░░]",
"✖ [■■■■■■■■■■■■■░░]",
"✖ [■■■■■■■■■■■■■■░]",
"✖ [■■■■■■■■■■■■■■■]"
  ]}
let globalSpinner;
const getGlobalSpinner = (disableSpins = false) => {
if(!globalSpinner) globalSpinner = new spin({ color: 'crimson', succeedColor: 'green', spinner, disableSpins});
return globalSpinner;
}
let spins = getGlobalSpinner(false)
const start = (id, text) => {
spins.add(id, {text: text})
}
const success = (id, text) => {
spins.succeed(id, {text: text})

}
//=================================================//

CFonts.say(
  "XSTBOT\n\n",
  {
    colors: ["system"],
    font: "console",
    align: "center",
  },
);
console.log(color(`Validasi Nickname Untuk Bot Dan Website`, "gold"),
color(`\n-`, "gold"), color(`Website`, "gold"),
color(`https://ceknickname.com`, "blue"),
color(`\n\n-`, "gold"), color(`Jika code tidak muncul enter 1-2x lagi`, "green"), 
color(`\n-`, "gold"), color(`Format nomor diawali dengan 62..., bukan 08...`, "green"),
color(`\n-`, "gold"), color(`Script terintegrasi dengan bxystore`, "green"),
color(`\n-`, "gold"), color(`Dikembangkan oleh xshoptopup.`, "green"),
color(`\n-`, "gold"), color(`Dilarang menjual script ini tanpa izin.`, "green")
)
//=================================================//
async function connectToWhatsApp() {
const { state, saveCreds } = await useMultiFileAuthState(global.sessionName)
const xstbot = makeWASocket({
logger: pino({ level: "silent" }),
printQRInTerminal: !usePairingCode,
auth: state,
browser: [ 'Windows', 'Chrome', '11'],
});
if(usePairingCode && !xstbot.authState.creds.registered) {
		const phoneNumber = await question(color('\n\n\nMasukan Nomor WhatsApp Kamu Dengan Awalan 62 :\n', 'gray'));
		const code = await xstbot.requestPairingCode(phoneNumber.trim())
		console.log(color(`⚠︎ BERIKUT KODE PAIRING BOT WA ANDA :`,"gold"), color(`[ ${code} ]`, "white"))

	}
//=================================================//
xstbot.decodeJid = (jid) => {
if (!jid) return jid
if (/:\d+@/gi.test(jid)) {
let decode = jidDecode(jid) || {}
return decode.user && decode.server && decode.user + '@' + decode.server || jid
} else return jid
}
//=================================================//
xstbot.ev.on('messages.upsert', async chatUpdate => {
try {
mek = chatUpdate.messages[0]
if (!mek.message) return
mek.message = (Object.keys(mek.message)[0] === 'ephemeralMessage') ? mek.message.ephemeralMessage.message : mek.message
if (mek.key && mek.key.remoteJid === 'status@broadcast') return
if (!xstbot.public && !mek.key.fromMe && chatUpdate.type === 'notify') return
if (mek.key.id.startsWith('BAE5') && mek.key.id.length === 16) return
m = smsg(xstbot, mek, store)
require("./XSTBot")(xstbot, m, chatUpdate, store)
} catch (err) {
console.log(err)
}
})
//=================================================//
//=================================================//
//=================================================//
// ===================================
//=================================================//
//=================================================//
//Kalau Mau Self Lu Buat Jadi false
xstbot.public = true