├── tmp └── .file ├── Procfile ├── kinflux bot └── language.json ├── views ├── style.css ├── img │ ├── dark │ │ ├── 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_pressed.9.png │ │ ├── balloon_outgoing_frame.9.png │ │ ├── balloon_outgoing_normal.9.png │ │ ├── balloon_outgoing_pressed.9.png │ │ ├── balloon_incoming_normal_ext.9.png │ │ ├── balloon_incoming_normal_stkr.9.png │ │ ├── balloon_incoming_pressed_ext.9.png │ │ ├── balloon_outgoing_normal_ext.9.png │ │ ├── balloon_outgoing_normal_stkr.9.png │ │ ├── balloon_outgoing_pressed_ext.9.png │ │ ├── balloon_live_location_incoming_frame.9.png │ │ └── balloon_live_location_outgoing_frame.9.png │ └── light │ │ ├── balloon_centered_normal.9.png │ │ ├── balloon_centered_shadow.9.png │ │ ├── balloon_incoming_frame.9.png │ │ ├── balloon_incoming_normal.9.png │ │ ├── balloon_outgoing_frame.9.png │ │ ├── balloon_outgoing_normal.9.png │ │ ├── balloon_centered_pressed.9.png │ │ ├── balloon_incoming_pressed.9.png │ │ ├── balloon_outgoing_pressed.9.png │ │ ├── balloon_incoming_normal_ext.9.png │ │ ├── balloon_incoming_normal_stkr.9.png │ │ ├── balloon_incoming_pressed_ext.9.png │ │ ├── balloon_outgoing_normal_ext.9.png │ │ ├── balloon_outgoing_normal_stkr.9.png │ │ ├── balloon_outgoing_pressed_ext.9.png │ │ ├── balloon_live_location_incoming_frame.9.png │ │ └── balloon_live_location_outgoing_frame.9.png ├── index.js └── index.html ├── Guru.jpg ├── src ├── Guru.jpg ├── fg_logo.jpg ├── level_c.otf ├── texts.otf ├── mp3 │ ├── Guru.mp3 │ ├── Guru1.mp3 │ ├── Guru2.mp3 │ ├── Guru3.mp3 │ ├── Guru4.mp3 │ ├── criss.mp3 │ └── andrea.mp3 ├── font │ ├── Zahraaa.ttf │ ├── futur.ttf │ ├── level_c.otf │ ├── texts.otf │ ├── Avocados.ttf │ ├── BabyDoll.ttf │ ├── BrayNotes.ttf │ ├── angelina.ttf │ ├── 212BabyGirl.otf │ ├── Roboto-Black.ttf │ ├── Roboto-Bold.ttf │ ├── Roboto-Light.ttf │ ├── Roboto-Thin.ttf │ ├── 212LeahleeSans.ttf │ ├── 99HandWritting.ttf │ ├── Futura XBlk BT.ttf │ ├── My_handwriting.ttf │ ├── Roboto-Italic.ttf │ ├── Roboto-Medium.ttf │ ├── Roboto-Regular.ttf │ ├── ADayinSeptember.otf │ ├── Alittlesunshine.ttf │ ├── And-This-Happened.ttf │ ├── Futura Bold font.ttf │ ├── Futura Book font.ttf │ ├── Futura Heavy font.ttf │ ├── Futura Light font.ttf │ ├── HandwritingCR-2.ttf │ ├── Roboto-BoldItalic.ttf │ ├── Roboto-ThinItalic.ttf │ ├── futura light bt.ttf │ ├── futura medium bt.ttf │ ├── AvenirCondensedHand.ttf │ ├── Roboto-BlackItalic.ttf │ ├── Roboto-LightItalic.ttf │ ├── Roboto-MediumItalic.ttf │ ├── ACallingFontDby7NTypes.otf │ ├── ASMelanieHandwritting.ttf │ ├── BattleOfKingsRegular.ttf │ ├── Convered-By-Your-Grace.ttf │ ├── Futura-CondensedLight.otf │ ├── MyHandsareHoldingYou.ttf │ ├── Nadeznas-Handwritting.ttf │ ├── michellehandwritting.ttf │ ├── Futura Bold Italic font.ttf │ ├── Futura Book Italic font.ttf │ ├── Futura Extra Black font.ttf │ ├── Futura Heavy Italic font.ttf │ ├── Futura Light Italic font.ttf │ ├── GloriaHallelujah-Regular.ttf │ ├── ShadowsIntoLight-Regular.ttf │ ├── Edoms-Handwritting-Normal.ttf │ ├── Futura Medium Italic font.ttf │ ├── Kempton-Demo-Handwritting.ttf │ ├── futura medium condensed bt.ttf │ └── ACasualHandwrittenPenNoncommercial.ttf ├── avatar_contact.png ├── lvlup_template.jpg ├── kertas │ └── magernulis1.jpg └── Aesthetic │ ├── Aesthetic_000.jpeg │ ├── Aesthetic_001.jpg │ └── Aesthetic_002.jpg ├── kinfluxbot.jpg ├── heroku.yml ├── .gitignore ├── render.yaml ├── docker-compose.yml ├── Dockerfile ├── plugins ├── Wall-lolivid.js ├── kinflux bot-health.js ├── main-creator.js ├── rg-sn.js ├── _expired-gp.js ├── tools-readmore.js ├── owner-resetprefix.js ├── gc-setdesc.js ├── kinflux bot-qrmaker.js ├── gp-resetLink.js ├── owner-unbanchat.js ├── tools-ssweb.js ├── owner-banchat.js ├── gp-totag.js ├── gp-setbye.js ├── fun-ship.js ├── img-asupan.js ├── owner-restart.js ├── owner-setprefix.js ├── game-dado.js ├── main-listprem.js ├── afk-afk.js ├── img-pinterest.js ├── Wall-Messi.js ├── game-delsttt.js ├── gp-setwelcome.js ├── tools-wa.js ├── owner-update.js ├── gc-setname.js ├── img-wallpaper.js ├── kinflux bot-readqr.js ├── gc-setpp.js ├── maker-simp.js ├── maker-blur.js ├── owner-delexpired.js ├── tool-pdf.js ├── tool-ytcomment.js ├── Wall-Ronaldo.js ├── fun-gay.js ├── maker-horny.js ├── maker.loli.js ├── tools-readviewonce.js ├── fun-dare.js ├── fun-waste.js ├── owner-blocklist.js ├── fun-flirt.js ├── fun-truth.js ├── cmd-del.js ├── gp-warns.js ├── fun-shayeri.js ├── gp-settings.js ├── Wall-couplepp.js ├── gp-tagall.js ├── _autolevelup.js ├── av-bot.js ├── cmd-list.js ├── owner.banlist.js ├── gp-delete.js ├── dl-tiktokstalk.js ├── Blackpink.js ├── gp-kick.js ├── main-blocklist.js ├── maker-stupid.js ├── tools-tourl.js ├── tool-shorturl.js ├── rg-unreg.js ├── owner-exec2.js ├── _jsjs.js ├── animequote.js ├── img-girl.js ├── img-memes.js ├── main-ping.js ├── Shubham-getbio.js ├── tools-wikipedia.js ├── sticker-toimg.js ├── main-Guru.js ├── owner-unbanUser.js ├── sticker-scircle.js ├── _chatbot.js ├── audio-toptt.js ├── av-audios.js ├── owner-banUser.js ├── audio-tomp3.js ├── gp-polling.js ├── sticker-trigger.js ├── dl-gdrive.js ├── tools-technews.js ├── dl-igstalk.js ├── fun-pickupline.js ├── _getmsg.js ├── dl-twitter.js ├── fun-preg.js ├── Wall-anime.js ├── dl-instagram.js ├── econ-tomoney.js ├── tools-lyrics.js ├── gp-hidetag.js ├── fun-simsimi.js ├── econ-addxp.js ├── gp-staff.js ├── gp-invite.js ├── gp-link.js ├── owner-clearTmp.js ├── dl-gitclone.js ├── _autoReply.js ├── owner-addprem.js ├── kinflux bot-Openai.js ├── econ-adddi.js ├── cmd-set.js ├── sticker-wm.js ├── sticker-tovid.js ├── _autobio.js ├── _cmdWithMedia.js ├── econ-todiamond.js ├── tools-pokedex.js ├── exchange.js ├── tools-define.js ├── gp-delwarn.js ├── owner-broadcast.js ├── afk-_afk.js ├── tools-translate.js ├── dl-yta.js ├── econ-weekly.js ├── gp-demote.js ├── gp-promote.js ├── _fakeReply.js ├── econ-monthly.js ├── dl-spotify.js ├── main-runtime.js ├── dl-yts.js ├── maker-tweet.js ├── owner-delprem.js ├── _similarity.js ├── anime-rkiss.js ├── owner-checkexpired.js ├── fun-chacter.js ├── anime-rslap.js ├── anime-rpat.js ├── econ-balance.js ├── kinflux bot-hentai.js ├── main-donate.js ├── owner-un-block.js ├── dl-modapk.js ├── kinflux bot-toanime.js ├── main-script.js ├── kinflux bot-weather.js ├── kinflux bot -Davinci.js ├── anime-rkill.js ├── game-math_answer.js ├── anime-waifupics.js ├── tools-google.js ├── tool-resize.js ├── owner-broadcastgc.js ├── sticker-emojimix.js ├── tools-calc.js ├── kinflux bot-nowa.js ├── sticker-getsticker.js ├── econ-heal.js ├── _antilink.js ├── dl-facebook.js ├── tools-element.js ├── tools-tts.js ├── _onlyEnglish.js ├── tools-itunes.js ├── sticker-smaker.js ├── tool-whatmusic.js ├── owner-addexpired.js ├── dl-tiktok.js ├── tools-gpt.js ├── econ-daily.js ├── kinflux bot-styletext.js ├── tools-removebg.js ├── Tools-animeinfo.js ├── rg-register.js ├── dl-mediafire.js ├── econ-work.js ├── plugin-install.js ├── tools-subreddit.js └── dl-ytv.js ├── lib ├── tictactoe.d.ts ├── logs.js ├── uploadImage.js └── levelling.js ├── replit.nix ├── .github └── FUNDING.yml ├── Termux-Guide.md ├── app.json └── test.js /tmp/.file: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: npm start 2 | -------------------------------------------------------------------------------- /kinflux bot/language.json: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/style.css: -------------------------------------------------------------------------------- 1 | span.msg { 2 | } 3 | 4 | -------------------------------------------------------------------------------- /Guru.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/Guru.jpg -------------------------------------------------------------------------------- /src/Guru.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/Guru.jpg -------------------------------------------------------------------------------- /kinfluxbot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/kinfluxbot.jpg -------------------------------------------------------------------------------- /src/fg_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/fg_logo.jpg -------------------------------------------------------------------------------- /src/level_c.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/level_c.otf -------------------------------------------------------------------------------- /src/texts.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/texts.otf -------------------------------------------------------------------------------- /heroku.yml: -------------------------------------------------------------------------------- 1 | build: 2 | docker: 3 | worker: Dockerfile 4 | run: 5 | worker: npm start 6 | -------------------------------------------------------------------------------- /src/mp3/Guru.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/Guru.mp3 -------------------------------------------------------------------------------- /src/mp3/Guru1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/Guru1.mp3 -------------------------------------------------------------------------------- /src/mp3/Guru2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/Guru2.mp3 -------------------------------------------------------------------------------- /src/mp3/Guru3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/Guru3.mp3 -------------------------------------------------------------------------------- /src/mp3/Guru4.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/Guru4.mp3 -------------------------------------------------------------------------------- /src/mp3/criss.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/criss.mp3 -------------------------------------------------------------------------------- /src/font/Zahraaa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Zahraaa.ttf -------------------------------------------------------------------------------- /src/font/futur.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/futur.ttf -------------------------------------------------------------------------------- /src/font/level_c.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/level_c.otf -------------------------------------------------------------------------------- /src/font/texts.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/texts.otf -------------------------------------------------------------------------------- /src/mp3/andrea.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/mp3/andrea.mp3 -------------------------------------------------------------------------------- /src/avatar_contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/avatar_contact.png -------------------------------------------------------------------------------- /src/font/Avocados.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Avocados.ttf -------------------------------------------------------------------------------- /src/font/BabyDoll.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/BabyDoll.ttf -------------------------------------------------------------------------------- /src/font/BrayNotes.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/BrayNotes.ttf -------------------------------------------------------------------------------- /src/font/angelina.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/angelina.ttf -------------------------------------------------------------------------------- /src/lvlup_template.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/lvlup_template.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | node_modules 3 | package-lock.json 4 | guru.data.json 5 | database.json 6 | .env 7 | -------------------------------------------------------------------------------- /src/font/212BabyGirl.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/212BabyGirl.otf -------------------------------------------------------------------------------- /src/font/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Black.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Bold.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Light.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Thin.ttf -------------------------------------------------------------------------------- /src/font/212LeahleeSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/212LeahleeSans.ttf -------------------------------------------------------------------------------- /src/font/99HandWritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/99HandWritting.ttf -------------------------------------------------------------------------------- /src/font/Futura XBlk BT.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura XBlk BT.ttf -------------------------------------------------------------------------------- /src/font/My_handwriting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/My_handwriting.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Italic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Medium.ttf -------------------------------------------------------------------------------- /src/font/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-Regular.ttf -------------------------------------------------------------------------------- /src/kertas/magernulis1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/kertas/magernulis1.jpg -------------------------------------------------------------------------------- /src/font/ADayinSeptember.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/ADayinSeptember.otf -------------------------------------------------------------------------------- /src/font/Alittlesunshine.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Alittlesunshine.ttf -------------------------------------------------------------------------------- /src/font/And-This-Happened.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/And-This-Happened.ttf -------------------------------------------------------------------------------- /src/font/Futura Bold font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Bold font.ttf -------------------------------------------------------------------------------- /src/font/Futura Book font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Book font.ttf -------------------------------------------------------------------------------- /src/font/Futura Heavy font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Heavy font.ttf -------------------------------------------------------------------------------- /src/font/Futura Light font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Light font.ttf -------------------------------------------------------------------------------- /src/font/HandwritingCR-2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/HandwritingCR-2.ttf -------------------------------------------------------------------------------- /src/font/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /src/font/futura light bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/futura light bt.ttf -------------------------------------------------------------------------------- /src/font/futura medium bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/futura medium bt.ttf -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_000.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/Aesthetic/Aesthetic_000.jpeg -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/Aesthetic/Aesthetic_001.jpg -------------------------------------------------------------------------------- /src/Aesthetic/Aesthetic_002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/Aesthetic/Aesthetic_002.jpg -------------------------------------------------------------------------------- /src/font/AvenirCondensedHand.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/AvenirCondensedHand.ttf -------------------------------------------------------------------------------- /src/font/Roboto-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-BlackItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /src/font/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /src/font/ACallingFontDby7NTypes.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/ACallingFontDby7NTypes.otf -------------------------------------------------------------------------------- /src/font/ASMelanieHandwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/ASMelanieHandwritting.ttf -------------------------------------------------------------------------------- /src/font/BattleOfKingsRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/BattleOfKingsRegular.ttf -------------------------------------------------------------------------------- /src/font/Convered-By-Your-Grace.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Convered-By-Your-Grace.ttf -------------------------------------------------------------------------------- /src/font/Futura-CondensedLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura-CondensedLight.otf -------------------------------------------------------------------------------- /src/font/MyHandsareHoldingYou.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/MyHandsareHoldingYou.ttf -------------------------------------------------------------------------------- /src/font/Nadeznas-Handwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Nadeznas-Handwritting.ttf -------------------------------------------------------------------------------- /src/font/michellehandwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/michellehandwritting.ttf -------------------------------------------------------------------------------- /render.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | - type: web 3 | name: kinflux bot 4 | env: docker 5 | region: Frankfurt 6 | plan: free 7 | -------------------------------------------------------------------------------- /src/font/Futura Bold Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Bold Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Book Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Book Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Extra Black font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Extra Black font.ttf -------------------------------------------------------------------------------- /src/font/Futura Heavy Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Heavy Italic font.ttf -------------------------------------------------------------------------------- /src/font/Futura Light Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Light Italic font.ttf -------------------------------------------------------------------------------- /src/font/GloriaHallelujah-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/GloriaHallelujah-Regular.ttf -------------------------------------------------------------------------------- /src/font/ShadowsIntoLight-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/ShadowsIntoLight-Regular.ttf -------------------------------------------------------------------------------- /src/font/Edoms-Handwritting-Normal.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Edoms-Handwritting-Normal.ttf -------------------------------------------------------------------------------- /src/font/Futura Medium Italic font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Futura Medium Italic font.ttf -------------------------------------------------------------------------------- /src/font/Kempton-Demo-Handwritting.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/Kempton-Demo-Handwritting.ttf -------------------------------------------------------------------------------- /src/font/futura medium condensed bt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/futura medium condensed bt.ttf -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_centered_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_centered_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_centered_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_centered_shadow.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_incoming_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_incoming_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_outgoing_normal.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_outgoing_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_centered_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_centered_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_centered_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_centered_shadow.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_incoming_normal.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_outgoing_normal.9.png -------------------------------------------------------------------------------- /src/font/ACasualHandwrittenPenNoncommercial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/src/font/ACasualHandwrittenPenNoncommercial.ttf -------------------------------------------------------------------------------- /views/img/light/balloon_centered_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_centered_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_incoming_pressed.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_outgoing_pressed.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_incoming_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_incoming_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_incoming_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_incoming_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_outgoing_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_outgoing_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_outgoing_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_outgoing_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_incoming_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_incoming_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_incoming_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_incoming_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_outgoing_normal_ext.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_normal_stkr.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_outgoing_normal_stkr.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_outgoing_pressed_ext.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_outgoing_pressed_ext.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_live_location_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_live_location_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/dark/balloon_live_location_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/dark/balloon_live_location_outgoing_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_live_location_incoming_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_live_location_incoming_frame.9.png -------------------------------------------------------------------------------- /views/img/light/balloon_live_location_outgoing_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diggilly/kinflux_bot_god_v2/HEAD/views/img/light/balloon_live_location_outgoing_frame.9.png -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | worker: 4 | build: . 5 | volumes: 6 | - .:/code 7 | - logvolume01:/var/log 8 | links: 9 | - redis 10 | redis: 11 | image: redis 12 | volumes: 13 | logvolume01: {} 14 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-buster 2 | 3 | RUN apt-get update && \ 4 | apt-get install -y \ 5 | ffmpeg \ 6 | imagemagick \ 7 | webp && \ 8 | apt-get upgrade -y && \ 9 | rm -rf /var/lib/apt/lists/* 10 | 11 | COPY package.json . 12 | 13 | RUN npm install && npm install qrcode-terminal 14 | 15 | COPY . . 16 | 17 | EXPOSE 5000 18 | 19 | CMD ["npm", "start"] 20 | -------------------------------------------------------------------------------- /plugins/Wall-lolivid.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, command }) => { 2 | let res = "https://recoders-area.caliph.repl.co/api/lolivid" 3 | conn.sendButton(m.chat, `ʟᴏʟɪ ɪѕ ᴄᴜᴛᴇ 🥺`,author, res, [['🔄 NEXT 🔄', `/${command}`]], m)} 4 | handler.help = ['lolivid'] 5 | handler.tags = ['random'] 6 | handler.command = /^(lolivid|lolivideos|lolívid)$/i 7 | export default handler 8 | -------------------------------------------------------------------------------- /plugins/kinflux bot-health.js: -------------------------------------------------------------------------------- 1 | let handler = m => m 2 | 3 | handler.before = async function (m) { 4 | let user = global.db.data.users[m.sender] 5 | if (user.health > 100) { 6 | user.health = 100 7 | } 8 | if (user.health < 0) { 9 | user.health = 0 10 | } 11 | } 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/main-creator.js: -------------------------------------------------------------------------------- 1 | 2 | function handler(m) { 3 | const data = global.owner.filter(([id, isCreator]) => id && isCreator) 4 | this.sendContact(m.chat, data.map(([id, name]) => [id, name]), m) 5 | 6 | } 7 | 8 | handler.help = ['owner'] 9 | handler.tags = ['main'] 10 | handler.command = ['owner', 'creator', 'creador', 'dueño', 'Gowner'] 11 | 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/rg-sn.js: -------------------------------------------------------------------------------- 1 | import { createHash } from 'crypto' 2 | 3 | let handler = async function (m, { conn, text, usedPrefix }) { 4 | let sn = createHash('md5').update(m.sender).digest('hex') 5 | m.reply(` 6 | ▢ *seriel number* : ${sn} 7 | `.trim()) 8 | } 9 | handler.help = ['mysn'] 10 | handler.tags = ['rg'] 11 | handler.command = ['nserie', 'sn', 'mysn'] 12 | handler.register = true 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/_expired-gp.js: -------------------------------------------------------------------------------- 1 | 2 | export async function all(m) { 3 | if (!m.isGroup) 4 | return 5 | let chats = global.db.data.chats[m.chat] 6 | if (!chats.expired) 7 | return !0 8 | if (+new Date() > chats.expired) { 9 | await this.reply(m.chat, `🔴 bye bye *${this.user.name}* will leave the group \n\nyour rent ended`) 10 | await this.groupLeave(m.chat) 11 | chats.expired = null 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/tools-readmore.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let [l, r] = text.split`|` 3 | if (!l) l = '' 4 | if (!r) r = '' 5 | conn.reply(m.chat, l + readMore + r, m) 6 | } 7 | handler.help = ['readmore |'] 8 | handler.tags = ['tools'] 9 | handler.command = ['leermas', 'readmore'] 10 | 11 | export default handler 12 | 13 | const more = String.fromCharCode(8206) 14 | const readMore = more.repeat(4001) 15 | -------------------------------------------------------------------------------- /plugins/owner-resetprefix.js: -------------------------------------------------------------------------------- 1 | let handler = async(m, { conn }) => { 2 | 3 | global.prefix = new RegExp('^[' + (opts['prefix'] || '‎xzXZ/i!#$%+£¢€¥^°=¶∆×÷π√✓©®:;?&.\\-').replace(/[|\\{}()[\]^$+*?.\-\^]/g, '\\$&') + ']') 4 | await m.reply(`PREFIX RESET SUCCESS`) 5 | } 6 | handler.help = ['resetprefix'] 7 | handler.tags = ['owner'] 8 | handler.command = /^(resetprefix)$/i 9 | handler.owner = true 10 | 11 | 12 | export default handler -------------------------------------------------------------------------------- /plugins/gc-setdesc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args }) => { 2 | await conn.groupUpdateDescription(m.chat, `${args.join(" ")}`); 3 | m.reply('*🔥Success changing The description of the group*🥂') 4 | } 5 | handler.help = ['Setdesc '] 6 | handler.tags = ['group'] 7 | handler.command = /^setdesk|setdesc$/i 8 | handler.group = true 9 | handler.admin = true 10 | handler.botAdmin = true 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/kinflux bot-qrmaker.js: -------------------------------------------------------------------------------- 1 | import { toDataURL } from 'qrcode' 2 | let handler = async (m, { text, conn }) => { 3 | if (!text) throw `*Give a text to convert*` 4 | conn.sendFile(m.chat, await toDataURL(text.slice(0, 2048), { scale: 8 }), 'qrcode.png', 'made with love and Here u go from kinflux bot', m) 5 | } 6 | handler.help = ['', 'code'].map(v => 'qr' + v + ' ') 7 | handler.tags = ['tools'] 8 | handler.command = /^qr(code)?$/i 9 | export default handler 10 | -------------------------------------------------------------------------------- /plugins/gp-resetLink.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn }) => { 3 | let res = await conn.groupRevokeInvite(m.chat) 4 | m.reply('✅ Group link has been successfully reset\n\n📌 new link:\nhttps://chat.whatsapp.com/' + res) 5 | } 6 | handler.help = ['resetlink'] 7 | handler.tags = ['group'] 8 | handler.command = ['revoke', 'resetlink', 'anularlink'] 9 | handler.group = true 10 | handler.admin = true 11 | handler.botAdmin = true 12 | 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/owner-unbanchat.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, isOwner, isAdmin, isROwner} ) => { 4 | if (!(isAdmin || isOwner)) return dfail('admin', m, conn) 5 | global.db.data.chats[m.chat].isBanned = false 6 | m.reply('✅ Kinflux Bot activated in this group') 7 | } 8 | handler.help = ['unbanchat'] 9 | handler.tags = ['owner'] 10 | handler.command = ['chaton', 'unbanchat'] 11 | 12 | export default handler 13 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /plugins/tools-ssweb.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn, command, args }) => { 3 | if (!args[0]) return conn.reply(m.chat, '*[🔎] give url*', m) 4 | let ss = await (await fetch(`https://image.thum.io/get/fullpage/${args[0]}`)).buffer() 5 | conn.sendFile(m.chat, ss, 'error.png', args[0], m)} 6 | handler.help = ['ss', 'ssf'].map(v => v + ' ') 7 | handler.tags = ['tools'] 8 | handler.command = /^ss(web)?f?$/i 9 | export default handler 10 | 11 | -------------------------------------------------------------------------------- /plugins/owner-banchat.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, isOwner, isAdmin, isROwner }) => { 4 | if (!(isAdmin || isOwner)) return dfail('admin', m, conn) 5 | global.db.data.chats[m.chat].isBanned = true 6 | m.reply('✅ kinflux bot was deactivated in this group') 7 | } 8 | handler.help = ['banchat'] 9 | handler.tags = ['owner'] 10 | handler.command = ['banchat', 'chatoff','offkinfluxbot'] 11 | 12 | export default handler 13 | 14 | -------------------------------------------------------------------------------- /plugins/gp-totag.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, text, participants}) => { 3 | 4 | let users = participants.map(u => u.id).filter(v => v !== conn.user.jid) 5 | if (!m.quoted) throw `✳️ Reply to a message` 6 | conn.sendMessage(m.chat, { forward: m.quoted.fakeObj, mentions: users } ) 7 | } 8 | 9 | handler.help = ['totag'] 10 | handler.tags = ['group'] 11 | handler.command = /^(totag|tag)$/i 12 | 13 | handler.admin = true 14 | handler.group = true 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/gp-setbye.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text, isROwner, isOwner }) => { 4 | if (text) { 5 | global.db.data.chats[m.chat].sBye = text 6 | m.reply('✅ The farewell message was established') 7 | } else throw `✳️ enter the message\n@user (mención)` 8 | } 9 | handler.help = ['setbye '] 10 | handler.tags = ['group'] 11 | handler.command = ['setbye'] 12 | handler.admin = true 13 | handler.owner = false 14 | 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/fun-ship.js: -------------------------------------------------------------------------------- 1 | let toM = a => '@' + a.split('@')[0] 2 | function handler(m, { groupMetadata }) { 3 | let ps = groupMetadata.participants.map(v => v.id) 4 | let a = m.sender 5 | let b 6 | do b = ps.getRandom() 7 | while (b === a) 8 | m.reply(`${toM(a)} ❤️ ${toM(b)}\nCongratulations 💖🍻`, null, { 9 | mentions: [a, b] 10 | }) 11 | } 12 | handler.help = ['ship'] 13 | handler.tags = ['fun'] 14 | handler.command = ['ship'] 15 | 16 | handler.group = true 17 | 18 | export default handler -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: { 2 | deps = [ 3 | pkgs.sudo 4 | pkgs.nodejs 5 | pkgs.nodePackages.typescript 6 | pkgs.ffmpeg 7 | pkgs.imagemagick 8 | pkgs.git 9 | pkgs.neofetch 10 | pkgs.libwebp 11 | pkgs.speedtest-cli 12 | pkgs.wget 13 | pkgs.yarn 14 | pkgs.pm2 15 | pkgs.libuuid 16 | ]; 17 | env = { 18 | LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ 19 | pkgs.libuuid 20 | ]; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/img-asupan.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async(m, { conn, usedPrefix, command }) => { 3 | 4 | let img = await conn.getFile(global.API('fgmods', '/api/asupan-la', { }, 'apikey')) 5 | let asupan = img.data 6 | conn.sendButton(m.chat, `✅ Result`, igfg, asupan, [['▷▷ NEXT', `${usedPrefix + command}`]], m) 7 | m.react(dmoji) 8 | 9 | } 10 | handler.help = ['tvid'] 11 | handler.tags = ['img'] 12 | handler.command = ['asupan', 'tvid'] 13 | handler.premium = false 14 | handler.diamond = true 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/owner-restart.js: -------------------------------------------------------------------------------- 1 | import { spawn } from 'child_process' 2 | let handler = async (m, { conn, isROwner, text }) => { 3 | if (!process.send) throw 'Dont: node main.js\nDo: node index.js' 4 | if (conn.user.jid == conn.user.jid) { 5 | await m.reply('🔄 Restarting Bot...\n Wait a moment') 6 | process.send('reset') 7 | } else throw 'eh' 8 | } 9 | 10 | handler.help = ['restart'] 11 | handler.tags = ['owner'] 12 | handler.command = ['restart','reiniciar'] 13 | 14 | handler.rowner = true 15 | 16 | export default handler 17 | -------------------------------------------------------------------------------- /plugins/owner-setprefix.js: -------------------------------------------------------------------------------- 1 | let handler = async(m, { conn, text }) => { 2 | if (!text) throw `No symbol detected ...` 3 | global.prefix = new RegExp('^[' + (text || global.opts['prefix'] || '‎xzXZ/i!#$%+£¢€¥^°=¶∆×÷π√✓©®:;?&.\\-').replace(/[|\\{}()[\]^$+*?.\-\^]/g, '\\$&') + ']') 4 | await m.reply(`the prefix has been changed to *${text}*`) 5 | } 6 | handler.help = ['setprefix'].map(v => v + ' [prefix]') 7 | handler.tags = ['owner'] 8 | handler.command = /^(setprefix)$/i 9 | handler.rowner = true 10 | 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/game-dado.js: -------------------------------------------------------------------------------- 1 | const dir = [ 2 | 'https://tinyurl.com/dados01', 3 | 'https://tinyurl.com/dados02', 4 | 'https://tinyurl.com/dados03', 5 | 'https://tinyurl.com/dados04', 6 | 'https://tinyurl.com/dados05', 7 | 'https://tinyurl.com/dados06' 8 | ]; 9 | let handler = async (m, { conn }) => { 10 | conn.sendFile(m.chat, dir[Math.floor(Math.random() * dir.length)], 'dado.webp', '', m) 11 | } 12 | handler.help = ['dado'] 13 | handler.tags = ['game'] 14 | handler.command = ['dado', 'dados'] 15 | 16 | export default handler 17 | 18 | -------------------------------------------------------------------------------- /plugins/main-listprem.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | let prem = global.prems.map(v => v.replace(/[^0-9]/g, '') + '@s.whatsapp.net').filter(v => v != conn.user.jid) 4 | let teks = `▢ *PREMIUM USERS*\n─────────────\n` + prem.map(v => '- @' + v.replace(/@.+/, '')).join`\n` 5 | m.reply(teks, null, {mentions: conn.parseMention(teks)}) 6 | 7 | } 8 | handler.help = ['listprem'] 9 | handler.tags = ['main'] 10 | handler.command = ['listprem', 'premlist', 'listpremium'] 11 | 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/afk-afk.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { text, conn }) => { 4 | let user = global.db.data.users[m.sender] 5 | user.afk = + new Date 6 | user.afkReason = text 7 | m.reply(` 8 | 😴 *AFK* 9 | You atre now afk until u send a message 10 | ▢ *User:* ${conn.getName(m.sender)} 11 | ▢ *Reason:* ${text ? text : ''} 12 | `) 13 | } 14 | handler.help = ['afk '] 15 | handler.tags = ['fun'] 16 | handler.command = ['afk'] 17 | handler.group = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/img-pinterest.js: -------------------------------------------------------------------------------- 1 | import { pinterest } from '@bochilteam/scraper' 2 | 3 | let handler = async(m, { conn, text, usedPrefix, command }) => { 4 | if (!text) throw `✳️ What image do you want me to look for?\n\n📌 Example : ${usedPrefix + command} Lil Peep` 5 | const json = await pinterest(text) 6 | conn.sendFile(m.chat, json.getRandom(), 'pinterest.jpg', ` 7 | *▢ Pinterest:* ${text} 8 | `.trim(), m) 9 | } 10 | handler.help = ['pinterest'] 11 | handler.tags = ['img'] 12 | handler.command = ['pinterest'] 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/Wall-Messi.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | let handler = async(m, { conn, usedPrefix, command }) => { 3 | let res = (await axios.get(`https://raw.githubusercontent.com/Guru322/api/Guru/BOT-JSON/Messi.json`)).data 4 | let url = await res[Math.floor(res.length * Math.random())] 5 | conn.sendFile(m.chat, url, 'error.jpg', `*Messi*`, m)} 6 | //conn.sendButton(m.chat, "*Messi*", author, url, [['⚽ NEXT ⚽', `${usedPrefix + command}`]], m)} 7 | handler.help = ['messi'] 8 | handler.tags = ['internet'] 9 | handler.command = /^(messi)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/game-delsttt.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, text }) => { 3 | let room = Object.values(conn.game).find(room => room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender)) 4 | if (room == undefined) return conn.reply(m.chat,`✳️ You are not in game of TicTacToe 🎮 `, m) 5 | delete conn.game[room.id] 6 | await conn.reply(m.chat, `✅ The session of *tictactoe is restarted 🎮*`, m) 7 | } 8 | handler.help = ['delttt'] 9 | handler.tags = ['game'] 10 | handler.command = ['delttc', 'delttt', 'delxo'] 11 | 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/gp-setwelcome.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text, isROwner, isOwner }) => { 4 | if (text) { 5 | global.db.data.chats[m.chat].sWelcome = text 6 | m.reply('✅ The welcome message is configured') 7 | } else throw `✳️ Enter the Welcome message\n\n@user (mention)\n@group (Group name)\n@desc (description of group)` 8 | } 9 | handler.help = ['setwelcome '] 10 | handler.tags = ['group'] 11 | handler.command = ['setwelcome'] 12 | handler.admin = true 13 | handler.owner = false 14 | 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/tools-wa.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedPrefix, text, command }) => { 2 | if (!text) throw `Please provide a phone number\n\n📌 Example: *${usedPrefix + command}* 1234567890`; 3 | 4 | const waLink = `https://wa.me/${text}`; 5 | const message = `*WhatsApp Link:*\n${waLink}`; 6 | 7 | conn.sendMessage(m.chat, { text: message, quoted: m, contextInfo: { mentionedJid: [m.sender] } }); 8 | 9 | m.react('✅'); 10 | }; 11 | 12 | handler.help = ['wa']; 13 | handler.tags = ['tools']; 14 | handler.command = ['wa']; 15 | 16 | export default handler; 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugins/owner-update.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | import { execSync } from 'child_process' 4 | let handler = async (m, { conn, text }) => { 5 | if (conn.user.jid == conn.user.jid) { 6 | let stdout = execSync('git pull' + (m.fromMe && text ? ' ' + text : '')) 7 | //require('fs').readdirSync('plugins').map(v=>global.reload('', v)) 8 | conn.reply(m.chat, stdout.toString(), m) 9 | }} 10 | handler.help = ['update'] 11 | handler.tags = ['owner'] 12 | handler.command = ['update', 'actualizar', 'fix', 'fixed'] 13 | handler.rowner = true 14 | 15 | export default handler 16 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | 2 | github: [linflux bot] 3 | patreon: # Replace 4 | open_collective: # Replace with a single Open Collective username 5 | ko_fi: # Replace with a single Ko-fi username 6 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 7 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 8 | liberapay: # Replace with a single Liberapay username 9 | issuehunt: # Replace with a single IssueHunt username 10 | otechie: # Replace with a single Otechie username 11 | custom: ['https://p.paytm.me/xCTH/gzzh73z3'] 12 | -------------------------------------------------------------------------------- /plugins/gc-setname.js: -------------------------------------------------------------------------------- 1 | import Presence from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, args, text }) => { 3 | if (!text) throw `*ENTER THE NAME YOU WANT TO BE THE NEW GROUP NAME*` 4 | try { 5 | let text = args.join` ` 6 | if(!args || !args[0]) { 7 | } else { 8 | conn.groupUpdateSubject(m.chat, text)} 9 | } catch (e) { 10 | throw '*SORRY THERE WAS AN ERROR, THE NAME CAN NOT BE MORE THAN 25 CHARACTERS*' 11 | }} 12 | handler.help = ['setname '] 13 | handler.tags = ['group'] 14 | handler.command = /^(setname)$/i 15 | handler.group = true 16 | handler.admin = true 17 | export default handler -------------------------------------------------------------------------------- /plugins/img-wallpaper.js: -------------------------------------------------------------------------------- 1 | import { wallpaper, wallpaperv2 } from '@bochilteam/scraper' 2 | let handler = async (m, { conn, text, usedPrefix, command }) => { 3 | if (!text) throw `*EXAMPLE USAGE ${usedPrefix + command} Minecraft*` 4 | const res = await (/2/.test(command) ? wallpaperv2 : wallpaper)(text) 5 | const img = res[Math.floor(Math.random() * res.length)] 6 | conn.sendFile(m.chat, img, 'error.jpg', `*𝚁𝙴𝚂𝚄𝙻𝚃 ${text}*`, m) 7 | } 8 | handler.help = ['', '2'].map(v => 'wallpaper' + v + ' ') 9 | handler.tags = ['downloader'] 10 | handler.command = /^(wallpaper2?)$/i 11 | export default handler 12 | -------------------------------------------------------------------------------- /plugins/kinflux bot-readqr.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | import fetch from 'node-fetch' 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let q = m.quoted ? m.quoted : m 5 | let mime = (q.msg || q).mimetype || '' 6 | if (!mime) throw '*Respond to a qr*' 7 | let img = await q.download?.() 8 | let url = await uploadImage(img) 9 | let anu = await fetch(`https://api.lolhuman.xyz/api/read-qr?apikey=${lolkeysapi}&img=${url}`) 10 | let json = await anu.json() 11 | await m.reply(`*here u go:* ${json.result}`)} 12 | handler.command = /^(readqr)$/i 13 | export default handler 14 | -------------------------------------------------------------------------------- /plugins/gc-setpp.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, usedPrefix, command }) => { 3 | let q = m.quoted ? m.quoted : m 4 | let mime = (q.msg || q).mimetype || q.mediaType || '' 5 | if (/image/.test(mime)) { 6 | let img = await q.download() 7 | if (!img) throw '*REPLY TO AN IMAGE.*' 8 | await conn.updateProfilePicture(m.chat, img).then(_ => m.reply('IMAGE SUCCESSFULLY SET AS PP._*')) 9 | } else throw '*REPLY TO AN IMAGE.*'} 10 | handler.command = /^setpp(group|grup|gc)?$/i 11 | handler.group = true 12 | handler.admin = true 13 | handler.botAdmin = true 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/maker-simp.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/misc/simpcard', { 4 | avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'error.png', '*your religion is simping*', m) 6 | } 7 | handler.help = ['simpcard'] 8 | handler.tags = ['maker'] 9 | handler.command = /^(simpcard)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/maker-blur.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, usedprefix }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/misc/blur', { 4 | avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'hornycard.png', '*[ ✔ ]*', m) 6 | } 7 | handler.help = ['blur','difuminar2'] 8 | handler.tags = ['maker'] 9 | handler.command = /^(blur|difuminar2)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/owner-delexpired.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | let who 4 | if (m.isGroup) who = args[1] ? args[1] : m.chat 5 | else who = args[1] 6 | 7 | if (new Date() * 1 < global.db.data.chats[who].expired) global.db.data.chats[who].expired = false 8 | else global.db.data.chats[who].expired = false 9 | 10 | m.reply(`✅ Removed expiration days for this group`) 11 | 12 | } 13 | handler.help = ['delexpired'] 14 | handler.tags = ['owner'] 15 | handler.command = /^(delexpired)$/i 16 | handler.rowner = true 17 | handler.group = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/tool-pdf.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | let handler = async (m, { conn, text, usedPrefix, command, isOwner }) => { 3 | let q = m.quoted ? m.quoted : m 4 | let mime = (q.msg || q).mimetype || '' 5 | if (!mime) throw '*Respond / reply to an image*' 6 | let img = await q.download?.() 7 | let url = await uploadImage(img) 8 | let docname = text ? text : m.pushName || 'KINFLUX bot' 9 | conn.sendFile(m.chat, `http://api.lolhuman.xyz/api/convert/imgtopdf?apikey=${lolkeysapi}&img=${url}`, docname + '.pdf', '', m, false, { asDocument: true }) 10 | } 11 | handler.command = /^topdf$/i 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/tool-ytcomment.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | if (!text) throw 'No Text' 3 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/misc/youtube-comment', { 4 | avatar: await conn.profilePictureUrl(m.sender, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | comment: text, 6 | username: conn.getName(m.sender) 7 | }), 'error.png', '*THANKS FOR THE COMMENT FROM KINFLUX BOT*', m) 8 | } 9 | handler.help = ['ytcomment '] 10 | handler.tags = ['maker'] 11 | handler.command = /^(ytcomment)$/i 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/Wall-Ronaldo.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | let handler = async(m, { conn, usedPrefix, command }) => { 3 | let cristiano = (await axios.get(`https://raw.githubusercontent.com/Guru322/api/Guru/BOT-JSON/CristianoRonaldo.json`)).data 4 | let ronaldo = await cristiano[Math.floor(cristiano.length * Math.random())] 5 | conn.sendFile(m.chat, ronaldo, 'error.jpg', `*siuuuuuuuuuu*`, m)} 6 | //conn.sendButton(m.chat, "*Siiiuuuuuu*", author, ronaldo, [['⚽ NEXT ⚽', `${usedPrefix + command}`]], m)} 7 | handler.help = ['cristianoronaldo', 'cr7'] 8 | handler.tags = ['internet'] 9 | handler.command = /^(ronaldo|cr7)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/fun-gay.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | let name = conn.getName(who) 4 | let pp = await conn.profilePictureUrl(who, 'image').catch(_ => './Guru.jpg') 5 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/overlay/gay', { 6 | avatar: pp, 7 | }), 'gay.png', `🏳️‍🌈 *Gay :* ${name}\n\nWho wants to rape this gay☠️? `, m) 8 | } 9 | 10 | handler.help = ['gay @user'] 11 | handler.tags = ['fun'] 12 | handler.command = ['gay'] 13 | 14 | export default handler 15 | -------------------------------------------------------------------------------- /plugins/maker-horny.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/misc/horny', { 4 | avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'hornycard.png', '*is horny 🥵🔥*', m) 6 | } 7 | handler.help = ['hornycard', 'hornylicense'] 8 | handler.tags = ['maker'] 9 | handler.command = /^(hornycard|license)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/maker.loli.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/misc/lolice', { 4 | avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 5 | }), 'error.png', '*🚔🚨 𝐋𝐎𝐋𝐈𝐂𝐎𝐍𝐒 like you only belong in jail 🚨🚔*', m) 6 | } 7 | handler.help = ['lolicon'] 8 | handler.tags = ['maker'] 9 | handler.command = /^(lolicon)$/i 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/tools-readviewonce.js: -------------------------------------------------------------------------------- 1 | 2 | let { downloadContentFromMessage } = (await import('@adiwajshing/baileys')); 3 | 4 | var handler = async (m, { conn }) => { 5 | if (!/viewOnce/.test(m.quoted?.mtype)) throw '✳️❇️ Its Not a ViewOnce Message' 6 | let mtype = Object.keys(m.quoted.message)[0] 7 | let buffer = await m.quoted.download() 8 | let caption = m.quoted.message[mtype].caption || '' 9 | conn.sendMessage(m.chat, { [mtype.replace(/Message/, '')]: buffer, caption }, { quoted: m }) 10 | } 11 | 12 | handler.help = ['readvo'] 13 | handler.tags = ['tools'] 14 | handler.command = ['readviewonce', 'read', 'ver', 'readvo'] 15 | 16 | export default handler -------------------------------------------------------------------------------- /plugins/fun-dare.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn }) => { 3 | let shizokeys = 'shizo' 4 | let res = await fetch(`https://shizoapi.cyclic.app/api/texts/dare?apikey=${shizokeys}`) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | 8 | let guru = `${json.result}` 9 | conn.sendMessage(m.chat, { text: guru, mentions: [m.sender] }, { quoted: m }) 10 | } 11 | handler.help = ['dare'] 12 | handler.tags = ['fun'] 13 | handler.command = /^(dare)$/i 14 | 15 | export default handler 16 | 17 | 18 | function pickRandom(list) { 19 | return list[Math.floor(list.length * Math.random())] 20 | } 21 | -------------------------------------------------------------------------------- /plugins/fun-waste.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 3 | let name = conn.getName(who) 4 | let pp = await conn.profilePictureUrl(who, 'image').catch(_ => './Guru.jpg') 5 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/overlay/wasted', { 6 | avatar: pp, 7 | }), 'waste.png', `*Ah! Shit :* ${name}\n\nWastedeeznuts`, m) 8 | } 9 | 10 | handler.help = ['waste @user'] 11 | handler.tags = ['fun'] 12 | handler.command = ['waste'] 13 | 14 | export default handler -------------------------------------------------------------------------------- /plugins/owner-blocklist.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn }) => { 2 | await conn.fetchBlocklist().then(async data => { 3 | let txt = `*≡ Blocked list*\n\n*Total :* ${data.length}\n\n┌─⊷\n` 4 | for (let i of data) { 5 | txt += `▢ @${i.split("@")[0]}\n`} 6 | txt += "└───────────" 7 | return conn.reply(m.chat, txt, m, { mentions: await conn.parseMention(txt) }) 8 | }).catch(err => { 9 | console.log(err); 10 | throw 'There are no blocked numbers'})} 11 | handler.help = ['blocklist'] 12 | handler.tags = ['main'] 13 | handler.command = ['blocklist', 'listblock'] 14 | handler.rowner = true 15 | export default handler -------------------------------------------------------------------------------- /plugins/fun-flirt.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn }) => { 3 | let shizokeys = 'shizo' 4 | let res = await fetch(`https://shizoapi.cyclic.app/api/texts/flirt?apikey=${shizokeys}`) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | 8 | let guru = `${json.result}` 9 | conn.sendMessage(m.chat, { text: guru, mentions: [m.sender] }, { quoted: m }) 10 | } 11 | handler.help = ['flirt'] 12 | handler.tags = ['fun'] 13 | handler.command = /^(flirt)$/i 14 | 15 | export default handler 16 | 17 | 18 | function pickRandom(list) { 19 | return list[Math.floor(list.length * Math.random())] 20 | } 21 | -------------------------------------------------------------------------------- /plugins/fun-truth.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn }) => { 3 | let shizokeys = 'shizo' 4 | let res = await fetch(`https://shizoapi.cyclic.app/api/texts/truth?apikey=${shizokeys}`) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | 8 | let guru = `${json.result}` 9 | conn.sendMessage(m.chat, { text: guru, mentions: [m.sender] }, { quoted: m }) 10 | } 11 | handler.help = ['truth'] 12 | handler.tags = ['fun'] 13 | handler.command = /^(truth)$/i 14 | 15 | export default handler 16 | 17 | 18 | function pickRandom(list) { 19 | return list[Math.floor(list.length * Math.random())] 20 | } 21 | -------------------------------------------------------------------------------- /lib/logs.js: -------------------------------------------------------------------------------- 1 | let stdouts = [] 2 | export default (maxLength = 200) => { 3 | let oldWrite = process.stdout.write.bind(process.stdout) 4 | module.exports.disable = () => { 5 | module.exports.isModified = false 6 | return process.stdout.write = oldWrite 7 | } 8 | process.stdout.write = (chunk, encoding, callback) => { 9 | stdouts.push(Buffer.from(chunk, encoding)) 10 | oldWrite(chunk, encoding, callback) 11 | if (stdouts.length > maxLength) stdouts.shift() 12 | } 13 | module.exports.isModified = true 14 | return module.exports 15 | } 16 | 17 | export const isModified = false 18 | export function logs() { return Buffer.concat(stdouts)} 19 | 20 | -------------------------------------------------------------------------------- /plugins/cmd-del.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { text }) => { 4 | let hash = text 5 | if (m.quoted && m.quoted.fileSha256) hash = m.quoted.fileSha256.toString('hex') 6 | if (!hash) throw `✳️ Enter the command name` 7 | let sticker = global.db.data.sticker 8 | if (sticker[hash] && sticker[hash].locked) throw `✳️ You can not delete this command` 9 | delete sticker[hash] 10 | m.reply(`✅ Command eliminated`) 11 | } 12 | 13 | 14 | handler.help = ['cmd'].map(v => 'del' + v + ' ') 15 | handler.tags = ['cmd'] 16 | handler.command = ['delcmd'] 17 | handler.owner = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/gp-warns.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, groupMetadata}) => { 3 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 4 | if (!(who in global.db.data.users)) throw `✳️ The user is not found in my database` 5 | let warn = global.db.data.users[who].warn 6 | let name = conn.getName(who) 7 | m.reply(` 8 | *WARNINGS* 9 | 10 | ▢ *Name :* ${name} 11 | ▢ *Warns :* ${warn}`) 12 | } 13 | 14 | handler.help = ['warns'] 15 | handler.tags = ['group'] 16 | handler.command = ['warns'] 17 | handler.group = true 18 | 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/fun-shayeri.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async (m, { conn }) => { 3 | let shizokeys = 'shizo' 4 | let res = await fetch(`https://shizoapi.cyclic.app/api/texts/shayari?apikey=${shizokeys}`) 5 | if (!res.ok) throw await res.text() 6 | let json = await res.json() 7 | 8 | let guru = `${json.result}` 9 | conn.sendMessage(m.chat, { text: guru, mentions: [m.sender] }, { quoted: m }) 10 | } 11 | handler.help = ['shayari'] 12 | handler.tags = ['fun'] 13 | handler.command = /^(shayari)$/i 14 | 15 | export default handler 16 | 17 | 18 | function pickRandom(list) { 19 | return list[Math.floor(list.length * Math.random())] 20 | } 21 | -------------------------------------------------------------------------------- /plugins/gp-settings.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args, usedPrefix, command }) => { 2 | let isClose = { // Switch Case Like :v 3 | 'open': 'not_announcement', 4 | 'close': 'announcement', 5 | }[(args[0] || '')] 6 | if (isClose === undefined) 7 | throw ` 8 | *✳️ choose an option:* 9 | *▢ ${usedPrefix + command} close* 10 | *▢ ${usedPrefix + command} open* 11 | `.trim() 12 | await conn.groupSettingUpdate(m.chat, isClose) 13 | } 14 | handler.help = ['group *open/close*'] 15 | handler.tags = ['group'] 16 | handler.command = ['group', 'grupo'] 17 | handler.admin = true 18 | handler.botAdmin = true 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/Wall-couplepp.js: -------------------------------------------------------------------------------- 1 | import fetch from "node-fetch" 2 | let handler = async (m, { conn }) => { 3 | 4 | let data = await (await fetch('https://raw.githubusercontent.com/KazukoGans/database/main/anime/ppcouple.json')).json() 5 | let cita = data[Math.floor(Math.random() * data.length)] 6 | 7 | let cowi = await(await fetch(cita.cowo)).buffer() 8 | await conn.sendFile(m.chat, cowi, '', '♂️', m) 9 | let ciwi = await(await fetch(cita.cewe)).buffer() 10 | await conn.sendFile(m.chat, ciwi, '', '♀️', m) 11 | } 12 | handler.help = ['ppcouple', 'ppcp'] 13 | handler.tags = ['internet'] 14 | handler.command = ['couplepp','ppcouple'] 15 | 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/gp-tagall.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, participants, isAdmin, isOwner, groupMetadata }) => { 2 | let users = participants.map(u => u.id).filter(v => v !== conn.user.jid) 3 | m.reply(`▢ Group : *${groupMetadata.subject}*\n▢ Members : *${participants.length}*${text ? `\n▢ Message : ${text}\n` : ''}\n┌───⊷ *MENTIONS*\n` + users.map(v => '▢ @' + v.replace(/@.+/, '')).join`\n` + '\n└──✪ kinflux ┃ ᴮᴼᵀ ✪──', null, { 4 | mentions: users 5 | }) 6 | } 7 | 8 | handler.help = ['tagall'] 9 | handler.tags = ['group'] 10 | handler.command = ['tagall'] 11 | handler.admin = true 12 | handler.owner = true 13 | handler.group = true 14 | 15 | export default handler 16 | -------------------------------------------------------------------------------- /plugins/_autolevelup.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | import { canLevelUp } from '../lib/levelling.js' 3 | 4 | export async function before(m, { conn }) { 5 | let user = global.db.data.users[m.sender] 6 | if (!user.autolevelup) 7 | return !0 8 | let before = user.level * 1 9 | while (canLevelUp(user.level, user.exp, global.multiplier)) 10 | user.level++ 11 | user.role = global.rpg.role(user.level).name 12 | if (before !== user.level) { 13 | m.reply(` 14 | *▢ LEVEL UP* 15 | 16 | *${before}* ‣ *${user.level}* 17 | ROLE : *${user.role}* 18 | 19 | _to deactivate write this_ 20 | _*/off autolevelup*_ 21 | `.trim()) 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /plugins/av-bot.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn}) => { 3 | let user = global.db.data.users[m.sender] 4 | let name = conn.getName(m.sender) 5 | let taguser = '@' + m.sender.split("@s.whatsapp.net")[0] 6 | let av = `./src/mp3/${pickRandom(["Guru", "Guru1", "Guru2", "Guru3", "Guru4"])}.mp3` 7 | 8 | m.reply( `Hello ${taguser} am kinflux bot how can i help? type /help `) 9 | conn.sendFile(m.chat, av, 'audio.mp3', null, m, true, { type: 'audioMessage', ptt: true }) 10 | } 11 | 12 | handler.customPrefix = /^(bot|kinflux bot)$/i 13 | handler.command = new RegExp 14 | 15 | export default handler 16 | 17 | function pickRandom(list) { 18 | return list[Math.floor(list.length * Math.random())] 19 | } 20 | -------------------------------------------------------------------------------- /plugins/cmd-list.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn }) => { 4 | conn.reply(m.chat, ` 5 | *LIST COMANDOS* 6 | 7 | ▢ *Info:* If it is in *bold* it is blocked 8 | 9 | ────────────────── 10 | ${Object.entries(global.db.data.sticker).map(([key, value], index) => `${index + 1}. ${value.locked ? `(bloqueado) ${key}` : key} : ${value.text}`).join('\n')} 11 | 12 | `.trim(), null, { 13 | mentions: Object.values(global.db.data.sticker).map(x => x.mentionedJid).reduce((a, b) => [...a, ...b], []) 14 | }) 15 | } 16 | 17 | 18 | handler.help = ['listcmd'] 19 | handler.tags = ['cmd'] 20 | handler.command = ['listcmd'] 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/owner.banlist.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, usedPrefix }) => { 3 | let chats = Object.entries(global.db.data.chats).filter(chat => chat[1].isBanned) 4 | let users = Object.entries(global.db.data.users).filter(user => user[1].banned) 5 | 6 | m.reply(` 7 | ≡ *USERS BANNED FROM USING KINFLUX BOT* 8 | 9 | ▢ Total : *${users.length}* 10 | 11 | ${users ? '\n' + users.map(([jid], i) => ` 12 | ${i + 1}. ${conn.getName(jid) == undefined ? 'UNKNOWN' : conn.getName(jid)} 13 | ▢ ${jid} 14 | `.trim()).join('\n') : ''} 15 | `.trim()) 16 | } 17 | handler.help = ['listban'] 18 | handler.tags = ['owner'] 19 | handler.command = ['banlist', 'listban'] 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/gp-delete.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, usedPrefix, command }) => { 3 | 4 | if (!m.quoted) throw `✳️ Reply to the message you want to delete` 5 | try { 6 | let delet = m.message.extendedTextMessage.contextInfo.participant 7 | let bang = m.message.extendedTextMessage.contextInfo.stanzaId 8 | return conn.sendMessage(m.chat, { delete: { remoteJid: m.chat, fromMe: false, id: bang, participant: delet }}) 9 | } catch { 10 | return conn.sendMessage(m.chat, { delete: m.quoted.vM.key }) 11 | } 12 | } 13 | handler.help = ['delete'] 14 | handler.tags = ['group'] 15 | handler.command = /^del(ete)?$/i 16 | handler.group = false 17 | handler.admin = true 18 | handler.botAdmin = true 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/dl-tiktokstalk.js: -------------------------------------------------------------------------------- 1 | 2 | import fg from 'api-dylux' 3 | let handler = async (m, { conn, text, args }) => { 4 | 5 | if (!text) throw `✳️Enter the Username of a TikTok user ` 6 | let res = await fg.ttStalk(args[0]) 7 | let txt = ` 8 | ┌──「 *TIKTOK STALK* 9 | ▢ *🔖Number:* ${res.name} 10 | ▢ *🔖Username:* ${res.username} 11 | ▢ *👥followers:* ${res.followers} 12 | ▢ *🫂following:* ${res.following} 13 | ▢ *📌Desc:* ${res.desc} 14 | 15 | ▢ *🔗 Link* : https://tiktok.com/${res.username} 16 | └────────────` 17 | await conn.sendFile(m.chat, res.profile, 'tt.png', txt, m) 18 | } 19 | handler.help = ['tiktokstalk'] 20 | handler.tags = ['dl'] 21 | handler.command = /^t(tstalk|iktokstalk)$/i 22 | 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/Blackpink.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let bpink = [] 4 | 5 | fetch('https://raw.githubusercontent.com/arivpn/dbase/master/kpop/blekping.txt') 6 | 7 | .then(res => res.text()) 8 | 9 | .then(txt => bpink = txt.split('\n')) 10 | 11 | let handler = async (m, { conn }) => { 12 | 13 | let img = bpink[Math.floor(Math.random() * bpink.length)] 14 | 15 | if (!img) throw img 16 | 17 | await conn.sendFile(m.chat, img, '', 'made by Guru', m, 0, { thumbnail: await (await fetch(img)).buffer() }) 18 | 19 | } 20 | 21 | handler.help = ['blackpink'] 22 | 23 | handler.tags = ['image'] 24 | 25 | handler.limit = false 26 | 27 | handler.command = /^(bpink|bp|blackpink)$/i 28 | 29 | export default handler 30 | -------------------------------------------------------------------------------- /plugins/gp-kick.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, participants, usedPrefix, command }) => { 3 | 4 | let kickte = `✳️ Correct use of the command\n*${usedPrefix + command}* @tag` 5 | 6 | if (!m.mentionedJid[0] && !m.quoted) return m.reply(kickte, m.chat, { mentions: conn.parseMention(kickte)}) 7 | let user = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender 8 | let owr = m.chat.split`-`[0] 9 | await conn.groupParticipantsUpdate(m.chat, [user], 'remove') 10 | m.reply(`✅ User kicked`) 11 | 12 | } 13 | 14 | handler.help = ['kick @user'] 15 | handler.tags = ['group'] 16 | handler.command = ['kick', 'expulsar'] 17 | handler.admin = true 18 | handler.group = true 19 | handler.botAdmin = true 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/main-blocklist.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn }) => { 3 | 4 | await conn.fetchBlocklist().then(async data => { 5 | let txt = ` 6 | ╭───•✧✧•───╮ 7 | *≡ 🎌KINFLUX 𝘽𝙊𝙏 🎌 SCRIPT* 8 | ╰───•✧✧•───╯ 9 | ≻───── ⋆✩⋆ ─────≺ 10 | *≡ List *\n\n*Total :* ${data.length}\n\n┌─⊷\n` 11 | for (let i of data) { 12 | txt += `▢ @${i.split("@")[0]}\n` 13 | } 14 | txt += "└───────────" 15 | return conn.reply(m.chat, txt, m, { mentions: await conn.parseMention(txt) }) 16 | }).catch(err => { 17 | console.log(err); 18 | throw 'no numbers blocked' 19 | }) 20 | } 21 | 22 | handler.help = ['blocklist'] 23 | handler.tags = ['main'] 24 | handler.command = ['blocklist', 'listblock'] 25 | 26 | export default handler 27 | -------------------------------------------------------------------------------- /plugins/maker-stupid.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, args }) => { 2 | let text = args.slice(1).join(' ') 3 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 4 | conn.sendFile(m.chat, global.API('https://some-random-api.com', '/canvas/misc/its-so-stupid', { 5 | avatar: await conn.profilePictureUrl(who, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'), 6 | dog: text || 'im+stupid' 7 | }), 'error.png', `*@${author}*`, m) 8 | } 9 | handler.help = ['itssostupid', 'iss', 'stupid'] 10 | handler.tags = ['maker'] 11 | handler.command = /^(itssostupid|iss|stupid)$/i 12 | export default handler 13 | -------------------------------------------------------------------------------- /plugins/tools-tourl.js: -------------------------------------------------------------------------------- 1 | import uploadFile from '../lib/uploadFile.js' 2 | import uploadImage from '../lib/uploadImage.js' 3 | 4 | let handler = async (m) => { 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (q.msg || q).mimetype || '' 7 | if (!mime) throw '✳️ Respond to an image/video' 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(`▢ ${media.length} Byte(s) 12 | 13 | ▢ ${isTele ? '(No expiration date)' : '(Unknown)'} 14 | ▢ *URL :* ${link} 15 | `) 16 | } 17 | handler.help = ['tourl'] 18 | handler.tags = ['tools'] 19 | handler.command = ['upload', 'tourl'] 20 | 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/tool-shorturl.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, args, text }) => { 4 | if (!text) throw '*Please provide a URL or link to shorten.*'; 5 | 6 | let shortUrl1 = await (await fetch(`https://tinyurl.com/api-create.php?url=${args[0]}`)).text(); 7 | 8 | if (!shortUrl1) throw `*Error: Could not generate a short URL.*`; 9 | 10 | let done = `*SHORT URL CREATED!!*\n\n*Original Link:*\n${text}\n*Shortened URL:*\n${shortUrl1}`.trim(); 11 | 12 | m.reply(done); 13 | }; 14 | 15 | handler.help = ['tinyurl', 'shorten'].map(v => v + ' '); 16 | handler.tags = ['tools']; 17 | handler.command = /^(tinyurl|short|acortar|corto)$/i; 18 | handler.fail = null; 19 | 20 | export default handler; 21 | -------------------------------------------------------------------------------- /plugins/rg-unreg.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | import { createHash } from 'crypto' 4 | let handler = async function (m, { conn, args, usedPrefix}) { 5 | if (!args[0]) throw `✳️ *Enter serial number*\nCheck your serial number with the command...\n\n*${usedPrefix}nserie*` 6 | let user = global.db.data.users[m.sender] 7 | let sn = createHash('md5').update(m.sender).digest('hex') 8 | if (args[0] !== sn) throw '⚠️ *Incorrect serial number*' 9 | user.registered = false 10 | m.reply(`✅ Registration eliminated succesfully from kinflux bot`) 11 | } 12 | handler.help = ['unreg '] 13 | handler.tags = ['rg'] 14 | 15 | handler.command = ['unreg'] 16 | handler.register = true 17 | 18 | export default handler 19 | 20 | -------------------------------------------------------------------------------- /plugins/owner-exec2.js: -------------------------------------------------------------------------------- 1 | import cp, { exec as _exec } from 'child_process' 2 | import { promisify } from 'util' 3 | let exec = promisify(_exec).bind(cp) 4 | let handler = async (m, { conn, isOwner, command, text }) => { 5 | if (conn.user.jid != conn.user.jid) return 6 | m.reply('✅ running...') 7 | let o 8 | try { 9 | o = await exec(command.trimStart() + ' ' + text.trimEnd()) 10 | } catch (e) { 11 | o = e 12 | } finally { 13 | let { stdout, stderr } = o 14 | if (stdout.trim()) m.reply(stdout) 15 | if (stderr.trim()) m.reply(stderr) 16 | } 17 | } 18 | handler.help = ['$'] 19 | handler.tags = ['advanced'] 20 | handler.customPrefix = /^[$] / 21 | handler.command = new RegExp 22 | handler.rowner = true 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/_jsjs.js: -------------------------------------------------------------------------------- 1 | import { sticker } from '../lib/sticker.js' 2 | import fetch from 'node-fetch' 3 | import axios from 'axios' 4 | 5 | let handler = async (m, { conn, text, usedPrefix, command }) => { 6 | let img = (await axios.get(`https://raw.githubusercontent.com/FG98F/team-fg/main/img/hu.json`)).data 7 | let stiker = await sticker(null, global.API(`${pickRandom(img)}`), global.packname, global.author) 8 | if (stiker) return await conn.sendFile(m.chat, stiker, 'sticker.webp', { asSticker: true }, m) 9 | throw stiker.toString() 10 | } 11 | 12 | handler.customPrefix = /^(khajs)$/i 13 | handler.command = new RegExp 14 | 15 | export default handler 16 | 17 | function pickRandom(list) { 18 | return list[Math.floor(list.length * Math.random())] 19 | } 20 | -------------------------------------------------------------------------------- /plugins/animequote.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | const handler = async (m, { conn }) => { 4 | try { 5 | const res = await fetch('https://some-random-api.com/animu/quote'); 6 | if (!res.ok) throw await res.text(); 7 | const json = await res.json(); 8 | const { sentence, character, anime } = json; 9 | 10 | const message = `❖𝙌𝙐𝙊𝙏𝙀 ${sentence}\n\n❖𝘾𝙃𝘼𝙍𝘼𝘾𝙏𝙀𝙍 ${character}\n❖𝘼𝙉𝙄𝙈𝙀 ${anime}`; 11 | conn.sendMessage(m.chat, { text: message }, 'extendedTextMessage', { quoted: m }); 12 | } catch (error) { 13 | console.error(error); 14 | } 15 | }; 16 | 17 | handler.help = ['animequote']; 18 | handler.tags = ['internet']; 19 | handler.command = /^(animequote)$/i; 20 | 21 | export default handler; 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /plugins/img-girl.js: -------------------------------------------------------------------------------- 1 | 2 | import axios from 'axios' 3 | let handler = async(m, { conn, usedPrefix, command }) => { 4 | 5 | //let girl = (await axios.get(`https://raw.githubusercontent.com/FG98F/team-fg/main/img/girl.json`)).data 6 | let girl = await conn.getFile(global.API('fgmods', '/api/girl', { }, 'apikey')) 7 | let img = girl.data 8 | await conn.sendFile(m.chat, img, 'img.jpg', `✅ Tharki kun🤭`, m) 9 | //conn.sendButton(m.chat, '✅ Result 🤭', igfg, img, [['▷▷ NEXT', `${usedPrefix + command}`]],m) 10 | } 11 | handler.help = ['girl'] 12 | handler.tags = ['img'] 13 | handler.command = ['girl', 'woman'] 14 | handler.diamond = true 15 | 16 | export default handler 17 | 18 | function pickRandom(list) { 19 | return list[Math.floor(list.length * Math.random())] 20 | } 21 | -------------------------------------------------------------------------------- /plugins/img-memes.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const handler = async (m, { conn, usedPrefix, command }) => { 4 | try { 5 | const response = await axios.get('https://shizoapi.cyclic.app/api/memes/cheems?apikey=shizo', { 6 | responseType: 'arraybuffer', 7 | }); 8 | 9 | const memeData = response.data; 10 | const buffer = Buffer.from(memeData, 'binary'); 11 | conn.sendFile(m.chat, buffer, 'meme.jpg', '', m); 12 | m.react('😆'); 13 | } catch (error) { 14 | console.error(error); 15 | m.reply('Sorry, an error occurred while fetching the meme.'); 16 | } 17 | }; 18 | 19 | handler.help = ['meme']; 20 | handler.tags = ['img']; 21 | handler.command = ['meme', 'memes']; 22 | handler.diamond = true; 23 | 24 | export default handler; 25 | -------------------------------------------------------------------------------- /plugins/main-ping.js: -------------------------------------------------------------------------------- 1 | 2 | import speed from 'performance-now' 3 | import { spawn, exec, execSync } from 'child_process' 4 | 5 | let handler = async (m, { conn }) => { 6 | let timestamp = speed(); 7 | let latensi = speed() - timestamp; 8 | exec(`neofetch --stdout`, (error, stdout, stderr) => { 9 | let child = stdout.toString("utf-8"); 10 | let ssd = child.replace(/Memory:/, "Ram:"); 11 | m.reply(` 12 | ╭───•✧✧•───╮ 13 | *≡ 🎌KINFLUX 𝘽𝙊𝙏 🎌* 14 | ╰───•✧✧•───╯ 15 | ≻───── ⋆✩⋆ ─────≺ 16 | ${ssd}🟢 *ping* : ${latensi.toFixed(4)} _ms_`); 17 | }); 18 | } 19 | handler.help = ['ping'] 20 | handler.tags = ['main'] 21 | handler.command = ['ping', 'speed'] 22 | 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/Shubham-getbio.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, command }) => { 2 | try { 3 | let who 4 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender 5 | else who = m.quoted.sender ? m.quoted.sender : m.sender 6 | let bio = await conn.fetchStatus(who) 7 | m.reply(bio.status) 8 | } catch { 9 | if (text) throw `bio is private!` 10 | else try { 11 | let who = m.quoted ? m.quoted.sender : m.sender 12 | let bio = await conn.fetchStatus(who) 13 | m.reply(bio.status) 14 | } catch { 15 | throw `bio is private!` 16 | } 17 | } 18 | } 19 | handler.help = ['getbio <@tag/reply>'] 20 | handler.tags = ['group'] 21 | handler.command = /^(getb?io)$/i 22 | handler.limit = true 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/tools-wikipedia.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import cheerio from 'cheerio' 3 | 4 | 5 | let handler = async (m, { text }) => { 6 | if (!text) throw `✳️ Enter what you want to search for on Wikipedia` 7 | 8 | try { 9 | const link = await axios.get(`https://es.wikipedia.org/wiki/${text}`) 10 | const $ = cheerio.load(link.data) 11 | let wik = $('#firstHeading').text().trim() 12 | let resulw = $('#mw-content-text > div.mw-parser-output').find('p').text().trim() 13 | m.reply(`▢ *Wikipedia* 14 | 15 | ‣ Buscado : ${wik} 16 | 17 | ${resulw}`) 18 | } catch (e) { 19 | m.reply('⚠️ No results found ') 20 | } 21 | } 22 | handler.help = ['wikipedia'] 23 | handler.tags = ['tools'] 24 | handler.command = ['wiki','wikipedia'] 25 | 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/sticker-toimg.js: -------------------------------------------------------------------------------- 1 | import { webp2png } from '../lib/webp2mp4.js' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | const notStickerMessage = `✳️ Reply to a sticker with :\n\n *${usedPrefix + command}*` 5 | if (!m.quoted) throw notStickerMessage 6 | const q = m.quoted || m 7 | let mime = q.mediaType || '' 8 | if (!/sticker/.test(mime)) throw notStickerMessage 9 | let media = await q.download() 10 | let out = await webp2png(media).catch(_ => null) || Buffer.alloc(0) 11 | await conn.sendFile(m.chat, out, 'out.png', '*✅ MADE WITH LOVE BY KINFLUX BOT. Here you have*', m) 12 | } 13 | handler.help = ['toimg '] 14 | handler.tags = ['sticker'] 15 | handler.command = ['toimg', 'jpg', 'aimg'] 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/main-Guru.js: -------------------------------------------------------------------------------- 1 | let handler = async m => m.reply(` 2 | 3 | ≡ *kinflux ┃ ᴮᴼᵀ* GROUPS 4 | 5 | ───────────── 6 | ▢ Join public bot group and support 7 | https://chat.whatsapp.com/KggVmnH7ki6HoyD0025gDD 8 | 9 | ▢ Group 2 10 | https://chat.whatsapp.com/KggVmnH7ki6HoyD0025gDD 11 | 12 | ▢ threads for instagram 13 | 14 | https://threads.net/@kinfluxdigital 15 | 16 | ───────────── 17 | ≡ Disabled links? enter here! 18 | 19 | 20 | ───────────── 21 | ▢ *Owner Telegram* 22 | https://t.me/kinflux_bot 23 | 24 | ▢ *owner number* 25 | • https://wa.me/254110077535 26 | • https://wa.me/254110377776 27 | 28 | 29 | `.trim()) 30 | handler.help = ['gpguru'] 31 | handler.tags = ['main'] 32 | handler.command = ['groups', 'groupguru', 'gugp', 'ggp', 'gpguru'] 33 | 34 | export default handler 35 | -------------------------------------------------------------------------------- /plugins/owner-unbanUser.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 6 | else who = m.chat 7 | let user = global.db.data.users[who] 8 | if (!who) throw `✳️ Tag or mention the user to Allow him/her to use kinflux bot` 9 | let users = global.db.data.users 10 | users[who].banned = false 11 | conn.reply(m.chat, ` 12 | ✅ UNBANNED 13 | 14 | ─────────── 15 | @${who.split`@`[0]} has been unbanned`, m, { mentions: [who] }) 16 | } 17 | handler.help = ['unban @user'] 18 | handler.tags = ['owner'] 19 | handler.command = /^unban$/i 20 | handler.rowner = true 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/sticker-scircle.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | import { sticker } from '../lib/sticker.js' 3 | let handler = async (m, { conn, text }) => { 4 | try { 5 | let q = m.quoted ? m.quoted : m 6 | let mime = (q.msg || q).mimetype || '' 7 | let img = await q.download() 8 | let url = await uploadImage(img) 9 | let scircle = global.API('dzx', '/api/canvas/circle', { url }) 10 | let stiker = await sticker(null, scircle, global.packname, global.author) 11 | conn.sendFile(m.chat, stiker, 'sticker.webp', '', m, { asSticker: true }) 12 | } catch (e) { 13 | m.reply('*[❗𝐈𝐍𝐅𝐎❗] respond to a image to make it circle sticker*') 14 | }} 15 | handler.command = /^scircle|circle$/i 16 | export default handler 17 | /* `https://api.dhamzxploit.my.id/api/canvas/circle?url=${url}` */ 18 | -------------------------------------------------------------------------------- /plugins/_chatbot.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | const BRAINSHOP_BID = '176217'; 4 | const BRAINSHOP_KEY = 'knXmUkn9zcHAk09T'; 5 | 6 | export async function before(m, { conn }) { 7 | if (m.isBaileys && m.fromMe) { 8 | return true; 9 | } 10 | 11 | if (!m.isGroup) { 12 | return false; 13 | } 14 | 15 | const user = global.db.data.users[m.sender]; 16 | 17 | if (!user.chatbot) { 18 | return true; 19 | } 20 | 21 | const uid = encodeURIComponent(m.sender); 22 | const msg = encodeURIComponent(m.text); 23 | 24 | const response = await fetch(`http://api.brainshop.ai/get?bid=${BRAINSHOP_BID}&key=${BRAINSHOP_KEY}&uid=${uid}&msg=${msg}`); 25 | const data = await response.json(); 26 | 27 | const reply = data.cnt; 28 | 29 | m.reply(reply); 30 | } 31 | -------------------------------------------------------------------------------- /plugins/audio-toptt.js: -------------------------------------------------------------------------------- 1 | import { toPTT } from '../lib/converter.js' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let q = m.quoted ? m.quoted : m 5 | let mime = (m.quoted ? m.quoted : m.msg).mimetype || '' 6 | if (!/video|audio/.test(mime)) throw `✳️ Reply to the audio you want to convert to voice memo with :\n *${usedPrefix + command}*` 7 | let media = await q.download?.() 8 | if (!media) throw '❎ Failed to download media' 9 | let audio = await toPTT(media, 'mp4') 10 | if (!audio.data) throw '❎ Error converting' 11 | conn.sendFile(m.chat, audio.data, 'audio.mp3', '', m, true, { mimetype: 'audio/mp4' }) 12 | } 13 | handler.help = ['toav'] 14 | handler.tags = ['fun'] 15 | 16 | handler.command = ['toav', 'tovn'] 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/av-audios.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = m => m 3 | handler.all = async function (m) { 4 | 5 | if (/^buenos días$/i.test(m.text) ) { 6 | let av = 'https://f.top4top.io/m_2437qgtmd1.mp3' 7 | this.sendFile(m.chat, av, 'audio.mp3', null, m, true, { type: 'audioMessage', ptt: true }) 8 | } 9 | 10 | if (/^buenas tardes$/i.test(m.text) ) { 11 | let av = 'https://g.top4top.io/m_2437lm0y21.mp3' 12 | this.sendFile(m.chat, av, 'audio.mp3', null, m, true, { type: 'audioMessage', ptt: true }) 13 | } 14 | 15 | if (/^buenas noches$/i.test(m.text) ) { 16 | let av = 'https://e.top4top.io/m_2437afchn1.mp3' 17 | this.sendFile(m.chat, av, 'audio.mp3', null, m, true, { type: 'audioMessage', ptt: true }) 18 | } 19 | 20 | return !0 21 | } 22 | 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/owner-banUser.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 6 | else who = m.chat 7 | let user = global.db.data.users[who] 8 | if (!who) throw `✳️ Tag or mention someone\n\n📌 Example : ${usedPrefix + command} @user` 9 | let users = global.db.data.users 10 | users[who].banned = true 11 | conn.reply(m.chat, ` 12 | ✅ BANNED 13 | 14 | ─────────── 15 | @${who.split`@`[0]} you will no longer be able to use my commands `, m, { mentions: [who] }) 16 | } 17 | handler.help = ['ban @user'] 18 | handler.tags = ['owner'] 19 | handler.command = /^ban$/i 20 | handler.rowner = true 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/audio-tomp3.js: -------------------------------------------------------------------------------- 1 | import { toAudio } from '../lib/converter.js' 2 | 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | let q = m.quoted ? m.quoted : m 5 | /* let mime = (m.quoted ? m.quoted : m.msg).mimetype || '' 6 | if (!/video|audio/.test(mime)) throw `✳️ Reply to the video or voice note you want to convert to mp3 with the command :\n\n*${usedPrefix + command}*`*/ 7 | let media = await q.download?.() 8 | if (!media) throw '❎ Failed to download media' 9 | let audio = await toAudio(media, 'mp4') 10 | if (!audio.data) throw '❎ Error converting' 11 | conn.sendFile(m.chat, audio.data, 'audio.mp3', '', m, null, { mimetype: 'audio/mp4' }) 12 | } 13 | handler.help = ['tomp3'] 14 | handler.tags = ['fun'] 15 | handler.command = /^to(mp3|a(udio)?)$/i 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/gp-polling.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, text, args, usedPrefix, command }) => { 3 | 4 | if (!args[0]) throw `✳️ Missing text for survey \n\n📌 Example : \n*${usedPrefix + command}* Message |GURU|xd` 5 | if (!text.includes('|')) throw `✳️ Separate surveys with *|* \n\n📌 Example : \n*${usedPrefix + command}* my survey|n |GURU|xd|piro` 6 | 7 | let name = await conn.getName(m.sender) 8 | let a = [] 9 | let b = text.split('|') 10 | for (let c = 1 || 0; c < b.length; c++) { 11 | a.push([b[c]]) 12 | } 13 | return conn.sendPoll(m.chat, `📊 *Survey requested by:* ${name}\n\n*Message:* ${text.split('|')[0]}`, a, m) 14 | } 15 | handler.help = ['poll '] 16 | handler.tags = ['group'] 17 | handler.command = ['poll', 'encuesta', 'polling'] 18 | handler.group = true 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/sticker-trigger.js: -------------------------------------------------------------------------------- 1 | import { sticker } from '../lib/sticker.js' 2 | 3 | let handler = async (m, { conn }) => { 4 | 5 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 6 | let marah = global.API('https://some-random-api.ml', '/canvas/triggered', { 7 | avatar: await conn.profilePictureUrl(who, 'image').catch(_ => './src/avatar_contact.png'), 8 | }) 9 | let stiker = await sticker(false, marah, global.packname, global.author) 10 | if (stiker) return await conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 11 | 12 | throw stiker.toString() 13 | } 14 | 15 | 16 | handler.help = ['trigger <@user>'] 17 | handler.tags = ['sticker'] 18 | handler.command = ['trigger', 'triggered', 'ger'] 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/dl-gdrive.js: -------------------------------------------------------------------------------- 1 | 2 | import fg from 'api-dylux' 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | 5 | if (!args[0]) throw `✳️ Enter a Google Drive link` 6 | m.react(rwait) 7 | try { 8 | let res = await fg.GDriveDl(args[0]) 9 | await m.reply(` 10 | ≡ *Google Drive DL* 11 | 12 | ▢ *Number:* ${res.fileName} 13 | ▢ *Size:* ${res.fileSize} 14 | ▢ *type:* ${res.mimetype}`) 15 | 16 | conn.sendMessage(m.chat, { document: { url: res.downloadUrl }, fileName: res.fileName, mimetype: res.mimetype }, { quoted: m }) 17 | m.react(done) 18 | } catch { 19 | m.reply('Error: Check the link or try another link') 20 | } 21 | } 22 | handler.help = ['gdrive'] 23 | handler.tags = ['dl', 'prem'] 24 | handler.command = ['gdrive'] 25 | handler.diamond = true 26 | handler.premium = true 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/tools-technews.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn }) => { 4 | try { 5 | let res = await fetch('https://fantox001-scrappy-api.vercel.app/technews/random'); 6 | if (!res.ok) throw await res.text(); 7 | let json = await res.json(); 8 | if (!json.news) throw json; 9 | 10 | let techNews = `•───── ୨❀୧ ─────• 11 | ❖ 𝑺𝑻𝑨𝑻𝑼𝑺: Active 12 | ㋡ 𝑪𝑹𝑬𝑨𝑻𝑶𝑹: KINFLUX DIGITAL 13 | ☞ 𝑵𝑬𝑾𝑺: ${json.news} 14 | •───── ୨❀୧ ─────• 15 | `; 16 | 17 | conn.sendFile(m.chat, json.thumbnail, 'thumbnail.jpg', techNews, m); 18 | 19 | 20 | m.react(done); 21 | } catch (e) { 22 | 23 | m.react(error); 24 | } 25 | } 26 | handler.help = ['technews']; 27 | handler.tags = ['news']; 28 | handler.command = ['technews']; 29 | 30 | export default handler; 31 | -------------------------------------------------------------------------------- /lib/uploadImage.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | import { FormData, Blob } from 'formdata-node'; 3 | import { fileTypeFromBuffer } from 'file-type' 4 | 5 | /** 6 | * Upload image to telegra.ph 7 | * Supported mimetype: 8 | * - `image/jpeg` 9 | * - `image/jpg` 10 | * - `image/png`s 11 | * @param {Buffer} buffer Image Buffer 12 | * @return {Promise} 13 | */ 14 | export default async buffer => { 15 | const { ext, mime } = await fileTypeFromBuffer(buffer) 16 | let form = new FormData() 17 | const blob = new Blob([buffer.toArrayBuffer()], { type: mime }) 18 | form.append('file', blob, 'tmp.' + ext) 19 | let res = await fetch('https://telegra.ph/upload', { 20 | method: 'POST', 21 | body: form 22 | }) 23 | let img = await res.json() 24 | if (img.error) throw img.error 25 | return 'https://telegra.ph' + img[0].src 26 | } 27 | 28 | -------------------------------------------------------------------------------- /plugins/dl-igstalk.js: -------------------------------------------------------------------------------- 1 | 2 | import fg from 'api-dylux' 3 | let handler= async (m, { conn, args, text, usedPrefix, command }) => { 4 | 5 | if (!args[0]) throw `✳️ Enter the Instagram Username\n\n📌Example: ${usedPrefix + command} kinfluxdigital` 6 | let res = await fg.igStalk(args[0]) 7 | let te = ` 8 | ┌──「 *STALKING* 9 | ▢ *🔖Number:* ${res.name} 10 | ▢ *🔖Username:* ${res.username} 11 | ▢ *👥followers:* ${res.followersH} 12 | ▢ *🫂following:* ${res.followingH} 13 | ▢ *📌Bio:* ${res.description} 14 | ▢ *🏝️Posts:* ${res.postsH} 15 | 16 | ▢ *🔗 Link* : https://instagram.com/${res.username.replace(/^@/, '')} 17 | └────────────` 18 | 19 | await conn.sendFile(m.chat, res.profilePic, 'tt.png', te, m) 20 | 21 | } 22 | handler.help = ['igstalk'] 23 | handler.tags = ['dl'] 24 | handler.command = ['igstalk'] 25 | 26 | export default handler 27 | -------------------------------------------------------------------------------- /plugins/fun-pickupline.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let pickupLineHandler = async (m, { conn, text }) => { 4 | try { 5 | let res = await fetch(`https://api.popcat.xyz/pickuplines`); 6 | 7 | if (!res.ok) { 8 | throw new Error(`API request failed with status ${res.status}`); 9 | } 10 | 11 | let json = await res.json(); 12 | 13 | console.log('JSON response:', json); 14 | 15 | let pickupLine = `*Here's a pickup line for you:*\n\n"${json.pickupline}"\n\nContributor: ${json.contributor}`; 16 | 17 | m.reply(pickupLine); 18 | } catch (error) { 19 | console.error(error); 20 | // Handle the error appropriately 21 | } 22 | }; 23 | 24 | pickupLineHandler.help = ['pickupline']; 25 | pickupLineHandler.tags = ['fun']; 26 | pickupLineHandler.command = /^(pickupline|pickup)$/i; 27 | 28 | export default pickupLineHandler; 29 | -------------------------------------------------------------------------------- /plugins/_getmsg.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | export async function all(m) { 4 | if (!m.chat.endsWith('.net') || m.fromMe || m.key.remoteJid.endsWith('status@broadcast')) return 5 | if (global.db.data.chats[m.chat].isBanned) return 6 | if (global.db.data.users[m.sender].banned) return 7 | if (m.isBaileys) return 8 | let msgs = global.db.data.msgs 9 | if (!(m.text in msgs)) return 10 | let _m = this.serializeM(JSON.parse(JSON.stringify(msgs[m.text]), (_, v) => { 11 | if ( 12 | v !== null && 13 | typeof v === 'object' && 14 | 'type' in v && 15 | v.type === 'Buffer' && 16 | 'data' in v && 17 | Array.isArray(v.data)) { 18 | return Buffer.from(v.data) 19 | } 20 | return v 21 | })) 22 | await _m.copyNForward(m.chat, true) 23 | } 24 | -------------------------------------------------------------------------------- /plugins/dl-twitter.js: -------------------------------------------------------------------------------- 1 | 2 | import fg from 'api-dylux' 3 | let handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args[0]) throw `📌 Example : \n*${usedPrefix + command}* https://twitter.com/fernandavasro/status/1569741835555291139?t=ADxk8P3Z3prq8USIZUqXCg&s=19` 5 | m.react(rwait) 6 | try { 7 | let { SD, HD, desc, thumb, audio } = await fg.twitter(args[0]) 8 | let te = ` 9 | ┌─⊷ *TWITTER DL* 10 | ▢ Description: ${desc} 11 | Made with love by Kinflux bot 12 | └───────────` 13 | conn.sendFile(m.chat, HD, 'twitter.mp4', te, m) 14 | m.react(done) 15 | } catch (e) { 16 | m.reply(`✳️ verify that the link is from Twitter`) 17 | } 18 | 19 | } 20 | handler.help = ['twitter'].map(v => v + ' ') 21 | handler.tags = ['dl'] 22 | handler.command = /^(twitter|tw)$/i 23 | handler.diamond = true 24 | 25 | export default handler 26 | -------------------------------------------------------------------------------- /plugins/fun-preg.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | 5 | let name = conn.getName(m.sender) 6 | if (!text) throw `✳️ *Ejemplo :*\n\n *${usedPrefix + command}* soy feo?` 7 | m.react('🫣') 8 | //let res = await fetch(global.API('https://api.simsimi.net', '/v2/', { text: encodeURIComponent(text), lc: "es" }, '')) 9 | let res = await fetch(`https://api.simsimi.net/v2/?text=${text}&lc=es`) 10 | let json = await res.json() 11 | if (json.success) 12 | m.reply(`≡ *PREGUNTAS* 13 | 14 | ▢ *Pregunta:* ${text} 15 | ▢ *Respuesta :* ${json.success.replace('simsimi', 'DyLux').replace('Simsimi', 'DyLux').replace('sim simi', 'DyLux')}`) 16 | else throw json 17 | } 18 | 19 | handler.help = ['pregunta'] 20 | handler.tags = ['fun'] 21 | handler.command = ['pregunta', 'preg'] 22 | 23 | export default handler 24 | -------------------------------------------------------------------------------- /plugins/Wall-anime.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | let handler = async (m, {command, conn, usedPrefix}) => { 3 | let res = (await axios.get(`https://raw.githubusercontent.com/Guru322/api/Guru/BOT-JSON/anime-${command}.json`)).data 4 | let haha = await res[Math.floor(res.length * Math.random())] 5 | conn.sendFile(m.chat, haha, 'error.jpg', `_${command}_`, m) 6 | //conn.sendButton(m.chat, `_${command}_`.trim(), author, haha, [['🔄 NEXT 🔄', `${usedPrefix + command}`]], m) 7 | } 8 | handler.command = handler.help = ['akira', 'akiyama', 'anna', 'asuna', 'ayuzawa', 'boruto', 'chiho', 'chitoge', 'deidara', 'erza', 'elaina', 'eba', 'emilia', 'hestia', 'hinata', 'inori', 'isuzu', 'itachi', 'itori', 'kaga', 'kagura', 'kaori', 'keneki', 'kotori', 'kurumi', 'madara', 'mikasa', 'miku', 'minato', 'naruto', 'nezuko', 'sagiri', 'sasuke', 'sakura'] 9 | handler.tags = ['anime'] 10 | export default handler 11 | -------------------------------------------------------------------------------- /plugins/dl-instagram.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, usedPrefix, args, command, text }) => { 4 | if (!text) throw `LINK?`; 5 | m.reply(wait); 6 | 7 | let res; 8 | try { 9 | res = await fetch(`https://inrl-web.onrender.com/api/insta?url=${text}`); 10 | } catch (error) { 11 | throw `An error occurred: ${error.message}`; 12 | } 13 | 14 | let api_response = await res.json(); 15 | if (!api_response || !api_response.result || api_response.result.length === 0) { 16 | throw `No video found or Invalid response from API.`; 17 | } 18 | 19 | let cap = `HERE IS THE VIDEO >,<`; 20 | 21 | conn.sendFile(m.chat, api_response.result[0], 'instagram.mp4', cap, m); 22 | } 23 | 24 | handler.help = ['instagram'] 25 | handler.tags = ['downloader'] 26 | handler.command = /^(instagram|igdl|ig|instagramdl)$/i 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/econ-tomoney.js: -------------------------------------------------------------------------------- 1 | const xpperlimit = 2 2 | let handler = async (m, { conn, command, args }) => { 3 | let user = global.db.data.users[m.sender] 4 | let count = command.replace(/^tomoney/i, '') 5 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].exp / xpperlimit) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 6 | count = Math.max(1, count) 7 | if (global.db.data.users[m.sender].exp >= xpperlimit * count) { 8 | global.db.data.users[m.sender].exp -= xpperlimit * count 9 | global.db.data.users[m.sender].money += count 10 | conn.reply(m.chat, `sucess converted ${count} Exp ✨ to money`, m) 11 | } else conn.reply(m.chat, `[❗] Your Exp is not enough to exchange for ${count} ✨`, m) 12 | } 13 | handler.help = ['tomoney '] 14 | handler.tags = ['xp'] 15 | handler.command = /^tomoney([0-9]+)|tomoney|tomoneyall$/i 16 | 17 | export default handler 18 | -------------------------------------------------------------------------------- /plugins/tools-lyrics.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | 3 | let handler = async (m, {conn, text }) => { 4 | let teks = text ? text : m.quoted && m.quoted.text ? m.quoted.text : '' 5 | if (!teks) throw `✳️ Enter the name of the song` 6 | try { 7 | let res = await fetch(global.API('https://some-random-api.com', '/lyrics', { title: teks })) 8 | if (!res.ok) throw await res.text() 9 | let json = await res.json() 10 | if (!json.thumbnail.genius) throw json 11 | conn.sendFile(m.chat, json.thumbnail.genius, null, ` 12 | ╭───•✧✧•───╮ 13 | GENERATED WITH LOVE BY 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 14 | ╰───•✧✧•───╯ 15 | ▢ *${json.title}* 16 | *${json.author}*\n 17 | ${json.lyrics}`, m) 18 | m.react(done) 19 | } catch (e) { 20 | m.react(error) 21 | } 22 | } 23 | handler.help = ['lyrics'] 24 | handler.tags = ['tools'] 25 | handler.command = ['letra', 'lyrics', 'letras'] 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/gp-hidetag.js: -------------------------------------------------------------------------------- 1 | import MessageType from '@adiwajshing/baileys' 2 | import { generateWAMessageFromContent } from '@adiwajshing/baileys' 3 | 4 | let handler = async (m, { conn, text, participants }) => { 5 | let users = participants.map(u => conn.decodeJid(u.id)) 6 | let q = m.quoted ? m.quoted : m 7 | let c = m.quoted ? m.quoted : m.msg 8 | const msg = conn.cMod(m.chat, 9 | generateWAMessageFromContent(m.chat, { 10 | [c.toJSON ? q.mtype : 'extendedTextMessage']: c.toJSON ? c.toJSON() : { 11 | text: c || '' 12 | } 13 | }, { 14 | quoted: m, 15 | userJid: conn.user.id 16 | }), 17 | text || q.text, conn.user.jid, { mentions: users } 18 | ) 19 | await conn.relayMessage(m.chat, msg.message, { messageId: msg.key.id }) 20 | } 21 | handler.help = ['hidetag'] 22 | handler.tags = ['group'] 23 | handler.command = ['hidetag', 'notify'] 24 | handler.group = true 25 | handler.admin = true 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/fun-simsimi.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | const name = conn.getName(m.sender); 5 | if (!text) { 6 | throw `Hi *${name}*, do you want to talk to kinflux bot? Respond with *${usedPrefix + command}* (your message)\n\n📌 Example: *${usedPrefix + command}* Hi bot`; 7 | } 8 | 9 | m.react('🗣️'); 10 | 11 | const uid = encodeURIComponent(m.sender); 12 | const msg = encodeURIComponent(text); 13 | 14 | const res = await fetch(`http://api.brainshop.ai/get?bid=176001&key=M4fzqfe99b3THOYi&uid=${uid}&msg=${msg}`); 15 | const json = await res.json(); 16 | 17 | if (json.cnt) { 18 | const reply = json.cnt; 19 | m.reply(reply); 20 | } else { 21 | throw json; 22 | } 23 | }; 24 | 25 | handler.help = ['bot']; 26 | handler.tags = ['fun']; 27 | handler.command = ['bot', 'alexa']; 28 | 29 | export default handler; 30 | -------------------------------------------------------------------------------- /plugins/econ-addxp.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] 6 | else who = m.chat 7 | if (!who) throw '✳️ Tag the user' 8 | let txt = text.replace('@' + who.split`@`[0], '').trim() 9 | if (!txt) throw '✳️ Enter the amount of *XP* you want to add' 10 | if (isNaN(txt)) throw ' 🔢 only numbers' 11 | let xp = parseInt(txt) 12 | let exp = xp 13 | 14 | if (exp < 1) throw '✳️ Mínimum *1*' 15 | let users = global.db.data.users 16 | users[who].exp += xp 17 | 18 | await m.reply(`≡ *XP ADDED* 19 | ┌────────────── 20 | ▢ *Total:* ${xp} 21 | └──────────────`) 22 | conn.fakeReply(m.chat, `▢ Did you recieve \n\n *+${xp} XP*`, who, m.text) 23 | } 24 | 25 | handler.help = ['addxp <@user>'] 26 | handler.tags = ['econ'] 27 | handler.command = ['addxp'] 28 | handler.rowner = true 29 | 30 | export default handler 31 | 32 | -------------------------------------------------------------------------------- /plugins/gp-staff.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, participants, groupMetadata, args }) => { 2 | const pp = await conn.profilePictureUrl(m.chat, 'image').catch(_ => null) || './src/avatar_contact.png' 3 | const groupAdmins = participants.filter(p => p.admin) 4 | const listAdmin = groupAdmins.map((v, i) => `${i + 1}. @${v.id.split('@')[0]}`).join('\n▢ ') 5 | const owner = groupMetadata.owner || groupAdmins.find(p => p.admin === 'superadmin')?.id || m.chat.split`-`[0] + '@s.whatsapp.net' 6 | 7 | let text = ` 8 | ≡ *GROUP ADMINS* _${groupMetadata.subject}_ 9 | 10 | ┌─⊷ *ADMINS* 11 | ▢ ${listAdmin} 12 | Listed with love💖 by kinflux bot 13 | └─────────── 14 | `.trim() 15 | conn.sendFile(m.chat, pp, 'staff.png', text, m, false, { mentions: [...groupAdmins.map(v => v.id), owner] }) 16 | } 17 | handler.help = ['staff'] 18 | handler.tags = ['group'] 19 | handler.command = ['staff', 'admins', 'listadmin'] 20 | handler.group = true 21 | export default handler 22 | -------------------------------------------------------------------------------- /plugins/gp-invite.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, text, usedPrefix, command }) => { 3 | if (!text) throw `✳️ Enter the number you want to send a group invite to\n\n📌 Example :\n*${usedPrefix + command}* 7605902011` 4 | if (text.includes('+')) throw `✳️ Ingrese el número todo junto sin el *+*` 5 | if (isNaN(text)) throw ' 📌 Enter only numbers plus your country code with no spaces' 6 | let group = m.chat 7 | let link = 'https://chat.whatsapp.com/' + await conn.groupInviteCode(group) 8 | 9 | await conn.reply(text+'@s.whatsapp.net', `≡ *INVITATION TO GROUP*\n\nA user invited you to join this group \n\n${link}`, m, {mentions: [m.sender]}) 10 | m.reply(`✅ An invite link was sent to the user`) 11 | 12 | } 13 | handler.help = ['invite <917xxx>'] 14 | handler.tags = ['group'] 15 | handler.command = ['invite','invitar'] 16 | handler.group = true 17 | handler.admin = false 18 | handler.botAdmin = true 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/gp-link.js: -------------------------------------------------------------------------------- 1 | import { areJidsSameUser } from '@adiwajshing/baileys' 2 | let handler = async (m, { conn, args }) => { 3 | let group = m.chat 4 | if (/^[0-9]{5,16}-?[0-9]+@g\.us$/.test(args[0])) group = args[0] 5 | if (!/^[0-9]{5,16}-?[0-9]+@g\.us$/.test(group)) throw '⚠️ Can only be used in groups' 6 | let groupMetadata = await conn.groupMetadata(group) 7 | if (!groupMetadata) throw 'groupMetadata is undefined :\\' 8 | if (!('participants' in groupMetadata)) throw 'participants is not defined :(' 9 | let me = groupMetadata.participants.find(user => areJidsSameUser(user.id, conn.user.id)) 10 | if (!me) throw '✳️ I am not in that group :(' 11 | if (!me.admin) throw '✳️ I am not an administrator' 12 | m.reply('https://chat.whatsapp.com/' + await conn.groupInviteCode(group)) 13 | } 14 | handler.help = ['link'] 15 | handler.tags = ['group'] 16 | handler.command = ['link', 'linkgroup'] 17 | 18 | export default handler 19 | -------------------------------------------------------------------------------- /plugins/owner-clearTmp.js: -------------------------------------------------------------------------------- 1 | 2 | import { tmpdir } from 'os' 3 | import path, { join } from 'path' 4 | import { 5 | readdirSync, 6 | unlinkSync, 7 | rmSync 8 | } from 'fs' 9 | 10 | let handler = async (m, { conn, __dirname, args }) => { 11 | 12 | m.reply(`✅ The folder was cleaned *tmp + sessions*`) 13 | m.react(done) 14 | const tmp = [tmpdir(), join(__dirname, '../tmp')] 15 | const filename = [] 16 | tmp.forEach(dirname => readdirSync(dirname).forEach(file => filename.push(join(dirname, file)))) 17 | 18 | //session bot 19 | readdirSync("./sessions").forEach(file => { 20 | if (file !== 'creds.json') { 21 | unlinkSync("./sessions/" + file, { recursive: true, force: true })}}) 22 | 23 | return filename.map(file => { 24 | unlinkSync(file) 25 | }) 26 | 27 | } 28 | handler.help = ['cleartmp'] 29 | handler.tags = ['owner'] 30 | handler.command = /^(cleartmp)$/i 31 | handler.rowner = true 32 | 33 | export default handler 34 | -------------------------------------------------------------------------------- /Termux-Guide.md: -------------------------------------------------------------------------------- 1 | # Guru-bot Termux-Hosting-Guide 2 | 3 | ## Prerequisites 4 | 5 | - [Git](https://git-scm.com/) 6 | - [Node.js](https://nodejs.org/en/) 7 | - [FFmpeg](https://ffmpeg.org/download.html) 8 | - [ImageMagick](https://imagemagick.org/script/download.php) 9 | - [webP](https://developers.google.com/speed/webp/download) 10 | 11 | ## 🚀 Installation 12 | 13 | Run the following commands to clone the repo (Use your fork) 14 | ```SH 15 | > git clone https://github.com/Guru322/GURU-BOT 16 | > cd GURU-BOT 17 | ``` 18 | 19 | Run this following command to install the dependencies 20 | ```SH 21 | > npm install 22 | ``` 23 | 24 | ## Run 25 | 26 | ```SH 27 | > npm start 28 | ``` 29 | Running the above command will start the bot. To authenticate scan the QR which shows up in the terminal using the WA-Web Scanner on your WhatsApp . Good Luck! 30 | 31 | 32 | [Set it up on Heroku](https://github.com/Guru322/GURU-BOT/blob/master/Heroku-Hosting-Guide.md) 33 | -------------------------------------------------------------------------------- /plugins/dl-gitclone.js: -------------------------------------------------------------------------------- 1 | 2 | import fetch from 'node-fetch' 3 | const regex = /(?:https|git)(?::\/\/|@)github\.com[\/:]([^\/:]+)\/(.+)/i 4 | let handler = async (m, { conn, args, usedPrefix, command }) => { 5 | if (!args[0]) throw `where is the github link?\n\n📌 Example : ${usedPrefix + command} https://github.com/diggilly/api` 6 | if (!regex.test(args[0])) throw '⚠️ link incorrect' 7 | let [_, user, repo] = args[0].match(regex) || [] 8 | repo = repo.replace(/.git$/, '') 9 | let url = `https://api.github.com/repos/${user}/${repo}/zipball` 10 | let filename = (await fetch(url, { method: 'HEAD' })).headers.get('content-disposition').match(/attachment; filename=(.*)/)[1] 11 | 12 | m.reply(`✳️ *Wait, sending repository..*`) 13 | conn.sendFile(m.chat, url, filename, null, m) 14 | } 15 | handler.help = ['gitclone '] 16 | handler.tags = ['dl'] 17 | handler.command = ['gitclone'] 18 | handler.diamond = true 19 | 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/_autoReply.js: -------------------------------------------------------------------------------- 1 | 2 | export async function all(m) { 3 | 4 | // when someone sends a group link to the bot's dm 5 | if ((m.mtype === 'groupInviteMessage' || m.text.startsWith('https://chat') || m.text.startsWith('open this link')) && !m.isBaileys && !m.isGroup) { 6 | this.sendButton(m.chat, `*Invite bot to a group* 7 | 8 | // when someone sends a group link to the bot's dm 9 | if ((m.mtype === 'hi' || m.text.startsWith('kinlflux bot') || m.text.startsWith('hello')) && !m.isBaileys && !m.isGroup) { 10 | this.sendButton(m.chat, `*i am kinflux bot how can i help you reply with .list to see bots list .owner to see bts owner .menu to see bots menu* 11 | 12 | Hallo @${m.sender.split('@')[0]} 13 | you can rent the bot to join a group or contact owner 14 | more info click on the button 15 | `.trim(), igfg, null, [['Rent', '/buyprem']] , m, { mentions: [m.sender] }) 16 | m.react('💎') 17 | } 18 | 19 | return !0 20 | } 21 | -------------------------------------------------------------------------------- /plugins/owner-addprem.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 6 | else who = m.chat 7 | let user = global.db.data.users[who] 8 | if (!who) throw `✳️ Tag or mention someone\n\n📌 Example : ${usedPrefix + command} @user` 9 | if (global.prems.includes(who.split`@`[0])) throw '✳️ The user Mentioned Already is premium' 10 | global.prems.push(`${who.split`@`[0]}`) 11 | 12 | conn.reply(m.chat, ` 13 | ✅ PREMIUM 14 | 15 | @${who.split`@`[0]} now you become a premium user 16 | ┌─────────── 17 | ▢ *Number:* ${user.name} 18 | └─────────── 19 | `, m, { mentions: [who] }) 20 | 21 | } 22 | handler.help = ['addprem <@tag>'] 23 | handler.tags = ['owner'] 24 | handler.command = ['addprem', 'addpremium'] 25 | 26 | handler.group = true 27 | handler.rowner = true 28 | 29 | export default handler 30 | -------------------------------------------------------------------------------- /plugins/kinflux bot-Openai.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { text, usedPrefix, command }) => { 4 | if (!text) throw `*Enter a request or an order to use ChatGpt*\n\n*Example*\n* ${usedPrefix + command} Latest Netflix series*\n* ${usedPrefix + command} write a JS code*`; 5 | 6 | try { 7 | const response = await fetch(`https://guru-scrapper.cyclic.app/api/chatgpt?query=${encodeURIComponent(text)}`); 8 | const data = await response.json(); 9 | const { text: result } = data.data || {}; 10 | const model = data.data?.detail?.model; 11 | const creator = data.creator || ''; 12 | const fullResult = `${result}\n\nModel: ${model}\nCreator: ${creator}`; 13 | m.reply(fullResult.trim()); 14 | } catch (error) { 15 | console.error('Error:', error); // Log the error 16 | throw `*ERROR*`; 17 | } 18 | }; 19 | 20 | handler.command = ['bro', 'chatgpt', 'ai', 'siri']; 21 | handler.diamond = false; 22 | 23 | export default handler; 24 | -------------------------------------------------------------------------------- /plugins/econ-adddi.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, text }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] 6 | else who = m.chat 7 | if (!who) throw '✳️ tag the user' 8 | let txt = text.replace('@' + who.split`@`[0], '').trim() 9 | if (!txt) throw '✳️ Enter the amount of *Diamonds* you want to add' 10 | if (isNaN(txt)) throw '🔢 only numbers' 11 | let dmt = parseInt(txt) 12 | let diamond = dmt 13 | 14 | if (diamond < 1) throw '✳️ Mínimum *1*' 15 | let users = global.db.data.users 16 | users[who].diamond += dmt 17 | 18 | await m.reply(`≡ *💎 ADDED* 19 | ┌────────────── 20 | ▢ *Total:* ${dmt} 21 | └──────────────`) 22 | conn.fakeReply(m.chat, `▢ Did you receive \n\n *+${dmt}* Diamonds`, who, m.text) 23 | } 24 | 25 | handler.help = ['adddi <@user>'] 26 | handler.tags = ['econ'] 27 | handler.command = ['adddi'] 28 | handler.rowner = true 29 | 30 | export default handler 31 | 32 | -------------------------------------------------------------------------------- /plugins/cmd-set.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { text, usedPrefix, command }) => { 4 | global.db.data.sticker = global.db.data.sticker || {} 5 | if (!m.quoted) throw `✳️Reply to a message with *${usedPrefix + command}*` 6 | if (!m.quoted.fileSha256) throw '⚠️ Mention the message' 7 | if (!text) throw `✳️ command is missing` 8 | let sticker = global.db.data.sticker 9 | let hash = m.quoted.fileSha256.toString('base64') 10 | if (sticker[hash] && sticker[hash].locked) throw '⚠️ You do not have permission to change this Sticker command' 11 | sticker[hash] = { 12 | text, 13 | mentionedJid: m.mentionedJid, 14 | creator: m.sender, 15 | at: + new Date, 16 | locked: false, 17 | } 18 | m.reply(`✅ command saved`) 19 | } 20 | 21 | 22 | handler.help = ['cmd'].map(v => 'set' + v + ' ') 23 | handler.tags = ['cmd'] 24 | handler.command = ['setcmd'] 25 | handler.owner = true 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/sticker-wm.js: -------------------------------------------------------------------------------- 1 | 2 | import { addExif } from '../lib/sticker.js' 3 | let handler = async (m, { conn, text, args }) => { 4 | if (!m.quoted) throw 'respond to a sticker' 5 | let stiker = false 6 | let stick = args.join(" ").split("|"); 7 | let f = stick[0] !== "" ? stick[0] : packname; 8 | let g = typeof stick[1] !== "undefined" ? stick[1] : author; 9 | try { 10 | let mime = m.quoted.mimetype || '' 11 | if (!/webp/.test(mime)) throw 'respond to a sticker' 12 | let img = await m.quoted.download() 13 | if (!img) throw 'Responde to sticker!' 14 | stiker = await addExif(img, f, g) 15 | } catch (e) { 16 | console.error(e) 17 | if (Buffer.isBuffer(e)) stiker = e 18 | } finally { 19 | if (stiker) conn.sendFile(m.chat, stiker, 'wm.webp', '', m, null, rpl) 20 | else throw 'conversion failed' 21 | } 22 | } 23 | handler.help = ['take |'] 24 | handler.tags = ['sticker'] 25 | handler.command = ['take', 'wm'] 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/sticker-tovid.js: -------------------------------------------------------------------------------- 1 | import { webp2mp4 } from '../lib/webp2mp4.js' 2 | import { ffmpeg } from '../lib/converter.js' 3 | 4 | let handler = async (m, { conn }) => { 5 | if (!m.quoted) throw '✳️ Respond to an animated sticker' 6 | let mime = m.quoted.mimetype || '' 7 | if (!/webp|audio/.test(mime)) throw '✳️ Respond to an animated sticker' 8 | let media = await m.quoted.download() 9 | let out = Buffer.alloc(0) 10 | if (/webp/.test(mime)) { 11 | out = await webp2mp4(media) 12 | } else if (/audio/.test(mime)) { 13 | out = await ffmpeg(media, [ 14 | '-filter_complex', 'color', 15 | '-pix_fmt', 'yuv420p', 16 | '-crf', '51', 17 | '-c:a', 'copy', 18 | '-shortest' 19 | ], 'mp3', 'mp4') 20 | } 21 | await conn.sendFile(m.chat, out, 'tovid.mp4', '✅ sticker a video' , m) 22 | } 23 | handler.help = ['tovid'] 24 | handler.tags = ['sticker'] 25 | handler.command = ['tovideo', 'tovid'] 26 | 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/_autobio.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = m => m 3 | handler.all = async function (m) { 4 | let setting = global.db.data.settings[this.user.jid] 5 | 6 | let _muptime 7 | if (process.send) { 8 | process.send('uptime') 9 | _muptime = await new Promise(resolve => { 10 | process.once('message', resolve) 11 | setTimeout(resolve, 1000) 12 | }) * 1000 13 | } 14 | let muptime = clockString(_muptime) 15 | let bio = `\n🤖 kinflux bot Active forever\n\n ┃ 💦` 16 | await this.updateProfileStatus(bio).catch(_ => _) 17 | setting.status = new Date() * 1 18 | 19 | } 20 | export default handler 21 | 22 | function clockString(ms) { 23 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 24 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 25 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 26 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 27 | return [d, ' Day(s) ️', h, ' Hour(s) ', m, ' Minute(s)'].map(v => v.toString().padStart(2, 0)).join('') 28 | } 29 | -------------------------------------------------------------------------------- /plugins/_cmdWithMedia.js: -------------------------------------------------------------------------------- 1 | const { 2 | proto, 3 | generateWAMessage, 4 | areJidsSameUser 5 | } = (await import('@adiwajshing/baileys')).default 6 | 7 | export async function all(m, chatUpdate) { 8 | if (m.isBaileys) return 9 | if (!m.message) return 10 | if (!m.msg.fileSha256) return 11 | if (!(Buffer.from(m.msg.fileSha256).toString('base64') in global.db.data.sticker)) return 12 | 13 | let hash = global.db.data.sticker[Buffer.from(m.msg.fileSha256).toString('base64')] 14 | let { text, mentionedJid } = hash 15 | let messages = await generateWAMessage(m.chat, { text: text, mentions: mentionedJid }, { 16 | userJid: this.user.id, 17 | quoted: m.quoted && m.quoted.fakeObj 18 | }) 19 | messages.key.fromMe = areJidsSameUser(m.sender, this.user.id) 20 | messages.key.id = m.key.id 21 | messages.pushName = m.pushName 22 | if (m.isGroup) messages.participant = m.sender 23 | let msg = { 24 | ...chatUpdate, 25 | messages: [proto.WebMessageInfo.fromObject(messages)], 26 | type: 'append' 27 | } 28 | this.ev.emit('messages.upsert', msg) 29 | } 30 | -------------------------------------------------------------------------------- /plugins/econ-todiamond.js: -------------------------------------------------------------------------------- 1 | const xpperdiamond = 350 2 | let handler = async (m, { conn, command, args }) => { 3 | let count = command.replace(/^todiamond/i, '') 4 | count = count ? /all/i.test(count) ? Math.floor(global.db.data.users[m.sender].exp / xpperdiamond) : parseInt(count) : args[0] ? parseInt(args[0]) : 1 5 | count = Math.max(1, count) 6 | if (global.db.data.users[m.sender].exp >= xpperdiamond * count) { 7 | global.db.data.users[m.sender].exp -= xpperdiamond * count 8 | global.db.data.users[m.sender].diamond += count 9 | conn.reply(m.chat, ` 10 | ┌─「 *EXCHANGED* 」 11 | ‣ *Nominal ammount* : + ${count}💎 12 | ‣ *Used* : -${xpperdiamond * count} XP 13 | └──────────────`, m) 14 | } else conn.reply(m.chat, `❎ you dont have enough xp for *${count}* Diamonds💎\n\nyou can get xp from games and economy*`, m) 15 | } 16 | handler.help = ['todiamond', 'todiamondall'] 17 | handler.tags = ['econ'] 18 | handler.command = ['todiamond', 'todiamndall'] 19 | 20 | handler.disabled = false 21 | 22 | export default handler -------------------------------------------------------------------------------- /plugins/tools-pokedex.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, text }) => { 4 | if (!text) throw 'Please provide a Pokemon name to search for.'; 5 | 6 | const url = `https://some-random-api.com/pokemon/pokedex?pokemon=${encodeURIComponent(text)}`; 7 | 8 | const response = await fetch(url); 9 | const json = await response.json(); 10 | 11 | if (!response.ok) { 12 | throw `An error occurred: ${json.error}`; 13 | } 14 | 15 | const message = ` 16 | *Name:* ${json.name} 17 | *ID:* ${json.id} 18 | *Type:* ${json.type} 19 | *Abilities:* ${json.abilities} 20 | *Height:* ${json.height} 21 | *Weight:* ${json.weight} 22 | *Description:* ${json.description} 23 | ╭───•✧✧•───╮ 24 | GENERATED WITH LOVE BY 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 25 | ╰───•✧✧•───╯ 26 | `; 27 | 28 | conn.sendMessage(m.chat, { text: message }, 'extendedTextMessage', { quoted: m }); 29 | }; 30 | 31 | handler.help = ['pokedex ']; 32 | handler.tags = ['pokemon']; 33 | handler.command = /^pokedex/i; 34 | 35 | export default handler; 36 | -------------------------------------------------------------------------------- /plugins/exchange.js: -------------------------------------------------------------------------------- 1 | const xpperexp = 1 2 | let handler = async (m, { conn, command, args }) => { 3 | let count = command.replace(/^buy/i, '') 4 | amount = amount ? /all/i.test(amount) ? Math.floor(global.db.data.users[m.sender].diamond / xpperexp) : parseInt(amount) : args[0] ? parseInt(args[0]) : 1 5 | amount = Math.max(350, amount) 6 | if (global.db.data.users[m.sender].exp >= xpperexp * amount) { 7 | global.db.data.users[m.sender].exp -= xpperexp * amount 8 | global.db.data.users[m.sender].exp += count 9 | conn.reply(m.chat, ` 10 | ┌─「 *PAYMENT NOTE* 」 11 | ‣ *nominal purchase* : + ${amount}💎 12 | ‣ *Spent* : -${xpperexp * amount} XP 13 | └──────────────`, m) 14 | } else conn.reply(m.chat, `❎ Sorry, you don't have enough *DIAMOND* to buy*${amount}* Diamond💎\n\n you can get *DIAMOND* using the commands from the *games and economy menu*`, m) 15 | } 16 | handler.help = ['exc', 'excall'] 17 | handler.tags = ['econ'] 18 | handler.command = ['exc', 'excall'] 19 | 20 | handler.disabled = false 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/tools-define.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, text }) => { 4 | if (!text) throw 'Please provide a word to search for.'; 5 | 6 | const url = `https://api.urbandictionary.com/v0/define?term=${encodeURIComponent(text)}`; 7 | 8 | const response = await fetch(url); 9 | const json = await response.json(); 10 | 11 | if (!response.ok) { 12 | throw `An error occurred: ${json.message}`; 13 | } 14 | 15 | if (!json.list.length) { 16 | throw 'Word not found in the dictionary.'; 17 | } 18 | 19 | const firstEntry = json.list[0]; 20 | const definition = firstEntry.definition; 21 | const example = firstEntry.example ? `*Example:* ${firstEntry.example}` : ''; 22 | 23 | const message = `*Word:* ${text}\n*Definition:* ${definition}\n${example}`; 24 | conn.sendMessage(m.chat, { text: message }, 'extendedTextMessage', { quoted: m }); 25 | }; 26 | 27 | handler.help = ['define ']; 28 | handler.tags = ['tools']; 29 | handler.command = /^define/i; 30 | 31 | export default handler; 32 | -------------------------------------------------------------------------------- /plugins/gp-delwarn.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, groupMetadata}) => { 3 | let who 4 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 5 | else who = m.chat 6 | if (!who) throw `✳️ Tag or mention someone` 7 | if (!(who in global.db.data.users)) throw `✳️ The user is not found in my database` 8 | let warn = global.db.data.users[who].warn 9 | if (warn > 0) { 10 | global.db.data.users[who].warn -= 1 11 | m.reply(`⚠️ *DELWARN* 12 | 13 | ▢ Warns: *-1* 14 | ▢ Warns total: *${warn - 1}*`) 15 | m.reply(`✳️ An admin lowered their warning, now you have *${warn - 1}*`, who) 16 | } else if (warn == 0) { 17 | m.reply('✳️ The user has no warning') 18 | } 19 | 20 | } 21 | handler.help = ['delwarn @user'] 22 | handler.tags = ['group'] 23 | handler.command = ['delwarn', 'unwarn'] 24 | handler.group = true 25 | handler.admin = true 26 | handler.botAdmin = true 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/owner-broadcast.js: -------------------------------------------------------------------------------- 1 | //import Connection from '../lib/connection.js' 2 | import { randomBytes } from 'crypto' 3 | 4 | let handler = async (m, { conn, text }) => { 5 | let chats = Object.entries(conn.chats).filter(([_, chat]) => chat.isChats).map(v => v[0]) 6 | let cc = conn.serializeM(text ? m : m.quoted ? await m.getQuotedObj() : false || m) 7 | let teks = text ? text : cc.text 8 | conn.reply(m.chat, `✅ BROADCAST done *Total:* ${chats.length} chats`, m) 9 | for (let id of chats) await conn.copyNForward(id, conn.cMod(m.chat, cc, /bc|broadcast|tx/i.test(teks) ? teks : `*BROADCAST ┃ OWNER*\n_____________________\n ${teks} ` ), true).catch(_ => _) 10 | m.reply('✅ Broadcast to all chats :)') 11 | } 12 | handler.help = ['tx'] 13 | handler.tags = ['owner'] 14 | handler.command = /^(broadcast|bc|tx)$/i 15 | handler.owner = true 16 | 17 | export default handler 18 | 19 | const more = String.fromCharCode(8206) 20 | const readMore = more.repeat(4001) 21 | 22 | const randomID = length => randomBytes(Math.ceil(length * .5)).toString('hex').slice(0, length) 23 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /plugins/afk-_afk.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | export function before(m) { 4 | let user = global.db.data.users[m.sender] 5 | if (user.afk > -1) { 6 | m.reply(` 7 | ✅ You stopped being AFK 8 | ${user.afkReason ? ' \n▢ *Reason :* ' + user.afkReason : ''} 9 | ▢ *AFK Duration :* ${(new Date - user.afk).toTimeString()} 10 | `.trim()) 11 | user.afk = -1 12 | user.afkReason = '' 13 | } 14 | let jids = [...new Set([...(m.mentionedJid || []), ...(m.quoted ? [m.quoted.sender] : [])])] 15 | for (let jid of jids) { 16 | let user = global.db.data.users[jid] 17 | if (!user) 18 | continue 19 | let afkTime = user.afk 20 | if (!afkTime || afkTime < 0) 21 | continue 22 | let reason = user.afkReason || '' 23 | m.reply(` 24 | 💤 The human u mentioned is afk 25 | 26 | ${reason ? '▢ *Reason* : ' + reason : '▢ *Reason* : Without reason'} 27 | ▢ *AFK Duration :* ${(new Date - afkTime).toTimeString()} 28 | `.trim()) 29 | } 30 | return true 31 | } 32 | -------------------------------------------------------------------------------- /plugins/tools-translate.js: -------------------------------------------------------------------------------- 1 | 2 | import translate from '@vitalets/google-translate-api' 3 | const defaultLang = 'en' 4 | const tld = 'cn' 5 | 6 | let handler = async (m, { args, usedPrefix, command }) => { 7 | let err = ` 8 | 📌 *Example:* 9 | 10 | *${usedPrefix + command}* [text] 11 | *${usedPrefix + command}* en Hello World 12 | 13 | ≡ *List of supported languages:* 14 | 15 | https://cloud.google.com/translate/docs/languages 16 | `.trim() 17 | 18 | let lang = args[0] 19 | let text = args.slice(1).join(' ') 20 | if ((args[0] || '').length !== 2) { 21 | lang = defaultLang 22 | text = args.join(' ') 23 | } 24 | if (!text && m.quoted && m.quoted.text) text = m.quoted.text 25 | 26 | try { 27 | let result = await translate(text, { to: lang, autoCorrect: true }).catch(_ => null) 28 | m.reply(result.text) 29 | } catch (e) { 30 | throw err 31 | } 32 | 33 | } 34 | handler.help = ['trad '] 35 | handler.tags = ['tools'] 36 | handler.command = ['translate', 'tl', 'trad', 'tr'] 37 | 38 | export default handler 39 | -------------------------------------------------------------------------------- /plugins/dl-yta.js: -------------------------------------------------------------------------------- 1 | import { youtubedl, youtubedlv2 } from '@bochilteam/scraper'; 2 | 3 | let handler = async (m, { conn, text, args, isPrems, isOwner, usedPrefix, command }) => { 4 | if (!args || !args[0]) throw `✳️ Example :\n${usedPrefix + command} https://youtu.be/YzkTFFwxtXI`; 5 | if (!args[0].match(/youtu/gi)) throw `❎ Verify that it is a YouTube link.`; 6 | 7 | m.react(rwait); 8 | 9 | try { 10 | let q = '128kbps'; 11 | let v = args[0]; 12 | const yt = await youtubedl(v).catch(async () => await youtubedlv2(v)); 13 | const dl_url = await yt.audio[q].download(); 14 | const title = await yt.title; 15 | 16 | conn.sendFile( 17 | m.chat, 18 | dl_url, 19 | title + '.mp3', 20 | null, 21 | m, 22 | false, 23 | { mimetype: 'audio/mpeg' } 24 | ); 25 | 26 | m.react(xmoji); 27 | } catch { 28 | await m.reply(`❎ Error: Could not download the audio.`) 29 | } 30 | }; 31 | 32 | handler.help = ['ytmp3 '] 33 | handler.tags = ['downloader'] 34 | handler.command = ['ytmp3', 'yta'] 35 | 36 | export default handler 37 | -------------------------------------------------------------------------------- /plugins/econ-weekly.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 15000, 3 | money: 35999, 4 | potion: 9, 5 | } 6 | const cooldown = 604800000 7 | let handler = async (m) => { 8 | let user = global.db.data.users[m.sender] 9 | if (new Date - user.lastweekly < cooldown) throw `You have already claimed this daily claim!, wait for *${((user.lastweekly + cooldown) - new Date()).toTimeString()}*` 10 | let text = '' 11 | for (let reward of Object.keys(rewards)) { 12 | if (!(reward in user)) continue 13 | user[reward] += rewards[reward] 14 | text += `*+${rewards[reward]}* ${global.rpg.emoticon(reward)}${reward}\n` 15 | } 16 | //conn.sendButton(m.chat,'*––––––『 WEEKLY 』––––––*', text.trim(), null, [['Profile', ''], ['Monthly', '.monthly']],m) 17 | m.reply(` 18 | 🎁 *weekly reward* 19 | 20 | ▢ *Has recieved:* 21 | ${text}`) 22 | user.lastweekly = new Date * 1 23 | } 24 | handler.help = ['weekly'] 25 | handler.tags = ['econ'] 26 | handler.command = /^(weekly)$/i 27 | 28 | handler.cooldown = cooldown 29 | 30 | export default handler 31 | -------------------------------------------------------------------------------- /plugins/gp-demote.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn,usedPrefix, command, text }) => { 2 | if(isNaN(text) && !text.match(/@/g)){ 3 | 4 | }else if(isNaN(text)) { 5 | var number = text.split`@`[1] 6 | }else if(!isNaN(text)) { 7 | var number = text 8 | } 9 | if(!text && !m.quoted) return conn.reply(m.chat, `✳️ Using the command \n *${usedPrefix + command}* @tag`, m) 10 | if(number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `✳️ Number incorrect`, m) 11 | 12 | try { 13 | if(text) { 14 | var user = number + '@s.whatsapp.net' 15 | } else if(m.quoted.sender) { 16 | var user = m.quoted.sender 17 | } else if(m.mentionedJid) { 18 | var user = number + '@s.whatsapp.net' 19 | } 20 | } catch (e) { 21 | } finally { 22 | conn.groupParticipantsUpdate(m.chat, [user], 'demote') 23 | m.reply(`✅ User demoted`) 24 | } 25 | 26 | } 27 | handler.help = ['demote (@tag)'] 28 | handler.tags = ['group'] 29 | handler.command = ['demote', 'degradar'] 30 | handler.group = true 31 | handler.admin = true 32 | handler.botAdmin = true 33 | handler.fail = null 34 | 35 | export default handler 36 | -------------------------------------------------------------------------------- /plugins/gp-promote.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn,usedPrefix, command, text}) => { 2 | if(isNaN(text) && !text.match(/@/g)){ 3 | 4 | }else if(isNaN(text)) { 5 | var number = text.split`@`[1] 6 | }else if(!isNaN(text)) { 7 | var number = text 8 | } 9 | if(!text && !m.quoted) return conn.reply(m.chat, `✳️ Using the command \n *${usedPrefix + command}* @tag (or reply to a message)`, m) 10 | if(number.length > 13 || (number.length < 11 && number.length > 0)) return conn.reply(m.chat, `✳️ Number incorrect`, m) 11 | try { 12 | if(text) { 13 | var user = number + '@s.whatsapp.net' 14 | } else if(m.quoted.sender) { 15 | var user = m.quoted.sender 16 | } else if(m.mentionedJid) { 17 | var user = number + '@s.whatsapp.net' 18 | } 19 | } catch (e) { 20 | } finally { 21 | conn.groupParticipantsUpdate(m.chat, [user], 'promote') 22 | m.reply(`✅ User promoted`) 23 | }} 24 | handler.help = ['promote'] 25 | handler.tags = ['group'] 26 | handler.command = ['promote', 'promover'] 27 | handler.group = true 28 | handler.admin = true 29 | handler.botAdmin = true 30 | handler.fail = null 31 | 32 | export default handler 33 | -------------------------------------------------------------------------------- /plugins/_fakeReply.js: -------------------------------------------------------------------------------- 1 | 2 | import fetch from 'node-fetch' 3 | 4 | let handler = m => m 5 | handler.all = async function (m) { 6 | 7 | let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? this.user.jid : m.sender 8 | let pp = await this.profilePictureUrl(who, 'image').catch(_ => 'https://i.imgur.com/whjlJSf.jpg') 9 | 10 | //reply link wa 11 | global.rpl = { contextInfo: { externalAdReply: { mediaUrl: dygp, mediaType: 'VIDEO', description: 'support group', title: packname, body: 'support group', thumbnailUrl: pp, sourceUrl: dygp }}} 12 | 13 | //reply link PayPal 14 | global.rpyp = { contextInfo: { externalAdReply: { mediaUrl: dygp, mediaType: 'VIDEO', description: 'Donate', title: 'YOUTUBE', body: 'Keep bot alive', thumbnailUrl: pp, sourceUrl: fgyt }}} 15 | 16 | //reply link yt 17 | global.rpyt = { contextInfo: { externalAdReply: { showAdAttribution: true, mediaUrl: fgyt, mediaType: 'VIDEO', description: 'Suscribete : ' + fgyt, title: 'YouTube', body: 'learn to create your own bots', thumbnailUrl: pp, sourceUrl: fgyt }}} 18 | 19 | } 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/econ-monthly.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 50000, 3 | money: 49999, 4 | potion: 10, 5 | mythic: 3, 6 | legendary: 1 7 | } 8 | 9 | const cooldown = 2592000000 10 | let handler = async (m) => { 11 | let user = global.db.data.users[m.sender] 12 | if (new Date - user.lastmonthly < cooldown) throw `You have already claimed this monthly claim, wait for *${((user.lastmonthly + cooldown) - new Date()).toTimeString()}*` 13 | let text = '' 14 | for (let reward of Object.keys(rewards)) if (reward in user) { 15 | user[reward] += rewards[reward] 16 | text += `*+${rewards[reward]}* ${rpg.emoticon(reward)}${reward}\n` 17 | } 18 | //conn.sendButton(m.chat,'*––––––『 MONTHLY 』––––––*', text.trim(), null, [['Inventory', '.inv'], ['Menu', '.menu']],m) 19 | m.reply(` 20 | 🎁 *monthly reward* 21 | 22 | ▢ *Has recieved:* 23 | ${text}`) 24 | user.lastmonthly = new Date * 1 25 | } 26 | handler.help = ['monthly'] 27 | handler.tags = ['rpg'] 28 | handler.command = /^(monthly)$/i 29 | 30 | handler.cooldown = cooldown 31 | 32 | export default handler 33 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "whatsapp-bot (kinflux bot v2)", 3 | "description": " Whatsapp bot.", 4 | "keywords": [ 5 | "whatsapp bot" 6 | ], 7 | "repository": "https://github.com/diggilly/kinflux_bot_god_v2", 8 | "stack": "container", 9 | "env": { 10 | "OPENAI_API_KEY": { 11 | "description": "openai apikey", 12 | "required": false, 13 | "value": "" 14 | }, 15 | "OPENAI_ORGANIZATION": { 16 | "description": "openai organisation id", 17 | "required": false, 18 | "value": "" 19 | }, 20 | "MONGO_DB": { 21 | "description": "your mongodb database url", 22 | "required": false, 23 | "value": "" 24 | }, 25 | "REMOVE_BG_API_KEY": { 26 | "description": "removebg api key", 27 | "required": false, 28 | "value": "" 29 | } 30 | }, 31 | "buildpacks": [ 32 | { 33 | "url": "heroku/nodejs" 34 | }, 35 | { 36 | "url": "https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest" 37 | }, 38 | { 39 | "url": "https://github.com/clhuang/heroku-buildpack-webp-binaries.git" 40 | } 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /plugins/dl-spotify.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | let handler = async(m, { conn, text }) => { 3 | if (!text) throw `*ENTER NAME OF SONG*` 4 | try { 5 | let res = await fetch(`https://api.lolhuman.xyz/api/spotifysearch?apikey=${lolkeysapi}&query=${text}`) 6 | let json = await res.json() 7 | let { link } = json.result[0] 8 | let res2 = await fetch(`https://api.lolhuman.xyz/api/spotify?apikey=${lolkeysapi}&url=${link}`) 9 | let json2 = await res2.json() 10 | let { thumbnail, title, artists } = json2.result 11 | let spotifyi = `❒═════❬ 𝐒𝐏𝐎𝐓𝐈𝐅𝐘 ❭═════╾❒\n┬\n├‣✨ *TITLE:* ${title}\n┴\n┬\n├‣🗣️ *ARTIST:* ${artists}\n┴\n┬\n├‣🌐 *𝚄𝚁𝙻*: ${link}\n┴\n┬\n├‣💚 *SEARCH URL:* ${json2.result.link}\n┴` 12 | conn.sendFile(m.chat, thumbnail, 'error.jpg', spotifyi, m) 13 | let aa = await conn.sendMessage(m.chat, { audio: { url: json2.result.link }, fileName: `error.mp3`, mimetype: 'audio/mp4' }, { quoted: m }) 14 | if (!aa) return conn.sendFile(m.chat, json2.result.link, 'error.mp3', null, m, false, { mimetype: 'audio/mp4' }) 15 | } catch { 16 | throw '* 𝙴𝚁𝚁𝙾𝚁*' 17 | }} 18 | handler.command = /^(spotify|song)$/i 19 | export default handler 20 | -------------------------------------------------------------------------------- /plugins/main-runtime.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | 4 | let _muptime 5 | if (process.send) { 6 | process.send('uptime') 7 | _muptime = await new Promise(resolve => { 8 | process.once('message', resolve) 9 | setTimeout(resolve, 1000) 10 | }) * 1000 11 | } 12 | let muptime = clockString(_muptime) 13 | m.reply(` 14 | ╭───•✧✧•───╮ 15 | *≡ 🎌KINFLUX 𝘽𝙊𝙏 🎌 * 16 | ╰───•✧✧•───╯ 17 | ≻───── ⋆✩⋆ ─────≺ 18 | bot group link https://chat.whatsapp.com/BLjStbNJvG2H7Z3hlDmv28 19 | 20 | ⏳ *Kinflux bot active duration* \n\n${muptime}`) 21 | } 22 | handler.help = ['runtime'] 23 | handler.tags = ['main'] 24 | handler.command = ['runtime', 'uptime'] 25 | export default handler 26 | 27 | function clockString(ms) { 28 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 29 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 30 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 31 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 32 | return [d, 'd ', h, 'h ', m, 'm ', s, 's '].map(v => v.toString().padStart(2, 0)).join('') 33 | } 34 | -------------------------------------------------------------------------------- /plugins/dl-yts.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | let handler = async (m, { conn, text }) => { 4 | if (!text) throw '✳️ hey kinflux user What do you want me to search for on YouTube?'; 5 | 6 | try { 7 | const query = encodeURIComponent(text); 8 | const response = await axios.get(`https://weeb-api.vercel.app/ytsearch?query=${query}`); 9 | const results = response.data; 10 | 11 | if (results.length === 0) { 12 | throw 'No results found for the given query.'; 13 | } 14 | 15 | const firstResult = results[0]; 16 | 17 | const message = ` 18 | 乂 ${firstResult.title} 19 | 乂 *Link* : ${firstResult.url} 20 | 乂 *Duration* : ${firstResult.timestamp} 21 | 乂 *Published :* ${firstResult.ago} 22 | 乂 *Views:* ${firstResult.views} 23 | 24 | `; 25 | 26 | conn.sendFile(m.chat, firstResult.thumbnail, 'yts.jpeg', message, m); 27 | } catch (error) { 28 | console.error(error); 29 | throw 'An error occurred while searching for YouTube videos.'; 30 | } 31 | }; 32 | 33 | handler.help = ['ytsearch']; 34 | handler.tags = ['downloader']; 35 | handler.command = ['ytsearch', 'yts']; 36 | 37 | export default handler; 38 | -------------------------------------------------------------------------------- /plugins/maker-tweet.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | if (!text) throw 'No Text'; 3 | 4 | const avatar = await conn.profilePictureUrl(m.sender, 'image').catch(_ => 'https://telegra.ph/file/24fa902ead26340f3df2c.png'); 5 | const displayName = conn.getName(m.sender); 6 | const username = conn.user.jid.split('@')[0]; 7 | const replies = '69'; // Replace with the desired value 8 | const retweets = '69'; // Replace with the desired value 9 | const theme = 'dark'; // Replace with the desired value 10 | 11 | const url = `https://some-random-api.com/canvas/misc/tweet?displayname=${encodeURIComponent(displayName)}&username=${encodeURIComponent(username)}&avatar=${encodeURIComponent(avatar)}&comment=${encodeURIComponent(text)}&replies=${encodeURIComponent(replies)}&retweets=${encodeURIComponent(retweets)}&theme=${encodeURIComponent(theme)}`; 12 | 13 | conn.sendFile(m.chat, url, 'tweet.png', '*THANKS FOR TWEETING. from kinflux bot*', m); 14 | }; 15 | 16 | handler.help = ['tweet ']; 17 | handler.tags = ['maker']; 18 | handler.command = /^(tweet)$/i; 19 | 20 | export default handler; 21 | -------------------------------------------------------------------------------- /plugins/owner-delprem.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = async (m, { conn, usedPrefix, command, text }) => { 4 | let who 5 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : false 6 | else who = text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : m.chat 7 | let user = global.db.data.users[who] 8 | if (!who) return m.reply(`✳️ Mention the user\n\n📌 *Example* :\n${usedPrefix + command} @tag`) 9 | if (!global.prems.includes(who.split`@`[0])) throw '✳️ The user is not Premium' 10 | let index = global.prems.findIndex(v => (v.replace(/[^0-9]/g, '') + '@s.whatsapp.net') === (who.replace(/[^0-9]/g, '') + '@s.whatsapp.net')) 11 | global.prems.splice(index, 1) 12 | conn.reply(m.chat, `✅ Premium removed \n\n@${who.split('@')[0]} you are no longer premium`, m, { mentions: [who] }) 13 | 14 | } 15 | handler.help = ['delprem @user'] 16 | handler.tags = ['owner'] 17 | handler.command = ['delprem', 'delpremium'] 18 | 19 | handler.group = true 20 | handler.rowner = true 21 | 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/_similarity.js: -------------------------------------------------------------------------------- 1 | 2 | import didyoumean from 'didyoumean' 3 | import similarity from 'similarity' 4 | //import { plugins } from '../lib/plugins.js' 5 | 6 | export async function before(m, { conn, match, usedPrefix, command }) { 7 | 8 | if ((usedPrefix = (match[0] || '')[0])) { 9 | let noPrefix = m.text.replace(usedPrefix, '') 10 | let args = noPrefix.trim().split` `.slice(1) 11 | let text = args.join` ` 12 | let help = Object.values(plugins).filter(v => v.help && !v.disabled).map(v => v.help).flat(1) 13 | if (help.includes(noPrefix)) return 14 | let mean = didyoumean(noPrefix, help) 15 | let sim = similarity(noPrefix, mean) 16 | let som = sim * 100 17 | let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 18 | let name = await conn.getName(who) 19 | let caption = ` 20 | 🧿 Hello @${who.split("@")[0]} 21 | 22 | maybe you meant : 23 | 24 | இ *${usedPrefix + mean}* 25 | இ *Similarity:* _${parseInt(som)}%_` 26 | if (mean) this.sendButton(m.chat, caption, igfg, null, [['✅ yes', `ok`], ['❎ NO', 'OK']], m, { mentions: [who]}) 27 | } 28 | } 29 | export const disabled = false 30 | -------------------------------------------------------------------------------- /plugins/anime-rkiss.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { sticker } from '../lib/sticker.js' 3 | //import db from '../lib/database.js' 4 | 5 | let handler = async (m, { conn, args, usedPrefix, command }) => { 6 | 7 | let who 8 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 9 | else who = m.chat 10 | if (!who) throw `✳️Tag or mention someone\n\n📌 Example : ${usedPrefix + command} @tag` 11 | 12 | let user = global.db.data.users[who] 13 | let name = conn.getName(who) 14 | let name2 = conn.getName(m.sender) 15 | m.react(rwait) 16 | 17 | let rki = await fetch(`https://api.waifu.pics/sfw/kiss`) 18 | if (!rki.ok) throw await rki.text() 19 | let jkis = await rki.json() 20 | let { url } = jkis 21 | let stiker = await sticker(null, url, `(${name2}) kissed`, `${name}`) 22 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 23 | m.react('😚') 24 | 25 | } 26 | 27 | handler.help = ['kiss @tag'] 28 | handler.tags = ['rnime'] 29 | handler.command = /^(kiss|beso)$/i 30 | handler.diamond = true 31 | handler.group = true 32 | 33 | export default handler 34 | -------------------------------------------------------------------------------- /plugins/owner-checkexpired.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | 4 | if (global.db.data.chats[m.chat].expired < 1) throw `✳️ This group is not set to expire` 5 | let who 6 | if (m.isGroup) who = args[1] ? args[1] : m.chat 7 | else who = args[1] 8 | 9 | var nDays = 86400000 * args[0] 10 | var now = new Date() * 1 11 | 12 | m.reply(`✳️Your lease expires in 13 | 14 | ${msToDate(global.db.data.chats[who].expired - now)} 15 | 16 | _Then the bot will automatically leave the group_`) 17 | 18 | } 19 | handler.help = ['checkexpired'] 20 | handler.tags = ['group'] 21 | handler.command = /^(checkexpired|cexpired)$/i 22 | handler.group = true 23 | 24 | export default handler 25 | 26 | function msToDate(ms) { 27 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 28 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 29 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 30 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 31 | return [d, ' *Days*\n ', h, ' *Hours*\n ', m, ' *Minutes*\n ', s, ' *Seconds* '].map(v => v.toString().padStart(2, 0)).join('') 32 | } 33 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import path, { dirname } from 'path' 3 | import assert from 'assert' 4 | import { spawn } from 'child_process' 5 | import syntaxError from 'syntax-error' 6 | import { fileURLToPath } from 'url' 7 | import { createRequire } from 'module' 8 | 9 | const __filename = fileURLToPath(import.meta.url) 10 | const __dirname = dirname(__filename) 11 | const require = createRequire(__dirname) 12 | 13 | let folders = ['.', ...Object.keys(require(path.join(__dirname, './package.json')).directories)] 14 | let files = [] 15 | for (let folder of folders) 16 | for (let file of fs.readdirSync(folder).filter(v => v.endsWith('.js'))) 17 | files.push(path.resolve(path.join(folder, file))) 18 | for (let file of files) { 19 | if (file == __filename) continue 20 | console.error('Checking', file) 21 | const error = syntaxError(fs.readFileSync(file, 'utf8'), file, { 22 | sourceType: 'module', 23 | allowReturnOutsideFunction: true, 24 | allowAwaitOutsideFunction: true 25 | }) 26 | if (error) assert.ok(error.length < 1, file + '\n\n' + error) 27 | assert.ok(file) 28 | console.log('Donee', file) 29 | } 30 | -------------------------------------------------------------------------------- /plugins/fun-chacter.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, command, text, usedPrefix, participants }) => { 2 | if (!text) throw "Mention whose you want to check character" 3 | const mentionedUser = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : args[2] ? (args[2].replace(/[@ .+-]/g, '') + '@s.whatsapp.net') : '' 4 | const userChar = [ 5 | "Sigma", 6 | "Generous", 7 | "Grumpy", 8 | "Overconfident", 9 | "Obedient", 10 | "Good", 11 | "Simp", 12 | "Kind", 13 | "Patient", 14 | "Pervert", 15 | "Cool", 16 | "Helpful", 17 | "Brilliant", 18 | "Sexy", 19 | "Hot", 20 | "Gorgeous", 21 | "Cute", 22 | ] 23 | const userCharacterSeletion = 24 | userChar[Math.floor(Math.random() * userChar.length)] 25 | 26 | let message = `Character of @${mentionedUser.split("@")[0]} is *${userCharacterSeletion}* 🔥⚡` 27 | 28 | conn.sendMessage(m.chat, { text: message, mentions: [mentionedUser] }, { quoted: m }) 29 | 30 | } 31 | handler.help = ["character @tag"] 32 | handler.tags = ['fun'] 33 | handler.command = /^(character)/i 34 | 35 | export default handler -------------------------------------------------------------------------------- /plugins/anime-rslap.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { sticker } from '../lib/sticker.js' 3 | //import db from '../lib/database.js' 4 | 5 | let handler = async (m, { conn, args, usedPrefix, command }) => { 6 | 7 | let who 8 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 9 | else who = m.chat 10 | if (!who) throw `✳️ Tag or mention someone\n\n📌 Example : ${usedPrefix + command} @tag` 11 | 12 | let user = global.db.data.users[who] 13 | let name = conn.getName(who) 14 | let name2 = conn.getName(m.sender) 15 | m.react(rwait) 16 | 17 | let rki = await fetch(`https://api.waifu.pics/sfw/slap`) 18 | if (!rki.ok) throw await rki.text() 19 | let jkis = await rki.json() 20 | let { url } = jkis 21 | let stiker = await sticker(null, url, `(${name2}) slapped`, `${name}`) 22 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 23 | m.react('👊🏻') 24 | 25 | } 26 | 27 | handler.help = ['slap @tag'] 28 | handler.tags = ['rnime'] 29 | handler.command = /^(slap|bofetada)$/i 30 | handler.diamond = true 31 | handler.group = true 32 | 33 | export default handler 34 | -------------------------------------------------------------------------------- /plugins/anime-rpat.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { sticker } from '../lib/sticker.js' 3 | //import db from '../lib/database.js' 4 | 5 | let handler = async (m, { conn, args, usedPrefix, command }) => { 6 | 7 | let who 8 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 9 | else who = m.chat 10 | if (!who) throw `✳️ Tag or mention someone\n\n📌 Example : ${usedPrefix + command} @tag` 11 | 12 | let user = global.db.data.users[who] 13 | let name = conn.getName(who) 14 | let name2 = conn.getName(m.sender) 15 | m.react(rwait) 16 | 17 | let rpat = await fetch(`https://api.waifu.pics/sfw/pat`) 18 | if (!rpat.ok) throw await rpat.text() 19 | let json = await rpat.json() 20 | let { url } = json 21 | let stiker = await sticker(null, url, `(${name2}) caress to`, `${name}`) 22 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 23 | m.react('☺️') 24 | 25 | } 26 | 27 | handler.help = ['pat @tag'] 28 | handler.tags = ['rnime'] 29 | handler.command = /^(acariciar|pat)$/i 30 | handler.diamond = true 31 | handler.group = true 32 | 33 | export default handler 34 | -------------------------------------------------------------------------------- /plugins/econ-balance.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, {conn, usedPrefix}) => { 3 | 4 | let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender 5 | let user = global.db.data.users[who] 6 | if (!(who in global.db.data.users)) throw `✳️ The user is not found in my database` 7 | conn.reply(m.chat, ` 8 | ┌───⊷ *BALANCE* ⊶ 9 | ▢ *📌Number* : _@${who.split('@')[0]}_ 10 | ▢ *💎Diamonds* : _${user.diamond}_ 11 | ▢ *💎Gold* : _${user.gold}_ 12 | ▢ *💎Rock* : _${user.rock}_ 13 | ▢ *💎EMARALD* : _${user.emerald}_ 14 | ▢ *💎Rank* : _${user.role}_ 15 | ▢ *💎Health* : _${user.health}_ 16 | ▢ *💎Wood* : _${user.wood}_ 17 | ▢ *💎Potions* : _${user.potion}_ 18 | ▢ *💎Iron* : _${user.iron}_ 19 | ▢ *💎Money* : _${user.money}_ 20 | ▢ *⬆️XP* : _Total ${user.exp}_ 21 | └────────────── 22 | 23 | *NOTE :* 24 | You can buy 💎 diamonds using the commands* 25 | ❏ *${usedPrefix}todiamond* 26 | ❏ *${usedPrefix}todiamondall*`, m, { mentions: [who] }) 27 | } 28 | handler.help = ['balance'] 29 | handler.tags = ['econ'] 30 | handler.command = ['bal', 'diamantes', 'diamond', 'balance'] 31 | 32 | export default handler 33 | -------------------------------------------------------------------------------- /plugins/kinflux bot-hentai.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command, args }) => { 2 | if (!global.db.data.chats[m.chat].nsfw) throw `🚫 group doesnt supprt nsfw \n\n enable it by \n*${usedPrefix}enable* nsfw` 3 | let user = global.db.data.users[m.sender].age 4 | if (user < 17) throw m.reply(`❎ uneed to be atleast 18 years🥵`) 5 | if (!text) throw `*This command provides sauce from nhentai: ${usedPrefix + command} miku*` 6 | try { 7 | m.reply(global.wait) 8 | let res = await fetch(`https://api.lolhuman.xyz/api/nhentaisearch?apikey=${lolkeysapi}&query=${text}`) 9 | let json = await res.json() 10 | let aa = json.result[0].id 11 | let aa2 = json.result[0].title_native 12 | let res2 = await fetch(`https://api.lolhuman.xyz/api/nhentaipdf/${aa}?apikey=${lolkeysapi}`) 13 | let json2 = await res2.json() 14 | let aa3 = json2.result 15 | await conn.sendMessage(m.chat, { document: { url: aa3 }, mimetype: 'application/pdf', fileName: `${aa2}.pdf` }, { quoted: m }) 16 | } catch { 17 | throw `*ERROR NOT FOUND TRY SEARCHING ANOTHER QUERY*` 18 | }} 19 | handler.command = /^(hentai)$/i 20 | export default handler 21 | -------------------------------------------------------------------------------- /plugins/main-donate.js: -------------------------------------------------------------------------------- 1 | /* 2 | DON'T MODIFY THIS CODE 3 | This code is responsible for handling donation related commands.. 4 | */ 5 | let handler = async(m, { conn, usedPrefix, command }) => { 6 | console.log(`Command received: ${command}`); 7 | 8 | let message = ` 9 | *We appreciate your support! 🙏* 10 | 11 | To help us keep improving, consider following us on threads. Every new follower brings us joy and motivation! 12 | 13 | Our threads for Instagram: https://threads.net/@kinfluxdigital 14 | 15 | Remember, even the smallest support can make a huge difference! 16 | 17 | Additionally, if you'd like to contribute directly, you can join our whatsApp group. Your support means the world to us! 18 | https://chat.whatsapp.com/KggVmnH7ki6HoyD0025gDD`; 19 | 20 | let img = 'https://chat.whatsapp.com/KggVmnH7ki6HoyD0025gDD'; 21 | 22 | console.log("Sending message and image..."); 23 | await conn.sendFile(m.chat, img, 'donation.jpg', message, m, false, rpyp); 24 | console.log("Message and image sent."); 25 | }; 26 | 27 | handler.help = ['Donate']; 28 | handler.tags = ['Main']; 29 | handler.command = ['donate', 'support', 'contribute']; 30 | 31 | export default handler; 32 | -------------------------------------------------------------------------------- /plugins/owner-un-block.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { text, conn, usedPrefix, command }) => { 2 | let why = `*ERROR, EXAMPLE:*\n*—◉ ${usedPrefix + command} @${m.sender.split("@")[0]}*` 3 | let who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : text ? text.replace(/[^0-9]/g, '') + '@s.whatsapp.net' : false 4 | if (!who) conn.reply(m.chat, why, m, { mentions: [m.sender] }) 5 | let res = []; 6 | switch (command) { 7 | case "block": 8 | case "unblock": 9 | if (who) await conn.updateBlockStatus(who, "block").then(() => { res.push(who); }) 10 | else conn.reply(m.chat, why, m, { mentions: [m.sender] }) 11 | break; 12 | case "unblock": 13 | case "unblock": 14 | if (who) await conn.updateBlockStatus(who, "unblock").then(() => { res.push(who); }) 15 | else conn.reply(m.chat, why, m, { mentions: [m.sender] }) 16 | break; 17 | } 18 | if (res[0]) conn.reply(m.chat, `*SUCCESS! USER ${command} ACTION PERFORMED ON ${res ? `${res.map(v => '@' + v.split("@")[0])}` : ''}*`, m, { mentions: res }) 19 | } 20 | 21 | handler.command = /^(block|unblock)$/i 22 | handler.rowner = true 23 | export default handler 24 | -------------------------------------------------------------------------------- /lib/levelling.js: -------------------------------------------------------------------------------- 1 | export const growth = Math.pow(Math.PI / Math.E, 1.618) * Math.E * .75 2 | export function xpRange(level, multiplier = global.multiplier || 1) { 3 | if (level < 0) 4 | throw new TypeError('level cannot be negative value') 5 | level = Math.floor(level) 6 | let min = level === 0 ? 0 : Math.round(Math.pow(level, growth) * multiplier) + 1 7 | let max = Math.round(Math.pow(++level, growth) * multiplier) 8 | return { 9 | min, 10 | max, 11 | xp: max - min 12 | } 13 | } 14 | export function findLevel(xp, multiplier = global.multiplier || 1) { 15 | if (xp === Infinity) 16 | return Infinity 17 | if (isNaN(xp)) 18 | return NaN 19 | if (xp <= 0) 20 | return -1 21 | let level = 0 22 | do 23 | level++ 24 | while (xpRange(level, multiplier).min <= xp) 25 | return --level 26 | } 27 | export function canLevelUp(level, xp, multiplier = global.multiplier || 1) { 28 | if (level < 0) 29 | return false 30 | if (xp === Infinity) 31 | return true 32 | if (isNaN(xp)) 33 | return false 34 | if (xp <= 0) 35 | return false 36 | return level < findLevel(xp, multiplier) 37 | } -------------------------------------------------------------------------------- /plugins/dl-modapk.js: -------------------------------------------------------------------------------- 1 | import { download } from 'aptoide-scraper'; 2 | 3 | let handler = async (m, { conn, usedPrefix: prefix, command, text }) => { 4 | try { 5 | if (command === 'modapk') { 6 | if (!text) throw `*[❗] Please provide the APK Name you want to download.*`; 7 | 8 | await conn.reply(m.chat, global.wait, m); 9 | let data = await download(text); 10 | 11 | if (data.size.replace(' MB', '') > 200) { 12 | return await conn.sendMessage(m.chat, { text: '*[⛔] The file is too large.*' }, { quoted: m }); 13 | } 14 | 15 | if (data.size.includes('GB')) { 16 | return await conn.sendMessage(m.chat, { text: '*[⛔] The file is too large.*' }, { quoted: m }); 17 | } 18 | 19 | await conn.sendMessage( 20 | m.chat, 21 | { document: { url: data.dllink }, mimetype: 'application/vnd.android.package-archive', fileName: data.name + '.apk', caption: null }, 22 | { quoted: m } 23 | ) 24 | } 25 | } catch { 26 | throw `*[❗] An error occurred. Make sure to provide a valid link.*`; 27 | } 28 | }; 29 | 30 | handler.help = ['modapk'] 31 | handler.tags = ['downloader'] 32 | handler.command = /^modapk$/i; 33 | export default handler; 34 | -------------------------------------------------------------------------------- /plugins/kinflux bot-toanime.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | let handler = async (m, { conn, text, args, usedPrefix, command }) => { 3 | let q = m.quoted ? m.quoted : m 4 | let mime = (q.msg || q).mimetype || q.mediaType || "" 5 | if (!/image/g.test(mime)) throw '*Respond to a image*' 6 | m.reply('*This command can turn your photo into anime*') 7 | let data = await q.download?.() 8 | let image = await uploadImage(data) 9 | try { 10 | let anime = `https://api.lolhuman.xyz/api/imagetoanime?apikey=${lolkeysapi}&img=${image}` 11 | await conn.sendFile(m.chat, anime, 'error.jpg', null, m) 12 | } catch (i) { 13 | try { 14 | let anime2 = `https://api.zahwazein.xyz/photoeditor/jadianime?url=${image}&apikey=${keysxxx}` 15 | await conn.sendFile(m.chat, anime2, 'error.jpg', null, m) 16 | } catch (a) { 17 | try{ 18 | let anime3 = `https://api.caliph.biz.id/api/animeai?img=${image}&apikey=caliphkey` 19 | await conn.sendFile(m.chat, anime3, 'error.jpg', null, m) 20 | } catch (e) { 21 | throw '*Error check if the persons face is visible*' 22 | }}}} 23 | handler.help = ["toanime"] 24 | handler.tags = ["tools"] 25 | handler.diamond = true 26 | handler.command = /^(imganime|toanime)$/i 27 | export default handler 28 | -------------------------------------------------------------------------------- /plugins/main-script.js: -------------------------------------------------------------------------------- 1 | import { promises } from 'fs' 2 | import { join } from 'path' 3 | 4 | let handler = async function (m, { conn, __dirname }) { 5 | let _package = JSON.parse(await promises.readFile(join(__dirname, '../package.json')).catch(_ => ({}))) || {} 6 | 7 | m.reply(` 8 | 9 | *kinflux bot God v2.0 WHATSAPP USER BOT 💃🏻♥️* 10 | 11 | _kinflux bot God Is a Multi device Whatsapp User Bot created By kinflux digital, , _ 12 | ᴘʟᴇᴀꜱᴇ ꜱᴛᴀʀ ᴛʜᴇ ʀᴇᴘᴏ ᴀɴᴅ ꜰᴏʟʟᴏᴡ ᴍᴇ ᴏɴ ɢɪᴛʜᴜʙ: 13 | 14 | ▢ Git : ${_package.homepage} 15 | 16 | 17 | ⭐ Total Stars: *26* 18 | 🍽️ Forks: *156* 19 | 💭 language : *JavaScript* 20 | ⚖️ license : *MIT License* 21 | ⚙️ Branch : *main* 22 | 🧰 Last Updated :2023-08-29T05:10:54Z 23 | 🚁 owner number : https://wa.me/254110377776 24 | : https://wa.me/254110077535 25 | 🎌 bot group https://chat.whatsapp.com/BLjStbNJvG2H7Z3hlDmv28 26 | 27 | 28 | *👸Thanks for using kinflux bot God* 29 | 30 | *® kinflux digital* 31 | *© 2023 kinflux digital* 32 | 33 | `.trim()) 34 | 35 | } 36 | 37 | handler.help = ['script'] 38 | handler.tags = ['main'] 39 | handler.command = ['sc', 'git', 'script'] 40 | 41 | export default handler 42 | -------------------------------------------------------------------------------- /plugins/kinflux bot-weather.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | let handler = async (m, { args }) => { 3 | if (!args[0]) throw "*Give a place to search*" 4 | try { 5 | const response = axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${args}&units=metric&appid=060a6bcfa19809c2cd4d97a212b19273`) 6 | const res = await response 7 | const name = res.data.name 8 | const Country = res.data.sys.country 9 | const Weather = res.data.weather[0].description 10 | const Temperature = res.data.main.temp + "°C" 11 | const Minimum_Temperature = res.data.main.temp_min + "°C" 12 | const Maximum_Temperature = res.data.main.temp_max + "°C" 13 | const Humidity = res.data.main.humidity + "%" 14 | const Wind = res.data.wind.speed + "km/h" 15 | const wea = `「 📍 」PLACE: ${name}\n「 🗺️ 」COUNTRY: ${Country}\n「 🌤️ 」VIEW: ${Weather}\n「 🌡️ 」TEMPERATURE: ${Temperature}\n「 💠 」 MINIMUM TEMPERATURE: ${Minimum_Temperature}\n「 📛 」 MAXIMUM TEMPERATURE: ${Maximum_Temperature}\n「 💦 」HUMIDITY: ${Humidity}\n「 🌬️ 」 WINDSPEED: ${Wind} made with love by kinflux bot` 16 | m.reply(wea) 17 | } catch { 18 | return "*ERROR*"}} 19 | handler.help = ['climate **'] 20 | handler.tags = ['herramientas'] 21 | handler.command = /^(climate|weather)$/i 22 | export default handler 23 | -------------------------------------------------------------------------------- /plugins/kinflux bot -Davinci.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, text, usedPrefix, command }) => { 4 | if (!text) throw `*This command generates image from texts*\n\n*𝙴xample usage*\n*◉ ${usedPrefix + command} Beautiful animegirl*\n*◉ ${usedPrefix + command} elon musk in pink output*`; 5 | 6 | try { 7 | m.reply('*Please wait, generating images...*'); 8 | 9 | const response = await fetch(`https://gurugpt4-85987f3ed9b3.herokuapp.com/api/imgai?prompt=${encodeURIComponent(text)}&count=2`); 10 | const data = await response.json(); 11 | 12 | 13 | if (data.images && Array.isArray(data.images)) { 14 | 15 | for (const image of data.images) { 16 | const imageResponse = await fetch(image.url); 17 | const imageBuffer = await imageResponse.buffer(); 18 | 19 | 20 | await conn.sendFile(m.chat, imageBuffer, null, null, m); 21 | } 22 | } else { 23 | throw '*Image generation failed*'; 24 | } 25 | } catch { 26 | throw '*Oops! Something went wrong while generating images. Please try again later.from kinflux bot*'; 27 | } 28 | }; 29 | 30 | handler.command = ['ai2', 'dalle', 'gen', 'gimg', 'openai2']; 31 | export default handler; 32 | -------------------------------------------------------------------------------- /plugins/anime-rkill.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import axios from 'axios' 3 | import { sticker } from '../lib/sticker.js' 4 | import MessageType from '@adiwajshing/baileys' 5 | //import db from '../lib/database.js' 6 | 7 | let handler = async (m, { conn, args, usedPrefix, command }) => { 8 | 9 | let who 10 | if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted ? m.quoted.sender : false 11 | else who = m.chat 12 | if (!who) throw `✳️ Tag or mention someone\n\n📌 Example : ${usedPrefix + command} @tag` 13 | 14 | let user = global.db.data.users[who] 15 | let name = conn.getName(who) 16 | let name2 = conn.getName(m.sender) 17 | m.react(rwait) 18 | 19 | let rki = await fetch(`https://api.waifu.pics/sfw/kill`) 20 | if (!rki.ok) throw await rki.text() 21 | let jkis = await rki.json() 22 | let { url } = jkis 23 | let stiker = await sticker(null, url, `(${name2}) killed`, `${name}`) 24 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 25 | m.react('🗡️') 26 | 27 | } 28 | 29 | handler.help = ['kill @tag'] 30 | handler.tags = ['rnime'] 31 | handler.command = /^(kill|matar)$/i 32 | handler.diamond = true 33 | handler.group = true 34 | 35 | export default handler 36 | -------------------------------------------------------------------------------- /plugins/game-math_answer.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | let handler = m => m 4 | handler.before = async function (m) { 5 | if (!/^-?[0-9]+(\.[0-9]+)?$/.test(m.text)) return !0 6 | let id = m.chat 7 | if (!m.quoted || !m.quoted.fromMe || !m.text || !/^▢ HOW MUCH IS IT/i.test(m.quoted.text)) return !0 8 | this.math = this.math ? this.math : {} 9 | if (!(id in this.math)) return this.reply(m.chat, 'The game is over', m) 10 | if (m.quoted.id == this.math[id][0].id) { 11 | let math = JSON.parse(JSON.stringify(this.math[id][1])) 12 | if (m.text == math.result) { 13 | global.db.data.users[m.sender].exp += math.bonus 14 | clearTimeout(this.math[id][3]) 15 | delete this.math[id] 16 | m.reply(`✅ *Correct answer!*\n\n‣ won : *+${math.bonus} XP*`) 17 | } else { 18 | if (--this.math[id][2] == 0) { 19 | clearTimeout(this.math[id][3]) 20 | delete this.math[id] 21 | m.reply(`*The opportunities are over*\n\n Response : *${math.result}*`) 22 | } else m.reply(`❎ *Wrong answer*\n\nThere are still ${this.math[id][2]} opportuniities`) 23 | } 24 | } 25 | return !0 26 | } 27 | 28 | export default handler 29 | -------------------------------------------------------------------------------- /plugins/anime-waifupics.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import axios from 'axios' 3 | 4 | let handler = async (m, { conn, args, usedPrefix, command }) => { 5 | m.react(rwait) 6 | 7 | let type = (command).toLowerCase() 8 | 9 | switch (type) { 10 | 11 | case 'loli': 12 | let img = await conn.getFile(global.API('fgmods', '/api/loli', {}, 'apikey')) 13 | let loli = img.data 14 | conn.sendFile(m.chat, loli.data, 'img.jpg', `✅ Random ${command}`, m) 15 | m.react(dmoji) 16 | break 17 | 18 | case 'waifu': 19 | case 'megumin': 20 | case 'neko': 21 | let res = await fetch(`https://api.waifu.pics/sfw/${command}`) 22 | if (!res.ok) throw await res.text() 23 | let json = await res.json(`https://raw.githubusercontent.com/Guru322/api/Guru/BOT-JSON/waifu.json`) 24 | if (!json.url) throw '❎ Error' 25 | conn.sendFile(m.chat, json.url, 'img.jpg', `✅ Random ${command}`, m) 26 | m.react(dmoji) 27 | break 28 | 29 | 30 | default: 31 | } 32 | } 33 | 34 | handler.help = ['waifu', 'neko', 'megumin', 'loli'] 35 | handler.tags = ['nime'] 36 | handler.command = ['waifu', 'neko', 'megumin', 'loli'] 37 | 38 | 39 | export default handler 40 | 41 | function pickRandom(list) { 42 | return list[Math.floor(list.length * Math.random())] 43 | } 44 | -------------------------------------------------------------------------------- /plugins/tools-google.js: -------------------------------------------------------------------------------- 1 | import { googleIt } from '@bochilteam/scraper' 2 | let handler = async (m, { conn, command, args }) => { 3 | const fetch = (await import('node-fetch')).default 4 | let full = /f$/i.test(command) 5 | let text = args.join` ` 6 | if (!text) return conn.reply(m.chat, '✳️ What do you want to search on Google?', m) 7 | let url = 'https://google.com/search?q=' + encodeURIComponent(text) 8 | let search = await googleIt(text) 9 | let msg = search.articles.map(({ 10 | // header, 11 | title, 12 | url, 13 | description 14 | }) => { 15 | return `*${title}*\n_${url}_\n_${description}_ 16 | ╭───•✧✧•───╮ 17 | GENERATED WITH LOVE BY 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 18 | ╰───•✧✧•───╯` 19 | }).join('\n\n') 20 | try { 21 | let ss = await (await fetch(global.API('nrtm', '/api/ssweb', { delay: 1000, url, full }))).arrayBuffer() 22 | if (//i.test(ss.toBuffer().toString())) throw '' 23 | await conn.sendFile(m.chat, ss, 'screenshot.png', url + '\n\n' + msg, m) 24 | } catch (e) { 25 | m.reply(msg) 26 | } 27 | } 28 | handler.help = ['google'] 29 | handler.tags = ['tools'] 30 | handler.command = ['google'] 31 | handler.diamond = true 32 | 33 | export default handler 34 | -------------------------------------------------------------------------------- /plugins/tool-resize.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js'; 2 | import fetch from 'node-fetch'; 3 | 4 | let handler = async (m, { conn, usedPrefix, command, args, text }) => { 5 | let q = m.quoted ? m.quoted : m; 6 | let mime = (q.msg || q).mimetype || ''; 7 | 8 | if (!mime) throw '⚠️️ Reply to an image or video.'; 9 | if (!text) throw '⚠️️ Enter the new file size for the image/video.'; 10 | if (isNaN(text)) throw '🔢 Only numbers are allowed👻.'; 11 | 12 | if (!/image\/(jpe?g|png)|video|document/.test(mime)) throw '⚠️️ Unsupported format.'; 13 | 14 | let img = await q.download(); 15 | let url = await uploadImage(img); 16 | 17 | if (/image\/(jpe?g|png)/.test(mime)) { 18 | conn.sendMessage(m.chat, { image: { url: url }, caption: `Here you go`, fileLength: `${text}`, mentions: [m.sender] }, { ephemeralExpiration: 24 * 3600, quoted: m }); 19 | } else if (/video/.test(mime)) { 20 | return conn.sendMessage(m.chat, { video: { url: url }, caption: `Here you go`, fileLength: `${text}`, mentions: [m.sender] }, { ephemeralExpiration: 24 * 3600, quoted: m }); 21 | } 22 | }; 23 | 24 | handler.tags = ['tools']; 25 | handler.help = ['length ']; 26 | handler.command = /^(length|filelength|edittamaño|totamaño|tamaño)$/i; 27 | 28 | export default handler; 29 | -------------------------------------------------------------------------------- /plugins/owner-broadcastgc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, isROwner, text }) => { 2 | const delay = time => new Promise(res => setTimeout(res, time)) 3 | let getGroups = await conn.groupFetchAllParticipating() 4 | let groups = Object.entries(getGroups).slice(0).map(entry => entry[1]) 5 | let anu = groups.map(v => v.id) 6 | var pesan = m.quoted && m.quoted.text ? m.quoted.text : text 7 | if(!pesan) throw '*ENTER THE MESSAGE YOU WANT TO BROADCAST*' 8 | for (let i of anu) { 9 | await delay(500) 10 | conn.relayMessage(i, 11 | { liveLocationMessage: { 12 | degreesLatitude: 35.685506276233525, 13 | degreesLongitude: 139.75270667105852, 14 | accuracyInMeters: 0, 15 | degreesClockwiseFromMagneticNorth: 2, 16 | caption: '[ATTENTION]\n\n' + pesan + '\n\nTHIS IS AN OFFICIAL STATEMENT FROM KINFLUX BOT OWNER', 17 | sequenceNumber: 2, 18 | timeOffset: 3, 19 | contextInfo: m, 20 | }}, {}).catch(_ => _) 21 | } 22 | m.reply(`*MESSAGE SENT TO ${anu.length} GROUP/S*\n\n*NOTE: THIS COMMAND MAY FAIL AND NOT BE SENT TO ALL CHATS, SORRY FOR THE TIME BEING*`) 23 | } 24 | handler.help = ['broadcastgroup', 'bcgc'].map(v => v + ' ') 25 | handler.tags = ['owner'] 26 | handler.command = /^(broadcast|bc)(group|grup|gc)$/i 27 | handler.owner = true 28 | 29 | export default handler 30 | -------------------------------------------------------------------------------- /plugins/sticker-emojimix.js: -------------------------------------------------------------------------------- 1 | 2 | import fetch from 'node-fetch' 3 | import { sticker } from '../lib/sticker.js' 4 | 5 | const fetchJson = (url, options) => new Promise(async (resolve, reject) => { 6 | fetch(url, options) 7 | .then(response => response.json()) 8 | .then(json => { 9 | resolve(json) 10 | }) 11 | .catch((err) => { 12 | reject(err) 13 | })}) 14 | 15 | let handler = async (m, { conn, text, args, usedPrefix, command }) => { 16 | 17 | if (!args[0]) throw `📌 Example : ${usedPrefix + command} 😎+🤑` 18 | if (!text.includes('+')) throw `✳️ Separate the emoji with a *+* \n\n📌 Example : \n*${usedPrefix + command}* 😎+🤑` 19 | let [emoji, emoji2] = text.split`+` 20 | let anu = await fetchJson(`https://tenor.googleapis.com/v2/featured?key=AIzaSyAyimkuYQYF_FXVALexPuGQctUWRURdCYQ&contentfilter=high&media_filter=png_transparent&component=proactive&collection=emoji_kitchen_v5&q=${encodeURIComponent(emoji)}_${encodeURIComponent(emoji2)}`) 21 | for (let res of anu.results) { 22 | let stiker = await sticker(false, res.url, global.packname, global.author) 23 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 24 | }} 25 | 26 | handler.help = ['emojimix '] 27 | handler.tags = ['sticker'] 28 | handler.command = ['emojimix'] 29 | handler.diamond = true 30 | 31 | export default handler 32 | -------------------------------------------------------------------------------- /plugins/tools-calc.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text }) => { 2 | let id = m.chat 3 | conn.math = conn.math ? conn.math : {} 4 | if (id in conn.math) { 5 | clearTimeout(conn.math[id][3]) 6 | delete conn.math[id] 7 | m.reply('.... ') 8 | } 9 | let val = text 10 | .replace(/[^0-9\-\/+*×÷πEe()piPI/]/g, '') 11 | .replace(/×/g, '*') 12 | .replace(/÷/g, '/') 13 | .replace(/π|pi/gi, 'Math.PI') 14 | .replace(/e/gi, 'Math.E') 15 | .replace(/\/+/g, '/') 16 | .replace(/\++/g, '+') 17 | .replace(/-+/g, '-') 18 | let format = val 19 | .replace(/Math\.PI/g, 'π') 20 | .replace(/Math\.E/g, 'e') 21 | .replace(/\//g, '÷') 22 | .replace(/\*×/g, '×') 23 | try { 24 | console.log(val) 25 | let result = (new Function('return ' + val))() 26 | if (!result) throw result 27 | m.reply(`*${format}* = _${result}_`) 28 | } catch (e) { 29 | if (e == undefined) throw '✳️ enter the equation\n\ncompatible symbols -, +, *, /, ×, ÷, π, e, (, )' 30 | throw 'Incorrect format, only 0-9 and symbol -, +, *, /, ×, ÷, π, e, (, ) what can you use' 31 | } 32 | } 33 | handler.help = ['cal '] 34 | handler.tags = ['tools'] 35 | handler.command = ['cal', 'calc', 'calcular', 'calculadora'] 36 | handler.exp = 5 37 | 38 | export default handler 39 | -------------------------------------------------------------------------------- /plugins/kinflux bot-nowa.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { conn, text, usedPrefix, command }) => { 2 | let regex = /x/g 3 | if (!text) throw 'Give a number to search' 4 | if (!text.match(regex)) throw `*Example: ${usedPrefix + command} 254110377776*` 5 | let random = text.match(regex).length, total = Math.pow(10, random), array = [] 6 | for (let i = 0; i < total; i++) { 7 | let list = [...i.toString().padStart(random, '0')] 8 | let result = text.replace(regex, () => list.shift()) + '@s.whatsapp.net' 9 | if (await conn.onWhatsApp(result).then(v => (v[0] || {}).exists)) { 10 | let info = await conn.fetchStatus(result).catch(_ => {}) 11 | array.push({ exists: true, jid: result, ...info }) 12 | } else { 13 | array.push({ exists: false, jid: result }) 14 | }} 15 | let txt = 'Registered\n\n' + array.filter(v => v.exists).map(v => `• Link: wa.me/${v.jid.split('@')[0]}\n*• Bio:* ${v.status || 'descripiion'}\n*• set on:* ${formatDate(v.setAt)}`).join('\n\n') + '\n\n*Not registered*\n\n' + array.filter(v => !v.exists).map(v => v.jid.split('@')[0]).join('\n') 16 | m.reply(txt) 17 | } 18 | handler.command = /^nowa$/i 19 | export default handler 20 | function formatDate(n, locale = 'in') { 21 | let d = new Date(n) 22 | return d.toLocaleDateString(locale, { timeZone: 'Asia/Kolkata' })} 23 | -------------------------------------------------------------------------------- /plugins/sticker-getsticker.js: -------------------------------------------------------------------------------- 1 | 2 | import fg from 'api-dylux' 3 | import fetch from 'node-fetch' 4 | import { sticker } from '../lib/sticker.js' 5 | let handler = async (m, { conn, args, text, usedPrefix, command }) => { 6 | if (!args[0]) throw `✳️ enter what you want to search \n\n📌*Example:*\n${usedPrefix + command} homero` 7 | 8 | //Result https://getstickerpack.com/ 9 | try { 10 | /*let res = await fetch(global.API('fgmods', '/api/getsticker', { q:text }, 'apikey')) 11 | let json = await res.json()*/ 12 | let json = await fg.StickerSearch(text) 13 | m.reply(` 14 | ✅ Result 15 | 16 | ▢ *Title:* ${json.title} 17 | ▢ *Total stickers:* ${json.sticker_url.length} 18 | ▢ *Estimated shipping time:* _*${json.sticker_url.length * 2} s*_`) 19 | for (let i of json.sticker_url) { 20 | const stiker = await sticker(false, i, global.packname, global.author) 21 | await conn.sendFile(m.chat, stiker, 'sticker.webp', '', m) 22 | //await delay(1500) 23 | } 24 | } catch (e) { 25 | m.reply(`❇️ Error: try another`) 26 | } 27 | } 28 | handler.help = ['getsticker'] 29 | handler.tags = ['sticker'] 30 | handler.command = ['getsticker', 'getstick', 'stickersearch', 'sticksearch'] 31 | handler.diamond = false 32 | 33 | export default handler 34 | 35 | const delay = time => new Promise(res => setTimeout(res, time)) 36 | -------------------------------------------------------------------------------- /plugins/econ-heal.js: -------------------------------------------------------------------------------- 1 | let handler = async (m, { args, usedPrefix }) => { 2 | let user = global.db.data.users[m.sender] 3 | if (user.health >= 100) return m.reply(` 4 | Your ❤️health is full! 5 | `.trim()) 6 | let buf = user.cat 7 | let buff = (buf == 0 ? '5' : '' || buf == 1 ? '10' : '' || buf == 2 ? '15' : '' || buf == 3 ? '20' : '' || buf == 4 ? '25' : '' || buf == 5 ? '30' : '' || buf == 6 ? '35' : '' || buf == 7 ? '40' : '' || buf == 8 ? '45' : '' || buf == 9 ? '50' : '' || buf == 10 ? '100' : '' || buf == 11 ? '100' : '') 8 | const heal = 15 + (buff * 4) 9 | let count = Math.max(1, Math.min(Number.MAX_SAFE_INTEGER, (isNumber(args[0]) && parseInt(args[0]) || Math.round((100 - user.health) / heal)))) * 1 10 | if (user.potion < count) return m.reply(` 11 | Your 🥤Potion is not enough, you only have *${user.potion}* 🥤Potion 12 | type *${usedPrefix}buy potion ${count - user.potion}* to buy 🥤Potion 13 | `.trim()) 14 | user.potion -= count * 1 15 | user.health += heal * count 16 | m.reply(` 17 | Successful use of *${count}* 🥤Potion(s) 18 | `.trim()) 19 | } 20 | 21 | handler.help = ['heal'] 22 | handler.tags = ['rpg'] 23 | handler.command = /^(heal)$/i 24 | 25 | export default handler 26 | 27 | function isNumber(number) { 28 | if (!number) return number 29 | number = parseInt(number) 30 | return typeof number == 'number' && !isNaN(number) 31 | } 32 | -------------------------------------------------------------------------------- /plugins/_antilink.js: -------------------------------------------------------------------------------- 1 | 2 | const linkRegex = /chat.whatsapp.com\/(?:invite\/)?([0-9A-Za-z]{20,24})/i 3 | 4 | export async function before(m, {conn, isAdmin, isBotAdmin }) { 5 | if (m.isBaileys && m.fromMe) 6 | return !0 7 | if (!m.isGroup) return !1 8 | let chat = global.db.data.chats[m.chat] 9 | let bot = global.db.data.settings[this.user.jid] || {} 10 | const isGroupLink = linkRegex.exec(m.text) 11 | 12 | if (chat.antiLink && isGroupLink && !isAdmin) { 13 | if (isBotAdmin) { 14 | const linkThisGroup = `https://chat.whatsapp.com/${await this.groupInviteCode(m.chat)}` 15 | if (m.text.includes(linkThisGroup)) return !0 16 | } 17 | await conn.reply(m.chat, ` 18 | ╭───•✧✧•───╮ 19 | *≡ 🎌KINFLUX 𝘽𝙊𝙏 🎌* 20 | ╰───•✧✧•───╯ 21 | *≡ Link Detected* 22 | 23 | We do not allow links from other groups *≡ 🎌KINFLUX 𝘽𝙊𝙏 🎌* 24 | I'm sorry *@${m.sender.split('@')[0]}* you will be kicked out of the group ${isBotAdmin ? '' : '\n\nIM not an admin so I canT expel you :"v'}`, null, { mentions: [m.sender] } ) 25 | if (isBotAdmin && chat.antiLink) { 26 | await conn.sendMessage(m.chat, { delete: m.key }) 27 | await conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 28 | } else if (!chat.antiLink) return //m.reply('') 29 | } 30 | return !0 31 | } 32 | -------------------------------------------------------------------------------- /plugins/dl-facebook.js: -------------------------------------------------------------------------------- 1 | import fg from 'api-dylux'; 2 | 3 | const handler = async (m, { conn, args, usedPrefix, command }) => { 4 | if (!args[0]) { 5 | throw `✳️ Please send the link of a Facebook video\n\n📌 EXAMPLE :\n*${usedPrefix + command}* https://www.facebook.com/Ankursajiyaan/videos/981948876160874/?mibextid=rS40aB7S9Ucbxw6v`; 6 | } 7 | 8 | const urlRegex = /^(?:https?:\/\/)?(?:www\.)?(?:facebook\.com|fb\.watch)\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i; 9 | if (!urlRegex.test(args[0])) { 10 | throw '⚠️ PLEASE GIVE A VALID URL.'; 11 | } 12 | 13 | m.react(rwait); 14 | 15 | try { 16 | const result = await fg.fbdl(args[0]); 17 | const tex = ` 18 | ⊱ ─── {* kinflux FBDL*} ─── ⊰ 19 | ↳ *VIDEO TITLE:* ${result.title} 20 | ⊱ ────── {⋆♬⋆} ────── ⊰`; 21 | 22 | const response = await fetch(result.videoUrl); 23 | const arrayBuffer = await response.arrayBuffer(); 24 | const videoBuffer = Buffer.from(arrayBuffer); 25 | 26 | conn.sendFile(m.chat, videoBuffer, 'fb.mp4', tex, m); 27 | m.react(done); 28 | } catch (error) { 29 | console.log(error); 30 | m.reply('⚠️ An error occurred while processing the request. Please try again later.'); 31 | } 32 | }; 33 | 34 | handler.help = ['facebook ']; 35 | handler.tags = ['downloader']; 36 | handler.command = /^((facebook|fb)(downloder|dl)?)$/i; 37 | handler.diamond = true; 38 | 39 | export default handler; 40 | 41 | -------------------------------------------------------------------------------- /plugins/tools-element.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let elementHandler = async (m, { conn, text }) => { 4 | if (!text) throw 'Please provide an element symbol or name'; 5 | 6 | try { 7 | let res = await fetch(`https://api.popcat.xyz/periodic-table?element=${text}`); 8 | 9 | if (!res.ok) { 10 | throw new Error(`API request failed with status ${res.status}`); 11 | } 12 | 13 | let buffer = await res.arrayBuffer(); 14 | let json = JSON.parse(Buffer.from(buffer).toString()); 15 | 16 | console.log('JSON response:', json); 17 | 18 | let elementInfo = 19 | `*Element Information:*\n 20 | • *Name:* ${json.name}\n 21 | • *Symbol:* ${json.symbol}\n 22 | • *Atomic Number:* ${json.atomic_number}\n 23 | • *Atomic Mass:* ${json.atomic_mass}\n 24 | • *Period:* ${json.period}\n 25 | • *Phase:* ${json.phase}\n 26 | • *Discovered By:* ${json.discovered_by}\n 27 | • *Summary:* ${json.summary} 28 | ╭───•✧✧•───╮ 29 | GENERATED WITH LOVE BY 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 30 | ╰───•✧✧•───╯`; 31 | 32 | conn.sendFile(m.chat, json.image, 'element.jpg', elementInfo, m); 33 | } catch (error) { 34 | console.error(error); 35 | // Handle the error appropriately 36 | } 37 | }; 38 | 39 | elementHandler.help = ['element']; 40 | elementHandler.tags = ['tools']; 41 | elementHandler.command = /^(element|ele)$/i; 42 | 43 | export default elementHandler; 44 | -------------------------------------------------------------------------------- /plugins/tools-tts.js: -------------------------------------------------------------------------------- 1 | import gtts from 'node-gtts' 2 | import { readFileSync, unlinkSync } from 'fs' 3 | import { join } from 'path' 4 | 5 | const defaultLang = 'en' 6 | let handler = async (m, { conn, args, usedPrefix, command }) => { 7 | 8 | let lang = args[0] 9 | let text = args.slice(1).join(' ') 10 | if ((args[0] || '').length !== 2) { 11 | lang = defaultLang 12 | text = args.join(' ') 13 | } 14 | if (!text && m.quoted?.text) text = m.quoted.text 15 | 16 | let res 17 | try { res = await tts(text, lang) } 18 | catch (e) { 19 | m.reply(e + '') 20 | text = args.join(' ') 21 | if (!text) throw `📌 Example : \n${usedPrefix}${command} en hello world` 22 | res = await tts(text, defaultLang) 23 | } finally { 24 | if (res) conn.sendFile(m.chat, res, 'tts.opus', null, m, true) 25 | } 26 | } 27 | handler.help = ['tts '] 28 | handler.tags = ['tools'] 29 | handler.command = ['tts', 'voz'] 30 | 31 | export default handler 32 | 33 | function tts(text, lang = 'en-en') { 34 | console.log(lang, text) 35 | return new Promise((resolve, reject) => { 36 | try { 37 | let tts = gtts(lang) 38 | let filePath = join(global.__dirname(import.meta.url), '../tmp', (1 * new Date) + '.wav') 39 | tts.save(filePath, text, () => { 40 | resolve(readFileSync(filePath)) 41 | unlinkSync(filePath) 42 | }) 43 | } catch (e) { reject(e) } 44 | }) 45 | } 46 | -------------------------------------------------------------------------------- /plugins/_onlyEnglish.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = m => m 3 | 4 | handler.before = async function (m, {conn, isAdmin, isBotAdmin, isOwner } ) { 5 | 6 | if (!m.isGroup) return !1 7 | let chat = global.db.data.chats[m.chat] 8 | let te = `✳️Only English-speaking people are allowed in this group` 9 | if (isBotAdmin && chat.onlyenglish && !isAdmin && !isOwner) { 10 | if (m.sender.startsWith('60')) { 11 | //global.db.data.users[m.sender].banned = true 12 | m.reply(te, m.sender) 13 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 14 | } 15 | if (m.sender.startsWith('264')) { 16 | m.reply(te, m.sender) 17 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 18 | } 19 | if (m.sender.startsWith('263')) { 20 | m.reply(te, m.sender) 21 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 22 | } 23 | if (m.sender.startsWith('212')) { 24 | m.reply(te, m.sender) 25 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 26 | } 27 | if (m.sender.startsWith('234')) { 28 | m.reply(te, m.sender) 29 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 30 | } 31 | if (m.sender.startsWith('93')) { 32 | m.reply(te, m.sender) 33 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 34 | } 35 | if (m.sender.startsWith('94')) { 36 | m.reply(te, m.sender) 37 | conn.groupParticipantsUpdate(m.chat, [m.sender], 'remove') 38 | } 39 | 40 | //--- 41 | } 42 | } 43 | export default handler 44 | -------------------------------------------------------------------------------- /plugins/tools-itunes.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let itunesHandler = async (m, { conn, text }) => { 4 | if (!text) throw 'Please provide a song name'; 5 | 6 | try { 7 | let res = await fetch(`https://api.popcat.xyz/itunes?q=${encodeURIComponent(text)}`); 8 | 9 | if (!res.ok) { 10 | throw new Error(`API request failed with status ${res.status}`); 11 | } 12 | 13 | let json = await res.json(); 14 | 15 | console.log('JSON response:', json); 16 | 17 | let songInfo = 18 | `*Song Information:*\n 19 | • *Name:* ${json.name}\n 20 | • *Artist:* ${json.artist}\n 21 | • *Album:* ${json.album}\n 22 | • *Release Date:* ${json.release_date}\n 23 | • *Price:* ${json.price}\n 24 | • *Length:* ${json.length}\n 25 | • *Genre:* ${json.genre}\n 26 | • *URL:* ${json.url} 27 | ╭───•✧✧•───╮ 28 | GENERATED WITH LOVE BY 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 29 | ╰───•✧✧•───╯`; 30 | 31 | // Check if thumbnail is present, then send it with songInfo as caption 32 | if (json.thumbnail) { 33 | await conn.sendFile(m.chat, json.thumbnail, 'thumbnail.jpg', songInfo, m); 34 | } else { 35 | m.reply(songInfo); 36 | } 37 | 38 | } catch (error) { 39 | console.error(error); 40 | // Handle the error appropriately 41 | } 42 | }; 43 | 44 | itunesHandler.help = ['itunes']; 45 | itunesHandler.tags = ['music']; 46 | itunesHandler.command = /^(itunes)$/i; 47 | 48 | export default itunesHandler; 49 | -------------------------------------------------------------------------------- /plugins/sticker-smaker.js: -------------------------------------------------------------------------------- 1 | import uploadImage from '../lib/uploadImage.js' 2 | import { sticker } from '../lib/sticker.js' 3 | import MessageType from '@adiwajshing/baileys' 4 | const effects = ['jail', 'gay', 'glass', 'wasted' ,'triggered', 'lolice', 'simpcard', 'horny'] 5 | 6 | let handler = async (m, { conn, usedPrefix, text, command }) => { 7 | let effect = text.trim().toLowerCase() 8 | if (!effects.includes(effect)) throw ` 9 | 10 | ┌─⊷ *EFFECTS* 11 | ${effects.map(effect => `▢ ${effect}`).join('\n')} 12 | └─────────── 13 | 14 | 📌 *Example:* 15 | ${usedPrefix + command} wasted 16 | `.trim() 17 | let q = m.quoted ? m.quoted : m 18 | let mime = (q.msg || q).mimetype || '' 19 | if (!mime) throw '✳️ Respond to an image' 20 | if (!/image\/(jpe?g|png)/.test(mime)) throw `✳️ Format not supported` 21 | let img = await q.download() 22 | let url = await uploadImage(img) 23 | let apiUrl = global.API('https://some-random-api.com/canvas/', encodeURIComponent(effect), { 24 | avatar: url 25 | }) 26 | try { 27 | let stiker = await sticker(null, apiUrl, global.packname, global.author) 28 | conn.sendFile(m.chat, stiker, null, { asSticker: true }, m) 29 | } catch (e) { 30 | m.reply('Conversion to sticker error, send as image instead') 31 | await conn.sendFile(m.chat, apiUrl, 'smaker.png', null, m) 32 | }} 33 | handler.help = ['smaker'] 34 | handler.tags = ['sticker'] 35 | handler.command = ['stickmaker', 'stickermaker', 'smaker'] 36 | handler.diamond = false 37 | 38 | export default handler 39 | -------------------------------------------------------------------------------- /plugins/tool-whatmusic.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import acrcloud from 'acrcloud' 3 | let acr = new acrcloud({ 4 | host: 'identify-eu-west-1.acrcloud.com', 5 | access_key: 'c33c767d683f78bd17d4bd4991955d81', 6 | access_secret: 'bvgaIAEtADBTbLwiPGYlxupWqkNGIjT7J9Ag2vIu' 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(`./tmp/${m.sender}.${ext}`, media) 16 | let res = await acr.identify(fs.readFileSync(`./tmp/${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 | ╭───•✧✧•───╮ 22 | 𝚁𝙴𝚂𝚄𝙻𝚃 GENERATED WITH LOVE BY 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 23 | ╰───•✧✧•───╯ 24 | • 📌 *TITLE*: ${title} 25 | • 👨‍🎤 𝙰𝚁𝚃𝙸𝚂𝚃: ${artists !== undefined ? artists.map(v => v.name).join(', ') : 'NOT FOUND'} 26 | • 💾 𝙰𝙻𝙱𝚄𝙼: ${album.name || 'NOT FOUND'} 27 | • 🌐 𝙶𝙴𝙽𝙴𝚁: ${genres !== undefined ? genres.map(v => v.name).join(', ') : 'NOT FOUND'} 28 | • 📆 RELEASE DATE: ${release_date || 'NOT FOUND'} 29 | `.trim() 30 | fs.unlinkSync(`./tmp/${m.sender}.${ext}`) 31 | m.reply(txt) 32 | } else throw '*𝚁𝙴𝚂𝙿𝙾𝙽𝙳 TO 𝙰𝚄𝙳𝙸𝙾 TO SEARCH FOR. _from kinflux bo_*' 33 | } 34 | handler.command = /^quemusica|shazam|whatmusic$/i 35 | export default handler 36 | -------------------------------------------------------------------------------- /plugins/owner-addexpired.js: -------------------------------------------------------------------------------- 1 | 2 | let handler = async (m, { conn, args, usedPrefix, command }) => { 3 | if (!args[0] || isNaN(args[0])) throw `✳️ Please enter a number representing the number of days!\n\n📌 Example :\n*${usedPrefix + command}* 30` 4 | 5 | let who 6 | if (m.isGroup) who = args[1] ? args[1] : m.chat 7 | else who = args[1] 8 | 9 | var nDays = 86400000 * args[0] 10 | var now = new Date() * 1 11 | if (now < global.db.data.chats[who].expired) global.db.data.chats[who].expired += nDays 12 | else global.db.data.chats[who].expired = now + nDays 13 | let teks = `✅ The expiration days were established for \n*${await conn.getName(who)}* \n\n*Duration:* ${args[0]} Days\n\n*Countdown :* ${msToDate(global.db.data.chats[who].expired - now)}` 14 | conn.sendButton(m.chat, teks, igfg, null, [['Del Expired', `${usedPrefix}delexpired`], ['Check Expired', `${usedPrefix}checkexpired`]], m) 15 | } 16 | handler.help = ['expired '] 17 | handler.tags = ['owner'] 18 | handler.command = /^(expired|addexpired)$/i 19 | handler.rowner = true 20 | export default handler 21 | 22 | function msToDate(ms) { 23 | let d = isNaN(ms) ? '--' : Math.floor(ms / 86400000) 24 | let h = isNaN(ms) ? '--' : Math.floor(ms / 3600000) % 24 25 | let m = isNaN(ms) ? '--' : Math.floor(ms / 60000) % 60 26 | let s = isNaN(ms) ? '--' : Math.floor(ms / 1000) % 60 27 | return [d, ' *Days*\n ', h, ' *Hours*\n ', m, ' *Minutes*\n ', s, ' *Seconds* '].map(v => v.toString().padStart(2, 0)).join('') 28 | } 29 | -------------------------------------------------------------------------------- /plugins/dl-tiktok.js: -------------------------------------------------------------------------------- 1 | 2 | import fg from 'api-dylux' 3 | import { tiktokdl, tiktokdlv2, tiktokdlv3 } from '@bochilteam/scraper' 4 | 5 | let handler = async (m, { conn, text, args, usedPrefix, command}) => { 6 | if (!args[0]) throw `✳️ Enter a Tiktok link\n\n 📌 Example : ${usedPrefix + command} https://vm.tiktok.com/ZMNqyusVD/?k=1` 7 | if (!args[0].match(/tiktok/gi)) throw `❎ verify that the link is from tiktok` 8 | m.react(rwait) 9 | 10 | try { 11 | let p = await fg.tiktok(args[0]) 12 | let te = ` 13 | ┌─⊷ TIKTOK 14 | ▢ *Username:* ${p.unique_id} 15 | ▢ *Description:* ${p.title} 16 | ▢ *Duration:* ${p.duration} 17 | └───────────` 18 | conn.sendFile(m.chat, p.play, 'tiktok.mp4', te, m) 19 | m.react(done) 20 | } catch { 21 | const { author: { nickname }, video, description } = await tiktokdl(args[0]) 22 | .catch(async _ => await tiktokdlv2(args[0])) 23 | .catch(async _ => await tiktokdlv3(args[0])) 24 | const url = video.no_watermark2 || video.no_watermark || 'https://tikcdn.net' + video.no_watermark_raw || video.no_watermark_hd 25 | if (!url) throw '❎ Error downloading the video' 26 | conn.sendFile(m.chat, url, 'fb.mp4', ` 27 | ┌─⊷ *TIKTOK DL* 28 | ▢ *Username:* ${nickname} ${description ? `\n▢ *Description:* ${description}` : ''} 29 | └───────────`, m) 30 | m.react(done) 31 | } 32 | 33 | } 34 | handler.help = ['tiktok'] 35 | handler.tags = ['dl'] 36 | handler.command = /^(tiktok|ttdl|tiktokdl|tiktoknowm)$/i 37 | handler.diamond = true 38 | 39 | export default handler 40 | -------------------------------------------------------------------------------- /plugins/tools-gpt.js: -------------------------------------------------------------------------------- 1 | import fetch from "node-fetch"; 2 | import { generateWAMessageFromContent } from "@adiwajshing/baileys"; 3 | import fs from 'fs'; 4 | import { Configuration, OpenAIApi } from 'openai'; 5 | import dotenv from 'dotenv'; 6 | 7 | dotenv.config(); // Load environment variables from .env file 8 | 9 | const configuration = new Configuration({ 10 | organization: process.env.OPENAI_ORGANIZATION, 11 | apiKey: process.env.OPENAI_API_KEY 12 | }); 13 | 14 | const openai = new OpenAIApi(configuration); 15 | 16 | let handler = async (m, { conn, usedPrefix, command, text }) => { 17 | try { 18 | if (!text) throw new Error(`Chatgpt .\n\nuse:\n${usedPrefix}${command} Halo?`); 19 | 20 | const response = await openai.createChatCompletion({ 21 | model: "gpt-3.5-turbo", 22 | messages: [{ role: "user", content: text }], 23 | }); 24 | 25 | if (response.data.choices && response.data.choices.length > 0) { 26 | const reply = response.data.choices[0].message.content; 27 | conn.reply(m.chat, reply, m); 28 | } else { 29 | throw new Error("Empty response from OpenAI"); 30 | } 31 | } catch (error) { 32 | console.error("Error:", error.message); 33 | console.error("Error response:", error.response); 34 | conn.reply(m.chat, "An error occurred. Please try again later.", m); 35 | } 36 | } 37 | 38 | handler.command = /^(openai|gpt)$/i; 39 | handler.help = ["gpt", "openai"].map(v => v + " "); 40 | handler.tags = ["internet"]; 41 | 42 | export default handler; 43 | -------------------------------------------------------------------------------- /plugins/econ-daily.js: -------------------------------------------------------------------------------- 1 | const rewards = { 2 | exp: 9999, 3 | money: 4999, 4 | potion: 5, 5 | } 6 | const cooldown = 86400000 7 | let handler = async (m, {conn, isPrems }) => { 8 | let user = global.db.data.users[m.sender] 9 | let time = global.db.data.users[m.sender].lastclaim + 86400000 10 | if (new Date - global.db.data.users[m.sender].lastclaim < 86400000) throw `You have already claimed this daily claim!, wait for *${msToTime(time - new Date())}* ` 11 | let text = '' 12 | for (let reward of Object.keys(rewards)) { 13 | if (!(reward in user)) continue 14 | user[reward] += rewards[reward] 15 | text += `*+${rewards[reward]}* ${global.rpg.emoticon(reward)}${reward}\n` 16 | } 17 | m.reply(` 18 | 🎁 *daily reward* 19 | 20 | ▢ *Has recieved:* 21 | ${text}`) 22 | global.db.data.users[m.sender].lastclaim = new Date * 1 23 | } 24 | handler.help = ['daily', 'claim'] 25 | handler.tags = ['xp'] 26 | handler.command = /^(daily|claim)$/i 27 | 28 | handler.cooldown = cooldown 29 | 30 | export default handler 31 | 32 | 33 | 34 | function msToTime(duration) { 35 | var milliseconds = parseInt((duration % 1000) / 100), 36 | seconds = Math.floor((duration / 1000) % 60), 37 | minutes = Math.floor((duration / (1000 * 60)) % 60), 38 | hours = Math.floor((duration / (1000 * 60 * 60)) % 24) 39 | 40 | hours = (hours < 10) ? "0" + hours : hours 41 | minutes = (minutes < 10) ? "0" + minutes : minutes 42 | seconds = (seconds < 10) ? "0" + seconds : seconds 43 | 44 | return hours + " Hours " + minutes + " Minutes" 45 | } 46 | -------------------------------------------------------------------------------- /plugins/kinflux bot-styletext.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let handler = async (m, { conn, text }) => { 4 | // Split the text into words 5 | let words = text.split(' '); 6 | 7 | // The first word should be the key, the rest is the text to stylize 8 | let key = words[0]; 9 | let textToStyle = words.slice(1).join(' '); 10 | 11 | // If no key and text provided, show all styles of a default text 12 | if (words.length === 0 || !key || !textToStyle) { 13 | let defaultText = 'kinflux BOT'; 14 | let styledTexts = await Promise.all([...Array(34).keys()].map(i => stylizeText(defaultText, i + 1))); 15 | conn.reply(m.chat, styledTexts.join`\n\n`, m); 16 | return; 17 | } 18 | 19 | // Check if the key is a number between 1 and 34 20 | if (!Number.isInteger(+key) || +key < 1 || +key > 34) { 21 | throw 'Invalid key. Please provide a number between 1 and 34.'; 22 | } 23 | 24 | // Get the styled text 25 | let styledText = await stylizeText(textToStyle, key); 26 | 27 | conn.reply(m.chat, styledText, m); 28 | } 29 | 30 | handler.help = ['style'].map(v => v + ' '); 31 | handler.tags = ['tools']; 32 | handler.command = /^(fancy)$/i; 33 | handler.exp = 0; 34 | 35 | export default handler; 36 | 37 | async function stylizeText(text, key) { 38 | let res = await fetch(`https://inrl-web.onrender.com/api/fancy?text=${encodeURIComponent(text)}&key=${key}`); 39 | let data = await res.json(); 40 | 41 | // Use 'result' field for the styled text. 42 | return `*Key ${key}*\n${data.result}`; 43 | } 44 | 45 | -------------------------------------------------------------------------------- /plugins/tools-removebg.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import FormData from 'form-data'; 3 | import fs from 'fs'; 4 | import path from 'path'; 5 | import dotenv from 'dotenv'; 6 | 7 | dotenv.config(); // Load environment variables from .env file 8 | 9 | 10 | const handler = async (m, { conn, text }) => { 11 | try { 12 | const q = m.quoted ? m.quoted : m; 13 | const mime = (q.msg || q).mimetype || ''; 14 | const img = await q.download(); 15 | 16 | const formData = new FormData(); 17 | formData.append('size', 'auto'); 18 | formData.append('image_file', img, 'file.jpg'); 19 | 20 | const response = await axios.post('https://api.remove.bg/v1.0/removebg', formData, { 21 | headers: { 22 | ...formData.getHeaders(), 23 | 'X-Api-Key': process.env.REMOVE_BG_API_KEY, 24 | }, 25 | responseType: 'arraybuffer', 26 | encoding: null, 27 | }); 28 | 29 | if (response.status !== 200) { 30 | throw new Error(`Error: ${response.status} ${response.statusText}`); 31 | } 32 | 33 | const imageData = response.data; 34 | 35 | fs.writeFileSync('no-bg.png', imageData); 36 | 37 | // Add the caption to the image 38 | const caption = '𝙈𝘼𝘿𝙀 𝘽𝙔 𝐊𝐈𝐍𝐅𝐋𝐔𝐗 𝐁𝐎𝐓 𝙒𝙄𝙏𝙃 𝙇𝙊𝙑𝙀'; 39 | conn.sendFile(m.chat, 'no-bg.png', '', caption, m); 40 | } catch (e) { 41 | console.error(e); 42 | m.reply('Sorry, an error occurred while processing the image, maybe check your api key.'); 43 | } 44 | }; 45 | 46 | handler.command = /^rmbg|removebg$/i; 47 | export default handler; 48 | -------------------------------------------------------------------------------- /plugins/Tools-animeinfo.js: -------------------------------------------------------------------------------- 1 | import translate from '@vitalets/google-translate-api'; 2 | import { Anime } from '@shineiichijo/marika'; 3 | 4 | const client = new Anime(); 5 | 6 | let handler = async (m, { conn, text, usedPrefix }) => { 7 | if (!text) return m.reply(`*[❗] Please enter the name of an anime to search for.*`); 8 | try { 9 | let anime = await client.searchAnime(text); 10 | let result = anime.data[0]; 11 | let resultes = await translate(`${result.background}`, { to: 'en', autoCorrect: true }); 12 | let resultes2 = await translate(`${result.synopsis}`, { to: 'hi', autoCorrect: true }); 13 | let AnimeInfo = ` 14 | 🎀 • *Title:* ${result.title} 15 | 🎋 • *Format:* ${result.type} 16 | 📈 • *Status:* ${result.status.toUpperCase().replace(/\_/g, ' ')} 17 | 🍥 • *Total Episodes:* ${result.episodes} 18 | 🎈 • *Duration: ${result.duration}* 19 | ✨ • *Based on:* ${result.source.toUpperCase()} 20 | 💫 • *Released:* ${result.aired.from} 21 | 🎗 • *Finished:* ${result.aired.to} 22 | 🎐 • *Popularity:* ${result.popularity} 23 | 🎏 • *Favorites:* ${result.favorites} 24 | 🎇 • *Rating:* ${result.rating} 25 | 🏅 • *Rank:* ${result.rank} 26 | ♦ • *Trailer:* ${result.trailer.url} 27 | 🌐 • *URL:* ${result.url} 28 | 🎆 • *Background:* ${resultes.text} 29 | ❄ • *Synopsis:* ${resultes2.text} 30 | _made with love by kinflux bot`; 31 | 32 | conn.sendFile(m.chat, result.images.jpg.image_url, 'error.jpg', AnimeInfo, m); 33 | } catch { 34 | throw `*[❗] ERROR, please 😢try again.*`; 35 | } 36 | }; 37 | 38 | handler.command = /^(anime|animeinfo)$/i; 39 | export default handler; 40 | -------------------------------------------------------------------------------- /plugins/rg-register.js: -------------------------------------------------------------------------------- 1 | //import db from '../lib/database.js' 2 | 3 | import { createHash } from 'crypto' 4 | let Reg = /\|?(.*)([.|] *?)([0-9]*)$/i 5 | let handler = async function (m, { conn, text, usedPrefix, command }) { 6 | let user = global.db.data.users[m.sender] 7 | let name2 = conn.getName(m.sender) 8 | if (user.registered === true) throw `✳️ You are already registered\n\nDo you want to re-register?\n\n 📌 Use this command to remove your record \n*${usedPrefix}unreg* ` 9 | if (!Reg.test(text)) throw `⚠️ Format incorrect\n\n ✳️ Use this command: *${usedPrefix + command} name.age*\n📌Exemple : *${usedPrefix + command}* ${name2}.16` 10 | let [_, name, splitter, age] = text.match(Reg) 11 | if (!name) throw '✳️ The name cannot be empty' 12 | if (!age) throw '✳️ age cannot be empty' 13 | if (name.length >= 30) throw '✳️The name is too long' 14 | age = parseInt(age) 15 | if (age > 100) throw '👴🏻 Wow grandpa wants to play bot' 16 | if (age < 5) throw '🚼 there is a grandpa baby jsjsj ' 17 | user.name = name.trim() 18 | user.age = age 19 | user.regTime = + new Date 20 | user.registered = true 21 | let sn = createHash('md5').update(m.sender).digest('hex') 22 | m.reply(` 23 | ┌─「 *REGISTERED* 」─ 24 | ▢ *NUMBER:* ${name} 25 | ▢ *AGE* : ${age} years 26 | ▢ *SERIEL NUMBER* : 27 | ${sn} 28 | └────────────── 29 | 30 | *${usedPrefix}help* to see menu 31 | `.trim()) 32 | } 33 | handler.help = ['reg'].map(v => v + ' ') 34 | handler.tags = ['rg'] 35 | 36 | handler.command = ['verify', 'reg', 'register', 'registrar'] 37 | 38 | export default handler 39 | 40 | -------------------------------------------------------------------------------- /plugins/dl-mediafire.js: -------------------------------------------------------------------------------- 1 | 2 | import fetch from 'node-fetch' 3 | import { mediafiredl } from '@bochilteam/scraper' 4 | 5 | let handler = async (m, { conn, args, usedPrefix, command, isOwner, isPrems }) => { 6 | var limit 7 | if((isOwner || isPrems)) limit = 1200 8 | else limit = 100 9 | if (!args[0]) throw `✳️ Enter the mediafire link next to the command` 10 | if (!args[0].match(/mediafire/gi)) throw `❎ Link incorrect` 11 | m.react(rwait) 12 | let full = /f$/i.test(command) 13 | let u = /https?:\/\//.test(args[0]) ? args[0] : 'https://' + args[0] 14 | let ss = await (await fetch(`https://image.thum.io/get/fullpage/${u}`)).buffer() 15 | let res = await mediafiredl(args[0]) 16 | let { url, url2, filename, ext, aploud, filesize, filesizeH } = res 17 | let isLimit = (isPrems || isOwner ? limit : limit) * 1012 < filesize 18 | let caption = ` 19 | ≡ *MEDIAFIRE* 20 | 21 | ▢ *Number:* ${filename} 22 | ▢ *Size:* ${filesizeH} 23 | ▢ *Extension:* ${ext} 24 | ▢ *Uploaded:* ${aploud} 25 | ${isLimit ? `\n▢ The file exceeds the download limit *+${limit} MB*\nUpgrade to premium to be able to download files more than *900 MB*` : ''} 26 | `.trim() 27 | await conn.sendFile(m.chat, ss, 'ssweb.png', caption, m) 28 | 29 | if(!isLimit) await conn.sendFile(m.chat, url, filename, '', m, null, { mimetype: ext, asDocument: true }) 30 | m.react(done) 31 | } 32 | handler.help = ['mediafire '] 33 | handler.tags = ['dl', 'prem'] 34 | handler.command = ['mediafire', 'mfire'] 35 | handler.diamond = true 36 | handler.premium = false 37 | 38 | export default handler 39 | 40 | -------------------------------------------------------------------------------- /plugins/econ-work.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import axios from 'axios' 3 | let handler = async (m, { conn, usedPrefix, command }) => { 4 | 5 | let hasil = Math.floor(Math.random() * 2000) 6 | let time = global.db.data.users[m.sender].lastwork + 3600000 7 | if (new Date - global.db.data.users[m.sender].lastwork < 3600000) throw `*🧘🏻‍♂️ You are tired* and therefore you have to wait *${msToTime(time - new Date())}* to work again!` 8 | 9 | /*let w = await axios.get(global.API('fgmods', '/api/work', { }, 'apikey')) 10 | let res = w.data.result*/ 11 | let anu = (await axios.get('https://raw.githubusercontent.com/Guru322/api/Guru/work.json')).data 12 | let res = pickRandom(anu) 13 | global.db.data.users[m.sender].exp += hasil 14 | 15 | m.reply(` 16 | ‣ ${res.fgwork} *${hasil} XP* 17 | `) 18 | global.db.data.users[m.sender].lastwork = new Date * 1 19 | } 20 | handler.help = ['work'] 21 | handler.tags = ['econ'] 22 | handler.command = ['work', 'w', 'majduri'] 23 | 24 | export default handler 25 | 26 | function msToTime(duration) { 27 | var milliseconds = parseInt((duration % 1000) / 100), 28 | seconds = Math.floor((duration / 1000) % 60), 29 | minutes = Math.floor((duration / (1000 * 60)) % 60), 30 | hours = Math.floor((duration / (1000 * 60 * 60)) % 24) 31 | 32 | hours = (hours < 10) ? "0" + hours : hours 33 | minutes = (minutes < 10) ? "0" + minutes : minutes 34 | seconds = (seconds < 10) ? "0" + seconds : seconds 35 | 36 | return minutes + " minut(s) " + seconds + " sec(s)" 37 | } 38 | function pickRandom(list) { 39 | return list[Math.floor(list.length * Math.random())] 40 | } 41 | -------------------------------------------------------------------------------- /plugins/plugin-install.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import fs from 'fs'; 3 | import path from 'path'; 4 | 5 | let handler = async (m, { text, usedPrefix, command }) => { 6 | if (!text) throw `Please provide a plugin URL`; 7 | 8 | // Extract the Gist ID from the URL 9 | const gistId = text.match(/(?:\/|gist\.github\.com\/)([a-fA-F0-9]+)/); 10 | 11 | 12 | if (!gistId) throw `Invalid plugin URL`; 13 | 14 | const gistName = gistId[1]; 15 | const gistURL = `https://api.github.com/gists/${gistName}`; 16 | 17 | try { 18 | const response = await axios.get(gistURL); 19 | const gistData = response.data; 20 | 21 | if (!gistData || !gistData.files) { 22 | throw `No valid files found in the Gist`; 23 | } 24 | 25 | for (const file of Object.values(gistData.files)) { 26 | // Use the Gist file name as the plugin name 27 | const pluginName = file.filename; 28 | 29 | // Construct the path to save the plugin 30 | const pluginPath = path.join('plugins', `${pluginName}`); 31 | 32 | // Write the Gist file content to the plugin file 33 | await fs.promises.writeFile(pluginPath, file.content); 34 | m.reply(`successfully installed the plugin to Guru Bot`); 35 | } 36 | } catch (error) { 37 | throw `Error fetching or saving the plugin: ${error.message}`; 38 | } 39 | }; 40 | 41 | handler.help = ['install'].map((v) => v + ' '); 42 | handler.tags = ['plugin']; 43 | handler.command = /^install$/i; 44 | 45 | handler.owner = true; 46 | 47 | export default handler; 48 | -------------------------------------------------------------------------------- /plugins/tools-subreddit.js: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | let subredditHandler = async (m, { conn, text }) => { 4 | if (!text) throw 'Please provide a subreddit name'; 5 | 6 | try { 7 | let res = await fetch(`https://api.popcat.xyz/subreddit/${encodeURIComponent(text)}`); 8 | 9 | if (!res.ok) { 10 | throw new Error(`API request failed with status ${res.status}`); 11 | } 12 | 13 | let json = await res.json(); 14 | 15 | console.log('JSON response:', json); 16 | 17 | let subredditInfo = 18 | `*Subreddit Information:*\n 19 | • *Name:* ${json.name}\n 20 | • *Title:* ${json.title}\n 21 | • *Active Users:* ${json.active_users}\n 22 | • *Members:* ${json.members}\n 23 | • *Description:* ${json.description}\n 24 | • *Allow Videos:* ${json.allow_videos ? 'Yes' : 'No'}\n 25 | • *Allow Images:* ${json.allow_images ? 'Yes' : 'No'}\n 26 | • *Over 18:* ${json.over_18 ? 'Yes' : 'No'}\n 27 | • *URL:* ${json.url}`; 28 | 29 | // if icon is not null or undefined, send it along with the subreddit information as caption 30 | // otherwise, only send the subreddit information 31 | if (json.icon) { 32 | await conn.sendFile(m.chat, json.icon, 'icon.jpg', subredditInfo, m); 33 | } else { 34 | m.reply(subredditInfo); 35 | } 36 | 37 | } catch (error) { 38 | console.error(error); 39 | // Handle the error appropriately 40 | } 41 | }; 42 | 43 | subredditHandler.help = ['subreddit']; 44 | subredditHandler.tags = ['information']; 45 | subredditHandler.command = /^(subreddit|reddit)$/i; 46 | 47 | export default subredditHandler; 48 | -------------------------------------------------------------------------------- /plugins/dl-ytv.js: -------------------------------------------------------------------------------- 1 | 2 | import fs from 'fs'; 3 | import os from 'os'; 4 | import fetch from 'node-fetch'; 5 | 6 | let limit = 500; 7 | let handler = async (m, { conn, args, isPrems, isOwner, usedPrefix, command }) => { 8 | let chat = global.db.data.chats[m.chat]; 9 | if (!args || !args[0]) throw `✳️ Example:\n${usedPrefix + command} https://youtu.be/YzkTFFwxtXI`; 10 | if (!args[0].match(/youtu/gi)) throw `❎ Verify that the YouTube link`; 11 | 12 | var gapi = `${gurubot}/v1/ytmp4?url=${encodeURIComponent(args)}` 13 | 14 | var ggapi = `${gurubot}/ytplay?url=${encodeURIComponent(args)}` 15 | 16 | const response = await fetch(ggapi); 17 | if (!response.ok) { 18 | console.log('Error searching for song:', response.statusText); 19 | throw 'Error searching for song'; 20 | } 21 | const data = await response.json(); 22 | 23 | const caption = `✼ ••๑⋯❀ Y O U T U B E ❀⋯⋅๑•• ✼ 24 | 25 | ❏ Title: ${data.result.title} 26 | ❏ Channel: ${data.result.channel} 27 | ❐ Duration: ${data.result.seconds} seconds 28 | ❑ Views: ${data.result.view} 29 | ❒ Upload: ${data.result.publicDate} 30 | ❒ Link: ${args[0]} 31 | 32 | ⊱─━⊱༻●༺⊰━─⊰` 33 | 34 | 35 | let vid = await fetch(gapi) 36 | const vidBuffer = await vid.buffer(); 37 | 38 | conn.sendFile( 39 | m.chat, 40 | vidBuffer, 41 | `error.mp4`, 42 | caption, 43 | m, 44 | false, 45 | { asDocument: chat.useDocument } 46 | ); 47 | 48 | }; 49 | 50 | handler.help = ['ytmp4 ']; 51 | handler.tags = ['downloader']; 52 | handler.command = ['ytmp4', 'video', 'ytv']; 53 | handler.diamond = false; 54 | 55 | export default handler; 56 | 57 | --------------------------------------------------------------------------------