bang kasi fork / bintang dulu, gw maksa nih
Persiapan for termux:
$ pkg install git
$ pkg install nodejs-lts
$ pkg install imagemagick
$ pkg install ffmpeg
$ git -v
$ nodejs -v
$ npm -v
Cara ambil script ini
$ git clone https://github.com/bolaxd/ballbotV2
$ cd ballbotV2-main
$ npm install
Setting dulu di code editor kalian masing masing
Setting/settings.js
const config = {
name: 'bolaxd', //nama sih
thumb: 'https://telegra.ph/file/145c06fa8c8b4ee92b203.jpg',
thumb2: 'https://telegra.ph/file/7eb1fc815b59e24c07ab0.jpg',
Ubah Message fail nya ada di Folder setting.js
Setting/setting.js
connect: 'Bot telah tersambung ke Konneksi server Whatsapp web',
sukses: 'Berhasil :)',
gagal: 'Kegagalan :(, mohon ulangi command anda\nJika ini salah Mohon report ke owner',
owner: 'Khususon Owner',
forgc: 'Untuk di group :]',
leave: 'Hai kak, Saya diperintahkan Owner untuk keluar dari group ini :)\nMohon maaf ya kak jika bot punya banyak kesalahan :)\nGood bye kak',
forimg: 'Kirim image lalu dengan caption command / atau kirim image dulu lalu di reply text command',
forteks: 'Reply atau tag member atau tulis nomor member setelah command',
teks: 'Reply teks / masukan karakter setelah command',
admin: 'Kamu bukan orang dalam-_\nKhusus admin',
botadmin: 'bot bukan orang dalem-_\nAdminin dong',
active: 'Sebelom nya sudah aktif :v',
unactive: 'Sebelom nya sudah tidak aktif :v',
aslink: 'Pasanglah Link setelah command',
gcouttime: 'Hai Kak, Bot ini masa aktifnya telah habis, Bot akan keluar otomatis',
linkadm: 'Admin Group tidak mengijinkan link group untuk di share :)',
notext: 'Teks nya mana?',
wait: 'Sek Loading...',
ok: 'Oke Min',
}
export default config;
ubah Nomor owner nya di Setting/owner.json
ubah Nomor Moderator nya di Setting/mod.json
ubah Nomor Premium nya di Setting/prems.json
format dari mod.json | owner.json | prems.json
adalah json seperti contoh dibawah
[
"6285728625940"
]
Jika ingin menambahkan nomor jangan lupa dikasih koma ( , )
Contoh:
[
"6285728625940",
"62xxxxxxxxxxx"
]
setelah setting di code editor di termux run lah dengan perintah dibawah ini
$ npm start
Untuk Cara menambahkan Fitur anda harus membuat plugin dengan format seperti dibawah:
const handle = async (m, { q, conn, repl }) => {
// Isi script
}
export default handle;
export let cmd = {
command: "", // type string
alias: [""], // type array string
catogory: "#bot", // // ini sesuai folder, jika anda menambahkan nya di folder bot maka tulis #bot
description: "", // type string [ opsional ]
}
Cara mengetahui parameter yang dikirimkan dari function handle
anda perlu membuka msg-upsert.mjs
pada Variable extra adalah semua komponent / parameter yang dikirim kan dalam bentuk object
users(m, extra);
groups(m, extra);
sets(m, extra);
printToConsole(m, extra);
detect(m, extra);
cmds(m, extra); // Ke function handle
} catch (e) {
console.error(e);
}
kita tahu bahwa function cmds
adalah cmd yang berasal dari folder feature
anda membayangkan seolah olah msg-upsert.mjs
dan controlers.mjs
itu seperti handler.js di script plugin yang beredar
anda harus belajar memahami script plugin local sebelom merubah / menambahkan fitur di script ini
Cara untuk menambahkan atau mengambil plugin yang ada anda bisa menggunakan command .gp
, .sp
, dan .dp
Jika anda ingin mengambil plugin yang ada anda menggunakan .gp
namacommand
contoh anda ingin mengambil plugin afk maka anda harus menyatakan nya setelah command :
.gp afk
Cara untuk menyimpan plugin juga dibuat semudah mungkin, untuk cara menyimpan plugin anda harus menggunakan command : .sp
contoh anda tadi baru saja mengedit plugin afk, untuk menyimpan nya krmbali kedalam plugin tersebut anda harus menggunakan command .sp
Contoh :
.sp afk
Untuk penghapusan plugin juga sama, anda cukup memanggil command nya saja
Bot ini auto reload file ketika anda menambahkan script nya via whatsapp, agau menarik permintaan dari github [ pull ] tapi syarat untuk auto reload ini cukup anda menggunakan PM2 agar dapat reload file dengan sendirinya
Berbeda dengan versi v1.0.1 yang menambahkan nya harus menggunakan command .cmdset
ini harus ditambahkan ketika anda menambahkan plugin kedalam bot
secara logistik, cara kerja nya ini akan kusamakan dengan script plugin local, tetapi apa yang membedakan?
bot ini akan jauh lebih ringan dan tanpa menyimpan cache import
bot ini tidak menggunakan ?update=${Date.now()}
yang terus menerus mengimport dan membuat cache caru dan seolah olah seperti membuat sampah
bot ini dikembangkan dengan cara baru, yang hanya menggunakan PM2 sebagai Hot Reload
Anda bisa menambahkan database melalui schema yang saya buat
path: utils/schema
lihat contoh nya di dalam file users / groups / sets
masing masing adalah db berbeda
db users
adalah db yang digunakan untuk menyimpan m.sender
seperti afk, rpg dan lainnya
db groups
adalah db yang digunakan untuk menyimpan db jid group,
seperti antilink, antistiker dan lainnya
db sets
adalah db yang digunakan untuk menyimpan db bot [ ini juga menyangkut sistem bot dll ]
db sets ini juga bisa dibuat menyimpan db untuk users yang jadi bot, ini akan bekerja sepenuhnya sebagai penyimpanan utama bot
Dari sini lebih banyak perbedaan yang signifikan untuk cara pemanggilan db unuk dimanipulasi / di ambil value nya
untuk cara mengambil db users
anda harus membutuhkan
.findIndex()
apakah ini anda harus membuat findIndex untuk mencari user? jawaban nya iya
contoh:
// ini jika db nya user
let i = db.users.findIndex(v => v[0] == m.sender)
db.users[i]
// ini jika db nya group
let g = db.users.findIndex(v => v[0] == m.chat)
db.grups[g]
// ini jika db nya set
let b = db.users.findIndex(v => v[0] == bot)
db.sets[b]
Ini sangat Ribet dan susah :(
tapi tenang saja saya telah membuatkan function nya di dalam msg-upsert.mjs sebagai parameter kiriman plugin cara memanggilnya seperti contoh dibawah ini:
const handle = async (m, { db, find }) => {
let { u, g, b } = find
// ketika memanggil user
db.users[u][1].premium
// ketika memanggil db group
db.grup[g][1].antilink
// ketika memanggil db set
db.set[b][1].antitag
}
ini sangat mudah :v
tetapi masih ada masalah bagaimana jika key
nya bukan m.sender?
pasti tidak bisa jika anda menggunakan db.users[u][1].premium
ini akan mengembalikan user m.sender
, bagaimana jika ini m.quoted.sender
tenang saja :) saya telah membuat function nya contoh:
const handle = async (m, { db, find }) => {
let { users, grup } = find
// ketika memanggil m.quoted
db.users[users(m.quoted.sender)][1].premium
// ketika memanggil group dengan jid
db.users[grup('1203739373937@g.us)][1].antilink
}
yeahhh imi menyelesaikan masalah :v apakah db ini auto reload? yup betull, saya disini memakai fs, dan menggunakan interval untuk write db setiap 1 detik ini sangat meringankan ! :v, dari pada anda menggunakan db dari luar seperti lowdb, terkadang anda kehilangan data saat anda menggunakan library lowdb tersebut
Jika anda memiliki pertanyaan atau masih bingung dengan penjelasan di readme.md anda bisa tanyakan di group diskusi kami