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