├── Dockerfile ├── LICENSE ├── Procfile ├── README.md ├── app.json ├── config.js ├── database.json ├── docker-compose.yml ├── handler.js ├── index.js ├── json └── emoji.json ├── lib ├── canvas.js ├── cloudDBAdapter.js ├── converter.js ├── database.js ├── exif.js ├── gdrive.js ├── jagokata.js ├── levelling.js ├── logs.js ├── misi.json ├── mongoDB.js ├── print.js ├── scrape.js ├── simple.js ├── sticker.js ├── store.js ├── store2.js ├── tictactoe.d.ts ├── tictactoe.js ├── uploadFile.js ├── uploadImage.js ├── util.js ├── webp.js ├── webp2mp4.js ├── welcome.js └── y2mate.js ├── main.js ├── media ├── elaina.png ├── elaina2.png ├── elaina3.png ├── elaina4.png ├── elaina5.png ├── elaina6.png ├── elaina7.png └── elaina8.png ├── mp3 ├── Bot.opus ├── little-girl-sayingtalking-hello-sound-effectcute-sound-effectsadorable.opus ├── sholawat.opus ├── soundultah.mp3 └── waalaikumsalam.ogg ├── package.json ├── plugins ├── Ayat-kursi.js ├── Credits By Wh Mods Dev ├── HD.js ├── HUUUUUU.js ├── Kata_anime.js ├── Niatsholat.js ├── Waalaikumsalam.js ├── _-role.js ├── _allfake.js ├── _anticulik.js ├── _antilink.js ├── _antispam.js ├── _antitoxic.js ├── _autoban.js ├── _autobio.js ├── _autolevelup.js ├── _autoreact.js ├── _autoreact2.js ├── _autoresponder.js ├── _autovn.js ├── _cmdWithMedia.js ├── _durability.js ├── _expired.js ├── _health.js ├── _premium.js ├── _res.js ├── _simi.js ├── _templateResponse.js ├── afk-_afk.js ├── afk-afk.js ├── all-soundkanemenu.js ├── all-soundmenu.js ├── alquran.js ├── anime-fanart.js ├── anime-husbu.js ├── anime-info.js ├── anime-jahy.js ├── anime-kanna.js ├── anime-kusonime.js ├── anime-link.js ├── anime-loli.js ├── anime-lolice.js ├── anime-megumin.js ├── anime-neko.js ├── anime-otakudesu.js ├── anime-ppcp.js ├── anime-random.js ├── anime-waifu.js ├── anonymous-sendkontak.js ├── anonymous_chat.js ├── anonymous_chat_.js.js ├── antivirtex.js ├── antivirtext.js ├── asmaulhusna.js ├── asupan-loli.js ├── audio-effect.js ├── audio-tomp3.js ├── audio-toptt.js ├── bank-cek.js ├── bank-nabung.js ├── bank-tarik.js ├── bot.js ├── broadcast.js ├── broadcastchats.js ├── broadcastgroups.js ├── cmd-del.js ├── cmd-list.js ├── cmd-lock.js ├── cmd-set.js ├── cnnnews.js ├── creator.js ├── creator2.js ├── delete-pesan-orang-lain.js ├── donasi.js ├── download-tiktok-audio.js ├── downloader-aio.js ├── downloader-apk.js ├── downloader-facebook.js ├── downloader-facebook2.js ├── downloader-gitclone.js ├── downloader-ig.js ├── downloader-igstalk.js ├── downloader-joox.js ├── downloader-mediafire.js ├── downloader-pinterest.js ├── downloader-pixiv.js ├── downloader-savefrom.js ├── downloader-sfile.js ├── downloader-tiktok.js ├── downloader-twitter.js ├── downloader-ytdl.js ├── downloader-zippyshare.js ├── enable.js ├── exp-ceksn.js ├── exp-daftar.js ├── exp-my.js ├── exp-tomoney.js ├── exp-unreg.js ├── expired-cek.js ├── expired-del.js ├── expired-set.js ├── fun-alay.js ├── fun-apakah.js ├── fun-apakah2.js ├── fun-bokep.js ├── fun-darkjoke.js ├── fun-generate_nama.js ├── fun-generate_purba.js ├── fun-how.js ├── fun-jadian.js ├── fun-kapankah.js ├── fun-kapankah2.js ├── fun-kerangajaib.js ├── fun-nomorhoki.js ├── fun-pick.js ├── fun-plusplus.js ├── fun-simi.js ├── fun-taugasi.js ├── game-asahotak.js ├── game-asahotak_ans.js ├── game-asahotak_hint.js ├── game-caklontong.js ├── game-caklontong_ans.js ├── game-caklontong_hint.js ├── game-family100.js ├── game-family100_answer.js ├── game-gombal-ans.js ├── game-gombal-hint.js ├── game-gombal.js ├── game-iqtest.js ├── game-lengkapikalimat-ans.js ├── game-lengkapikalimat-hint.js ├── game-lengkapikalimat.js ├── game-math.js ├── game-math_answer.js ├── game-siapakahaku.js ├── game-siapakahaku_ans.js ├── game-siapakahaku_hint.js ├── game-slot.js ├── game-suit.js ├── game-suitpvp.js ├── game-suitpvp_ans.js ├── game-susunkata.js ├── game-susunkata_ans.js ├── game-susunkata_hint.js ├── game-tebakan-ans.js ├── game-tebakan-hint.js ├── game-tebakan.js ├── game-tebakanjime-ans.js ├── game-tebakanjime-hint.js ├── game-tebakanjime.js ├── game-tebakbendera.js ├── game-tebakbendera_ans.js ├── game-tebakbendera_hint.js ├── game-tebakchara-ans.js ├── game-tebakchara-hint.js ├── game-tebakchara.js ├── game-tebakgambar.js ├── game-tebakgambar_answer.js ├── game-tebakgambar_hint.js ├── game-tebakgame-ans.js ├── game-tebakgame-hint.js ├── game-tebakgame.js ├── game-tebakjenaka-ans.js ├── game-tebakjenaka-hint.js ├── game-tebakjenaka.js ├── game-tebakkabupaten.js ├── game-tebakkabupaten_ans.js ├── game-tebakkabupaten_hint.js ├── game-tebakkalimat-ans.js ├── game-tebakkalimat-hint.js ├── game-tebakkalimat.js ├── game-tebakkimia.js ├── game-tebakkimia_ans.js ├── game-tebakkimia_hint.js ├── game-tebaklagu.js ├── game-tebaklagu_ans.js ├── game-tebaklagu_hint.js ├── game-tebaklirik.js ├── game-tebaklirik_ans.js ├── game-tebaklirik_hint.js ├── game-tebaklogo-ans.js ├── game-tebaklogo-hint.js ├── game-tebaklogo.js ├── game-tebaksiapa-ans.js ├── game-tebaksiapa-hint.js ├── game-tebaksiapa.js ├── game-tebakumur.js ├── game-tekateki.js ├── game-tekateki_ans.js ├── game-tekateki_hint.js ├── game-war-attack.js ├── game-war.js ├── games-_tictactoe.js ├── games-tebakkata.js ├── games-tebakkata_ans.js ├── games-tebakkata_hint.js ├── games-tictactoe.js ├── get-icons.js ├── github-stalk.js ├── google.js ├── group-add.js ├── group-demote.js ├── group-info.js ├── group-kick.js ├── group-link.js ├── group-pengumuman.js ├── group-promote.js ├── group-setname-gc.js ├── group-setppgc.js ├── group-settings.js ├── group-tagall.js ├── group-tagme.js ├── hello.js ├── host-bcgcb.js ├── image-gimage.js ├── image-pinterest.js ├── image-wallpaper.js ├── info-boosting.js ├── info-grouplist.js ├── info-paystore.js ├── info-report.js ├── info-runtime.js ├── info-runtime1.js ├── info-runtime2.js ├── info-script.js ├── info-speedtest.js ├── info-statserver.js ├── info-totalfitur.js ├── info-tqto.js ├── internet-blackpink.js ├── internet-brainly.js ├── internet-bts.js ├── internet-cecan-random.js ├── internet-cecan-ukhty.js ├── internet-cuaca.js ├── internet-darkjokes.js ├── internet-exo.js ├── internet-fetch.js ├── internet-ghsearch.js ├── internet-jadwalbola.js ├── internet-kbbi.js ├── internet-manga.js ├── internet-memeindo.js ├── internet-randommeme.js ├── internet-ssweb.js ├── intro.js ├── jadwalsholat.js ├── kodenuklir.js ├── kompasnews.js ├── levelup.js ├── logo-kaneki.js ├── logo-loli.js ├── logo-neko.js ├── logo-rem.js ├── logo-sadboy.js ├── lyrics.js ├── maker-ephoto360-part2.js ├── maker-ephoto360-part3.js ├── maker-ephoto360.js ├── menpes-ans.js ├── menpes.js ├── menu.js ├── motivasi.js ├── nsfw-nhentai.js ├── nulis-hartatahta..js ├── nulis-magernulis.js ├── nulis-nulis.js ├── nulis-nulis2.js ├── owner-add.js ├── owner-addowner.js ├── owner-addprem.js ├── owner-backup.js ├── owner-balas.js ├── owner-banchat.js ├── owner-banuser.js ├── owner-cleartmp.js ├── owner-delprem.js ├── owner-deluser.js ├── owner-demote.js ├── owner-df.js ├── owner-exec.js ├── owner-exec2.js ├── owner-fiturplus.js ├── owner-getdb.js ├── owner-getfile.js ├── owner-getplugins.js ├── owner-gp.js ├── owner-join.js ├── owner-kick.js ├── owner-leavegc.js ├── owner-listprem.js ├── owner-order.js ├── owner-promote.js ├── owner-restart.js ├── owner-sesi.js ├── owner-setbotpp.js ├── owner-sf.js ├── owner-simulate.js ├── owner-tagall.js ├── owner-unbanchat.js ├── owner-unbanuser.js ├── ppcouple.js ├── prem-nsfw.js ├── quotes-bacot.js ├── quotes-bucin.js ├── quotes-dare.js ├── quotes-islam.js ├── quotes-katabijak.js ├── quotes-pantun.js ├── quotes-truth.js ├── renungan.js ├── rpg-adventure.js ├── rpg-bansos.js ├── rpg-berburu.js ├── rpg-berdagang.js ├── rpg-berkebon.js ├── rpg-bet.js ├── rpg-bonus.js ├── rpg-buah.js ├── rpg-build.js ├── rpg-casino.js ├── rpg-cek.js ├── rpg-chop.js ├── rpg-collect.js ├── rpg-cook.js ├── rpg-cooldown.js ├── rpg-craft.js ├── rpg-cupon.js ├── rpg-daily.js ├── rpg-duel.js ├── rpg-dungeon.js ├── rpg-eat.js ├── rpg-feed.js ├── rpg-fight-centaur.js ├── rpg-fight-griffin.js ├── rpg-fight-kucing.js ├── rpg-fight-kyubi.js ├── rpg-fight-naga.js ├── rpg-fight-phonix.js ├── rpg-freegift.js ├── rpg-gajian.js ├── rpg-heal.js ├── rpg-hourly.js ├── rpg-hunt.js ├── rpg-inventory.js ├── rpg-kandang.js ├── rpg-kerja.js ├── rpg-koboy.js ├── rpg-kolam.js ├── rpg-leaderboard.js ├── rpg-maling.js ├── rpg-mancing.js ├── rpg-mentransfer.js ├── rpg-meracik.js ├── rpg-merampok.js ├── rpg-mining.js ├── rpg-mission.js ├── rpg-monthly.js ├── rpg-mulung.js ├── rpg-nabung.js ├── rpg-nambang.js ├── rpg-nebang.js ├── rpg-ngewe.js ├── rpg-ngocok.js ├── rpg-nguli.js ├── rpg-ojek.js ├── rpg-open-crate.js ├── rpg-open.js ├── rpg-pasar.js ├── rpg-petstore.js ├── rpg-pointxp.js ├── rpg-polisi.js ├── rpg-profile.js ├── rpg-ramuan.js ├── rpg-redeem.js ├── rpg-repair.js ├── rpg-rob.js ├── rpg-roket.js ├── rpg-role.js ├── rpg-shop.js ├── rpg-shopfish.js ├── rpg-shops.js ├── rpg-slect-skill.js ├── rpg-slot.js ├── rpg-tarik.js ├── rpg-taxy.js ├── rpg-toko.js ├── rpg-transfer.js ├── rpg-upgrade.js ├── rpg-use.js ├── rpg-weekly.js ├── rpg-work.js ├── search-joox.js ├── sholawat.js ├── smeme.js ├── sound-kane-1-24.js ├── sound120.js ├── sounds-new-1-119.js ├── speed.js ├── sticker-attp.js ├── sticker-bonk.js ├── sticker-colong.js ├── sticker-full.js ├── sticker-getexif.js ├── sticker-meme.js ├── sticker-sticker.js ├── sticker-stickerLLT.js ├── sticker-toimg.js ├── sticker-tovideo.js ├── sticker-ttp.js ├── sticker-wm.js ├── store-addlist.js ├── store-dellist.js ├── store-list.js ├── telegram-sticker.js ├── tes123.js ├── tool-apkinfo.js ├── tool-apksearch.js ├── tool-blur.js ├── tool-calc.js ├── tool-carigroup.js ├── tool-cekapi.js ├── tool-chord.js ├── tool-delete.js ├── tool-emojimix-v2.js ├── tool-emojimix.js ├── tool-fetch.js ├── tool-hlh.js ├── tool-jadwaltv.js ├── tool-nobg.js ├── tool-ocr.js ├── tool-qrcode.js ├── tool-react.js ├── tool-readmore.js ├── tool-readviewonce.js ├── tool-sendquote.js ├── tool-shorturl.js ├── tool-spamwa.js ├── tool-styletext.js ├── tool-tourl.js ├── tool-tovideo.js ├── tool-translate.js ├── tool-tts.js ├── tool-webcheck.js ├── tool-whatmusic.js ├── wallq.js ├── wikipedia.js ├── xp-profile.js ├── youtube-play.js ├── youtube-yta.js ├── youtube-yts.js ├── youtube-ytv.js └── zens-virus.js ├── replit.nix ├── server.js ├── session.data.json ├── speed.py ├── src ├── Aesthetic │ ├── .file │ ├── Aesthetic_000.jpeg │ ├── Aesthetic_001.jpg │ └── Aesthetic_002.jpg ├── LICENSE ├── avatar_contact.png ├── font │ ├── .file │ ├── 212BabyGirl.otf │ ├── 212LeahleeSans.ttf │ ├── 99HandWritting.ttf │ ├── ACallingFontDby7NTypes.otf │ ├── ACasualHandwrittenPenNoncommercial.ttf │ ├── ADayinSeptember.otf │ ├── ASMelanieHandwritting.ttf │ ├── Alittlesunshine.ttf │ ├── And-This-Happened.ttf │ ├── AvenirCondensedHand.ttf │ ├── Avocados.ttf │ ├── BabyDoll.ttf │ ├── BattleOfKingsRegular.ttf │ ├── BrayNotes.ttf │ ├── Convered-By-Your-Grace.ttf │ ├── Edoms-Handwritting-Normal.ttf │ ├── Futura Bold Italic font.ttf │ ├── Futura Bold font.ttf │ ├── Futura Book Italic font.ttf │ ├── Futura Book font.ttf │ ├── Futura Extra Black font.ttf │ ├── Futura Heavy Italic font.ttf │ ├── Futura Heavy font.ttf │ ├── Futura Light Italic font.ttf │ ├── Futura Light font.ttf │ ├── Futura Medium Italic font.ttf │ ├── Futura XBlk BT.ttf │ ├── Futura-CondensedLight.otf │ ├── GloriaHallelujah-Regular.ttf │ ├── HandwritingCR-2.ttf │ ├── Kempton-Demo-Handwritting.ttf │ ├── MyHandsareHoldingYou.ttf │ ├── My_handwriting.ttf │ ├── Nadeznas-Handwritting.ttf │ ├── Roboto-Black.ttf │ ├── Roboto-BlackItalic.ttf │ ├── Roboto-Bold.ttf │ ├── Roboto-BoldItalic.ttf │ ├── Roboto-Italic.ttf │ ├── Roboto-Light.ttf │ ├── Roboto-LightItalic.ttf │ ├── Roboto-Medium.ttf │ ├── Roboto-MediumItalic.ttf │ ├── Roboto-Regular.ttf │ ├── Roboto-Thin.ttf │ ├── Roboto-ThinItalic.ttf │ ├── ShadowsIntoLight-Regular.ttf │ ├── Zahraaa.ttf │ ├── angelina.ttf │ ├── futur.ttf │ ├── futura light bt.ttf │ ├── futura medium bt.ttf │ ├── futura medium condensed bt.ttf │ ├── level_c.otf │ ├── michellehandwritting.ttf │ └── texts.otf ├── jadwaltv.json ├── kertas │ ├── .file │ └── magernulis1.jpg ├── level_c.otf ├── texts.otf └── welcome.svg ├── sticker ├── ress1.webp ├── ress2.webp ├── ress3.webp ├── ress4.webp ├── ress5.webp ├── ress6.webp ├── ress7.webp ├── ress8.webp ├── ress9.webp ├── ynkts1.webp ├── ynkts2.webp ├── ynkts3.webp ├── ynkts4.webp ├── ynkts5.webp ├── ynkts6.webp ├── ynkts7.webp ├── ynkts8.webp └── ynkts9.webp ├── test.js ├── thumbnail.jpg └── views ├── img ├── dark │ ├── .file │ ├── balloon_centered_normal.9.png │ ├── balloon_centered_pressed.9.png │ ├── balloon_centered_shadow.9.png │ ├── balloon_incoming_frame.9.png │ ├── balloon_incoming_normal.9.png │ ├── balloon_incoming_normal_ext.9.png │ ├── balloon_incoming_normal_stkr.9.png │ ├── balloon_incoming_pressed.9.png │ ├── balloon_incoming_pressed_ext.9.png │ ├── balloon_live_location_incoming_frame.9.png │ ├── balloon_live_location_outgoing_frame.9.png │ ├── balloon_outgoing_frame.9.png │ ├── balloon_outgoing_normal.9.png │ ├── balloon_outgoing_normal_ext.9.png │ ├── balloon_outgoing_normal_stkr.9.png │ ├── balloon_outgoing_pressed.9.png │ └── balloon_outgoing_pressed_ext.9.png └── light │ ├── .file │ ├── balloon_centered_normal.9.png │ ├── balloon_centered_pressed.9.png │ ├── balloon_centered_shadow.9.png │ ├── balloon_incoming_frame.9.png │ ├── balloon_incoming_normal.9.png │ ├── balloon_incoming_normal_ext.9.png │ ├── balloon_incoming_normal_stkr.9.png │ ├── balloon_incoming_pressed.9.png │ ├── balloon_incoming_pressed_ext.9.png │ ├── balloon_live_location_incoming_frame.9.png │ ├── balloon_live_location_outgoing_frame.9.png │ ├── balloon_outgoing_frame.9.png │ ├── balloon_outgoing_normal.9.png │ ├── balloon_outgoing_normal_ext.9.png │ ├── balloon_outgoing_normal_stkr.9.png │ ├── balloon_outgoing_pressed.9.png │ └── balloon_outgoing_pressed_ext.9.png ├── index.html ├── index.js └── style.css /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-buster 2 | 3 | RUN apt-get update && \ 4 | apt-get install -y \ 5 | ffmpeg \ 6 | imagemagick \ 7 | webp && \ 8 | apt-get upgrade -y && \ 9 | rm -rf /var/lib/apt/lists/* 10 | 11 | COPY package.json . 12 | 13 | RUN npm install && npm install qrcode-terminal 14 | 15 | COPY . . 16 | 17 | EXPOSE 5000 18 | 19 | CMD ["node", "index.js"] 20 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: npm i -g pm2 && pm2 start index.js && pm2 save && pm2 logs 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Albedo BOT 2 | SC ORI WH MODS DEV 3 | RECODE ZENS 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "games-wabot", 3 | "description": "Customizable WhatsApp Bot", 4 | "repository": "https://github.com/BochilGaming/games-wabot", 5 | "logo": "https://node-js-sample.herokuapp.com/node.png", 6 | "keywords": ["bot", "whatsapp", "whatsapp-bot", "rpg", "games-wabot", "epic rpg"] 7 | } 8 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | web: 4 | build: . 5 | ports: 6 | - "8000:5000" 7 | volumes: 8 | - .:/code 9 | - logvolume01:/var/log 10 | links: 11 | - redis 12 | redis: 13 | image: redis 14 | volumes: 15 | logvolume01: {} -------------------------------------------------------------------------------- /lib/jagokata.js: -------------------------------------------------------------------------------- 1 | import cheerio from 'cheerio' 2 | import fetch from 'node-fetch' 3 | 4 | async function quotes(input) { 5 | return new Promise((resolve, reject) => { 6 | fetch('https://jagokata.com/kata-bijak/kata-' + input.replace(/\s/g, '_') + '.html?page=1') 7 | .then(res => res.text()) 8 | .then(res => { 9 | const $ = cheerio.load(res) 10 | data = [] 11 | $('div[id="main"]').find('ul[id="citatenrijen"] > li').each(function (index, element) { 12 | x = $(this).find('div[class="citatenlijst-auteur"] > a').text().trim() 13 | y = $(this).find('span[class="auteur-beschrijving"]').text().trim() 14 | z = $(element).find('q[class="fbquote"]').text().trim() 15 | data.push({ author: x, bio: y, quote: z }) 16 | }) 17 | data.splice(2, 1) 18 | if (data.length == 0) return resolve({ creator: '@neoxr - Wildan Izzudin & @ariffb.id - Ariffb', status: false }) 19 | resolve({ creator: '@neoxr - Wildan Izzudin & @ariffb.id - Ariffb', status: true, data }) 20 | }).catch(reject) 21 | }) 22 | } 23 | 24 | export { 25 | quotes 26 | } 27 | -------------------------------------------------------------------------------- /lib/logs.js: -------------------------------------------------------------------------------- 1 | let stdouts = [] 2 | export default (maxLength = 200) => { 3 | let oldWrite = process.stdout.write.bind(process.stdout) 4 | module.exports.disable = () => { 5 | module.exports.isModified = false 6 | return process.stdout.write = oldWrite 7 | } 8 | process.stdout.write = (chunk, encoding, callback) => { 9 | stdouts.push(Buffer.from(chunk, encoding)) 10 | oldWrite(chunk, encoding, callback) 11 | if (stdouts.length > maxLength) stdouts.shift() 12 | } 13 | module.exports.isModified = true 14 | return module.exports 15 | } 16 | 17 | export const isModified = false 18 | export function logs() { return Buffer.concat(stdouts)} 19 | 20 | -------------------------------------------------------------------------------- /lib/tictactoe.d.ts: -------------------------------------------------------------------------------- 1 | export declare class TicTacToe { 2 | /* X PlayerName */ 3 | playerX: string; 4 | /* Y PlayerName */ 5 | playerY: string; 6 | /* X if true, Y if false */ 7 | _currentTurn: boolean; 8 | _x: number; 9 | _y: number; 10 | _turns: number; 11 | constructor(playerX: string, playerY: string); 12 | get board(): number; 13 | turn(player, index: number): boolean; 14 | turn(player, x: number, y: number): boolean; 15 | } 16 | -------------------------------------------------------------------------------- /lib/uploadImage.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | import { FormData, Blob } from 'formdata-node'; 3 | import { fileTypeFromBuffer } from 'file-type' 4 | 5 | /** 6 | * Upload image to telegra.ph 7 | * Supported mimetype: 8 | * - `image/jpeg` 9 | * - `image/jpg` 10 | * - `image/png`s 11 | * @param {Buffer} buffer Image Buffer 12 | * @return {Promise} 13 | */ 14 | export default async buffer => { 15 | const { ext, mime } = await fileTypeFromBuffer(buffer) 16 | let form = new FormData() 17 | const blob = new Blob([buffer.toArrayBuffer()], { type: mime }) 18 | form.append('file', blob, 'tmp.' + ext) 19 | let res = await fetch('https://telegra.ph/upload', { 20 | method: 'POST', 21 | body: form 22 | }) 23 | let img = await res.json() 24 | if (img.error) throw img.error 25 | return 'https://telegra.ph' + img[0].src 26 | } 27 | 28 | -------------------------------------------------------------------------------- /lib/util.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | export const shortUrl = async (url) => { 4 | return await (await fetch(`https://tinyurl.com/api-create.php?url=${url}`)).text() 5 | } 6 | -------------------------------------------------------------------------------- /media/elaina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina.png -------------------------------------------------------------------------------- /media/elaina2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina2.png -------------------------------------------------------------------------------- /media/elaina3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina3.png -------------------------------------------------------------------------------- /media/elaina4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina4.png -------------------------------------------------------------------------------- /media/elaina5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina5.png -------------------------------------------------------------------------------- /media/elaina6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina6.png -------------------------------------------------------------------------------- /media/elaina7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina7.png -------------------------------------------------------------------------------- /media/elaina8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/media/elaina8.png -------------------------------------------------------------------------------- /mp3/Bot.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/mp3/Bot.opus -------------------------------------------------------------------------------- /mp3/little-girl-sayingtalking-hello-sound-effectcute-sound-effectsadorable.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/mp3/little-girl-sayingtalking-hello-sound-effectcute-sound-effectsadorable.opus -------------------------------------------------------------------------------- /mp3/sholawat.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/mp3/sholawat.opus -------------------------------------------------------------------------------- /mp3/soundultah.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/mp3/soundultah.mp3 -------------------------------------------------------------------------------- /mp3/waalaikumsalam.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/mp3/waalaikumsalam.ogg -------------------------------------------------------------------------------- /plugins/Credits By Wh Mods Dev: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /plugins/HD.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import FormData from 'form-data' 3 | 4 | let handler = async (m) => { 5 | 6 | try { 7 | await m.reply('Sedang membuat...') 8 | let q = m.quoted ? m.quoted : m 9 | let mime = (q.msg || q).mimetype || '' 10 | if (!mime) throw 'Fotonya Mana?' 11 | if (!/image\/(jpe?g|png)/.test(mime)) throw `Tipe ${mime} tidak didukung!` 12 | let img = await q.download() 13 | let body = new FormData 14 | body.append('image', img, 'image') 15 | let res = await fetch('http://max-image-resolution-enhancer.codait-prod-41208c73af8fca213512856c7a09db52-0000.us-east.containers.appdomain.cloud/model/predict', { 16 | method: 'POST', 17 | body 18 | }) 19 | if (res.status !== 200) throw await res.json() 20 | await conn.sendFile(m.chat, await res.buffer(), 'hd.jpg', 'Nihh,, Hade kan?', m) 21 | } catch (e) { 22 | m.reply('Ada yang Erorr!') 23 | } 24 | } 25 | handler.help = ['hd', 'enhance'] 26 | handler.tags = ['tools'] 27 | handler.command = /^(hd|enhance)$/i 28 | 29 | handler.limit = true 30 | 31 | export default handler 32 | -------------------------------------------------------------------------------- /plugins/Kata_anime.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async(m, { conn, text }) => { 3 | let res = await (await fetch('https://katanime.vercel.app/api/getrandom?limit=1')) 4 | if (!res.ok) throw await res.text() 5 | let json = await res.json() 6 | if(!json.result[0]) throw json 7 | let { indo, character, anime } = json.result[0] 8 | m.reply(`${indo}\n\n${character}\n${anime}`) 9 | } 10 | handler.help = ['katanime'] 11 | handler.tags = ['internet'] 12 | handler.command = /^(katanime|kataanime)$/i 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/_antispam.js: -------------------------------------------------------------------------------- 1 | export async function all(m) { 2 | if (!m.message) 3 | return 4 | this.spam = this.spam ? this.spam : {} 5 | if (m.sender in this.spam) { 6 | this.spam[m.sender].count++ 7 | if (m.messageTimestamp.toNumber() - this.spam[m.sender].lastspam > 10) { 8 | if (this.spam[m.sender].count > 10) { 9 | //global.db.data.users[m.sender].banned = true 10 | m.reply('*Jangan Spam!!*') 11 | } 12 | this.spam[m.sender].count = 0 13 | this.spam[m.sender].lastspam = m.messageTimestamp.toNumber() 14 | } 15 | } 16 | else 17 | this.spam[m.sender] = { 18 | jid: m.sender, 19 | count: 0, 20 | lastspam: 0 21 | } 22 | } -------------------------------------------------------------------------------- /plugins/_autoban.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m) { 4 | if (m.sender.startsWith('212' || '212')) { 5 | global.db.data.users[m.sender].banned = true 6 | } 7 | 8 | if (m.sender.startsWith('265' || '265')) { 9 | global.db.data.users[m.sender].banned = true 10 | } 11 | } 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/_autobio.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | handler.all = async function (m) { 3 | let setting = global.db.data.settings[this.user.jid] 4 | let chat = global.db.data.chats[m.chat] 5 | if (chat.autoBio) { 6 | if (new Date() * 1 - setting.status > 1000) { 7 | let _uptime = process.uptime() * 1000 8 | let uptime = clockString(_uptime); 9 | let bio = `🚀 Aktif selama ${uptime}\n${htjava} Mode: ${global.opts['self'] ? 'Private' : setting.self ? 'Private' : global.opts['gconly'] ? 'Hanya Grup' : 'Publik'}\n${htjava} 🥀 By ${author}\n${cmenuf}` 10 | await this.updateProfileStatus(bio).catch(_ => _) 11 | setting.status = new Date() * 1 12 | } 13 | } 14 | 15 | } 16 | export default handler 17 | function clockString(ms) { 18 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 19 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 20 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 21 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 22 | return [d, ' Hari ️', h, ' Jam ', m, ' Menit ', s, ' Detik '].map(v => v.toString().padStart(2, 0)).join('') 23 | } 24 | -------------------------------------------------------------------------------- /plugins/_autolevelup.js: -------------------------------------------------------------------------------- 1 | import db from '../lib/database.js' 2 | import { canLevelUp } from '../lib/levelling.js' 3 | 4 | export function before(m) { 5 | let user = db.data.users[m.sender] 6 | if (!user.autolevelup) 7 | return !0 8 | let before = user.level * 1 9 | while (canLevelUp(user.level, user.exp, global.multiplier)) 10 | user.level++ 11 | 12 | if (before !== user.level) { 13 | user.role = global.rpg.role(user.level).name 14 | m.reply(` 15 | 🎉ᴄᴏɴɢʀᴀᴛᴜʟᴀᴛɪᴏɴs, ${this.getName(m.sender)} ʟᴇᴠᴇʟ ᴜᴩ﹗ 16 | • 📉 ᴩʀᴇᴠɪᴏᴜs ʟᴇᴠᴇʟ : ${before} 17 | • 📈 ɴᴇᴡ ʟᴇᴠᴇʟ : ${user.level} 18 | • 🎎 ʀᴏʟᴇ : ${user.role} 19 | gunakan *.profile* untuk mengecek 20 | `.trim()) 21 | } 22 | } 23 | export const disabled = true 24 | -------------------------------------------------------------------------------- /plugins/_autoreact.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | 3 | conn.sendMessage(m.chat, { 4 | react: { 5 | text: `${pickRandom(['😨','😅','😂','😳','😎', '🥵', '😱', '🐦', '🙄', '🐤','🗿','🐦','🤨','🥴','😐','👆','😔', '👀','👎'])}`, 6 | key: m.key, 7 | }}) 8 | 9 | } 10 | handler.customPrefix = /(bile?k|ban?h|cum?|knt?l|y?|mmk|p|b(a|i)?c?(o|i)?(t|d)?|wibu|p(a)?nt(e)?k|pepe?k|owner)/i 11 | handler.command = new RegExp 12 | 13 | handler.mods = false 14 | 15 | export default handler 16 | 17 | function pickRandom(list) { 18 | return list[Math.floor(Math.random() * list.length)] 19 | } 20 | -------------------------------------------------------------------------------- /plugins/_autoreact2.js: -------------------------------------------------------------------------------- 1 | import { readFileSync } from "fs" 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let res = JSON.parse(readFileSync('./json/emoji.json')) 5 | let em = res.emoji 6 | 7 | conn.sendMessage(m.chat, { 8 | react: { 9 | text: em.getRandom(), 10 | key: m.key, 11 | }}) 12 | 13 | } 14 | handler.customPrefix = /(bilek|laik|banh|nihh|tytyd|anjir|dek)/i 15 | handler.command = new RegExp 16 | 17 | handler.mods = false 18 | 19 | export default handler 20 | 21 | function pickRandom(list) { 22 | return list[Math.floor(Math.random() * list.length)] 23 | } 24 | -------------------------------------------------------------------------------- /plugins/_autovn.js: -------------------------------------------------------------------------------- 1 | 2 | import fetch from 'node-fetch' 3 | 4 | export async function before(m, { isAdmin, isBotAdmin }) { 5 | if (m.isBaileys && m.fromMe) 6 | return !0 7 | if (!m.isGroup) return !1 8 | let chat = global.db.data.chats[m.chat] 9 | let bot = global.db.data.settings[this.user.jid] || {} 10 | if (chat.autoVn) { 11 | let sim = await fetch(`https://api.simsimi.net/v2/?text=${m.text}&lc=id`) 12 | let res = await sim.json() 13 | let tts = `https://hadi-api.herokuapp.com/api/tts?language=id&text=${res.success}` 14 | conn.sendMessage(m.chat, { audio: { url: tts }, mimetype: 'audio/mp4' }) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /plugins/_cmdWithMedia.js: -------------------------------------------------------------------------------- 1 | const { 2 | proto, 3 | generateWAMessage, 4 | areJidsSameUser 5 | } = (await import('@adiwajshing/baileys')).default 6 | 7 | export async function all(m, chatUpdate) { 8 | if (m.isBaileys) return 9 | if (!m.message) return 10 | if (!m.msg.fileSha256) return 11 | if (!(Buffer.from(m.msg.fileSha256).toString('base64') in global.db.data.sticker)) return 12 | 13 | let hash = global.db.data.sticker[Buffer.from(m.msg.fileSha256).toString('base64')] 14 | let { text, mentionedJid } = hash 15 | let messages = await generateWAMessage(m.chat, { text: text, mentions: mentionedJid }, { 16 | userJid: this.user.id, 17 | quoted: m.quoted && m.quoted.fakeObj 18 | }) 19 | messages.key.fromMe = areJidsSameUser(m.sender, this.user.id) 20 | messages.key.id = m.key.id 21 | messages.pushName = m.pushName 22 | if (m.isGroup) messages.participant = m.sender 23 | let msg = { 24 | ...chatUpdate, 25 | messages: [proto.WebMessageInfo.fromObject(messages)], 26 | type: 'append' 27 | } 28 | this.ev.emit('messages.upsert', msg) 29 | } 30 | -------------------------------------------------------------------------------- /plugins/_durability.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m) { 4 | let user = db.data.users[m.sender] 5 | 6 | //Sword 7 | if (user.sword > 0) { 8 | if (user.sworddurability < 1) { 9 | user.sworddurability = 30 10 | user.sword -= 1 11 | } 12 | } 13 | if (user.sword == 0) { 14 | user.sworddurability = 0 15 | } 16 | 17 | //pickaxe 18 | if (user.pickaxe > 0) { 19 | if (user.pickaxedurability < 1) { 20 | user.pickaxedurability = 30 21 | user.pickaxe -= 1 22 | } 23 | } 24 | if (user.pickaxe == 0) { 25 | user.pickaxedurability = 0 26 | } 27 | 28 | //armor 29 | if (user.armor > 0) { 30 | if (user.armordurability < 1) { 31 | user.armordurability = 30 32 | user.armor -= 1 33 | } 34 | } 35 | if (user.armor == 0) { 36 | user.armordurability = 0 37 | } 38 | } 39 | export default handler -------------------------------------------------------------------------------- /plugins/_expired.js: -------------------------------------------------------------------------------- 1 | export async function all(m) { 2 | if (!m.isGroup) 3 | return 4 | let chats = global.db.data.chats[m.chat] 5 | if (!chats.expired) 6 | return !0 7 | if (+new Date() > chats.expired) { 8 | await this.reply(m.chat, 'Bye🖐 bot akan left!!') 9 | await this.groupLeave(m.chat) 10 | chats.expired = null 11 | } 12 | } -------------------------------------------------------------------------------- /plugins/_health.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m) { 4 | let user = db.data.users[m.sender] 5 | if (user.health > 100) { 6 | user.health = 100 7 | } 8 | if (user.health < 0) { 9 | user.health = 0 10 | } 11 | } 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/_premium.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m) { 4 | let user = db.data.users[m.sender] 5 | if (new Date() - user.premiumTime > 0) { 6 | user.premiumTime = 0 7 | user.premium = false 8 | } 9 | } 10 | 11 | export default handler -------------------------------------------------------------------------------- /plugins/_res.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import fs from 'fs' 3 | 4 | export async function all(m) { 5 | let pp = await this.profilePictureUrl(m.sender, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png') 6 | 7 | let vr = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 8 | let num = vr.getRandom() 9 | let stc = await fs.readFileSync('./sticker/ress' + num + '.webp') 10 | 11 | 12 | if (m.isBaileys) return 13 | if (m.chat.endsWith('broadcast')) return 14 | try { 15 | if (m.mentionedJid.includes(this.user.jid) && m.isGroup) { 16 | await this.sendMessage(m.chat, { sticker : stc, thumbnail: await( await fetch(pp)).buffer() , contextInfo:{ externalAdReply: { showAdAttribution: true, 17 | mediaType: 1, 18 | mediaUrl: 'https://wa.me/6282127487538', 19 | title: '「 ❔ 」', 20 | body: wm, 21 | sourceUrl: 'http://github.com/Wahidhidayatulla', thumbnail: await( await fetch(pp)).buffer() 22 | } 23 | }}, { quoted: m }) 24 | 25 | } 26 | } catch (e) { 27 | return 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /plugins/_simi.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = m => m 3 | 4 | handler.before = async (m) => { 5 | let chat = global.db.data.chats[m.chat] 6 | if (chat.simi && !chat.isBanned ) { 7 | if (/^.*false|disnable|(turn)?off|0/i.test(m.text)) return 8 | if (!m.text) return 9 | let res = await fetch(global.API('https://api.simsimi.net', '/v2/', { text: encodeURIComponent(m.text), lc: "id" }, '')) 10 | if (!res.ok) throw eror 11 | let json = await res.json() 12 | if (json.success == 'gapaham banh:v') return m.reply('lu ngetik apaaan sih') 13 | await m.reply(`${json.success}`) 14 | return !0 15 | } 16 | return true 17 | } 18 | export default handler -------------------------------------------------------------------------------- /plugins/afk-_afk.js: -------------------------------------------------------------------------------- 1 | export function before(m) { 2 | let user = global.db.data.users[m.sender] 3 | if (user.afk > -1) { 4 | conn.sendButtonDoc(m.chat,` 5 | Kamu berhenti AFK${user.afkReason ? ' setelah ' + user.afkReason : ''} 6 | Selama ${(new Date - user.afk).toTimeString()} 7 | `,wm,'Hai Kak','Ya',m,fakeig) 8 | user.afk = -1 9 | user.afkReason = '' 10 | } 11 | let jids = [...new Set([...(m.mentionedJid || []), ...(m.quoted ? [m.quoted.sender] : [])])] 12 | for (let jid of jids) { 13 | let user = global.db.data.users[jid] 14 | if (!user) 15 | continue 16 | let afkTime = user.afk 17 | if (!afkTime || afkTime < 0) 18 | continue 19 | let reason = user.afkReason || '' 20 | conn.sendButtonDoc(m.chat,` 21 | Jangan tag dia! 22 | Dia sedang AFK ${reason ? 'dengan alasan ' + reason : 'tanpa alasan'} 23 | Selama ${(new Date - afkTime).toTimeString()} 24 | `,wm,'Maaf Kak','Ya',m,fakeig) 25 | } 26 | return true 27 | } 28 | -------------------------------------------------------------------------------- /plugins/afk-afk.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text }) => { 2 | let user = global.db.data.users[m.sender] 3 | user.afk = + new Date 4 | user.afkReason = text 5 | m.reply(` 6 | ${conn.getName(m.sender)} is now AFK${text ? ': ' + text : ''} 7 | `) 8 | } 9 | handler.help = ['afk [alasan]'] 10 | handler.tags = ['main'] 11 | handler.command = /^afk$/i 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/alquran.js: -------------------------------------------------------------------------------- 1 | import {alquran} from '@bochilteam/scraper' 2 | let handler = async (m, { args, usedPrefix, command }) => { 3 | if (!(args[0] || args[1])) throw `contoh:\n${usedPrefix + command} 1 2\n\nmaka hasilnya adalah surah Al-Fatihah ayat 2 beserta audionya, & ayatnya 1 saja` 4 | if (isNaN(args[0]) || isNaN(args[1])) throw `contoh:\n${usedPrefix + command} 1 2\n\nmaka hasilnya adalah surah Al-Fatihah ayat 2 beserta audionya, dan ayatnya 1 aja` 5 | let api = await alquran() 6 | let mes = ` 7 | ${api[args[0] - 1].ayahs[args[1] - 1].text.ar} 8 | 9 | ${api[args[0] - 1].ayahs[args[1] - 1].translation.id} 10 | ( Q.S ${api[args[0] - 1 ].asma.id.short} : ${api[args[0] - 1].ayahs[args[1] - 1].number.insurah} ) 11 | `.trim() 12 | m.reply(mes) 13 | conn.sendFile(m.chat, api[args[0] - 1].ayahs[args[1] - 1].audio.url, '', '', m) 14 | } 15 | 16 | handler.command = ['alquran'] 17 | handler.help = ['alquran'] 18 | handler.tags = ['quran', 'limitmenu'] 19 | handler.limit = true 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/anime-fanart.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, command }) => { 4 | let url = 'https://api.lolhuman.xyz/api/random/art?apikey=8e66d0934cf741bfd2182c16' 5 | conn.sendButton(m.chat, 'Nih FanArtnya ', wm, await(await fetch(url)).buffer(), [['Next',`.${command}`]],m) 6 | } 7 | handler.command = /^(fanart)$/i 8 | handler.tags = ['anime', 'premium', 'limitmenu'] 9 | handler.help = ['fanart'] 10 | handler.limit = true 11 | handler.premium = true 12 | handler.register = true 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/anime-husbu.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, command }) => { 4 | let url = 'https://api.lolhuman.xyz/api/random/husbu?apikey=ebb6251cc00f9c63' 5 | conn.sendButton(m.chat, 'Bojone Gepenk🐦', wm, await(await fetch(url)).buffer(), [['Next',`.${command}`]],m) 6 | } 7 | handler.command = /^(husbu)$/i 8 | handler.tags = ['anime', 'limitmenu'] 9 | handler.help = ['husbu'] 10 | handler.limit = true 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/anime-jahy.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, command }) => { 4 | let url = 'https://api.xteam.xyz/randomimage/jahy?APIKEY=ebb6251cc00f9c63' 5 | conn.sendButton(m.chat, 'Wangy wangy (≧ω≦)', wm, await(await fetch(url)).buffer(), [['Next',`.${command}`]],m) 6 | } 7 | handler.command = /^(jahy)$/i 8 | handler.tags = ['anime', 'premium', 'nsfw'] 9 | handler.help = ['jahy'] 10 | handler.premium = true 11 | handler.register = true 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/anime-kanna.js: -------------------------------------------------------------------------------- 1 | /*import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, command }) => { 4 | let res = await fetch('https://melcanz.com/randomkanna?&apikey=melcantik') 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | if (!json.url) throw 'Error!' 8 | conn.sendButton(m.chat, 'Kanna-Chan', author, json.url,[['Next',`.${command}`]],m) 9 | } 10 | handler.command = /^(kanna)$/i 11 | handler.tags = ['anime', 'limitmenu'] 12 | handler.help = ['kanna'] 13 | handler.limit = true 14 | export default handler 15 | */ -------------------------------------------------------------------------------- /plugins/anime-kusonime.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async function (m, { text, isPrems, isOwner }) { 3 | let user = global.db.data.users[m.sender] 4 | if (!text) throw '_Ingin Cari Apa_' 5 | await m.reply(global.wait) 6 | let res = await fetch('https://ardhixsquerpants.herokuapp.com/api/kuso?q=' + encodeURIComponent(text)) 7 | let json= await res.json() 8 | const raku = `*JUDUL :* "${json.title}"\n\n*info:* ${json.info}\n\n*SINOPSIS :* ${json.sinopsis}\n\n*LINK DOWNLOADS:* ${json.link_dl}` 9 | conn.sendFile(m.chat,json.thumb, 'image.jpg', raku, m) 10 | } 11 | handler.help = ['kusonime '] 12 | handler.tags = ['anime', 'limitmenu'] 13 | handler.command = /^kusonime$/i 14 | handler.group = false 15 | handler.limit = true 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/anime-loli.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let res = await fetch('https://raw.githubusercontent.com/Xmell91/loli/master/loli.json') 5 | if (!res.ok) throw await `${res.status} ${res.statusText}`; 6 | let json = await res.json(); 7 | let url = json[Math.floor(Math.random() * json.length)] 8 | await conn.sendButtonImg(m.chat, await (await fetch(url)).buffer(), 'Pedo Pedo', 'Next', '.loli', m) 9 | } 10 | handler.command = /^(loli)$/i 11 | handler.tags = ['anime'] 12 | handler.help = ['loli', 'limitmenu'] 13 | handler.limit = true 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/anime-lolice.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedprefix }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | conn.sendButton(m.chat, 'liuliuliuliuliu kami dengar disini ada lolicon', author, global.API('https://some-random-api.ml', '/canvas/lolice', { 4 | avatar: await conn.profilePictureUrl(who).catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), [['lolice', `${usedprefix}lolice`]], m) 6 | } 7 | 8 | handler.help = ['lolice'] 9 | handler.tags = ['logo'] 10 | 11 | handler.command = /^(lolice)$/i 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/anime-megumin.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix }) => { 4 | let res = await fetch('https://api.waifu.pics/sfw/megumin') 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | if (!json.url) throw 'Error!' 8 | conn.sendButton(m.chat, 'Istrinya Kartun', author, json.url, [['megumin', `${usedPrefix}megumin`]], m) 9 | } 10 | handler.help = ['megumin'] 11 | handler.tags = ['anime'] 12 | handler.command = /^(megumin)$/i 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/anime-neko.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let res = await fetch(`https://api.waifu.pics/sfw/${command}`) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | conn.sendButton(m.chat, `Nyaww~ 🐾💗 ${command.capitalize()}`, json.url, json.url, [['Next', usedPrefix + command]], m) 8 | } 9 | handler.command = /^(neko)$/i 10 | handler.tags = ['anime'] 11 | handler.help = ['neko'] 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/anime-ppcp.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, command }) => { 3 | /*let res = await fetch(`https://api.lolhuman.xyz/api/random/ppcouple?apikey=${lolkey}`) 4 | if (res.status != 200) throw await res.text() 5 | let json = await res.json() 6 | if (!json.status) throw json 7 | conn.sendButton(m.chat, '𝙶𝚒𝚛𝚕𝚜', wm, json.result.female,[['🔄 Next 🔄', `/${command}`]], m) 8 | conn.sendButton(m.chat, '𝙱𝚘𝚢𝚜', wm, json.result.male, [['🔄 Next 🔄', `/${command}`]], m) */ 9 | let jsn = await fetch(`https://ziy.herokuapp.com/api/gacha/ppcouple?apikey=xZiyy`) 10 | let json = await jsn.json() 11 | conn.sendButton(m.chat, '𝙶𝚒𝚛𝚕𝚜', wm, json.result.female,[['🔄 Next 🔄', `/${command}`]], m) 12 | conn.sendButton(m.chat, '𝙱𝚘𝚢𝚜', wm, json.result.male, [['🔄 Next 🔄', `/${command}`]], m) 13 | } 14 | handler.help = ['ppcouple'] 15 | handler.tags = ['internet'] 16 | handler.command = /^(ppcp|ppcouple)$/i 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/anime-waifu.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, usedPrefix }) => { 4 | let res = await fetch('https://api.waifu.pics/sfw/waifu') 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | if (!json.url) throw 'Error!' 8 | conn.sendButton(m.chat, 'Istrinya Kartun', author, json.url, [['waifu', `${usedPrefix}waifu`]], m) 9 | } 10 | handler.help = ['waifu'] 11 | handler.tags = ['anime', 'limitmenu'] 12 | handler.limit = true 13 | handler.command = /^(waifu)$/i 14 | //MADE IN ERPAN 1140 BERKOLABORASI DENGAN BTS 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/anonymous_chat_.js.js: -------------------------------------------------------------------------------- 1 | export async function before(m, { match }) { 2 | // if (match) return !1 3 | if (!m.chat.endsWith('@s.whatsapp.net')) 4 | return !0 5 | this.anonymous = this.anonymous ? this.anonymous : {} 6 | let room = Object.values(this.anonymous).find(room => [room.a, room.b].includes(m.sender) && room.state === 'CHATTING') 7 | if (room) { 8 | if (/^.*(next|leave|start)/.test(m.text)) 9 | return 10 | let other = [room.a, room.b].find(user => user !== m.sender) 11 | await m.copyNForward(other, true) 12 | } 13 | return !0 14 | } -------------------------------------------------------------------------------- /plugins/antivirtex.js: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------- /plugins/antivirtext.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = function (m, { user, text }) { 4 | 5 | if (m.isBaileys && m.fromMe) return 6 | let chat = global.db.data.chats[m.chat] 7 | let name = this.getName(m.sender) 8 | 9 | if (chat.antivirtex && text > 2000) { 10 | this.reply(m.chat ` 11 | *「 ANTI VIRTEX 」* 12 | 13 | Terdeteksi *${name}* telah mengirim virtex! 14 | 15 | Maaf Kamu akan dikick dari grup ini! 16 | `.trim(), m) 17 | 18 | this.groupRemove(m.chat, [m.sender]) 19 | } else return false 20 | } 21 | handler.group = true 22 | handler.register = true 23 | 24 | export default handler -------------------------------------------------------------------------------- /plugins/audio-tomp3.js: -------------------------------------------------------------------------------- 1 | import { toAudio } from '../lib/converter.js' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let q = m.quoted ? m.quoted : m 5 | let mime = (m.quoted ? m.quoted : m.msg).mimetype || '' 6 | if (!/video|audio/.test(mime)) throw `reply video/voice note you want to convert to audio/mp3 with caption *${usedPrefix + command}*` 7 | let media = await q.download?.() 8 | if (!media) throw 'Can\'t download media' 9 | let audio = await toAudio(media, 'mp4') 10 | if (!audio.data) throw 'Can\'t convert media to audio' 11 | conn.sendFile(m.chat, audio.data, 'audio.mp3', '', m, null, { mimetype: 'audio/mp4' }) 12 | } 13 | handler.help = ['tomp3'].map(v => v + ' ') 14 | handler.tags = ['audio'] 15 | 16 | handler.command = /^to(mp3|a(udio)?)$/i 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/audio-toptt.js: -------------------------------------------------------------------------------- 1 | import { toPTT } from '../lib/converter.js' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let q = m.quoted ? m.quoted : m 5 | let mime = (m.quoted ? m.quoted : m.msg).mimetype || '' 6 | if (!/video|audio/.test(mime)) throw `reply video/audio you want to convert to voice note/vn with caption *${usedPrefix + command}*` 7 | let media = await q.download?.() 8 | if (!media) throw 'Can\'t download media' 9 | let audio = await toPTT(media, 'mp4') 10 | if (!audio.data) throw 'Can\'t convert media to audio' 11 | conn.sendFile(m.chat, audio.data, 'audio.mp3', '', m, true, { mimetype: 'audio/mp4' }) 12 | } 13 | handler.help = ['tovn (reply)'] 14 | handler.tags = ['audio'] 15 | 16 | handler.command = /^to(vn|(ptt)?)$/i 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/bank-cek.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let user = global.db.data.users[m.sender] 3 | const caption = ` 4 | ▧「 *B A N K U S E R* 」 5 | │ 📛 *Name:* ${user.registered ? user.name : conn.getName(m.sender)} 6 | │ 💳 *Atm:* ${user.atm > 0 ? 'Level ' + user.atm : '✖️'} 7 | │ 🏛️ *Bank:* ${user.bank} 💲 / ${user.fullatm} 💲 8 | │ 💹 *Money:* ${user.money} 💲 9 | │ 🤖 *Robo:* ${user.robo > 0 ? 'Level ' + user.robo : '✖️'} 10 | │ 🌟 *Status:* ${user.premiumTime > 0 ? 'Premium' : 'Free'} 11 | │ 📑 *Registered:* ${user.registered ? 'Yes':'No'} 12 | └──··· 13 | `.trim() 14 | conn.sendButton(m.chat, caption, global.wm, 'https://telegra.ph/file/0451b07945f7f9633b59b.jpg', [`Inventory`, '.inv'],m) 15 | } 16 | handler.help = ['bank'] 17 | handler.tags = ['rpg'] 18 | handler.command = /^(bank)$/i 19 | 20 | handler.register = false 21 | export default handler -------------------------------------------------------------------------------- /plugins/bank-nabung.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 1 2 | let handler = async (m, { conn, command, args }) => { 3 | let user = global.db.data.users[m.sender] 4 | let count = command.replace(/^nabung/i, '') 5 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].money / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 6 | count = Math.max(1, count) 7 | if (user.atm == 0) return m.reply('kamu belum mempuyai atm !') 8 | if (user.bank > user.fullatm) return m.reply('Uang dibankmu sudah penuh!') 9 | if (count > user.fullatm - user.bank) return m.reply('Uangnya ga muat dibank') 10 | if (global.db.data.users[m.sender].money >= xpperlimit * count) { 11 | global.db.data.users[m.sender].money -= xpperlimit * count 12 | global.db.data.users[m.sender].bank += count 13 | conn.reply(m.chat, `Sukses menabung sebesar ${count} Money 💹`, m) 14 | } else conn.reply(m.chat, `[❗] Uang anda tidak mencukupi untuk menabung ${count} money 💹`, m) 15 | } 16 | handler.help = ['nabung '] 17 | handler.tags = ['rpg'] 18 | handler.command = /^nabung([0-9]+)|nabung|nabungall$/i 19 | 20 | export default handler -------------------------------------------------------------------------------- /plugins/bank-tarik.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 1 2 | let handler = async (m, { conn, command, args }) => { 3 | let user = global.db.data.users[m.sender] 4 | let count = command.replace(/^tarik/i, '') 5 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].bank / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 6 | count = Math.max(1, count) 7 | if (user.atm == 0) return m.reply('kamu belum mempuyai atm !') 8 | if (global.db.data.users[m.sender].bank >= xpperlimit * count) { 9 | global.db.data.users[m.sender].bank -= xpperlimit * count 10 | global.db.data.users[m.sender].money += count 11 | conn.reply(m.chat, `Sukses menarik sebesar ${count} Money 💹`, m) 12 | } else conn.reply(m.chat, `[❗] Uang dibank anda tidak mencukupi untuk ditarik sebesar ${count} money 💹`, m) 13 | } 14 | handler.help = ['tarik '] 15 | handler.tags = ['rpg'] 16 | handler.command = /^tarik([0-9]+)|tarik|tarikall$/i 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/bot.js: -------------------------------------------------------------------------------- 1 | import fs from'fs' 2 | let { MessageType } = (await import('@adiwajshing/baileys')).default 3 | let handler = async (m, { conn }) => { 4 | let whmods = fs.readFileSync('./mp3/Bot.opus') 5 | conn.sendFile(m.chat, whmods, '', '', m, true) 6 | } 7 | 8 | handler.customPrefix = /^(bot|robot|p|tes|tes123|tes1|tes12|woy)$/i 9 | handler.command = new RegExp 10 | 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/broadcast.js: -------------------------------------------------------------------------------- 1 | import { randomBytes } from 'crypto' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let chats = Object.entries(conn.chats).filter(([_, chat]) => chat.isChats).map(v => v[0]) 5 | let cc = conn.serializeM(text ? m : m.quoted ? await m.getQuotedObj() : false || m) 6 | let teks = text ? text : cc.text 7 | conn.reply(m.chat, `_Mengirim pesan broadcast ke ${chats.length} chat_`, m) 8 | for (let id of chats) await conn.copyNForward(id, conn.cMod(m.chat, cc, /bc|broadcast/i.test(teks) ? `${htki} *BROADCAST* ${htka}\n` + teks : `${htki} *BROADCAST* ${htka}\n` + teks + '\n' + readMore + '\n\n' + botdate), true).catch(_ => _) 9 | m.reply('Selesai Broadcast All Chat :)') 10 | } 11 | handler.help = ['broadcast', 'bc'].map(v => v + ' ') 12 | handler.tags = ['owner'] 13 | handler.command = /^(broadcast|bc)$/i 14 | 15 | handler.owner = true 16 | 17 | export default handler 18 | 19 | const more = String.fromCharCode(8206) 20 | const readMore = more.repeat(4001) 21 | 22 | const randomID = length => randomBytes(Math.ceil(length * .5)).toString('hex').slice(0, length) -------------------------------------------------------------------------------- /plugins/broadcastchats.js: -------------------------------------------------------------------------------- 1 | import { randomBytes } from 'crypto' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let chats = Object.entries(conn.chats).filter(([jid, chat]) => !jid.endsWith('@g.us') && chat.isChats).map(v => v[0]) 5 | let cc = conn.serializeM(text ? m : m.quoted ? await m.getQuotedObj() : false || m) 6 | let teks = text ? text : cc.text 7 | conn.reply(m.chat, `_Mengirim pesan broadcast ke ${chats.length} chat_`, m) 8 | for (let id of chats) await conn.copyNForward(id, conn.cMod(m.chat, cc, /bc|broadcast/i.test(teks) ? teks : teks + '\n' + readMore + '「 ' + author + ' All Chat Broadcast 」\n' + randomID(32)), true).catch(_ => _) 9 | m.reply('Selesai Broadcast All Chat :)') 10 | } 11 | handler.help = ['broadcastchats', 'bcchats'].map(v => v + ' ') 12 | handler.tags = ['owner'] 13 | handler.command = /^(broadcastchats?|bcc(hats?)?)$/i 14 | 15 | handler.owner = true 16 | 17 | export default handler 18 | 19 | const more = String.fromCharCode(8206) 20 | const readMore = more.repeat(4001) 21 | 22 | const randomID = length => randomBytes(Math.ceil(length * .5)).toString('hex').slice(0, length) -------------------------------------------------------------------------------- /plugins/cmd-del.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, text, command }) => { 2 | let hash = text 3 | if (m.quoted && m.quoted.fileSha256) hash = m.quoted.fileSha256.toString('hex') 4 | if (!hash) throw `Tidak ada hash` 5 | let sticker = global.db.data.sticker 6 | if (sticker[hash] && sticker[hash].locked) throw 'Kamu tidak memiliki izin untuk menghapus perintah stiker ini' 7 | delete sticker[hash] 8 | m.reply(`Berhasil!`) 9 | } 10 | 11 | 12 | handler.help = ['cmd'].map(v => 'del' + v + ' ') 13 | handler.tags = ['database', 'premium'] 14 | handler.command = ['delcmd'] 15 | handler.premium = true 16 | handler.register = true 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/cmd-list.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.reply(m.chat, ` 3 | *DAFTAR HASH* 4 | \`\`\` 5 | ${Object.entries(global.db.data.sticker).map(([key, value], index) => `${index + 1}. ${value.locked ? `(Terkunci) ${key}` : key} : ${value.text}`).join('\n')} 6 | \`\`\` 7 | `.trim(), null, { 8 | mentions: Object.values(global.db.data.sticker).map(x => x.mentionedJid).reduce((a, b) => [...a, ...b], []) 9 | }) 10 | } 11 | 12 | 13 | handler.help = ['listcmd'] 14 | handler.tags = ['database'] 15 | handler.command = ['listcmd'] 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/cmd-lock.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | if (!m.quoted) throw 'Reply Pesan!' 3 | if (!m.quoted.fileSha256) throw 'SHA256 Hash Missing' 4 | let sticker = db.data.sticker 5 | let hash = m.quoted.fileSha256.toString('hex') 6 | if (!(hash in sticker)) throw 'Hash not found in database' 7 | sticker[hash].locked = !/^un/i.test(command) 8 | m.reply('Done!') 9 | } 10 | handler.help = ['un', ''].map(v => v + 'lockcmd') 11 | handler.tags = ['database', 'premium'] 12 | handler.command = /^(un)?lockcmd$/i 13 | handler.premium = true 14 | handler.register = true 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/cmd-set.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | db.data.sticker = db.data.sticker || {} 3 | if (!m.quoted) throw 'Balas stiker dengan perintah *${usedPrefix + command}*' 4 | if (!m.quoted.fileSha256) throw 'SHA256 Hash Missing' 5 | if (!text) throw `Penggunaan:\n${usedPrefix + command} \n\nContoh:\n${usedPrefix + command} tes` 6 | let sticker = db.data.sticker 7 | let hash = m.quoted.fileSha256.toString('base64') 8 | if (sticker[hash] && sticker[hash].locked) throw 'Kamu tidak memiliki izin untuk mengubah perintah stiker ini' 9 | sticker[hash] = { 10 | text, 11 | mentionedJid: m.mentionedJid, 12 | creator: m.sender, 13 | at: + new Date, 14 | locked: false, 15 | } 16 | m.reply(`Berhasil!`) 17 | } 18 | 19 | 20 | handler.help = ['cmd'].map(v => 'set' + v + ' ') 21 | handler.tags = ['database', 'premium'] 22 | handler.command = ['setcmd'] 23 | handler.premium = true 24 | handler.register = true 25 | 26 | export default handler 27 | -------------------------------------------------------------------------------- /plugins/cnnnews.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import bo from 'dhn-api' 3 | let handler = async(m, { conn }) => { 4 | var a = await bo.CNNNews() 5 | var b = JSON.parse(JSON.stringify(a)) 6 | var c = await conn.rand(b) 7 | //var c = b[Math.floor(Math.random() * b.length)] 8 | var { berita, berita_url, berita_thumb } = c 9 | var sell = `📺 *CNN News* 10 | 📢 *Berita:* ${berita} 11 | 🛰 *Source Url:* ${berita_url}` 12 | conn.sendButton(m.chat, sell, wm, berita_thumb, [['CNN News', '.cnnnews']], m, {jpegThumbnail: await(await fetch(berita_thumb)).buffer()}) 13 | } 14 | handler.help = ['cnnnews'] 15 | handler.tags = ['berita', 'limitmenu'] 16 | handler.command = /^cnn(news)?$/i 17 | handler.limit = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/delete-pesan-orang-lain.js: -------------------------------------------------------------------------------- 1 | let handler = function (m) { 2 | if (!m.quoted) throw false 3 | let { chat, fromMe } = m.quoted 4 | if (!fromMe) throw true 5 | conn.sendMessage(chat, { delete: m.quoted.vM.key }) 6 | } 7 | handler.help = ['whgans', 'wahidgans'] 8 | handler.tags = ['owner'] 9 | handler.owner = true 10 | 11 | handler.command = /^(whgans|wahidgans)?$/i 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/donasi.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix }) => { 2 | conn.relayMessage(m.chat, { 3 | requestPaymentMessage: { 4 | currencyCodeIso4217: 'INR', 5 | amount1000: 8888888889, 6 | requestFrom: m.sender, 7 | noteMessage: { 8 | extendedTextMessage: { 9 | text: `${global.wm} 10 | 11 | ┌─「 Donasi • Pulsa 」 12 | │ • *Three:* [${global.ppulsa}] 13 | ❏──── 14 | 15 | ┌─「 Donasi • Non Pulsa 」 16 | │ • *Dana:* [${global.pdana}] 17 | │ • *Gopay:* [${global.pgopay}] 18 | │ • *Ovo:* [${global.povo}] 19 | │ • *Link Aja:* [${global.plinkaja}] 20 | ❏────`, 21 | contextInfo: { 22 | externalAdReply: { 23 | showAdAttribution: false 24 | }}}}}}, {}) 25 | } 26 | 27 | handler.help = ['donasi'] 28 | handler.tags = ['info'] 29 | handler.command = /^dona(te|si)$/i 30 | 31 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-aio.js: -------------------------------------------------------------------------------- 1 | import { 2 | aiovideodl 3 | } from '@bochilteam/scraper' 4 | 5 | let handler = async (m, { conn, args, usedPrefix, command }) => { 6 | 7 | try { 8 | if (!args[0]) throw `Use example ${usedPrefix}${command} https://vt.tiktok.com/ZSdDyUHcR/https://www.tiktok.com/@kata__kasar/video/7088823247373946138'` 9 | const { title, medias } = await aiovideodl(args[0]) 10 | for (const { url, quality, formattedSize} of medias) await conn.sendFile(m.chat, url, 'save.mp4', `*AIOVIDEO DOWNLOADER*\n\n${title ? `*Title:* ${title}` : "NotFound"}\n*💽Format:* ${quality ? `${quality}` : "Unknown"}\n*📨Size:* ${formattedSize ? `${formattedSize}` : "countless" }\n`, m) 11 | } catch (e) { 12 | m.reply("Eror") 13 | } 14 | } 15 | handler.help = ['aiovideo2'].map(v => v + ' ') 16 | handler.tags = ['downloader'] 17 | 18 | handler.command = /^(aio(video2)?(dl2)?)$/i 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/downloader-facebook2.js: -------------------------------------------------------------------------------- 1 | /*import { facebookdl, facebookdlv2 } from '@bochilteam/scraper' 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | if (!args[0]) throw `Use example ${usedPrefix + command} https://www.facebook.com/watch?v=636541475139*` 4 | const { result } = await facebookdl(args[0]).catch(async _ => await facebookdlv2(args[0])) 5 | for (const { url, isVideo } of result.reverse()) conn.sendFile(m.chat, url, `facebook.${!isVideo ? 'bin' : 'mp4'}`, `✨ *ᴜʀʟ:* ${url}`, m) 6 | let info = `💝 *ʟᴏᴀᴅɪɴɢ....., 7 | WH-MODS-BOT-V1-ᴍᴜʟᴛɪᴅᴇᴠɪᴄᴇ* 8 | `.trim() 9 | 10 | await conn.sendHydrated(m.chat, info, wm, null, sig, 'ɪɴsᴛᴀɢʀᴀᴍ✨', null, null, [ 11 | ['🥀️⃟⃪͡ꦽᴍᴇɴᴜ🔖️⃟⃪͡ꦽ', '/menu'], 12 | ['☙⃝✈️ᴋᴇᴄᴇᴘᴀᴛᴀɴ ʙᴏᴛ☙⃝🚀️', '/ping'] 13 | ], m,) 14 | } 15 | handler.help = ['facebook2'].map(v => v + ' ') 16 | handler.tags = ['downloader'] 17 | handler.command = /^((facebook2|fb2)(downloder2|dl2)?)$/i 18 | handler.exp = 35 19 | export default handler 20 | */ -------------------------------------------------------------------------------- /plugins/downloader-ig.js: -------------------------------------------------------------------------------- 1 | import instagramGetUrl from 'instagram-url-direct' 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | if (!args[0]) throw `Use example ${usedPrefix}${command} https://www.instagram.com/p/ByxKbUSnubS/?utm_source=ig_web_copy_link` 4 | const results = (await instagramGetUrl(args[0])).url_list[0] 5 | 6 | conn.sendFile(m.chat, results, 'instagram.mp4', `*INSTAGRAM DOWNLOADER*`, m) 7 | } 8 | handler.help = ['ig'].map(v => v + ' ') 9 | handler.tags = ['downloader'] 10 | 11 | handler.command = /^(ig(dl)?)$/i 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/downloader-igstalk.js: -------------------------------------------------------------------------------- 1 | import { instagramStalk } from '@bochilteam/scraper' 2 | 3 | let handler= async (m, { args, usedPrefix, command }) => { 4 | if (!args[0]) throw `Example use ${usedPrefix}${command} ` 5 | const { 6 | username, 7 | name, 8 | description, 9 | followersH, 10 | followingH, 11 | postsH, 12 | } = await instagramStalk(args[0]) 13 | m.reply(` 14 | ${name} *(${username})* 15 | https://instagram.com/${username.replace(/^@/, '')} 16 | *${followersH}* Followers 17 | *${followingH}* Following 18 | *${postsH}* Posts 19 | *Bio:* ${description} 20 | `.trim()) 21 | } 22 | 23 | handler.help = ['igstalk'].map(v => v + ' ') 24 | handler.tags = ['downloader'] 25 | 26 | handler.command = /^(igstalk)$/i 27 | 28 | export default handler -------------------------------------------------------------------------------- /plugins/downloader-mediafire.js: -------------------------------------------------------------------------------- 1 | import { mediafiredl } from '@bochilteam/scraper' 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | if (!args[0]) throw `Use example ${usedPrefix}${command} https://www.mediafire.com/file/941xczxhn27qbby/GBWA_V12.25FF-By.SamMods-.apk/file` 4 | let res = await mediafiredl(args[0]) 5 | let { url, url2, filename, ext, aploud, filesize, filesizeH } = res 6 | let caption = ` 7 | *💌 Name:* ${filename} 8 | *📊 Size:* ${filesizeH} 9 | *🗂️ Extension:* ${ext} 10 | *📨 Uploaded:* ${aploud} 11 | `.trim() 12 | m.reply(caption) 13 | await conn.sendFile(m.chat, url, filename, '', m, null, { mimetype: ext, asDocument: true }) 14 | } 15 | handler.help = ['mediafire'].map(v => v + ' ') 16 | handler.tags = ['downloader', 'limitmenu'] 17 | handler.command = /^(mediafire|mf)$/i 18 | 19 | handler.limit = true 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/downloader-zippyshare.js: -------------------------------------------------------------------------------- 1 | import { extract } from 'zs-extract' 2 | import { lookup } from 'mime-types' 3 | 4 | let handler = async (m, { conn, args }) => { 5 | if (!args[0]) throw 'Input URL' 6 | if (!args[0].includes('zippyshare.com/v')) throw 'Invalid URL' 7 | await m.reply('_In progress, please wait..._') 8 | for (let i = 0; i < args.length; i++) { 9 | if (!args[i].includes('zippyshare.com/v')) continue 10 | let res = await extract(args[i]) 11 | let mimetype = await lookup(res.download) 12 | conn.sendMessage(m.chat, { document: { url: res.download }, fileName: res.filename, mimetype }, { quoted: m }) 13 | } 14 | } 15 | handler.help = ['zippyshare'] 16 | handler.tags = ['downloader', 'limitmenu'] 17 | handler.alias = ['zs', 'zippy', 'zippydl', 'zippyshare'] 18 | handler.command = /^z(s|ippy(dl|share)?)$/i 19 | handler.limit = true 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/exp-ceksn.js: -------------------------------------------------------------------------------- 1 | import { createHash } from 'crypto' 2 | 3 | let Reg = /\|?(.*)([.|] *?)([0-9]*)$/i 4 | let handler = async function (m, { conn, text, usedPrefix }) { 5 | let sn = createHash('md5').update(m.sender).digest('hex') 6 | 7 | m.reply(`*📮 SN:* ${sn}`) 8 | } 9 | 10 | handler.help = ['ceksn'] 11 | handler.tags = ['xp'] 12 | handler.command = /^(ceksn)$/i 13 | handler.register = true 14 | export default handler -------------------------------------------------------------------------------- /plugins/exp-tomoney.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 2 2 | let handler = async (m, { conn, command, args }) => { 3 | let user = global.db.data.users[m.sender] 4 | let count = command.replace(/^tomoney/i, '') 5 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].exp / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 6 | count = Math.max(1, count) 7 | if (global.db.data.users[m.sender].exp >= xpperlimit * count) { 8 | global.db.data.users[m.sender].exp -= xpperlimit * count 9 | global.db.data.users[m.sender].money += count 10 | conn.reply(m.chat, `Sukses menukarkan exp sebesar ${count} Exp ✨`, m) 11 | } else conn.reply(m.chat, `[❗] Exp anda tidak mencukupi untuk ditukar sebesar ${count} ✨`, m) 12 | } 13 | handler.help = ['tomoney '] 14 | handler.tags = ['xp'] 15 | handler.command = /^tomoney([0-9]+)|tomoney|tomoneyall$/i 16 | 17 | export default handler -------------------------------------------------------------------------------- /plugins/exp-unreg.js: -------------------------------------------------------------------------------- 1 | import { createHash } from 'crypto' 2 | let handler = async function (m, { args }) { 3 | if (!args[0]) throw 'Serial Number kosong' 4 | let user = global.db.data.users[m.sender] 5 | let sn = createHash('md5').update(m.sender).digest('hex') 6 | if (args[0] !== sn) throw 'Serial Number salah' 7 | user.registered = false 8 | m.reply('```Succes Unreg !```') 9 | } 10 | handler.help = ['', 'ister'].map(v => 'unreg' + v + ' ') 11 | handler.tags = ['xp'] 12 | 13 | handler.command = /^unreg(ister)?$/i 14 | handler.register = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/fun-alay.js: -------------------------------------------------------------------------------- 1 | function handler(m, { text }) { 2 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text 3 | m.reply(teks.replace(/[a-z]/gi, v => Math.random() > .5 ? v[['toLowerCase', 'toUpperCase'][Math.floor(Math.random() * 2)]]() : v).replace(/[abegiors]/gi, v => { 4 | if (Math.random() > .5) return v 5 | switch (v.toLowerCase()) { 6 | case 'a': return '4' 7 | case 'b': return Math.random() > .5 ? '8' : '13' 8 | case 'e': return '3' 9 | case 'g': return Math.random() > .5 ? '6' : '9' 10 | case 'i': return '1' 11 | case 'o': return '0' 12 | case 'r': return '12' 13 | case 's': return '5' 14 | } 15 | })) 16 | } 17 | handler.help = ['alay'] 18 | handler.tags = ['fun'] 19 | handler.command = ['alay'] 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/fun-apakah.js: -------------------------------------------------------------------------------- 1 | let handler = async (m) => m.reply(` 2 | *Pertanyaan:* ${m.text} 3 | *Jawaban:* ${['Ya', 'Mungkin iya', 'Mungkin', 'Mungkin tidak', 'Tidak', 'Tidak mungkin'].getRandom()} 4 | `.trim(), null, m.mentionedJid ? { 5 | mentions: m.mentionedJid 6 | } : {}) 7 | 8 | handler.help = ['apakah ?'] 9 | handler.tags = ['kerang', 'fun'] 10 | handler.customPrefix = /(\?$)/ 11 | handler.command = /^apakah$/i 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/fun-apakah2.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, text }) => m.reply(` 2 | *Pertanyaan:* ${command} ${text} 3 | *Jawaban:* ${['Ya', 'Mungkin iya', 'Mungkin', 'Mungkin tidak', 'Tidak', 'Tidak mungkin'].getRandom()} 4 | `.trim(), null, m.mentionedJid ? { 5 | mentions: m.mentionedJid 6 | } : {}) 7 | 8 | handler.help = ['apakah ?'] 9 | handler.tags = ['kerang', 'fun'] 10 | handler.command = /^apakah$/i 11 | 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/fun-bokep.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.sendFile(m.chat, 'https://yog-apikey.herokuapp.com/api/bokep?apikey=YogGanz', 'asupan.mp4', 'Nih', m) 3 | } 4 | handler.help = ['bkp'] 5 | handler.tags = ['premium'] 6 | 7 | handler.command = /^(bkp)$/i 8 | handler.premium = true 9 | handler.register = true 10 | handler.limit = false 11 | export default handler -------------------------------------------------------------------------------- /plugins/fun-darkjoke.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let rest = 'https://api.zacros.my.id/randomimg/darkjokes' 3 | conn.sendButtonImg(m.chat, rest, 'Dark? 🤨', wm2, 'NEXT', '.darkjokes', m) 4 | } 5 | handler.help = ['darkjokes'] 6 | handler.tags = ['internet', 'fun'] 7 | handler.command = /^(dragjokes|darkjokes)$/i 8 | 9 | export default handler -------------------------------------------------------------------------------- /plugins/fun-generate_nama.js: -------------------------------------------------------------------------------- 1 | function handler(m, { text }) { 2 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text 3 | m.reply(teks.replace(/[a-z]/gi, v => { 4 | return { 5 | 'a': 'ka', 6 | 'b': 'tu', 7 | 'c': 'mi', 8 | 'd': 'te', 9 | 'e': 'ku', 10 | 'f': 'lu', 11 | 'g': 'ji', 12 | 'h': 'ri', 13 | 'i': 'ki', 14 | 'j': 'zu', 15 | 'k': 'me', 16 | 'l': 'ta', 17 | 'm': 'rin', 18 | 'n': 'to', 19 | 'o': 'mo', 20 | 'p': 'no', 21 | 'q': 'ke', 22 | 'r': 'shi', 23 | 's': 'ari', 24 | 't': 'ci', 25 | 'u': 'do', 26 | 'v': 'ru', 27 | 'w': 'mei', 28 | 'x': 'na', 29 | 'y': 'fu', 30 | 'z': 'zi' 31 | }[v.toLowerCase()] || v 32 | })) 33 | } 34 | handler.help = ['namaninja '] 35 | handler.tags = ['fun'] 36 | handler.command = /^(namaninja|namae)$/i 37 | 38 | export default handler -------------------------------------------------------------------------------- /plugins/fun-generate_purba.js: -------------------------------------------------------------------------------- 1 | function handler(m, { text }) { 2 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text 3 | m.reply(teks.replace(/[aiueo]/gi, '$&ve')) 4 | } 5 | handler.help = ['purba '] 6 | handler.tags = ['fun'] 7 | handler.command = /^(purba)$/i 8 | 9 | 10 | export default handler -------------------------------------------------------------------------------- /plugins/fun-how.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, command, text, usedPrefix }) => { 2 | if (!text) throw `Use example ${usedPrefix}${command} i'm` 3 | conn.reply(m.chat, ` 4 | ${command} *${text}* 5 | *${text}* is *${(101).getRandom()}*% ${command.replace('how', '').toUpperCase()} 6 | `.trim(), m, m.mentionedJid ? { 7 | mentions: m.mentionedJid 8 | } : {}) 9 | } 10 | handler.help = ['gay', 'pintar', 'cantik', 'ganteng', 'gabut', 'gila', 'lesbi', 'stress', 'bucin', 'jones', 'sadboy'].map(v => 'how' + v + ' siapa?') 11 | handler.tags = ['kerang', 'fun'] 12 | handler.command = /^how(gay|pintar|cantik|ganteng|gabut|gila|lesbi|stress?|bucin|jones|sadboy)/i 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/fun-jadian.js: -------------------------------------------------------------------------------- 1 | let toM = a => '@' + a.split('@')[0] 2 | function handler(m, { groupMetadata }) { 3 | let ps = groupMetadata.participants.map(v => v.id) 4 | let a = ps.getRandom() 5 | let b 6 | do b = ps.getRandom() 7 | while (b === a) 8 | m.reply(`${toM(a)} ❤️ ${toM(b)}`, null, { 9 | mentions: [a, b] 10 | }) 11 | } 12 | handler.help = ['jadian'] 13 | handler.tags = ['main', 'fun'] 14 | handler.command = ['jadian'] 15 | 16 | handler.group = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/fun-kapankah.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => conn.reply(m.chat, ` 2 | *Pertanyaan:* ${m.text} 3 | *Jawaban:* ${(10).getRandom()} ${['detik', 'menit', 'jam', 'hari', 'minggu', 'bulan', 'tahun', 'dekade', 'abad'].getRandom()} lagi ... 4 | `.trim(), m, m.mentionedJid ? { 5 | mentions: m.mentionedJid 6 | } : {}) 7 | 8 | handler.help = ['', 'kah'].map(v => 'kapan' + v + ' ?') 9 | handler.tags = ['kerang', 'fun'] 10 | handler.customPrefix = /(\?$)/ 11 | handler.command = /^kapan(kah)?$/i 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/fun-kapankah2.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, command, text }) => conn.reply(m.chat, ` 2 | *Pertanyaan:* ${command} ${text} 3 | *Jawaban:* ${(10).getRandom()} ${['detik', 'menit', 'jam', 'hari', 'minggu', 'bulan', 'tahun', 'dekade', 'abad'].getRandom()} lagi ... 4 | `.trim(), m, m.mentionedJid ? { 5 | mentions: m.mentionedJid 6 | } : {}) 7 | 8 | handler.help = ['', 'kah'].map(v => 'kapan' + v + ' ?') 9 | handler.tags = ['kerang', 'fun'] 10 | handler.command = /^kapan(kah)?$/i 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/fun-kerangajaib.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, command, usedPrefix }) => { 2 | if (!text) throw `Use example ${usedPrefix}${command} i'm alien?` 3 | m.reply(`"${[ 4 | 'Mungkin suatu hari', 5 | 'Tidak juga', 6 | 'Tidak keduanya', 7 | 'Kurasa tidak', 8 | 'Ya', 9 | 'Coba tanya lagi', 10 | 'Tidak ada' 11 | ].getRandom()}."`) 12 | } 13 | handler.help = ['kerang', 'kerangajaib'].map(v => v + ' ') 14 | handler.tags = ['kerang', 'fun'] 15 | 16 | handler.command = /^(kulit)?kerang(ajaib)?$/i 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/fun-nomorhoki.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | let handler = async(m, { conn, text }) => { 3 | 4 | if (!text) return conn.reply(m.chat, 'Silahkan masukan nomor hpmu yang akan diartikan', m) 5 | 6 | axios.get(`https://kocakz.herokuapp.com/api/primbon/nomorhoki?nomor=${text}`).then ((res) => { 7 | let hasil = `Nomor HP : ${res.data.result.hoki}\nPositif : ${res.data.result.positif}\nNegatif : ${res.data.result.positif}` 8 | 9 | conn.reply(m.chat, hasil, m) 10 | }) 11 | } 12 | handler.help = ['nomorhoki'].map(v => v + ' ') 13 | handler.tags = ['fun', 'limitmenu'] 14 | handler.command = /^(nomorhoki)$/i 15 | handler.fail = null 16 | handler.exp = 0 17 | handler.limit = true 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/fun-pick.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, args, participants, command }) => { 2 | if (args[0] < 0, args.length < 2) throw 'Example: #pick 15 gay' 3 | let users = participants.map(u => u.jid) 4 | m.reply(`*🎉 Kamu Ter${command} sebagai ${text.replace(args, '').trimStart()}* 5 | 6 | ${new Array(Math.min(users.length, args[0])).fill().map(() => { 7 | let index = Math.floor(Math.random() * users.length) 8 | return `@${users.splice(index, 1)}` 9 | }).join`\n`.replace(/@s.whatsapp.net/g,'')}`) 10 | } 11 | handler.help = ['pick '] 12 | handler.tags = ['fun'] 13 | handler.command = /^pick/i 14 | 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/fun-simi.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, {text, args}) => { 3 | if (!args[0]) throw `Use example .simi halo` 4 | let api = await fetch(`https://simsimi.info/api/?text=${text}&lc=id`) 5 | let res = await api.json() 6 | m.reply(res.success) 7 | } 8 | handler.command = ['simi'] 9 | handler.tags = ['fun'] 10 | handler.help = ['simi'] 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/game-asahotak_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.asahotak = conn.asahotak ? conn.asahotak : {} 3 | let id = m.chat 4 | if (!(id in conn.asahotak)) throw false 5 | let json = conn.asahotak[id][1] 6 | let clue = json.jawaban.replace(/[AIUEOaiueo]/g, '_') 7 | conn.reply(m.chat, '```' + clue + '```\nBalas soalnya, bukan pesan ini', conn.asahotak[id][0]) 8 | } 9 | handler.command = /^ao$/i 10 | handler.limit = false 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/game-caklontong_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.caklontong = conn.caklontong ? conn.caklontong : {} 3 | let id = m.chat 4 | if (!(id in conn.caklontong)) throw false 5 | let json = conn.caklontong[id][1] 6 | let ans = json.jawaban 7 | let clue = ans.replace(/[AIUEO]/gi, '_') 8 | m.reply('```' + clue + '```') 9 | } 10 | handler.command = /^calo$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-family100.js: -------------------------------------------------------------------------------- 1 | import { family100 } from '@bochilteam/scraper' 2 | const winScore = 4999 3 | async function handler(m) { 4 | this.game = this.game ? this.game : {} 5 | let id = 'family100_' + m.chat 6 | if (id in this.game) { 7 | this.reply(m.chat, 'Masih ada kuis yang belum terjawab di chat ini', this.game[id].msg) 8 | throw false 9 | } 10 | const json = await family100() 11 | let caption = ` 12 | *Soal:* ${json.soal} 13 | Terdapat *${json.jawaban.length}* jawaban${json.jawaban.find(v => v.includes(' ')) ? ` 14 | (beberapa jawaban terdapat spasi) 15 | `: ''} 16 | +${winScore} XP tiap jawaban benar 17 | `.trim() 18 | this.game[id] = { 19 | id, 20 | msg: await this.sendButton(m.chat, caption, author, null, [['Nyerah', 'nyerah']], m), 21 | ...json, 22 | terjawab: Array.from(json.jawaban, () => false), 23 | winScore, 24 | } 25 | } 26 | handler.help = ['family100'] 27 | handler.tags = ['game'] 28 | handler.command = /^family100$/i 29 | 30 | export default handler -------------------------------------------------------------------------------- /plugins/game-gombal-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakgombal = conn.tebakgombal ? conn.tebakgombal : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakgombal)) throw false 5 | let json = conn.tebakgombal[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hgom$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-lengkapikalimat-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.lengkapikalimat = conn.lengkapikalimat ? conn.lengkapikalimat : {} 3 | let id = m.chat 4 | if (!(id in conn.lengkapikalimat)) throw false 5 | let json = conn.lengkapikalimat[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hlen$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-siapakahaku_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.siapakahaku = conn.siapakahaku ? conn.siapakahaku : {} 3 | let id = m.chat 4 | if (!(id in conn.siapakahaku)) throw false 5 | let json = conn.siapakahaku[id][1] 6 | let ans = json.jawaban 7 | let clue = ans.replace(/[bcdfghjklmnpqrstvwxyz]/ig, '_') 8 | m.reply('```' + clue + '```') 9 | } 10 | handler.command = /^who$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-susunkata_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.susunkata = conn.susunkata ? conn.susunkata : {} 3 | let id = m.chat 4 | if (!(id in conn.susunkata)) throw false 5 | let json = conn.susunkata[id][1] 6 | let ans = json.jawaban.trim() 7 | let clue = ans.replace(/[AIUEOaiueo]/g, '_') 8 | conn.reply(m.chat, '```' + clue + '```\nBalas soalnya, bukan pesan ini', conn.susunkata[id][0]) 9 | } 10 | handler.command = /^suka$/i 11 | handler.limit = true 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/game-tebakan-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebaktebakan = conn.tebaktebakan ? conn.tebaktebakan : {} 3 | let id = m.chat 4 | if (!(id in conn.tebaktebakan)) throw false 5 | let json = conn.tebaktebakan[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hteb$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakanjime-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakanjime = conn.tebakanjime ? conn.tebakanjime : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakanjime)) throw false 5 | let json = conn.tebakanjime[id][1] 6 | conn.sendButton(m.chat, '```' + json.name.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hani$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakbendera_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakbendera = conn.tebakbendera ? conn.tebakbendera : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakbendera)) throw false 5 | let json = conn.tebakbendera[id][1] 6 | m.reply('```' + json.name.replace(/[bcdfghjklmnpqrstvwxyz]/g, '_') + '```\nBalas soalnya Bukan Pesan ini_-') 7 | } 8 | handler.command = /^tebe$/i 9 | handler.limit = true 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/game-tebakchara-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakchara = conn.tebakchara ? conn.tebakchara : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakchara)) throw false 5 | let json = conn.tebakchara[id][1] 6 | conn.sendButton(m.chat, '```' + json.name.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hcha$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakgambar_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakgambar = conn.tebakgambar ? conn.tebakgambar : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakgambar)) throw false 5 | let json = conn.tebakgambar[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[bcdfghjklmnpqrstvwxyz]/ig, '_') + '```', author, null, [ 7 | ['nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hint$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakgame-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakgame = conn.tebakgame ? conn.tebakgame : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakgame)) throw false 5 | let json = conn.tebakgame[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hgame$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakjenaka-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakjenaka = conn.tebakjenaka ? conn.tebakjenaka : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakjenaka)) throw false 5 | let json = conn.tebakjenaka[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hjen$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakkabupaten_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakkabupaten = conn.tebakkabupaten ? conn.tebakkabupaten : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakkabupaten)) throw false 5 | let json = conn.tebakkabupaten[id][1] 6 | conn.reply(m.chat, '```' + json.title.replace(/[AIUEOaiueo]/g, '_') + '```\nBalas gambarnya, bukan pesan ini', conn.tebakkabupaten[id][0]) 7 | } 8 | handler.command = /^tebu$/i 9 | 10 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakkalimat-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakkalimat = conn.tebakkalimat ? conn.tebakkalimat : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakkalimat)) throw false 5 | let json = conn.tebakkalimat[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hkal$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakkimia_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakkimia = conn.tebakkimia ? conn.tebakkimia : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakkimia)) throw false 5 | let json = conn.tebakkimia[id][1] 6 | conn.reply(m.chat, '```' + json.bantuan + '```\nBalas soalnya, bukan pesan ini!', conn.tebakkimia[id][0]) 7 | } 8 | handler.command = /^teki$/i 9 | 10 | handler.limit = 1 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebaklagu_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebaklagu = conn.tebaklagu ? conn.tebaklagu : {} 3 | let id = m.chat 4 | if (!(id in conn.tebaklagu)) throw false 5 | let json = conn.tebaklagu[id][1] 6 | let nya = json.judul 7 | let nyanya = nya.replace(/[bcdfghjklmnpqrstvwxyz]/g, '_') 8 | m.reply('```' + nyanya + '```') 9 | } 10 | handler.command = /^cek$/i 11 | handler.limit = true 12 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebaklirik_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakirik = conn.tebakirik ? conn.tebakirik : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakirik)) throw false 5 | let json = conn.tebakirik[id][1] 6 | m.reply('```' + json.jawaban.replace(/[AUIEOaiueo]/g, '_') + '```') 7 | } 8 | handler.command = /^teli$/i 9 | handler.limit = true 10 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebaklogo-hint.js: -------------------------------------------------------------------------------- 1 | /* 2 | let handler = async (m, { conn }) => { 3 | conn.tebaklogo = conn.tebaklogo ? conn.tebaklogo : {} 4 | let id = m.chat 5 | if (!(id in conn.tebaklogo)) throw false 6 | let json = conn.tebaklogo[id][1] 7 | conn.sendButton(m.chat, '```' + json.hasil.data.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 8 | ['Nyerah', 'menyerah'] 9 | ], m) 10 | } 11 | handler.command = /^hani$/i 12 | 13 | handler.limit = true 14 | 15 | export default handler 16 | */ 17 | -------------------------------------------------------------------------------- /plugins/game-tebaksiapa-hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebaksiapa = conn.tebaksiapa ? conn.tebaksiapa : {} 3 | let id = m.chat 4 | if (!(id in conn.tebaksiapa)) throw false 5 | let json = conn.tebaksiapa[id][1] 6 | conn.sendButton(m.chat, '```' + json.jawaban.replace(/[AIUEOaiueo]/ig, '_') + '```', author, null, [ 7 | ['Nyerah', 'menyerah'] 8 | ], m) 9 | } 10 | handler.command = /^hsia$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/game-tebakumur.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | let handler = async(m, { conn, text }) => { 3 | 4 | if (!text) return conn.reply(m.chat, 'Masukan Teksnya', m) 5 | 6 | await m.reply('Searching...') 7 | axios.get(`http://lolhuman.herokuapp.com/api/tebakumur?apikey=31caf10e4a64e86c1a92bcba&name=${text}`).then ((res) => { 8 | let hasil = `Namamu : ${text}\nUmurmu : ${res.data.result.age}` 9 | 10 | conn.reply(m.chat, hasil, m) 11 | }) 12 | } 13 | handler.help = ['tebakumur'].map(v => v + ' ') 14 | handler.tags = ['internet', 'fun', 'limitmenu'] 15 | handler.command = /^(tebakumur)$/i 16 | handler.owner = false 17 | handler.mods = false 18 | handler.premium = false 19 | handler.group = false 20 | handler.private = false 21 | 22 | handler.admin = false 23 | handler.botAdmin = false 24 | 25 | handler.fail = null 26 | handler.exp = 0 27 | handler.limit = true 28 | 29 | export default handler 30 | -------------------------------------------------------------------------------- /plugins/game-tekateki_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tekateki = conn.tekateki ? conn.tekateki : {} 3 | let id = m.chat 4 | if (!(id in conn.tekateki)) throw 0 5 | let json = conn.tekateki[id][1] 6 | conn.reply(m.chat, '```' + json.bantuan + '```\nBalas soalnya, bukan pesan ini!', conn.tekateki[id][0]) 7 | } 8 | handler.command = /^tete$/i 9 | 10 | handler.limit = 1 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/games-tebakkata_hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | conn.tebakkata = conn.tebakkata ? conn.tebakkata : {} 3 | let id = m.chat 4 | if (!(id in conn.tebakkata)) throw false 5 | let json = conn.tebakkata[id][1] 6 | let ans = json.jawaban.trim() 7 | let clue = ans.replace(/[AIUEO]/gi, '_') 8 | m.reply('```' + clue + '```') 9 | } 10 | handler.command = /^teka$/i 11 | 12 | handler.limit = true 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/group-demote.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, participants }) => { 3 | let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id)) 4 | let user = m.mentionedJid && m.mentionedJid[0] 5 | await conn.groupParticipantsUpdate(m.chat, [user], 'demote') 6 | 7 | m.reply('Succes') 8 | 9 | } 10 | handler.help = ['demote @tag'] 11 | handler.tags = ['group'] 12 | handler.command = /^(demote)$/i 13 | 14 | handler.admin = true 15 | handler.group = true 16 | handler.botAdmin = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/group-kick.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, participants }) => { 3 | let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id)) 4 | let kickedUser = [] 5 | for (let user of users) 6 | if (user.endsWith('@s.whatsapp.net') && !(participants.find(v => areJidsSameUser(v.id, user)) || { admin: true }).admin) { 7 | const res = await conn.groupParticipantsUpdate(m.chat, [user], 'remove') 8 | kickedUser.concat(res) 9 | await delay(1 * 1000) 10 | } 11 | m.reply(`Succes kick ${kickedUser.map(v => '@' + v.split('@')[0])}`, null, { mentions: kickedUser }) 12 | 13 | } 14 | handler.help = ['kick'].map(v => v + ' @user') 15 | handler.tags = ['group'] 16 | handler.command = /^(kick)$/i 17 | handler.admin = true 18 | handler.group = true 19 | handler.botAdmin = true 20 | 21 | export default handler 22 | 23 | const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) 24 | -------------------------------------------------------------------------------- /plugins/group-link.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, args }) => { 3 | let group = m.chat 4 | if (/^[0-9]{5,16}-?[0-9]+@g\.us$/.test(args[0])) group = args[0] 5 | if (!/^[0-9]{5,16}-?[0-9]+@g\.us$/.test(group)) throw 'Hanya bisa dibuka di grup' 6 | let groupMetadata = await conn.groupMetadata(group) 7 | if (!groupMetadata) throw 'groupMetadata is undefined :\\' 8 | if (!('participants' in groupMetadata)) throw 'participants is not defined :(' 9 | let me = groupMetadata.participants.find(user => areJidsSameUser(user.id, conn.user.id)) 10 | if (!me) throw 'Aku tidak ada di grup itu :(' 11 | if (!me.admin) throw 'Aku bukan admin T_T' 12 | m.reply('https://chat.whatsapp.com/' + await conn.groupInviteCode(group)) 13 | } 14 | handler.help = ['linkgroup'] 15 | handler.tags = ['group'] 16 | handler.command = /^link(gro?up)?$/i 17 | 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/group-pengumuman.js: -------------------------------------------------------------------------------- 1 | import { generateWAMessageFromContent } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, text, participants }) => { 3 | let users = participants.map(u => conn.decodeJid(u.id)) 4 | let q = m.quoted ? m.quoted : m 5 | let c = m.quoted ? m.quoted : m.msg 6 | const msg = conn.cMod(m.chat, 7 | generateWAMessageFromContent(m.chat, { 8 | [c.toJSON ? q.mtype : 'extendedTextMessage']: c.toJSON ? c.toJSON() : { 9 | text: c || '' 10 | } 11 | }, { 12 | quoted: m, 13 | userJid: conn.user.id 14 | }), 15 | text || q.text, conn.user.jid, { mentions: users } 16 | ) 17 | await conn.relayMessage(m.chat, msg.message, { messageId: msg.key.id }) 18 | } 19 | handler.help = ['pengumuman', 'announce', 'hidetag'].map(v => v + ' [teks]') 20 | handler.tags = ['group'] 21 | handler.command = /^(pengumuman|announce|hiddentag|hidetag)$/i 22 | 23 | handler.group = true 24 | handler.admin = true 25 | 26 | export default handler 27 | 28 | -------------------------------------------------------------------------------- /plugins/group-promote.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, participants }) => { 3 | let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id)) 4 | let promoteUser = [] 5 | for (let user of users) 6 | if (user.endsWith('@s.whatsapp.net') && !(participants.find(v => areJidsSameUser(v.id, user)) || { admin: true }).admin) { 7 | const res = await conn.groupParticipantsUpdate(m.chat, [user], 'promote') 8 | await delay(1 * 1000) 9 | } 10 | m.reply('Succes') 11 | 12 | } 13 | handler.help = ['promote @tag'] 14 | handler.tags = ['group'] 15 | handler.command = /^(promote)$/i 16 | 17 | handler.admin = true 18 | handler.group = true 19 | handler.botAdmin = true 20 | 21 | export default handler 22 | 23 | const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) -------------------------------------------------------------------------------- /plugins/group-setname-gc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | 3 | await conn.groupUpdateSubject(m.chat, `${args.join(" ")}`); 4 | m.reply('Sukses mengganti nama group') 5 | } 6 | 7 | handler.help = ['setnamegc '] 8 | handler.tags = ['group'] 9 | handler.command = /^setnamegc$/i 10 | handler.owner = false 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = true 14 | handler.private = false 15 | handler.register = false 16 | handler.admin = true 17 | handler.botAdmin = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/group-setppgc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, command }) => { 2 | let q = m.quoted ? m.quoted : m 3 | let mime = (q.msg || q).mimetype || '' 4 | if (/image/.test(mime)) { 5 | let img = await q.download() 6 | if (!img) throw 'Gambar tidak ditemukan' 7 | await conn.updateProfilePicture(m.chat, img) 8 | } else throw `kirim/balas gambar dengan caption *${usedPrefix + command}*` 9 | } 10 | handler.help = ['setpp'] 11 | handler.tags = ['group'] 12 | 13 | handler.command = /^setpp$/i 14 | 15 | handler.group = true 16 | handler.admin = true 17 | handler.botAdmin = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/group-settings.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | let isClose = { // Switch Case Like :v 3 | 'open': 'not_announcement', 4 | 'close': 'announcement', 5 | }[(args[0] || '')] 6 | if (isClose === undefined) 7 | throw ` 8 | *Format salah! Contoh :* 9 | *○ ${usedPrefix + command} close* 10 | *○ ${usedPrefix + command} open* 11 | `.trim() 12 | await conn.groupSettingUpdate(m.chat, isClose) 13 | } 14 | handler.help = ['group *open / close*'] 15 | handler.tags = ['group'] 16 | handler.command = /^(group)$/i 17 | 18 | handler.admin = true 19 | handler.botAdmin = true 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/group-tagall.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, participants, isAdmin, isOwner }) => { 2 | let users = participants.map(u => u.id).filter(v => v !== conn.user.jid) 3 | m.reply(`${text ? `${text}\n` : ''}┌─「 Tag All 」\n` + users.map(v => '│◦❒ @' + v.replace(/@.+/, '')).join`\n` + '\n└────', null, { 4 | mentions: users 5 | }) 6 | } 7 | 8 | handler.help = ['tagall'] 9 | handler.tags = ['group'] 10 | handler.command = ['tagall'] 11 | handler.admin = true 12 | handler.group = true 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/group-tagme.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let tag = `@${m.sender.replace(/@.+/, '')}` 3 | let mentionedJid = [m.sender] 4 | conn.reply(m.chat, tag, m, { contextInfo: { mentionedJid }}) 5 | } 6 | handler.help = ['tagme'] 7 | handler.tags = ['group'] 8 | handler.command = /^tagme$/i 9 | 10 | handler.group = false 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/hello.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import fetch from 'node-fetch' 3 | let handler = async (m, { conn, usedPrefix: _p }) => { 4 | let info = fs.readFileSync('./mp3/little-girl-sayingtalking-hello-sound-effectcute-sound-effectsadorable.opus') 5 | 6 | let td = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' 7 | 8 | conn.reply(m.chat, info, m, { quoted: fkontak },{ contextInfo: { externalAdReply: { showAdAttribution: true, 9 | mediaUrl: "https://www.youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow", 10 | mediaType: 2, 11 | description: "https://www.youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow", 12 | title: 'whmods-ᴍᴜʟᴛɪᴅᴇᴠɪᴄᴇ', 13 | body: wm, 14 | thumbnail: thumb, 15 | sourceUrl: sig }}}) 16 | } 17 | handler.customPrefix = /^(hallo|hello|alo|allo)$/i 18 | handler.command = new RegExp 19 | 20 | export default handler -------------------------------------------------------------------------------- /plugins/host-bcgcb.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { conn, text } ) => { 3 | let groups = Object.entries(conn.chats).filter(([jid, chat]) => jid.endsWith('@g.us') && chat.isChats && !chat.metadata?.read_only && !chat.metadata?.announce).map(v => v[0]) 4 | 5 | for (let id of groups) { 6 | let member = (await conn.groupMetadata(id)).participants.map(v => v.jid) 7 | conn.sendButton(id, '────━┅ *BROADCAST* ┅━────\n' + text, wm, fla + 'BROADCAST', [['OWNER 🎐', '.owner'],['DONASI ✨', '.donasi']], false, { contextInfo: { externalAdReply: {title: namebot, body: bottime, sourceUrl: sig, thumbnail: fs.readFileSync('./thumbnail.jpg') }}}) 8 | } 9 | } 10 | handler.command = ['bcgcb'] 11 | handler.tags = ['host'] 12 | handler.help = ['bcgcb'] 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/image-gimage.js: -------------------------------------------------------------------------------- 1 | import { googleImage } from '@bochilteam/scraper' 2 | let handler = async (m, { conn, text, usedPrefix, command }) => { 3 | if (!text) throw `Use example ${usedPrefix}${command} Minecraft` 4 | const res = await googleImage(text) 5 | let image = res.getRandom() 6 | let link = image 7 | let whmods = `*${htki} GOOGLE IMAGE ${htka}* 8 | 🔎 *Result:* ${text} 9 | 🌎 *Source:* Google` 10 | //conn.sendFile(m.chat, link, '', whmods, m) 11 | conn.sendButton(m.chat, whmods, botdate, link, [['Next', `.image ${text}`]], m) 12 | /* conn.sendHydrated (m.chat,` 13 | *${htki} GOOGLE IMAGE ${htka}* 14 | 🔎 *Result:* ${text} 15 | 🌎 *Source:* Google 16 | `, wm, link, link, '🔗 URL', null, null, [['Next', `.image ${text}`],[null,null],[null,null]],m) */ 17 | } 18 | handler.help = ['gimage ', 'image '] 19 | handler.tags = ['internet', 'tools'] 20 | handler.command = /^(gimage|image)$/i 21 | 22 | export default handler 23 | 24 | -------------------------------------------------------------------------------- /plugins/image-pinterest.js: -------------------------------------------------------------------------------- 1 | import { pinterest } from '@bochilteam/scraper' 2 | 3 | let handler = async(m, { conn, text, usedPrefix, command }) => { 4 | if (!text) throw `Example use ${usedPrefix + command} minecraft` 5 | const json = await pinterest(text) 6 | conn.sendFile(m.chat, json.getRandom(), 'pinterest.jpg', ` 7 | *Hasil pencarian* 8 | ${text} 9 | `.trim(), m) 10 | } 11 | handler.help = ['pinterest '] 12 | handler.tags = ['internet', 'image'] 13 | handler.command = /^(pinterest)$/i 14 | 15 | export default handler -------------------------------------------------------------------------------- /plugins/image-wallpaper.js: -------------------------------------------------------------------------------- 1 | import { wallpaper, wallpaperv2 } from '@bochilteam/scraper' 2 | let handler = async (m, { conn, text, usedPrefix, command }) => { 3 | if (!text) throw `Use example ${usedPrefix}${command} Minecraft` 4 | const res = await (/2/.test(command) ? wallpaperv2 : wallpaper)(text) 5 | const img = res[Math.floor(Math.random() * res.length)] 6 | conn.sendFile(m.chat, img, 'wallpaper.jpg', `Result from *${text}*`, m) 7 | } 8 | handler.help = ['', '2'].map(v => 'wallpaper' + v + ' ') 9 | handler.tags = ['downloader', 'image'] 10 | 11 | handler.command = /^(wallpaper2?)$/i 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/info-grouplist.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let txt = '' 3 | for (let [jid, chat] of Object.entries(conn.chats).filter(([jid, chat]) => jid.endsWith('@g.us') && chat.isChats)) txt += `${await conn.getName(jid)}\n🪪${jid} [${chat?.metadata?.read_only ? 'Left' : 'Joined'}]\n\n` 4 | m.reply(`List Groups: 5 | ${txt} 6 | `.trim()) 7 | } 8 | handler.help = ['groups', 'grouplist'] 9 | handler.tags = ['info'] 10 | handler.command = /^(group(s|list))$/i 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/info-report.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | if (!text) throw `kalo kamu nemu pesan eror, lapor pake perintah ini\n\ncontoh:\n${usedPrefix + command} selamat siang owner, sy menemukan eror seperti berikut ` 3 | if (text.length < 10) throw `Laporan terlalu pendek, minimal 10 karakter!` 4 | if (text.length > 1000) throw `Laporan terlalu panjang, maksimal 1000 karakter!` 5 | let teks = `*${command.toUpperCase()}!*\n\nDari : *@${m.sender.split`@`[0]}*\n\nPesan : ${text}\n` 6 | conn.reply(global.nomorown + '@s.whatsapp.net', m.quoted ? teks + m.quoted.text : teks, null, { 7 | contextInfo: { 8 | mentionedJid: [m.sender] 9 | } 10 | }) 11 | m.reply(`_Pesan terkirim kepemilik bot, jika ${command.toLowerCase()} hanya main-main tidak akan ditanggapi._`) 12 | } 13 | handler.help = ['report', 'request'].map(v => v + ' ') 14 | handler.tags = ['info'] 15 | handler.command = /^(report|request)$/i 16 | export default handler -------------------------------------------------------------------------------- /plugins/info-script.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async(m, { conn, text, usedPrefix, command }) => { 3 | let pp = await conn.profilePictureUrl(m.chat).catch(_ => null) 4 | 5 | let str = `*https://youtube.com/channel/UCTVeRHM0v0Hqv_-O8yVkFpw*` 6 | let wibu = `https://hadi-api.herokuapp.com/api/loli` 7 | let thumb = await(await fetch(wibu)).buffer() 8 | conn.sendButtonDoc(m.chat, str, wm,'ᴏᴋ','Bilek', m, { contextInfo: { externalAdReply: { showAdAttribution: true, 9 | mediaUrl: "https://Instagram.com/inizenscuy", 10 | title: 'Albedo-MultiDevice', 11 | body: 'want source code?', 12 | thumbnail: thumb, 13 | sourceUrl: sig 14 | } 15 | } }) 16 | } 17 | handler.help = ['sc', 'script'] 18 | handler.tags = ['info', 'main'] 19 | handler.command = /^(script|sc)$/i 20 | 21 | export default handler -------------------------------------------------------------------------------- /plugins/info-speedtest.js: -------------------------------------------------------------------------------- 1 | import cp from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(cp.exec).bind(cp) 4 | let handler = async (m) => { 5 | await conn.reply(m.chat, "Wait", m) 6 | let o 7 | try { 8 | o = await exec('python speed.py') 9 | } catch (e) { 10 | o = e 11 | } finally { 12 | let { stdout, stderr } = o 13 | if (stdout.trim()) m.reply(stdout) 14 | if (stderr.trim()) m.reply(stderr) 15 | } 16 | } 17 | handler.help = ['testspeed'] 18 | handler.tags = ['info'] 19 | handler.command = /^(testspeed)$/i 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/info-statserver.js: -------------------------------------------------------------------------------- 1 | import cp from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(cp.exec).bind(cp) 4 | let handler = async (m) => { 5 | await conn.reply(m.chat, "Wait", m) 6 | let o 7 | try { 8 | o = await exec('df -h') 9 | } catch (e) { 10 | o = e 11 | } finally { 12 | let { stdout, stderr } = o 13 | if (stdout.trim()) m.reply(stdout) 14 | if (stderr.trim()) m.reply(stderr) 15 | } 16 | } 17 | handler.help = ['statserver'] 18 | handler.tags = ['info'] 19 | handler.command = /^(statserver)$/i 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/info-totalfitur.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { conn, args, command }) => { 3 | let totalf = Object.values(global.plugins).filter( 4 | (v) => v.help && v.tags 5 | ).length; 6 | await conn.sendButton(m.chat, `Total Fitur Bot Saat ini: ${totalf}\n`,wm + '\n\n' + botdate, thumb, [['MENU','.menu']], m, { 7 | contextInfo: { externalAdReply :{ 8 | mediaUrl: '', 9 | mediaType: 2, 10 | description: 'anu', 11 | title: bottime, 12 | body: 'Total Cintaku Padamu', previewType: 0, 13 | thumbnail: fs.readFileSync("./thumbnail.jpg"), 14 | sourceUrl: sig 15 | }} 16 | }) 17 | } 18 | 19 | 20 | handler.help = ['totalfitur'] 21 | handler.tags = ['info'] 22 | handler.command = ['totalfitur'] 23 | export default handler -------------------------------------------------------------------------------- /plugins/internet-blackpink.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let bpink = [] 4 | fetch('https://raw.githubusercontent.com/arivpn/dbase/master/kpop/blekping.txt') 5 | .then(res => res.text()) 6 | .then(txt => bpink = txt.split('\n')) 7 | let handler = async (m, { conn }) => { 8 | let img = bpink[Math.floor(Math.random() * bpink.length)] 9 | if (!img) throw img 10 | await conn.sendFile(m.chat, img, '', '© nih Blackpinknya jangan lupa subscribe channel WH MODS DEV 👍', m, 0, { thumbnail: await (await fetch(img)).buffer() }) 11 | } 12 | handler.help = ['blackpink'] 13 | handler.tags = ['internet'] 14 | handler.limit = false 15 | handler.command = /^(bpink|bp|blackpink)$/i 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/internet-bts.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let bts = [] 3 | fetch ('https://raw.githubusercontent.com/arivpn/dbase/master/kpop/batues.txt') 4 | .then(res => res.text()) 5 | .then(txt => bts = txt.split('\n')) 6 | let handler = async (m, { conn }) => { 7 | let img = bts[Math.floor(Math.random() * bts.length)] 8 | if (!img) throw img 9 | await conn.sendFile(m.chat, img, '', '© nih BTSnya 👍', m, 0, { thumbnail: await (await fetch(img)).buffer() }) 10 | } 11 | handler.help = ['bts'] 12 | handler.tags = ['internet'] 13 | handler.limit = false 14 | handler.command = /^(bts)$/i 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/internet-cecan-random.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let arr = [] 4 | fetch('https://raw.githubusercontent.com/arivpn/dbase/master/kpop/cecan.txt') 5 | .then(res => res.text()) 6 | .then(txt => arr = txt.split('\n')) 7 | let handler = async (m, { conn }) => { 8 | let img = arr[Math.floor(Math.random() * arr.length)] 9 | if (!img) throw img 10 | await conn.sendFile(m.chat, img, '', '© nih cecan random nya jangan lupa subscribe channel WH MODS DEV👍', m, 0, { thumbnail: await (await fetch(img)).buffer() }) 11 | } 12 | handler.help = ['cecanrandom'] 13 | handler.tags = ['internet'] 14 | handler.limit = false 15 | handler.command = /^(cecanrandom)$/i 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/internet-cecan-ukhty.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let zzz = [] 4 | fetch('https://raw.githubusercontent.com/arivpn/dbase/master/kpop/ukhty.txt') 5 | .then(res => res.text()) 6 | .then(txt => zzz = txt.split('\n')) 7 | let handler = async (m, { conn }) => { 8 | let img = zzz[Math.floor(Math.random() * zzz.length)] 9 | if (!img) throw img 10 | await conn.sendFile(m.chat, img, '', '© nih cecan ukhty nya jangan lupa subscribe channel WH MODS DEV👍', m, 0, { thumbnail: await (await fetch(img)).buffer() }) 11 | } 12 | handler.help = ['cecanukhty'] 13 | handler.tags = ['internet'] 14 | handler.limit = false 15 | handler.command = /^(cecanukhty|ukhty)$/i 16 | 17 | export default handler 18 | 19 | -------------------------------------------------------------------------------- /plugins/internet-cuaca.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { text, usedPrefix, command }) => { 4 | if (!text) throw `Pengunaan:\n${usedPrefix + command} \n\nContoh:\n${usedPrefix + command} Jakarta` 5 | let res = await fetch(API('https://api.openweathermap.org', '/data/2.5/weather', { 6 | q: text, 7 | units: 'metric', 8 | appid: '060a6bcfa19809c2cd4d97a212b19273' 9 | })) 10 | if (!res.ok) throw 'lokasi tidak ditemukan' 11 | let json = await res.json() 12 | if (json.cod != 200) throw json 13 | m.reply(` 14 | Lokasi: ${json.name} 15 | Negara: ${json.sys.country} 16 | Cuaca: ${json.weather[0].description} 17 | Suhu saat ini: ${json.main.temp} °C 18 | Suhu tertinggi: ${json.main.temp_max} °C 19 | Suhu terendah: ${json.main.temp_min} °C 20 | Kelembapan: ${json.main.humidity} % 21 | Angin: ${json.wind.speed} km/jam 22 | `.trim()) 23 | } 24 | 25 | handler.help = ['cuaca'] 26 | handler.tags = ['internet'] 27 | handler.command = /^(cuaca|weather)$/i 28 | 29 | export default handler 30 | -------------------------------------------------------------------------------- /plugins/internet-darkjokes.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import bo from 'dhn-api' 3 | let handler = async (m, { conn }) => { 4 | const res = await bo.Darkjokes() 5 | await conn.sendButton(m.chat,`Dark ga si adick adick`, wm, res, [['Darkjoke','.darkjoke']] ,m) 6 | } 7 | handler.help = ['darkjoke'] 8 | handler.tags = ['internet', 'limitmenu'] 9 | handler.command = /^(darkjoke)$/i 10 | handler.limit = true 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/internet-exo.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let arr = [] 4 | fetch('https://raw.githubusercontent.com/arivpn/dbase/master/kpop/exo.txt') 5 | .then(res => res.text()) 6 | .then(txt => arr = txt.split('\n')) 7 | let handler = async (m, { conn }) => { 8 | let img = arr[Math.floor(Math.random() * arr.length)] 9 | if (!img) throw img 10 | await conn.sendFile(m.chat, img, '', '© nih EXOnya jangan lupa subscribe channel WH MODS DEV👍', m, 0, { thumbnail: await (await fetch(img)).buffer() }) 11 | } 12 | handler.help = ['exo'] 13 | handler.tags = ['internet'] 14 | handler.limit = false 15 | handler.command = /^(exo)$/i 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/internet-jadwalbola.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, command }) => { 3 | let res = await fetch('https://x-restapi.herokuapp.com/api/jadwal-bola?apikey=BETA') 4 | if (res.status != 200) throw await res.text() 5 | let json = await res.json() 6 | if (!json.status) throw json 7 | m.reply(` *JADWAL BOLA* 8 | 9 | _*${json.data[0].kickoff}*_ 10 | Waktu: _${json.data[0].waktu}_ 11 | Channel tv: ${json.data[0].channel} 12 | 13 | _*${json.data[1].kickoff}*_ 14 | Waktu: _${json.data[1].waktu}_ 15 | Channel tv: ${json.data[1].channel} 16 | 17 | _*${json.data[2].kickoff}*_ 18 | Waktu: _${json.data[2].waktu}_ 19 | Channel tv: ${json.data[2].channel} 20 | 21 | _*${json.data[3].kickoff}*_ 22 | Waktu: _${json.data[3].waktu}_ 23 | Channel tv: ${json.data[3].channel} 24 | 25 | _*${json.data[4].kickoff}*_ 26 | Waktu: _${json.data[4].waktu}_ 27 | Channel tv: ${json.data[4].channel} 28 | `) 29 | 30 | } 31 | handler.help = ['jadwalbola'] 32 | handler.tags = ['internet'] 33 | handler.command = /^jadwalbola$/i 34 | 35 | 36 | export default handler -------------------------------------------------------------------------------- /plugins/internet-kbbi.js: -------------------------------------------------------------------------------- 1 | import { kbbi } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { text, usedPrefix, command }) => { 4 | if (!text) throw `Example use ${usedPrefix}${command} halo` 5 | const res = await kbbi(text) 6 | m.reply(` 7 | ${res.map(v => ` 8 | *📌${v.title}* 9 | 10 | ${v.means.map(v => '- ' + v).join('\n`')} 11 | `).join('\n').trim()} 12 | 13 | Note: 14 | p = Partikel: kelas kata yang meliputi kata depan, kata sambung, kata seru, kata sandang, ucapan salam 15 | n = Nomina: kata benda 16 | `.trim()) 17 | } 18 | handler.help = ['kbbi '] 19 | handler.tags = ['internet'] 20 | handler.command = /^kbbi$/i 21 | 22 | export default handler -------------------------------------------------------------------------------- /plugins/internet-manga.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async(m, { conn, text }) => { 3 | if (!text) throw `Masukkan query!` 4 | let res = await fetch(global.API('https://api.jikan.moe', '/v3/search/manga', { q: text })) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | let { title, synopsis, chapters, url, volumes, score, image_url } = json.results[0] 8 | let mangaingfo = `*Title:* ${title} 9 | *Chapters:* ${chapters} 10 | *Volumes:* ${volumes} 11 | *Score:* ${score} 12 | *Synopsis:* ${synopsis} 13 | *Link*: ${url}` 14 | conn.sendFile(m.chat, image_url, '', mangaingfo, m) 15 | } 16 | handler.help = ['manga '] 17 | handler.tags = ['internet'] 18 | handler.command = /^(manga)$/i 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/internet-memeindo.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let res = await fetch('https://raw.githubusercontent.com/HasamiAini/wabot_takagisan/main/whatsapp%20bot%20takagisan/whatsapp%20bot%20takagisan/lib/memeindo.json') 5 | let json = await res.json(); 6 | let url = json[Math.floor(Math.random() * json.length)] 7 | await conn.sendButtonImg(m.chat, await (await fetch(url.image)).buffer(), 'memeindo', 'Next', '.meme', m) 8 | } 9 | handler.command = /^(meme)$/i 10 | handler.tags = ['internet', 'limitmenu'] 11 | handler.help = ['meme'] 12 | handler.limit = true 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/internet-randommeme.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, command }) => { 4 | let url = 'https://candaan-api-h590oa540-ardhptr21.vercel.app/api/image/random' 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | conn.sendButton(m.chat, 'mim indo :v', author, json.data.url, [['NEXT', `${command}`]], m) 8 | } 9 | handler.command = /^(meme)$/i 10 | handler.tags = ['internet'] 11 | handler.help = ['meme'] 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/jadwalsholat.js: -------------------------------------------------------------------------------- 1 | import { jadwalsholat } from '@bochilteam/scraper' 2 | let handler = async (m, { text, usedPrefix, command }) => { 3 | if (!text) throw `Use example ${usedPrefix}${command} semarang` 4 | const res = await jadwalsholat(text) 5 | m.reply(` 6 | Jadwal Sholat *${text}* 7 | 8 | ${Object.entries(res.today).map(([name, data]) => `*Sholat ${name}:* ${data}`).join('\n').trim()} 9 | `.trim()) 10 | } 11 | handler.help = ['salat '] 12 | handler.tags = ['quran'] 13 | handler.command = /^(jadwal)?s(a|o|ha|ho)lat$/i 14 | 15 | export default handler -------------------------------------------------------------------------------- /plugins/kompasnews.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import bo from 'dhn-api' 3 | let handler = async(m, { conn }) => { 4 | var a = await bo.KompasNews() 5 | var b = JSON.parse(JSON.stringify(a)) 6 | var c = await conn.rand(b) 7 | //var c = b[Math.floor(Math.random() * b.length)] 8 | var { berita, berita_url, berita_thumb, berita_jenis, berita_diupload } = c 9 | var sell = `📺 *Kompas News* 10 | 11 | 📢 *Berita:* ${berita} 12 | 📁 *Type News:* ${berita_jenis} 13 | ⌚ *Uploded:* ${berita_diupload} 14 | 🛰 *Source Url:* ${berita_url}` 15 | conn.sendButton(m.chat, sell, wm, berita_thumb, [['Kompas News', '.kompasnews']], m, {jpegThumbnail: await(await fetch(berita_thumb)).buffer()}) 16 | } 17 | handler.help = ['kompasnews'] 18 | handler.tags = ['berita', 'limitmenu'] 19 | handler.command = /^kompas(news)?$/i 20 | handler.limit = true 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/logo-kaneki.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, args }) => { 3 | let response = args.join(' ').split('|') 4 | if (!args[0]) throw 'Masukkan Parameter' 5 | m.reply('Proses...') 6 | let res = `https://ziy.herokuapp.com/api/maker/kaneki?nama=${response[0]}&apikey=xZiyy` 7 | conn.sendFile(m.chat, res, 'kaneki.jpg', `Sudah Jadi`, m, false) 8 | } 9 | handler.help = ['logokaneki'].map(v => v + ' ') 10 | handler.tags = ['logo'] 11 | handler.command = /^(logokaneki)$/i 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/logo-loli.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, args }) => { 3 | let response = args.join(' ').split('|') 4 | if (!args[0]) throw 'Masukkan Parameter' 5 | m.reply('Proses...') 6 | let res = `https://ziy.herokuapp.com/api/maker/lolimaker?nama=${response[0]}&apikey=xZiyy` 7 | conn.sendFile(m.chat, res, 'sadboy.jpg', `Sudah Jadi`, m, false) 8 | } 9 | handler.help = ['logololi'].map(v => v + ' ') 10 | handler.tags = ['logo'] 11 | handler.command = /^(logololi)$/i 12 | handler.register = false 13 | 14 | handler.limit = false 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/logo-neko.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, args }) => { 3 | let response = args.join(' ').split('|') 4 | if (!args[0]) throw 'Masukkan Parameter' 5 | m.reply('Proses...') 6 | let res = `https://ziy.herokuapp.com/api/maker/girlneko?text1=${response[0]}&text2=${response[1]}&apikey=xZiyy` 7 | conn.sendFile(m.chat, res, 'neko.jpg', `Sudah Jadi`, m, false) 8 | } 9 | handler.help = ['logoneko'].map(v => v + ' ') 10 | handler.tags = ['logo'] 11 | handler.command = /^(logoneko)$/i 12 | handler.limit = false 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/logo-rem.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, args }) => { 3 | let response = args.join(' ').split('|') 4 | if (!args[0]) throw 'Masukkan Parameter' 5 | m.reply('proses..') 6 | let res = `https://ziy.herokuapp.com/api/maker/rem?nama=${response[0]}&apikey=xZiyy` 7 | conn.sendFile(m.chat, res, 'rem.jpg', `Nih kak`, m, false) 8 | } 9 | handler.help = ['logorem'].map(v => v + ' ') 10 | handler.tags = ['logo'] 11 | handler.command = /^(logorem)$/i 12 | handler.register = false 13 | 14 | handler.limit = false 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/logo-sadboy.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, args }) => { 3 | let response = args.join(' ').split('|') 4 | if (!args[0]) throw 'Masukkan Parameter' 5 | m.reply('proses..') 6 | let res = `https://ziy.herokuapp.com/api/maker/sadboy?text1=${response[0]}&text2=${response[1]}&apikey=xZiyy` 7 | conn.sendFile(m.chat, res, 'sadboy.jpg', `Nih kak`, m, false) 8 | } 9 | handler.help = ['sadboylogo'].map(v => v + ' ') 10 | handler.tags = ['logo'] 11 | handler.command = /^(logosadboy)$/i 12 | handler.limit = false 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/lyrics.js: -------------------------------------------------------------------------------- 1 | import { lyrics, lyricsv2 } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : '' 5 | if (!teks) throw `Use example ${usedPrefix}${command} hallo` 6 | const result = await lyricsv2(teks).catch(async _ => await lyrics(teks)) 7 | m.reply(` 8 | Lyrics *${result.title}* 9 | Author ${result.author} 10 | 11 | 12 | ${result.lyrics} 13 | 14 | 15 | Url ${result.link} 16 | `.trim()) 17 | } 18 | 19 | handler.help = ['lirik'].map(v => v + ' ') 20 | handler.tags = ['internet'] 21 | handler.command = /^(lirik|lyrics|lyric)$/i 22 | 23 | export default handler -------------------------------------------------------------------------------- /plugins/maker-ephoto360-part3.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, args, command }) => { 3 | let response = args.join(' ').split('|') 4 | if (!args[0]) throw 'Masukkan Teks' 5 | m.reply('Proses...') 6 | let res = `https://api.violetics.pw/api/ephoto360/${command}?apikey=1290-0463-b5e6&text=${response[0]}` 7 | conn.sendFile(m.chat, res, 'logo.jpg', `Sudah Jadi`, m, false) 8 | } 9 | handler.help = ['wallpaper-moblie', 'water-3d', 'water-effect', 'water-effect2', 'watercolor-effect', 'wedding-silver', 'wet-glass', 'wings-effect', 'women-day', 'yasuo', 'yellowskin-snake', 'yena-arena-of-valor'].map(v => v + ' ') 10 | handler.tags = ['logo'] 11 | handler.command = /^(wallpaper-moblie|water-3d|water-effect|water-effect2|watercolor-effect|wedding-silver|wet-glass|wings-effect|women-day|yasuo|yellowskin-snake|yena-arena-of-valor)$/i 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/menpes-ans.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Jangan Di Hapus!! 3 | * 4 | * Buatan Zenss 5 | * Github: https://github.com/RaaaGH 6 | * 7 | * 8 | * 9 | * Gatau Males Pengen Beli Truk 10 | * 11 | * 12 | */ 13 | 14 | const delay = time => new Promise(res => setTimeout(res, time)) 15 | let handler = m => m 16 | handler.all = async function (m) { 17 | if (!m.chat.endsWith('@s.whatsapp.net')) return !0; 18 | this.menfess = this.menfess ? this.menfess : {} 19 | let mf = Object.values(this.menfess).find(v => v.status === false && v.penerima == m.sender) 20 | if (!mf) return !0 21 | console.log({ text: m.text }) 22 | if (mf && (m.text === 'Balas Pesan' || m.text === '') && m.quoted?.mtype == 'buttonsMessage') return m.reply("Silahkan kirim pesan balasan kamu.") 23 | 24 | let txt = `Hai kak @${mf.dari.split('@')[0]}, kamu menerima balasan nih.\n\nPesan yang kamu kirim sebelumnya:\n${mf.pesan}\n\nPesan balasannya:\n${m.text}\n`.trim(); 25 | await this.reply(mf.dari, txt, null).then(() => { 26 | m.reply('Berhasil mengirim balasan.') 27 | delay(2000) 28 | delete this.menfess[mf.id] 29 | return !0 30 | }) 31 | return !0 32 | } 33 | 34 | export default handler -------------------------------------------------------------------------------- /plugins/nsfw-nhentai.js: -------------------------------------------------------------------------------- 1 | /*import fetch from 'node-fetch' 2 | import { extractImageThumb } from '@adiwajshing/baileys' 3 | 4 | let handler = async (m, { conn, args }) => { 5 | let code = (args[0] || '').replace(/\D/g, '') 6 | if (!code) throw 'Input code' 7 | await m.reply('_In progress, please wait..._') 8 | let res = await fetch('https://expressjs-akkun.up.railway.app/nhentai?code=' + code) 9 | if (!res.ok) throw await res.statusText 10 | let json = await res.json() 11 | let buffer = await (await fetch('https://external-content.duckduckgo.com/iu/?u=' + json.result.pages[0])).buffer() 12 | let jpegThumbnail = await extractImageThumb(buffer) 13 | conn.sendMessage(m.chat, { document: { url: 'https://expressjs-akkun.up.railway.app/nhentai/' + code }, jpegThumbnail, fileName: json.result.title + '.pdf', mimetype: 'application/pdf' }, { quoted: m }) 14 | } 15 | handler.help = ['nhentai'] 16 | handler.tags = ['nsfw', 'premium', 'limitmenu'] 17 | handler.command = /^(nhentai)$/i 18 | handler.premium = true 19 | handler.register = true 20 | handler.limit = true 21 | 22 | export default handler 23 | */ 24 | -------------------------------------------------------------------------------- /plugins/nulis-magernulis.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, conn, text }) => { 2 | m.reply(wait) 3 | let id = (command.match(/[1-6]$/) || [])[0] || '' 4 | await conn.sendFile(m.chat, global.API('xteam', '/magernulis' + id, { 5 | text, 6 | nama: conn.getName(m.sender), 7 | kelas: ' ' 8 | }, 'APIKEY'), 'nulis.jpg', 'Nahhh sudah jadi...', m, false, { contextInfo: { forwardingScore: 999, isForwarded: true }}) 9 | 10 | } 11 | handler.help = new Array(6).fill('magernulis').map((v, i) => v + (i + 1) + ' ') 12 | handler.tags = ['nulis', 'limitmenu'] 13 | 14 | handler.command = /^magernulis[1-6]?$/i 15 | 16 | handler.limit = true 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/owner-addowner.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text 4 | else who = m.chat 5 | if (!who) throw `tag orangnya!` 6 | if (global.owner.includes(who.split`@`[0])) throw 'dia udah menjadi owner !' 7 | global.owner.push(`${who.split`@`[0]}`) 8 | conn.reply(m.chat, `@${who.split`@`[0]} sekarang owner !`, m, { 9 | contextInfo: { 10 | mentionedJid: [who] 11 | } 12 | }) 13 | 14 | } 15 | handler.help = ['addowner [@user]'] 16 | handler.tags = ['owner'] 17 | handler.command = /^(add|tambah|\+)owner$/i 18 | 19 | handler.owner = true 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/owner-addprem.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 4 | else who = m.chat 5 | let user = db.data.users[who] 6 | if (!who) throw `tag or mention someone!` 7 | let txt = text.replace('@' + who.split`@`[0], '').trim() 8 | if (!txt) throw `where the number of days?` 9 | if (isNaN(txt)) return m.reply(`only number!\n\nexample:\n${usedPrefix + command} @${m.sender.split`@`[0]} 7`) 10 | var jumlahHari = 86400000 * txt 11 | var now = new Date() * 1 12 | if (now < user.premiumTime) user.premiumTime += jumlahHari 13 | else user.premiumTime = now + jumlahHari 14 | user.premium = true 15 | m.reply(`✔️ Success 16 | 📛 Name: ${user.name} 17 | 📆 Days: ${txt} days 18 | 📉 Countdown: ${user.premiumTime - now}`) 19 | } 20 | handler.help = ['addprem [@user] '] 21 | handler.tags = ['owner'] 22 | handler.command = /^(add|tambah|\+)p(rem)?$/i 23 | 24 | handler.group = true 25 | handler.rowner = true 26 | 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/owner-balas.js: -------------------------------------------------------------------------------- 1 | let { MessageType } = (await import('@adiwajshing/baileys')).default 2 | let handler = async (m, { conn, args, text }) => { 3 | conn.req = conn.req ? conn.req : {} 4 | if (!args || !text) return m.reply('Silahkan Masukan Teksnya') 5 | let lmfao = args[0] 6 | let bruh = (lmfao + '@s.whatsapp.net') 7 | let tex = args.slice(1).join(' ') 8 | let txt = conn.req[bruh].text || m.quoted ? m.quoted.text ? m.quoted.text : text ? text : m.text : text ? text : m.text 9 | let name = m.fromMe ? conn.user : conn.contacts[m.sender] 10 | let _text = (txt) 11 | conn.reply(m.chat, 'Pesan Anda sudah terkirim', m) 12 | conn.sendMessage(bruh, _text, MessageType.text) 13 | delete conn.req[bruh] 14 | 15 | } 16 | handler.help = ['balas'].map(v => v + ' [nomor] [teks]') 17 | handler.tags = ['owner'] 18 | handler.command = /^(balas|reply)/i 19 | 20 | handler.owner = true 21 | 22 | handler.fail = null 23 | 24 | export default handler 25 | 26 | const more = String.fromCharCode(8206) 27 | const readMore = more.repeat(4001) 28 | -------------------------------------------------------------------------------- /plugins/owner-banchat.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { participants }) => { 2 | // if (participants.map(v=>v.jid).includes(global.conn.user.jid)) { 3 | global.db.data.chats[m.chat].isBanned = true 4 | m.reply('Done!') 5 | // } else m.reply('Ada nomor host disini...') 6 | } 7 | handler.help = ['banchat'] 8 | handler.tags = ['owner'] 9 | handler.command = /^(banchat|bnc)$/i 10 | 11 | handler.owner = true 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/owner-banuser.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | if (!text) throw 'Siapa yg mau dibanned?🗿' 3 | let who 4 | if (m.isGroup) who = m.mentionedJid[0] 5 | else who = m.chat 6 | if (!who) throw 'Tag??' 7 | let users = global.db.data.users 8 | users[who].banned = true 9 | conn.reply(m.chat, 'sᴜᴄᴄᴇs!', m) 10 | } 11 | handler.help = ['ban'] 12 | handler.tags = ['owner'] 13 | handler.command = /^ban(user)?$/i 14 | handler.rowner = true 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/owner-cleartmp.js: -------------------------------------------------------------------------------- 1 | import { tmpdir } from 'os' 2 | import path, { join } from 'path' 3 | import { 4 | readdirSync, 5 | statSync, 6 | unlinkSync, 7 | existsSync, 8 | readFileSync, 9 | watch 10 | } from 'fs' 11 | let handler = async (m, { conn, usedPrefix: _p, __dirname, args }) => { 12 | 13 | conn.reply(m.chat, 'Succes !', m) 14 | 15 | const tmp = [tmpdir(), join(__dirname, '../tmp')] 16 | const filename = [] 17 | tmp.forEach(dirname => readdirSync(dirname).forEach(file => filename.push(join(dirname, file)))) 18 | return filename.map(file => { 19 | const stats = statSync(file) 20 | unlinkSync(file) 21 | }) 22 | } 23 | handler.help = ['cleartmp'] 24 | handler.tags = ['owner'] 25 | handler.command = /^(cleartmp)$/i 26 | 27 | handler.rowner = true 28 | 29 | export default handler -------------------------------------------------------------------------------- /plugins/owner-delprem.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix, command, text }) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : false 4 | else who = text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : m.chat 5 | let user = db.data.users[who] 6 | if (!who) return m.reply(`tag or mention someone!\n\nexample:\n${usedPrefix + command} @${m.sender.split`@`[0]}`) 7 | user.premium = false 8 | user.premiumTime = 0 9 | m.reply(`✔️ successfully removed *${user.name}* from premium user`) 10 | } 11 | handler.help = ['delprem [@user]'] 12 | handler.tags = ['owner'] 13 | handler.command = /^(-|del)p(rem)?$/i 14 | 15 | handler.group = true 16 | handler.rowner = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/owner-demote.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, participants }) => { 3 | let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id)) 4 | let user = m.mentionedJid && m.mentionedJid[0] 5 | await conn.groupParticipantsUpdate(m.chat, [user], 'demote') 6 | 7 | m.reply('Succes') 8 | 9 | } 10 | handler.help = ['odemote @tag'] 11 | handler.tags = ['group'] 12 | handler.command = /^(odemote)$/i 13 | 14 | handler.owner = true 15 | handler.group = true 16 | handler.botAdmin = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/owner-df.js: -------------------------------------------------------------------------------- 1 | import { tmpdir } from 'os' 2 | import path, { join } from 'path' 3 | import { 4 | readdirSync, 5 | statSync, 6 | unlinkSync, 7 | existsSync, 8 | readFileSync, 9 | watch 10 | } from 'fs' 11 | let handler = async (m, { conn, usedPrefix: _p, __dirname, args, text }) => { 12 | 13 | let ar = Object.keys(plugins) 14 | let ar1 = ar.map(v => v.replace('.js', '')) 15 | if (!text) throw `uhm.. where the text?\n\nexample:\n${usedPrefix + command} info` 16 | if (!ar1.includes(args[0])) return m.reply(`*🗃️ NOT FOUND!*\n==================================\n\n${ar1.map(v => ' ' + v).join`\n`}`) 17 | const file = join(__dirname, '../plugins/' + args[0] + '.js') 18 | unlinkSync(file) 19 | conn.reply(m.chat, `Succes deleted "plugins/${args[0]}.js"`, m) 20 | 21 | } 22 | handler.help = ['df'] 23 | handler.tags = ['owner'] 24 | handler.command = /^(df)$/i 25 | 26 | handler.mods = true 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/owner-exec2.js: -------------------------------------------------------------------------------- 1 | import cp, { exec as _exec } from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(_exec).bind(cp) 4 | let handler = async (m, { conn, isOwner, command, text }) => { 5 | if (global.conn.user.jid != conn.user.jid) return 6 | m.reply('Executing...') 7 | let o 8 | try { 9 | o = await exec(command.trimStart() + ' ' + text.trimEnd()) 10 | } catch (e) { 11 | o = e 12 | } finally { 13 | let { stdout, stderr } = o 14 | if (stdout.trim()) m.reply(stdout) 15 | if (stderr.trim()) m.reply(stderr) 16 | } 17 | } 18 | handler.customPrefix = /^[$] / 19 | handler.command = new RegExp 20 | handler.rowner = true 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/owner-getdb.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { conn, text }) => { 3 | m.reply('Tunggu Sebentar, Sedang mengambil file Database') 4 | let sesi = await fs.readFileSync('./database.json') 5 | return await conn.sendMessage(m.chat, { document: sesi, mimetype: 'application/json', fileName: 'database.json' }, { quoted: m }) 6 | } 7 | handler.help = ['getdb'] 8 | handler.tags = ['owner'] 9 | handler.command = /^(getdb)$/i 10 | 11 | handler.owner = true 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/owner-getfile.js: -------------------------------------------------------------------------------- 1 | import cp from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(cp.exec).bind(cp) 4 | let handler = async (m, { conn, isROwner, usedPrefix, command, text }) => { 5 | if (!text) throw `uhm.. teksnya mana?\n\ncontoh\n${usedPrefix + command} main` 6 | m.reply('Executing...') 7 | let o 8 | try { 9 | o = await exec('type ' + text) 10 | } catch (e) { 11 | o = e 12 | } finally { 13 | let { stdout, stderr } = o 14 | if (stdout.trim()) m.reply(stdout) 15 | if (stderr.trim()) m.reply(stderr) 16 | } 17 | } 18 | 19 | handler.help = ['getfile'].map(v => v + ' ') 20 | handler.tags = ['owner'] 21 | handler.command = /^(getfile|gf)$/i 22 | 23 | handler.rowner = true 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/owner-getplugins.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import path from 'path' 3 | let handler = async (m, { usedPrefix, command, text }) => { 4 | if (!text) throw `where is the text?\n\nexempel: ${usedPrefix + command} menu` 5 | const filename = path.join(__dirname, `./${text}${!/\.js$/i.test(text) ? '.js' : ''}`) 6 | const listPlugins = fs.readdirSync(path.join(__dirname)).map(v => v.replace(/\.js/, '')) 7 | if (!fs.existsSync(filename)) return m.reply(` 8 | '${filename}' not found! 9 | ${listPlugins.map(v => v).join('\n').trim()} 10 | `.trim()) 11 | m.reply(fs.readFileSync(filename, 'utf8')) 12 | } 13 | handler.help = ['getplugin'].map(v => v + ' [filename]') 14 | handler.tags = ['owner'] 15 | handler.command = /^(getplugin|get ?plugin|gp)$/i 16 | 17 | handler.owner = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/owner-gp.js: -------------------------------------------------------------------------------- 1 | import cp, { exec as _exec } from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(_exec).bind(cp) 4 | 5 | let handler = async (m, { conn, isROwner, usedPrefix, command, text }) => { 6 | await m.reply(global.wait) 7 | if (!isROwner) return 8 | let ar = Object.keys(plugins) 9 | let ar1 = ar.map(v => v.replace('.js', '')) 10 | if (!text) throw `uhm.. where the text?\n\nexample:\n${usedPrefix + command} info` 11 | if (!ar1.includes(text)) return m.reply(`*🗃️ NOT FOUND!*\n==================================\n\n${ar1.map(v => ' ' + v).join`\n`}`) 12 | let o 13 | try { 14 | o = await exec('cat plugins/' + text + '.js') 15 | } catch (e) { 16 | o = e 17 | } finally { 18 | let { stdout, stderr } = o 19 | if (stdout.trim()) m.reply(stdout) 20 | if (stderr.trim()) m.reply(stderr) 21 | } 22 | } 23 | handler.help = ['getplugin'].map(v => v + ' ') 24 | handler.tags = ['owner'] 25 | handler.command = /^(getplugin|gp)$/i 26 | handler.rowner = true 27 | 28 | export default handler -------------------------------------------------------------------------------- /plugins/owner-join.js: -------------------------------------------------------------------------------- 1 | let linkRegex = /chat.whatsapp.com\/([0-9A-Za-z]{20,24})( [0-9]{1,3})?/i 2 | 3 | let handler = async (m, { conn, text, isOwner }) => { 4 | let [_, code, expired] = text.match(linkRegex) || [] 5 | if (!code) throw 'Link invalid' 6 | let res = await conn.groupAcceptInvite(code) 7 | expired = Math.floor(Math.min(999, Math.max(1, isOwner ? isNumber(expired) ? parseInt(expired) : 0 : 3))) 8 | m.reply(`Berhasil join grup ${res}${expired ? ` selama ${expired} hari` : ''}`) 9 | let chats = global.db.data.chats[res] 10 | if (!chats) chats = global.db.data.chats[res] = {} 11 | if (expired) chats.expired = +new Date() + expired * 1000 * 60 * 60 * 24 12 | } 13 | handler.help = ['join '] 14 | handler.tags = ['owner'] 15 | 16 | handler.command = /^join$/i 17 | handler.rowner = true 18 | 19 | export default handler 20 | 21 | const isNumber = (x) => (x = parseInt(x), typeof x === 'number' && !isNaN(x)) 22 | -------------------------------------------------------------------------------- /plugins/owner-kick.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, participants }) => { 3 | let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id)) 4 | let kickedUser = [] 5 | for (let user of users) 6 | if (user.endsWith('@s.whatsapp.net') && !(participants.find(v => areJidsSameUser(v.id, user)) || { admin: true }).admin) { 7 | const res = await conn.groupParticipantsUpdate(m.chat, [user], 'remove') 8 | kickedUser.concat(res) 9 | await delay(1 * 1000) 10 | } 11 | m.reply(`Succes kick ${kickedUser.map(v => '@' + v.split('@')[0])}`, null, { mentions: kickedUser }) 12 | 13 | } 14 | handler.help = ['kick', '-'].map(v => 'o' + v + ' @user') 15 | handler.tags = ['owner'] 16 | handler.command = /^(okick|o-)$/i 17 | 18 | handler.admin = true 19 | handler.group = true 20 | handler.botAdmin = true 21 | 22 | export default handler 23 | 24 | const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) 25 | -------------------------------------------------------------------------------- /plugins/owner-leavegc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, command }) => { 2 | let group = m.chat 3 | await m.reply('Sayonara , , ! (≧ω≦)ゞ', m.chat) 4 | await conn.groupLeave(group) 5 | } 6 | handler.help = ['leavegc', 'out'] 7 | handler.tags = ['owner'] 8 | handler.command = /^(out|leavegc)$/i 9 | 10 | handler.rowner = true 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/owner-order.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | if (!text) throw `kalo kamu nemu pesan eror, lapor pake perintah ini\n\ncontoh:\n${usedPrefix + command} selamat siang owner, sy menemukan eror seperti berikut ` 3 | if (text.length < 1 ) throw `Laporan terlalu pendek, minimal 10 karakter!` 4 | if (text.length > 1000) throw `Laporan terlalu panjang, maksimal 1000 karakter!` 5 | let teks = `*${htki} ${command.toUpperCase()} ${htka}*\n📮 : ${text}\n*- @${m.sender.split`@`[0]}*` 6 | conn.reply(global.nomorown + '@s.whatsapp.net', m.quoted ? teks + m.quoted.text : teks, null, { 7 | contextInfo: { 8 | mentionedJid: [m.sender] 9 | } 10 | }) 11 | m.reply('☑️ Pesan Telah terkirim ke Owner!\n_*Menunggu confirmasi Dari Owner...*_') 12 | } 13 | handler.command = /^(order)$/i 14 | export default handler -------------------------------------------------------------------------------- /plugins/owner-promote.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, participants }) => { 3 | let users = m.mentionedJid.filter(u => !areJidsSameUser(u, conn.user.id)) 4 | let promoteUser = [] 5 | for (let user of users) 6 | if (user.endsWith('@s.whatsapp.net') && !(participants.find(v => areJidsSameUser(v.id, user)) || { admin: true }).admin) { 7 | const res = await conn.groupParticipantsUpdate(m.chat, [user], 'promote') 8 | await delay(1 * 1000) 9 | } 10 | m.reply('Succes') 11 | 12 | } 13 | handler.help = ['opromote @tag'] 14 | handler.tags = ['owner'] 15 | handler.command = /^(opromote)$/i 16 | 17 | handler.owner = true 18 | handler.group = true 19 | handler.botAdmin = true 20 | 21 | export default handler 22 | 23 | const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) -------------------------------------------------------------------------------- /plugins/owner-restart.js: -------------------------------------------------------------------------------- 1 | import { spawn } from 'child_process' 2 | let handler = async (m, { conn, isROwner, text }) => { 3 | if (!process.send) throw 'Dont: node main.js\nDo: node index.js' 4 | if (global.conn.user.jid == conn.user.jid) { 5 | await m.reply('```R E S T A R T . . .```') 6 | process.send('reset') 7 | } else throw '_eeeeeiiittsssss..._' 8 | } 9 | 10 | handler.help = ['restart'] 11 | handler.tags = ['owner'] 12 | handler.command = /^(res(tart)?)$/i 13 | 14 | handler.rowner = true 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/owner-sesi.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { conn, text }) => { 3 | m.reply('Tunggu Sebentar, Sedang mengambil file sesi mu') 4 | let sesi = await fs.readFileSync('./session.data.json') 5 | return await conn.sendMessage(m.chat, { document: sesi, mimetype: 'application/json', fileName: 'session.data.json' }, { quoted: m }) 6 | } 7 | handler.help = ['getsessi'] 8 | handler.tags = ['owner'] 9 | handler.command = /^(g(et)?ses?si(on)?(data.json)?)$/i 10 | 11 | handler.rowner = true 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/owner-setbotpp.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args }) => { 2 | let bot = conn.user.jid // Bot 3 | let q = m.quoted ? m.quoted : m 4 | let mime = (q.msg || q).mimetype || '' 5 | if (/image/.test(mime)) { 6 | let img = await q.download() 7 | if (!img) throw `Fotonya Gak Ada Kak *┰ω┰*` 8 | conn.updateProfilePicture (bot, img) 9 | conn.reply(m.chat, 'Selesai Mengganti Profil Bot Kak*>ω<*!', m) 10 | } 11 | } 12 | handler.help = ['setbotpp'] 13 | handler.tags = ['owner'] 14 | handler.command = /^(setbotpp)$/i 15 | handler.owner = true 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/owner-sf.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | let handler = async (m, { text, usedPrefix, command }) => { 3 | if (!text) throw `uhm.. teksnya mana?\n\npenggunaan:\n${usedPrefix + command} \n\ncontoh:\n${usedPrefix + command} plugins/melcanz.js` 4 | if (!m.quoted.text) throw `balas pesan nya!` 5 | let path = `${text}` 6 | await fs.writeFileSync(path, m.quoted.text) 7 | m.reply(`tersimpan di ${path}`) 8 | } 9 | handler.help = ['sf'].map(v => v + ' ') 10 | handler.tags = ['owner'] 11 | handler.command = /^sf$/i 12 | 13 | handler.rowner = true 14 | export default handler -------------------------------------------------------------------------------- /plugins/owner-tagall.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, participants, isAdmin, isOwner }) => { 2 | let users = participants.map(u => u.id).filter(v => v !== conn.user.jid) 3 | m.reply(`${text ? `${text}\n` : ''}┌─「 Tag All 」\n` + users.map(v => '│◦❒ @' + v.replace(/@.+/, '')).join`\n` + '\n└────', null, { 4 | mentions: users 5 | }) 6 | } 7 | 8 | handler.help = ['o-tagall'] 9 | handler.tags = ['owner'] 10 | handler.command = ['o-tagall'] 11 | handler.owner = true 12 | handler.group = true 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/owner-unbanchat.js: -------------------------------------------------------------------------------- 1 | let handler = async (m) => { 2 | global.db.data.chats[m.chat].isBanned = false 3 | m.reply('Done!') 4 | } 5 | handler.help = ['unbanchat'] 6 | handler.tags = ['owner'] 7 | handler.command = /^(unbanchat|ubnc)$/i 8 | handler.owner = true 9 | 10 | export default handler -------------------------------------------------------------------------------- /plugins/owner-unbanuser.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | if (!text) throw 'Who wants to be banned?' 3 | let who 4 | if (m.isGroup) who = m.mentionedJid[0] 5 | else who = m.chat 6 | if (!who) throw 'Tag??' 7 | let users = global.db.data.users 8 | users[who].banned = false 9 | conn.reply(m.chat, 'sᴜᴄᴄᴇs!', m) 10 | } 11 | handler.help = ['unban'] 12 | handler.tags = ['owner'] 13 | handler.command = /^unban(user)?$/i 14 | handler.rowner = true 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/ppcouple.js: -------------------------------------------------------------------------------- 1 | /*import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn }) => { 4 | let res = await fetch(global.API('LeysCoder', '/api/ppcouple', {}, 'apikey')) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | if (!json.status) throw json 8 | await conn.sendFile(m.chat, json.result.male, '', 'Nih PP Yg Cowo', m) 9 | await conn.sendFile(m.chat, json.result.female, '', 'Dan Ni PP YgCewe', m) 10 | } 11 | handler.help = ['ppcouple', 'ppcp'] 12 | handler.tags = ['internet', 'limitmenu'] 13 | handler.command = /^(pp(cp|couple))$/i 14 | handler.limit = true 15 | 16 | export default handler*/ 17 | -------------------------------------------------------------------------------- /plugins/quotes-bucin.js: -------------------------------------------------------------------------------- 1 | import { bucin } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => conn.sendButton(m.chat, await bucin(), author, [ 4 | ['Next', `${usedPrefix+command}`], 5 | ], m) 6 | 7 | handler.help = ['q-bucin'] 8 | handler.tags = ['quotes'] 9 | handler.command = /^(q-bucin)$/i 10 | 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/quotes-dare.js: -------------------------------------------------------------------------------- 1 | import { dare } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, usedPrefix }) => conn.sendButton(m.chat, await dare(), author, [ 4 | ['Dare', `${usedPrefix}dare`], 5 | ['Truth', `${usedPrefix}truth`] 6 | ], m) 7 | 8 | handler.help = ['dare'] 9 | handler.tags = ['quotes', 'fun'] 10 | handler.command = /^(dare)$/i 11 | 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/quotes-truth.js: -------------------------------------------------------------------------------- 1 | import { truth } from '@bochilteam/scraper' 2 | 3 | let handler = async (m, { conn, usedPrefix }) => conn.sendButton(m.chat, await truth(), author, [ 4 | ['Truth', `${usedPrefix}truth`], 5 | ['Dare', `${usedPrefix}dare`] 6 | ], m) 7 | 8 | handler.help = ['truth'] 9 | handler.tags = ['quotes', 'fun'] 10 | handler.command = /^(truth)$/i 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-bonus.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | if (new Date - global.db.data.users[m.sender].lastclaim > 86400000) { 3 | conn.reply(m.chat, 'Nih Gw Kasih Modal Buat beli limit\n💰50.000 Rupiah', m) 4 | global.db.data.users[m.sender].money += 50000 5 | global.db.data.users[m.sender].lastclaim = new Date * 1 6 | } else conn.reply(m.chat, '📮Bagi link bokep 100.000:v', m) 7 | } 8 | handler.help = ['bonus', 'hadiah'] 9 | handler.tags = ['rpg'] 10 | handler.command = /^(bonus|hadiah)$/i 11 | handler.owner = true 12 | handler.mods = false 13 | handler.premium = false 14 | handler.group = false 15 | handler.private = false 16 | 17 | handler.admin = false 18 | handler.botAdmin = false 19 | 20 | handler.fail = null 21 | handler.exp = 0 22 | 23 | export default handler 24 | 25 | -------------------------------------------------------------------------------- /plugins/rpg-buah.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, usedPrefix, text }) => { 3 | let user = global.db.data.users[m.sender] 4 | let ini_txt = `[ *GUDANG BUAH KAMU* ]\n\n` 5 | ini_txt += `🍌 ${user.pisang} Pisang\n` 6 | ini_txt += `🍇 ${user.anggur} Anggur\n` 7 | ini_txt += `🥭 ${user.mangga} Mangga\n` 8 | ini_txt += `🍊 ${user.jeruk} Jeruk\n` 9 | ini_txt += `🍎 ${user.apel} Apel\n\n` 10 | ini_txt += `Gunakan command *${usedPrefix}sell* untuk menjual.` 11 | m.reply(ini_txt) 12 | } 13 | 14 | handler.menufun = ['buah'] 15 | handler.tagsfun = ['rpg'] 16 | handler.command = /^((list)?(buah|fruits?))$/i 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-cek.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let imgr = flaaa.getRandom() 3 | let user = global.db.data.users[m.sender] 4 | const caption = ` 5 | ⛊「 *B A N K U S E R* 」 6 | │ 📛 *Name:* ${user.registered ? user.name : conn.getName(m.sender)} 7 | │ 💳 *Atm:* ${user.atm > 0 ? 'Level ' + user.atm : '✖️'} 8 | │ 🏛️ *Bank:* ${user.bank} 💲 / ${user.fullatm} 💲 9 | │ 💹 *Money:* ${user.money} 💲 10 | │ 🤖 *Robo:* ${user.robo > 0 ? 'Level ' + user.robo : '✖️'} 11 | │ 🌟 *Status:* ${user.premiumTime > 0 ? 'Premium' : 'Free'} 12 | │ 📑 *Registered:* ${user.registered ? 'Yes':'No'} 13 | ╰──┈┈⭑ 14 | `.trim() 15 | conn.sendButton(m.chat, caption, global.wm, imgr + 'bank', [`Inventory`, '.inv'],m) 16 | } 17 | handler.help = ['bank'] 18 | handler.tags = ['rpg'] 19 | handler.command = /^(bank((total)?|cek)|cekbank)$/i 20 | 21 | handler.register = false 22 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-cupon.js: -------------------------------------------------------------------------------- 1 | let handler = async (m) => { 2 | let who 3 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender 4 | else who = m.sender 5 | if (typeof global.db.data.users[who] == 'undefined') throw 'Pengguna tidak ada didalam data base' 6 | m.reply(`${global.db.data.users[who].cupon} Your cupon\nCupon ini adalah sebuah hadiah dari owner\n\nCara menggunakan:\n/open cupon 1`) 7 | } 8 | handler.help = ['cupon [@user]'] 9 | handler.tags = ['xp'] 10 | handler.command = /^(cupon)$/i 11 | handler.limit = true 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/rpg-daily.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 9999, 3 | money: 4999, 4 | potion: 5, 5 | } 6 | const cooldown = 86400000 7 | let handler = async (m,{ conn} ) => { 8 | let user = global.db.data.users[m.sender] 9 | if (new Date - user.lastclaim < cooldown) throw `You have already claimed this daily claim!, wait for *${((user.lastclaim + cooldown) - new Date()).toTimeString()}*` 10 | let text = '' 11 | for (let reward of Object.keys(rewards)) { 12 | if (!(reward in user)) continue 13 | user[reward] += rewards[reward] 14 | text += `*+${rewards[reward]}* ${global.rpg.emoticon(reward)}${reward}\n` 15 | } 16 | conn.sendButton(m.chat,`${htki} DAILY ${htka}`, text.trim(), null, [['Inventory', '.inv'], ['Weekly', '.weekly']],m) 17 | user.lastclaim = new Date * 1 18 | } 19 | handler.help = ['daily', 'claim'] 20 | handler.tags = ['xp'] 21 | handler.command = /^(daily|claim)$/i 22 | 23 | handler.cooldown = cooldown 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-hourly.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 9999, 3 | money: 4999, 4 | potion: 5, 5 | iron: 2, 6 | legendary: 1, 7 | emas: 2, 8 | string: 3, 9 | limit: 1, 10 | } 11 | const cooldown = 3600000 12 | let handler = async (m,{ conn} ) => { 13 | let user = global.db.data.users[m.sender] 14 | if (new Date - user.lasthourly < cooldown) throw `You have already claimed this hourly claim!, wait for *${((user.lasthourly + cooldown) - new Date()).toTimeString()}*` 15 | let text = '' 16 | for (let reward of Object.keys(rewards)) { 17 | if (!(reward in user)) continue 18 | user[reward] += rewards[reward] 19 | text += `*+${rewards[reward]}* ${global.rpg.emoticon(reward)}${reward}\n` 20 | } 21 | conn.sendButton(m.chat,`${htki} HOURLY ${htka}`, text.trim(), null, [['Inventory', '.inv'], ['Daily', '.daily']],m) 22 | user.lasthourly = new Date * 1 23 | } 24 | handler.help = ['hourly'] 25 | handler.tags = ['xp'] 26 | handler.command = /^(hourly)$/i 27 | 28 | handler.cooldown = cooldown 29 | 30 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-monthly.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 50000, 3 | money: 49999, 4 | potion: 10, 5 | mythic: 3, 6 | legendary: 1 7 | } 8 | 9 | const cooldown = 2592000000 10 | let handler = async (m) => { 11 | let user = global.db.data.users[m.sender] 12 | if (new Date - user.lastmonthly < cooldown) throw `You have already claimed this monthly claim, wait for *${((user.lastmonthly + cooldown) - new Date()).toTimeString()}*` 13 | let text = '' 14 | for (let reward of Object.keys(rewards)) if (reward in user) { 15 | user[reward] += rewards[reward] 16 | text += `*+${rewards[reward]}* ${rpg.emoticon(reward)}${reward}\n` 17 | } 18 | conn.sendButton(m.chat,`${htki} MONTHLY ${htka}`, text.trim(), null, [['Inventory', '.inv'], ['Menu', '.menu']],m) 19 | user.lastmonthly = new Date * 1 20 | } 21 | handler.help = ['monthly'] 22 | handler.tags = ['rpg'] 23 | handler.command = /^(monthly)$/i 24 | 25 | handler.cooldown = cooldown 26 | 27 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-nabung.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 1 2 | let handler = async (m, { conn, command, args }) => { 3 | let user = global.db.data.users[m.sender] 4 | let count = command.replace(/^nabung/i, '') 5 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].money / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 6 | count = Math.max(1, count) 7 | if (user.atm == 0) return m.reply('kamu belum mempuyai atm !') 8 | if (user.bank > user.fullatm) return m.reply('Uang dibankmu sudah penuh!') 9 | if (count > user.fullatm - user.bank) return m.reply('Uangnya ga muat dibank') 10 | if (global.db.data.users[m.sender].money >= xpperlimit * count) { 11 | global.db.data.users[m.sender].money -= xpperlimit * count 12 | global.db.data.users[m.sender].bank += count 13 | conn.reply(m.chat, `Sukses menabung sebesar ${count} Money 💹`, m) 14 | } else conn.reply(m.chat, `[❗] Uang anda tidak mencukupi untuk menabung ${count} money 💹`, m) 15 | } 16 | handler.help = ['nabung '] 17 | handler.tags = ['rpg'] 18 | handler.command = /^nabung([0-9]+)|nabung|nabungall$/i 19 | handler.group = true 20 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-nguli.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | if (new Date - global.db.data.users[m.sender].lastnguli > 86400000) { 3 | global.db.data.users[m.sender].limit += 10 4 | m.reply('_Selamat kamu mendapatkan +10 limit_') 5 | global.db.data.users[m.sender].lastnguli = new Date * 1 6 | } else m.reply('Anda sudah mengklaim upah nguli hari ini') 7 | } 8 | handler.help = ['nguli'] 9 | handler.tags = ['rpg'] 10 | handler.command = /^(nguli)$/i 11 | handler.group = true 12 | handler.fail = null 13 | 14 | 15 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-pointxp.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { args, text, conn }) => { 2 | 3 | 4 | if (!args[0] || !args[1]) return m.reply("pake gini .expoint strength 1") 5 | if(isNaN(args[1])) return m.reply("Pake angka") 6 | let human = ["strength", "mana", "stamina", "agility", "intelligence"] 7 | let hum = args[0].toLowerCase() // t 8 | 9 | if (!human.includes(hum)) return m.reply(` 10 | List exchange point xp 11 | ${human.map(hum => `› ${hum}`).join('\n')}`) 12 | 13 | let user = global.db.data.users[m.sender] 14 | if (user.pointxp == 0) return m.reply(`your point xp not enough`) 15 | user.hum += args[1] 16 | user.pointxp -= args[1] 17 | 18 | m.reply(`Now Your ${hum} is ${user.hum}!`) 19 | } 20 | handler.help = ['expoint **'] 21 | handler.tags = ['rpg'] 22 | handler.command = /^(ex(change)?(point)?)$/i 23 | 24 | export default handler 25 | -------------------------------------------------------------------------------- /plugins/rpg-tarik.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 1 2 | let handler = async (m, { conn, command, args }) => { 3 | let user = global.db.data.users[m.sender] 4 | let count = command.replace(/^tarik/i, '') 5 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].bank / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 6 | count = Math.max(1, count) 7 | if (user.atm == 0) return m.reply('kamu belum mempuyai atm !') 8 | if (global.db.data.users[m.sender].bank >= xpperlimit * count) { 9 | global.db.data.users[m.sender].bank -= xpperlimit * count 10 | global.db.data.users[m.sender].money += count 11 | conn.reply(m.chat, `Sukses menarik sebesar ${count} Money 💹`, m) 12 | } else conn.reply(m.chat, `[❗] Uang dibank anda tidak mencukupi untuk ditarik sebesar ${count} money 💹`, m) 13 | } 14 | handler.help = ['tarik '] 15 | handler.tags = ['rpg'] 16 | handler.command = /^tarik([0-9]+)|tarik|tarikall$/i 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/rpg-weekly.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 15000, 3 | money: 35999, 4 | potion: 9, 5 | } 6 | const cooldown = 604800000 7 | let handler = async (m) => { 8 | let user = global.db.data.users[m.sender] 9 | if (new Date - user.lastweekly < cooldown) throw `You have already claimed this daily claim!, wait for *${((user.lastweekly + cooldown) - new Date()).toTimeString()}*` 10 | let text = '' 11 | for (let reward of Object.keys(rewards)) { 12 | if (!(reward in user)) continue 13 | user[reward] += rewards[reward] 14 | text += `*+${rewards[reward]}* ${global.rpg.emoticon(reward)}${reward}\n` 15 | } 16 | conn.sendButton(m.chat,`${htki} WEEKLY ${htka}`, text.trim(), null, [['Inventory', '.inv'], ['Monthly', '.monthly']],m) 17 | user.lastweekly = new Date * 1 18 | } 19 | handler.help = ['weekly'] 20 | handler.tags = ['rpg'] 21 | handler.command = /^(weekly)$/i 22 | 23 | handler.cooldown = cooldown 24 | 25 | export default handler -------------------------------------------------------------------------------- /plugins/sholawat.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import fetch from 'node-fetch' 3 | let handler = async (m, { conn, usedPrefix: _p }) => { 4 | let info = fs.readFileSync('./mp3/sholawat.opus') 5 | 6 | let td = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' 7 | 8 | conn.reply(m.chat, info, m, { quoted: fkontak },{ contextInfo: { externalAdReply: { showAdAttribution: true, 9 | mediaUrl: "https://www.youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow", 10 | mediaType: 2, 11 | description: "https://www.youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow", 12 | title: 'whmods-ᴍᴜʟᴛɪᴅᴇᴠɪᴄᴇ', 13 | body: wm, 14 | thumbnail: thumb, 15 | sourceUrl: sig }}}) 16 | } 17 | handler.customPrefix = /^(sholawat)$/i 18 | handler.command = new RegExp 19 | 20 | export default handler -------------------------------------------------------------------------------- /plugins/sound120.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import fetch from 'node-fetch' 3 | let handler = async (m, { conn, usedPrefix: _p }) => { 4 | let info = fs.readFileSync('./mp3/soundultah.mp3') 5 | 6 | let td = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' 7 | 8 | conn.reply(m.chat, info, m, { quoted: fkontak },{ contextInfo: { externalAdReply: { showAdAttribution: true, 9 | mediaUrl: "https://www.youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow", 10 | mediaType: 2, 11 | description: "https://www.youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow", 12 | title: 'whmods-ᴍᴜʟᴛɪᴅᴇᴠɪᴄᴇ', 13 | body: wm, 14 | thumbnail: thumb, 15 | sourceUrl: sig }}}) 16 | } 17 | handler.command = ['soundultah'] 18 | handler.help = ['soundultah'] 19 | handler.tags = ['sounds'] 20 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-attp.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text 3 | conn.sendFile(m.chat, global.API('xteam', '/attp', { file: '', text: teks }), 'attp.webp', '', m, false, { asSticker: true }) 4 | } 5 | handler.help = ['attp '] 6 | handler.tags = ['sticker'] 7 | 8 | handler.command = /^attp$/i 9 | 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/sticker-bonk.js: -------------------------------------------------------------------------------- 1 | import jimp from 'jimp' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let img = await jimp.read('https://i.imgur.com/nav6WWX.png'), 5 | who = m.mentionedJid?.[0] || m.quoted?.sender || m.sender, 6 | avatar = await jimp.read(await conn.profilePictureUrl(who, 'image')), 7 | bonk = await img.composite(avatar.resize(128, 128), 120, 90, { 8 | mode: 'dstOver', 9 | opacitySource: 1, 10 | opacityDest: 1 11 | }).getBufferAsync('image/png') 12 | conn.sendMessage(m.chat, { image: bonk }, { quoted: m }) 13 | } 14 | handler.command = /^(bonk)$/i 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/sticker-colong.js: -------------------------------------------------------------------------------- 1 | // 2 | let { MessageType } = (await import('@adiwajshing/baileys')).default 3 | import { sticker } from '../lib/sticker.js' 4 | let handler = async (m, { conn, args }) => { 5 | let stiker = false 6 | try { 7 | let q = m.quoted ? m.quoted : m 8 | let mime = (q.msg || q).mimetype || '' 9 | if (/image|video/.test(mime)) { 10 | let img = await q.download() 11 | if (!img) throw 'Reply stiker nya!' 12 | stiker = await sticker(img, false, '🍀', '🍭 • WH-MODS-BOT-V1 :\nBY WH MODS DEB') 13 | } else if (args[0]) stiker = await sticker(false, args[0], '🍀', '🎮 • SUBSCRIBE :\n https://youtube.com/channel/UCMx4e8anOq_Olt2nMSv0Cow') 14 | } finally { 15 | if (stiker) conn.sendFile(m.chat, stiker, 'sticker.webp', '', m) 16 | else throw 'Conversion failed' 17 | } 18 | } 19 | handler.help = ['colong'] 20 | handler.tags = ['sticker'] 21 | handler.command = /^colong$/i 22 | handler.owner = true 23 | 24 | export default handler 25 | -------------------------------------------------------------------------------- /plugins/sticker-getexif.js: -------------------------------------------------------------------------------- 1 | import { format } from 'util' 2 | const { default: { Image } } = await import('node-webpmux') 3 | 4 | let handler = async (m) => { 5 | if (!m.quoted) return m.reply('Tag stikernya!') 6 | if (/sticker/.test(m.quoted.mtype)) { 7 | let img = new Image() 8 | await img.load(await m.quoted.download()) 9 | m.reply(format(JSON.parse(img.exif.slice(22).toString()))) 10 | } 11 | } 12 | handler.help = ['getexif'] 13 | handler.tags = ['sticker'] 14 | 15 | handler.command = ['getexif'] 16 | 17 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-meme.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | import { sticker } from '../lib/sticker.js' 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let [atas, bawah] = text.split`|` 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (q.msg || q).mimetype || '' 7 | if (!mime) throw `balas gambar dengan perintah\n\n${usedPrefix + command} <${atas ? atas : 'teks atas'}>|<${bawah ? bawah : 'teks bawah'}>` 8 | if (!/image\/(jpe?g|png)/.test(mime)) throw `_*Mime ${mime} tidak didukung!*_` 9 | let img = await q.download() 10 | let url = await uploadImage(img) 11 | let meme = `https://api.memegen.link/images/custom/${encodeURIComponent(atas ? atas : '')}/${encodeURIComponent(bawah ? bawah : '')}.png?background=${url}` 12 | let stiker = await sticker(false, meme, global.packname, global.author) 13 | if (stiker) await conn.sendFile(m.chat, stiker, '', author, m, '', { asSticker: 1 }) 14 | } 15 | handler.help = ['smeme |'] 16 | handler.tags = ['tools', 'limitmenu'] 17 | handler.command = /^(smeme)$/i 18 | 19 | handler.limit = true 20 | 21 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-toimg.js: -------------------------------------------------------------------------------- 1 | import { webp2png } from '../lib/webp2mp4.js' 2 | let handler = async (m, { conn, usedPrefix, command }) => { 3 | const notStickerMessage = `Reply sticker with command *${usedPrefix + command}*` 4 | if (!m.quoted) throw notStickerMessage 5 | const q = m.quoted || m 6 | let mime = q.mediaType || '' 7 | if (!/sticker/.test(mime)) throw notStickerMessage 8 | let media = await q.download() 9 | let out = await webp2png(media).catch(_ => null) || Buffer.alloc(0) 10 | await conn.sendFile(m.chat, out, 'out.png', '*DONE (≧ω≦)ゞ*', m) 11 | } 12 | handler.help = ['toimg (reply)'] 13 | handler.tags = ['sticker'] 14 | handler.command = ['toimg'] 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-tovideo.js: -------------------------------------------------------------------------------- 1 | import { webp2mp4 } from '../lib/webp2mp4.js' 2 | import { ffmpeg } from '../lib/converter.js' 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | if (!m.quoted) throw `Balas stiker/audio yang ingin diubah menjadi video dengan perintah ${usedPrefix + command}` 5 | let mime = m.quoted.mimetype || '' 6 | if (!/webp|audio/.test(mime)) throw `Balas stiker/audio yang ingin diubah menjadi video dengan perintah ${usedPrefix + command}` 7 | let media = await m.quoted.download() 8 | let out = Buffer.alloc(0) 9 | if (/webp/.test(mime)) { 10 | out = await webp2mp4(media) 11 | } else if (/audio/.test(mime)) { 12 | out = await ffmpeg(media, [ 13 | '-filter_complex', 'color', 14 | '-pix_fmt', 'yuv420p', 15 | '-crf', '51', 16 | '-c:a', 'copy', 17 | '-shortest' 18 | ], 'mp3', 'mp4') 19 | } 20 | await conn.sendFile(m.chat, out, 'out.mp4', '*DONE*', m, 0, { thumbnail: out }) 21 | } 22 | handler.help = ['tovideo'] 23 | handler.tags = ['sticker'] 24 | 25 | handler.command = ['tovideo'] 26 | 27 | export default handler -------------------------------------------------------------------------------- /plugins/sticker-ttp.js: -------------------------------------------------------------------------------- 1 | import { sticker } from '../lib/sticker.js' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text 5 | let stiker = await sticker(null, global.API('xteam', '/ttp', { file: '', text: teks }), global.packname, global.author) 6 | if (stiker) return conn.sendFile(m.chat, stiker, 'sticker.webp', '', m) 7 | throw stiker.toString() 8 | } 9 | handler.help = ['ttp '] 10 | handler.tags = ['sticker'] 11 | 12 | handler.command = /^ttp$/i 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/sticker-wm.js: -------------------------------------------------------------------------------- 1 | import { addExif } from '../lib/sticker.js' 2 | 3 | 4 | let handler = async (m, { conn, text }) => { 5 | if (!m.quoted) throw 'Quoted the sticker!' 6 | let stiker = false 7 | try { 8 | let [packname, ...author] = text.split('|') 9 | author = (author || []).join('|') 10 | let mime = m.quoted.mimetype || '' 11 | if (!/webp/.test(mime)) throw 'Reply sticker!' 12 | let img = await m.quoted.download() 13 | if (!img) throw 'Reply a sticker!' 14 | stiker = await addExif(img, packname || '', author || '') 15 | } catch (e) { 16 | console.error(e) 17 | if (Buffer.isBuffer(e)) stiker = e 18 | } finally { 19 | if (stiker) conn.sendFile(m.chat, stiker, 'wm.webp', '', m, false, { asSticker: true }) 20 | else throw 'Conversion failed' 21 | } 22 | } 23 | handler.help = ['wm |'] 24 | handler.tags = ['sticker'] 25 | handler.command = /^wm$/i 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/store-addlist.js: -------------------------------------------------------------------------------- 1 | const { proto } = (await import('@adiwajshing/baileys')).default 2 | 3 | let handler = async (m, { conn, text, command, usedPrefix }) => { 4 | let M = proto.WebMessageInfo; 5 | if (!m.quoted) throw `balas pesan dengan perintah *${usedPrefix + command}*`; 6 | if (!text) throw `penggunaan: ${usedPrefix + command} \n\ncontoh:\n${usedPrefix + command} DM FF`; 7 | let msgs = db.data.msgs 8 | if (text in msgs) throw `'${text}' telah Terdaftar di Data List` 9 | msgs[text] = M.fromObject(await m.getQuotedObj()).toJSON() 10 | m.reply(`berhasil menambahkan ${text} ke List\n\nakses dengan mengetik namanya`.trim()) 11 | } 12 | handler.help = ['list'].map(v => 'add' + v + ' ') 13 | handler.tags = ['admin'] 14 | handler.command = /^addlist$/i 15 | handler.premium = true 16 | handler.owner = true 17 | 18 | 19 | export default handler -------------------------------------------------------------------------------- /plugins/store-dellist.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, usedPrefix, command }) => { 2 | if (!text) throw `gunakan *${usedPrefix}liststore* untuk melihat daftar pesan yg tersimpan.` 3 | let msgs = db.data.msgs 4 | if (!(text in msgs)) throw `'${text}' tidak terdaftar di daftar pesan.` 5 | delete msgs[text] 6 | m.reply(`\n [💬] berhasil menghapus pesan di daftar List dengan nama '${text}'.\n`) 7 | } 8 | handler.help = ['list'].map(v => 'del' + v + ' ') 9 | handler.tags = ['admin'] 10 | handler.command = /^dellist$/i 11 | handler.group = true 12 | handler.premium = true 13 | handler.admin = true 14 | export default handler -------------------------------------------------------------------------------- /plugins/store-list.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, command }) => { 2 | let msgs = db.data.msgs 3 | let msg = (Object.entries(msgs).map(([nama, isi]) => { return { nama, ...isi } })).map(v => v.nama) 4 | let row = Object.keys(msg).map(v => ({ 5 | title: msg[v], 6 | description: '', 7 | rowId: msg[v] 8 | })) 9 | let button = { 10 | buttonText: 'LIST STORE', 11 | description: 'Berikut daftar Menu yg Ada di List store...', 12 | footerText: wm 13 | } 14 | if (msg[0]) return await conn.sendListM(m.chat, button, row, m) 15 | else throw `\nbelum ada Menu yg Ada di list store.\nketik *${usedPrefix + command} * untuk menambahkan daftar menu.\n` 16 | } 17 | handler.help = ['list'] 18 | handler.tags = ['admin'] 19 | handler.command = /^list$/ 20 | 21 | export default handler -------------------------------------------------------------------------------- /plugins/tool-apksearch.js: -------------------------------------------------------------------------------- 1 | import gplay from 'google-play-scraper' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | if (!text) throw 'Input Query' 5 | let res = await gplay.search({ term: text }) 6 | if (!res.length) throw `Query "${text}" not found :/` 7 | let opt = { contextInfo: { externalAdReply: { title: res[0].title, body: res[0].summary, thumbnail: (await conn.getFile(res[0].icon)).data, sourceUrl: res[0].url }}} 8 | res = res.map((v) => `*Title:* ${v.title}\n*Dev:* ${v.developer}\n*Price:* ${v.priceText}\n*Score:* ${v.scoreText}\n*Link:* ${v.url}`).join`\n\n` 9 | m.reply(res, null, opt) 10 | } 11 | handler.help = ['apksearch'] 12 | handler.tags = ['tools'] 13 | handler.command = /^(apksearch)$/i 14 | 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/tool-blur.js: -------------------------------------------------------------------------------- 1 | import jimp from 'jimp' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let image = m.message?.imageMessage 5 | ? await m.download() 6 | : /image/.test(m.quoted?.mediaType) 7 | ? await m.quoted.download() 8 | : m.mentionedJid?.[0] 9 | ? await conn.profilePictureUrl(m.mentionedJid[0], 'image') 10 | : await conn.profilePictureUrl(m.quoted?.sender || m.sender, 'image') 11 | if (!image) throw `Couldn't fetch the required Image` 12 | let level = text || '5', img = await jimp.read(image) 13 | img.blur(isNaN(level) ? 5 : parseInt(level)) 14 | img.getBuffer('image/jpeg', (err, buffer) => { 15 | if (err) throw err?.message || `Couldn't blur the image` 16 | m.reply(buffer) 17 | }) 18 | } 19 | handler.command = /^(blur)$/i 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/tool-carigroup.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { text, usedPrefix, command }) => { 3 | if (!text) throw `uhm.. cari apa?\n\ncontoh:\n${usedPrefix + command} mabar` 4 | 5 | let json = await fetch(`https://anabotofc.herokuapp.com/api/carigrup?apikey=AnaBot&query=${text}`) 6 | let jsons = await json.json() 7 | let caption = `*⎔┉━「 ${command} 」━┉⎔*` 8 | for (let x of jsons.result) { 9 | caption += ` 10 | *Nama* : ${x.title} 11 | *Link :* ${x.link} 12 | *Desc :* ${x.desc} 13 | `} 14 | return m.reply(caption) 15 | 16 | } 17 | handler.help = ['carigrup '] 18 | handler.tags = ['tools'] 19 | 20 | handler.command = /^carig(ro?up|c)/i 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/tool-chord.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | 3 | let handler = async(m, { conn, text, usedPrefix }) => { 4 | 5 | if (!text) return conn.reply(m.chat, 'Contoh penggunaan: ' + usedPrefix + 'chord hanya rindu', m) 6 | axios.get(`https://docs-jojo.herokuapp.com/api/chord?q=` + text) 7 | .then((res) => { 8 | let hasil = `*• Chord Lagu ${text} :*\n${res.data.result}` 9 | conn.reply(m.chat, hasil, m) 10 | }) 11 | .catch(_ => m.reply('Chord Lagu Tidak Ditemukan!')) 12 | } 13 | handler.help = ['chord '] 14 | handler.tags = ['tools', 'limitmenu'] 15 | handler.command = /^(chord)$/i 16 | handler.limit = true 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/tool-delete.js: -------------------------------------------------------------------------------- 1 | let handler = function (m) { 2 | if (!m.quoted) throw false 3 | let { chat, fromMe, isBaileys } = m.quoted 4 | if (!fromMe) throw false 5 | //if (!isBaileys) throw 'Pesan tersebut bukan dikirim oleh bot!' 6 | conn.sendMessage(chat, { delete: m.quoted.vM.key }) 7 | } 8 | handler.help = ['del', 'delete'] 9 | handler.tags = ['tools'] 10 | 11 | handler.command = /^del(ete)?$/i 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/tool-emojimix.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { Sticker } from 'wa-sticker-formatter' 3 | 4 | let handler = async (m, { conn, text, usedPrefix, command }) => { 5 | let [emoji1, emoji2] = text.split`+` 6 | if (emoji1 && emoji2) { 7 | let url = API('violetics', '/api/media/emojimix', { emoji1, emoji2 }, 'apikey') 8 | let res = await fetch(url) 9 | if (res.status !== 200) throw res.statusText 10 | let stiker = await (new Sticker(url)).toMessage() 11 | conn.sendMessage(m.chat, stiker, { quoted: m }) 12 | } else throw `Ex: ${usedPrefix+command} ${decodeURI('%F0%9F%92%80')}+${decodeURI('%F0%9F%92%80')}` 13 | } 14 | handler.help = ['emojimix'] 15 | handler.tags = ['tools', 'limitmenu'] 16 | handler.command = /^(emojimix)$/i 17 | handler.limit = true 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/tool-hlh.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, text }) => { 2 | let ter = command[1].toLowerCase() 3 | let txt = m.quoted ? m.quoted.text ? m.quoted.text : text ? text : m.text : text ? text : m.text 4 | await m.reply(txt.replace(/[aiueo]/g, ter).replace(/[AIUEO]/g, ter.toUpperCase())) 5 | } 6 | handler.help = [...'aiueo'].map(v => `h${v}l${v}h `) 7 | handler.tags = ['tools'] 8 | handler.command = /^h([aiueo])l\1h/i 9 | 10 | export default handler -------------------------------------------------------------------------------- /plugins/tool-nobg.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | import { webp2png } from '../lib/webp2mp4.js' 3 | 4 | let handler = async (m, { conn, usedPrefix, command }) => { 5 | let q = m.quoted ? m.quoted : m, 6 | mime = (q.msg || q).mimetype || q.mediaType || '' 7 | if (/image/g.test(mime)) { 8 | let img = await webp2png(await q.download()), 9 | url = API('violetics', '/api/media/removebg', { img }, 'apikey') 10 | conn.sendMessage(m.chat, { image: { url }}, { quoted: m }) 11 | } else throw `Send/reply an image with command ${usedPrefix + command}` 12 | } 13 | handler.help = ['removebg'] 14 | handler.tags = ['tools'] 15 | handler.command = /^(no|remove)bg$/i 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/tool-ocr.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { webp2png } from '../lib/webp2mp4.js' 3 | 4 | let handler = async (m, { conn }) => { 5 | let q = m.quoted ? m.quoted : m, 6 | mime = (q || q.msg).mimetype || q.mediaType || '' 7 | if (/image/.test(mime)) { 8 | let url = await webp2png(await q.download()), 9 | res = await fetch(API('https://api.ocr.space', '/parse/imageurl', { apikey: '8e65f273cd88957', url })) 10 | if (res.status !== 200) throw res.statusText 11 | let json = await res.json() 12 | m.reply(json?.ParsedResults?.[0]?.ParsedText) 13 | } else throw 'Reply an image!' 14 | } 15 | 16 | handler.help = ['ocr', 'totext'] 17 | handler.tags = ['tools'] 18 | handler.command = /^(ocr|totext)$/i 19 | handler.limit = true 20 | 21 | export default handler 22 | 23 | -------------------------------------------------------------------------------- /plugins/tool-qrcode.js: -------------------------------------------------------------------------------- 1 | 2 | import { toDataURL } from 'qrcode' 3 | 4 | let handler = async (m, { conn, text }) => conn.sendFile(m.chat, await toDataURL(text.slice(0, 2048), { scale: 8 }), 'qrcode.png', '¯\\_(ツ)_/¯', m) 5 | 6 | handler.help = ['', 'code'].map(v => 'qr' + v + ' ') 7 | handler.tags = ['tools'] 8 | handler.command = /^qr(code)?$/i 9 | 10 | 11 | export default handler -------------------------------------------------------------------------------- /plugins/tool-react.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix: _p, args, text, usedPrefix}) => { 2 | 3 | if (!m.quoted) throw 'Balas Chatnya !' 4 | if (text.length > 2) throw 'Cuma Untuk 1 Emoji!' 5 | if (!text) throw `📍 Contoh Penggunaan :\n${usedPrefix}react 🗿` 6 | conn.relayMessage(m.chat, { reactionMessage: { 7 | key: { 8 | id: m.quoted.id, 9 | remoteJid: m.chat, 10 | fromMe: true 11 | }, 12 | text: `${text}`}}, { messageId: m.id }) 13 | } 14 | handler.help = ['react '] 15 | handler.tags = ['tools'] 16 | handler.command = /^(react)$/i 17 | 18 | export default handler -------------------------------------------------------------------------------- /plugins/tool-readmore.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let [l, r] = text.split`|` 3 | if (!l) l = '' 4 | if (!r) r = '' 5 | conn.reply(m.chat, l + readMore + r, m) 6 | } 7 | handler.help = ['readmore', 'spoiler'].map(v => v + ' |') 8 | handler.tags = ['tools'] 9 | handler.command = /^(spoiler|hidetext|readmore|selengkapnya)$/i 10 | 11 | export default handler 12 | 13 | const more = String.fromCharCode(8206) 14 | const readMore = more.repeat(4001) -------------------------------------------------------------------------------- /plugins/tool-readviewonce.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | if (!m.quoted) throw 'where\'s message?' 3 | if (m.quoted.mtype !== 'viewOnceMessage') throw 'Itu bukan pesan viewOnce' 4 | const msg = await conn.loadMessage(m.quoted.id) 5 | if (!msg) throw 'can\'t open message!' 6 | await conn.copyNForward(m.chat, msg, true, { readViewOnce: true }) 7 | } 8 | 9 | handler.help = ['readviewonce'] 10 | handler.tags = ['tools'] 11 | handler.command = /^readviewonce/i 12 | 13 | export default handler -------------------------------------------------------------------------------- /plugins/tool-sendquote.js: -------------------------------------------------------------------------------- 1 | async function handler(m) { 2 | if (!m.quoted) throw 'reply pesan!' 3 | let q = await m.getQuotedObj() 4 | if (!q.quoted) throw 'pesan yang anda reply tidak mengandung reply!' 5 | await q.quoted.copyNForward(m.chat, true) 6 | } 7 | handler.command = /^q$/i 8 | 9 | export default handler -------------------------------------------------------------------------------- /plugins/tool-styletext.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { JSDOM } from 'jsdom' 3 | let handler = async (m, { conn, text }) => { 4 | conn.reply(m.chat, Object.entries(await stylizeText(text ? text : m.quoted && m.quoted.text ? m.quoted.text : m.text)).map(([name, value]) => `*${name}*\n${value}`).join`\n\n`, m) 5 | } 6 | handler.help = ['style'].map(v => v + ' ') 7 | handler.tags = ['tools'] 8 | handler.command = /^(style(text)?)$/i 9 | 10 | handler.exp = 0 11 | 12 | export default handler 13 | 14 | async function stylizeText(text) { 15 | let res = await fetch('http://qaz.wtf/u/convert.cgi?text=' + encodeURIComponent(text)) 16 | let html = await res.text() 17 | let dom = new JSDOM(html) 18 | let table = dom.window.document.querySelector('table').children[0].children 19 | let obj = {} 20 | for (let tr of table) { 21 | let name = tr.querySelector('.aname').innerHTML 22 | let content = tr.children[1].textContent.replace(/^\n/, '').replace(/\n$/, '') 23 | obj[name + (obj[name] ? ' Reversed' : '')] = content 24 | } 25 | return obj 26 | } -------------------------------------------------------------------------------- /plugins/tool-tourl.js: -------------------------------------------------------------------------------- 1 | import uploadFile from '../lib/uploadFile.js' 2 | import uploadImage from '../lib/uploadImage.js' 3 | 4 | let handler = async (m) => { 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (q.msg || q).mimetype || '' 7 | if (!mime) throw 'No media found' 8 | let media = await q.download() 9 | let isTele = /image\/(png|jpe?g|gif)|video\/mp4/.test(mime) 10 | let link = await (isTele ? uploadImage : uploadFile)(media) 11 | m.reply(`📮 *L I N K :* 12 | ${link} 13 | 📊 *S I Z E :* ${media.length} Byte 14 | 📛 *E x p i r e d :* ${isTele ? 'No Expiry Date' : 'Unknown'}`) 15 | } 16 | handler.help = ['upload (reply media)', 'tourl (reply media)'] 17 | handler.tags = ['tools', 'limitmenu'] 18 | handler.command = /^(tourl|upload)$/i 19 | handler.limit = true 20 | export default handler -------------------------------------------------------------------------------- /plugins/tool-webcheck.js: -------------------------------------------------------------------------------- 1 | import https from 'https' 2 | import fetch from 'node-fetch' 3 | 4 | let handler = async (m, { args, usedPrefix, command }) => { 5 | if (!args[0]) throw `Ex: ${usedPrefix + command} nekopoi.care` 6 | let res = await checkWeb(args) 7 | m.reply(res.map(v => `*• Domain:* ${v.Domain}\n*• Status:* ${v.Status}`).join('\n\n')) 8 | } 9 | handler.help = ['webcheck', 'webcek'] 10 | handler.command = /^web(check|cek)|(check|cek)web$/i 11 | handler.tags = ['tools', 'limitmenu'] 12 | handler.limit = true 13 | export default handler 14 | 15 | async function checkWeb(url) { 16 | let res = await (await fetch('https://trustpositif.kominfo.go.id/Rest_server/getrecordsname_home', { 17 | agent: new https.Agent({ rejectUnauthorized: false }), 18 | method: 'post', 19 | body: new URLSearchParams(Object.entries({ name: url.join('%0A') })) 20 | })).json() 21 | return res.values 22 | } 23 | -------------------------------------------------------------------------------- /plugins/wallq.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, text }) => { 3 | if (!text) throw 'Nyari apa?' 4 | let res = await fetch(global.API('https://wall.alphacoders.com/api2.0','/get.php', { 5 | auth: '3e7756c85df54b78f934a284c11abe4e', 6 | method: 'search', 7 | term: text 8 | })) 9 | if (!res.ok) throw await res.text() 10 | let json = await res.json() 11 | let img = json.wallpapers[Math.floor(Math.random() * json.wallpapers.length)] 12 | await conn.sendButton(m.chat, ` 13 | *${htki} WH-MODS-BOT-V1 WALLPAPER ${htka}* 14 | 🔎 *Result:* ${text} 15 | 🌎 *Sumber Asli:* https://wall.alphacoders.com 16 | ⛩ *ɴᴀᴍᴇ ᴜꜱᴇʀ:* ${conn.getName(m.sender)} 17 | `, author, await(await fetch(img.url_image)).buffer(), [['Next', m.text]], m) 18 | } 19 | handler.help = ['wallpaperq '] 20 | handler.tags = ['anime'] 21 | handler.command = /^wall(paper)?q?$/i 22 | 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/wikipedia.js: -------------------------------------------------------------------------------- 1 | import { wikipedia } from '@bochilteam/scraper' 2 | let handler = async (m, { text, usedPrefix, command }) => { 3 | if (!text) throw `Contoh penggunaan ${usedPrefix}${command} Minecraft` 4 | let json = await wikipedia(text) 5 | m.reply(` 6 | *${json.title}* 7 | ${json.img} 8 | 9 | ${json.articles} 10 | `.trim()) 11 | } 12 | handler.help = ['wikipedia'].map(v => v + ' ') 13 | handler.tags = ['internet'] 14 | handler.command = /^(wiki|wikipedia)$/i 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/youtube-yts.js: -------------------------------------------------------------------------------- 1 | import { youtubeSearch } from '@bochilteam/scraper' 2 | let handler = async (m, { text }) => { 3 | if (!text) throw 'Cari apa?' 4 | const { video, channel } = await youtubeSearch(text) 5 | let teks = [...video, ...channel].map(v => { 6 | switch (v.type) { 7 | case 'video': return ` 8 | 💌 *${v.title}* 9 | 🔗 _${v.url}_ 10 | ⏰ Duration: ${v.durationH} 11 | 📤 Uploaded ${v.publishedTime} 12 | 👁️ ${v.view} views 13 | `.trim() 14 | case 'channel': return ` 15 | ╭──────━• *CHANNEL* 16 | │🎀 *${v.channelName}* 17 | │🔗 _${v.url}_ 18 | │📛 _${v.subscriberH} Subscriber_ 19 | │🎥 ${v.videoCount} video 20 | ┗──────━• 21 | `.trim() 22 | } 23 | }).filter(v => v).join('\n\n─────────────━─────────────\n\n') 24 | m.reply(`*${htki} SEARCH ${htka}*\n\n` + teks) 25 | } 26 | handler.help = ['', 'earch'].map(v => 'yts' + v + ' ') 27 | handler.tags = ['tools'] 28 | handler.command = /^yts(earch)?$/i 29 | 30 | export default handler 31 | -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: { 2 | deps = [ 3 | pkgs.nodejs 4 | pkgs.nodePackages.typescript 5 | pkgs.ffmpeg 6 | pkgs.imagemagick 7 | pkgs.git 8 | pkgs.neofetch 9 | pkgs.libwebp 10 | pkgs.speedtest-cli 11 | pkgs.wget 12 | pkgs.yarn 13 | pkgs.libuuid 14 | ]; 15 | env = { 16 | LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ 17 | pkgs.libuuid 18 | ]; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /session.data.json: -------------------------------------------------------------------------------- 1 | //ISI SESSION ELU 2 | -------------------------------------------------------------------------------- /src/Aesthetic/.file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_000.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/Aesthetic/Aesthetic_000.jpeg -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/Aesthetic/Aesthetic_001.jpg -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/Aesthetic/Aesthetic_002.jpg -------------------------------------------------------------------------------- /src/avatar_contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/avatar_contact.png -------------------------------------------------------------------------------- /src/font/.file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/font/212BabyGirl.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/212BabyGirl.otf -------------------------------------------------------------------------------- /src/font/212LeahleeSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/212LeahleeSans.ttf -------------------------------------------------------------------------------- /src/font/99HandWritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/99HandWritting.ttf -------------------------------------------------------------------------------- /src/font/ACallingFontDby7NTypes.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/ACallingFontDby7NTypes.otf -------------------------------------------------------------------------------- /src/font/ACasualHandwrittenPenNoncommercial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/ACasualHandwrittenPenNoncommercial.ttf -------------------------------------------------------------------------------- /src/font/ADayinSeptember.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/ADayinSeptember.otf -------------------------------------------------------------------------------- /src/font/ASMelanieHandwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/ASMelanieHandwritting.ttf -------------------------------------------------------------------------------- /src/font/Alittlesunshine.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Alittlesunshine.ttf -------------------------------------------------------------------------------- /src/font/And-This-Happened.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/And-This-Happened.ttf -------------------------------------------------------------------------------- /src/font/AvenirCondensedHand.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/AvenirCondensedHand.ttf -------------------------------------------------------------------------------- /src/font/Avocados.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Avocados.ttf -------------------------------------------------------------------------------- /src/font/BabyDoll.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/BabyDoll.ttf -------------------------------------------------------------------------------- /src/font/BattleOfKingsRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/BattleOfKingsRegular.ttf -------------------------------------------------------------------------------- /src/font/BrayNotes.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/BrayNotes.ttf -------------------------------------------------------------------------------- /src/font/Convered-By-Your-Grace.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Convered-By-Your-Grace.ttf -------------------------------------------------------------------------------- /src/font/Edoms-Handwritting-Normal.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Edoms-Handwritting-Normal.ttf -------------------------------------------------------------------------------- /src/font/Futura Bold Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Bold Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Bold font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Bold font.ttf -------------------------------------------------------------------------------- /src/font/Futura Book Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Book Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Book font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Book font.ttf -------------------------------------------------------------------------------- /src/font/Futura Extra Black font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Extra Black font.ttf -------------------------------------------------------------------------------- /src/font/Futura Heavy Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Heavy Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Heavy font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Heavy font.ttf -------------------------------------------------------------------------------- /src/font/Futura Light Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Light Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Light font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Light font.ttf -------------------------------------------------------------------------------- /src/font/Futura Medium Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura Medium Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura XBlk BT.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura XBlk BT.ttf -------------------------------------------------------------------------------- /src/font/Futura-CondensedLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Futura-CondensedLight.otf -------------------------------------------------------------------------------- /src/font/GloriaHallelujah-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/GloriaHallelujah-Regular.ttf -------------------------------------------------------------------------------- /src/font/HandwritingCR-2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/HandwritingCR-2.ttf -------------------------------------------------------------------------------- /src/font/Kempton-Demo-Handwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Kempton-Demo-Handwritting.ttf -------------------------------------------------------------------------------- /src/font/MyHandsareHoldingYou.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/MyHandsareHoldingYou.ttf -------------------------------------------------------------------------------- /src/font/My_handwriting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/My_handwriting.ttf -------------------------------------------------------------------------------- /src/font/Nadeznas-Handwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Nadeznas-Handwritting.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Black.ttf -------------------------------------------------------------------------------- /src/font/Roboto-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-BlackItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Bold.ttf -------------------------------------------------------------------------------- /src/font/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Italic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Light.ttf -------------------------------------------------------------------------------- /src/font/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Medium.ttf -------------------------------------------------------------------------------- /src/font/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Regular.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-Thin.ttf -------------------------------------------------------------------------------- /src/font/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /src/font/ShadowsIntoLight-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/ShadowsIntoLight-Regular.ttf -------------------------------------------------------------------------------- /src/font/Zahraaa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/Zahraaa.ttf -------------------------------------------------------------------------------- /src/font/angelina.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/angelina.ttf -------------------------------------------------------------------------------- /src/font/futur.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/futur.ttf -------------------------------------------------------------------------------- /src/font/futura light bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/futura light bt.ttf -------------------------------------------------------------------------------- /src/font/futura medium bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/futura medium bt.ttf -------------------------------------------------------------------------------- /src/font/futura medium condensed bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/futura medium condensed bt.ttf -------------------------------------------------------------------------------- /src/font/level_c.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/level_c.otf -------------------------------------------------------------------------------- /src/font/michellehandwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/michellehandwritting.ttf -------------------------------------------------------------------------------- /src/font/texts.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/font/texts.otf -------------------------------------------------------------------------------- /src/kertas/.file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/kertas/magernulis1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/kertas/magernulis1.jpg -------------------------------------------------------------------------------- /src/level_c.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/level_c.otf -------------------------------------------------------------------------------- /src/texts.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/src/texts.otf -------------------------------------------------------------------------------- /sticker/ress1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress1.webp -------------------------------------------------------------------------------- /sticker/ress2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress2.webp -------------------------------------------------------------------------------- /sticker/ress3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress3.webp -------------------------------------------------------------------------------- /sticker/ress4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress4.webp -------------------------------------------------------------------------------- /sticker/ress5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress5.webp -------------------------------------------------------------------------------- /sticker/ress6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress6.webp -------------------------------------------------------------------------------- /sticker/ress7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress7.webp -------------------------------------------------------------------------------- /sticker/ress8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress8.webp -------------------------------------------------------------------------------- /sticker/ress9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ress9.webp -------------------------------------------------------------------------------- /sticker/ynkts1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts1.webp -------------------------------------------------------------------------------- /sticker/ynkts2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts2.webp -------------------------------------------------------------------------------- /sticker/ynkts3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts3.webp -------------------------------------------------------------------------------- /sticker/ynkts4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts4.webp -------------------------------------------------------------------------------- /sticker/ynkts5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts5.webp -------------------------------------------------------------------------------- /sticker/ynkts6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts6.webp -------------------------------------------------------------------------------- /sticker/ynkts7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts7.webp -------------------------------------------------------------------------------- /sticker/ynkts8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts8.webp -------------------------------------------------------------------------------- /sticker/ynkts9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/sticker/ynkts9.webp -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import path, { dirname } from 'path' 3 | import assert from 'assert' 4 | import { spawn } from 'child_process' 5 | import syntaxError from 'syntax-error' 6 | import { fileURLToPath } from 'url' 7 | import { createRequire } from 'module' 8 | 9 | const __filename = fileURLToPath(import.meta.url) 10 | const __dirname = dirname(__filename) 11 | const require = createRequire(__dirname) 12 | 13 | let folders = ['.', ...Object.keys(require(path.join(__dirname, './package.json')).directories)] 14 | let files = [] 15 | for (let folder of folders) 16 | for (let file of fs.readdirSync(folder).filter(v => v.endsWith('.js'))) 17 | files.push(path.resolve(path.join(folder, file))) 18 | for (let file of files) { 19 | if (file == __filename) continue 20 | console.error('Checking', file) 21 | const error = syntaxError(fs.readFileSync(file, 'utf8'), file, { 22 | sourceType: 'module', 23 | allowReturnOutsideFunction: true, 24 | allowAwaitOutsideFunction: true 25 | }) 26 | if (error) assert.ok(error.length < 1, file + '\n\n' + error) 27 | assert.ok(file) 28 | console.log('Done ☑️', file) 29 | } 30 | -------------------------------------------------------------------------------- /thumbnail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/thumbnail.jpg -------------------------------------------------------------------------------- /views/img/dark/.file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_centered_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_centered_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_centered_shadow.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_incoming_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_incoming_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_incoming_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_incoming_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_incoming_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_live_location_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_live_location_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_live_location_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_live_location_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_outgoing_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_outgoing_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_outgoing_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_outgoing_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/dark/balloon_outgoing_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/light/.file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/img/light/balloon_centered_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_centered_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_centered_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_centered_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_centered_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_centered_shadow.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_incoming_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_incoming_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_incoming_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_incoming_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_incoming_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_live_location_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_live_location_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_live_location_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_live_location_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_outgoing_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_outgoing_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_outgoing_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_outgoing_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaaaGH/Albedo-BOT/b3cb0cd86ab4f2953c873995beb9af604915d090/views/img/light/balloon_outgoing_pressed_ext.9.png -------------------------------------------------------------------------------- /views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Web 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 |
26 |
27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /views/index.js: -------------------------------------------------------------------------------- 1 | window.onload = () => { 2 | let chat = document.querySelector('div.container-fluid') 3 | function addMsg(obj) { 4 | let html = document.createElement('span') 5 | html.className = 'msg' 6 | html.innerHTML = obj 7 | chat.appendChild(html) 8 | } 9 | 10 | window.onclick = () => addMsg(12) 11 | } 12 | -------------------------------------------------------------------------------- /views/style.css: -------------------------------------------------------------------------------- 1 | span.msg { 2 | } 3 | 4 | --------------------------------------------------------------------------------