├── .replit ├── Procfile ├── README.md ├── app.json ├── config.js ├── heroku.yml ├── package.json └── replit.nix /.replit: -------------------------------------------------------------------------------- 1 | run = "npm start || yarn start || node lib/client.js" 2 | # stop = "npm stop || yarn stop" 3 | entrypoint = "README.md" 4 | hidden = [".config"] 5 | # modules = ["nodejs-20:v8-20230920-bd784b9"] 6 | 7 | 8 | 9 | [unitTest] 10 | language = "nodejs" 11 | 12 | onBoot = "npm i || yarn" 13 | 14 | [nix] 15 | channel = "stable-23_05" 16 | 17 | [deployment] 18 | run = ["yarn","start"] 19 | deploymentTarget = "cloudrun" 20 | ignorePorts = false 21 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: npm start -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Suhail Md

2 |

Introducing Suhail_Md, It is designed to bring a whole new level of excitement to your boring WhatsApp use.

3 | 4 |

5 | 6 | Suhail docs 7 | 8 |

9 | 10 | 11 | 12 |

13 | 14 | whatsapp 15 | 16 | 17 | License: GPL-3 18 | 19 | 20 | SuhailTechInfo Yt 21 | 22 | 23 |

24 |

SuhailTechInfo :: Visitor's Count

25 | 26 | --- 27 | 28 | 29 | 30 | 31 |

Suhail MD whatsapp bot uses 32 | Multi-Device Baileys. 33 |

34 |

35 | 36 |

37 | 38 | --- 39 | 40 |

41 | Suhail-Md Support Deploy On... 42 |

43 | 44 |

45 | 46 | 47 |

48 |

49 | 50 | 51 | 52 |

53 |

54 | 55 |

56 |

Need help? please create an issue

57 | 58 | 59 | 60 | 61 | 62 | ## Bot Games 63 | --- 64 | 1. ***Connect Four Game.*** 65 | 2. ***Tic Tac Toe.*** 66 | 3. ***Number Guessing Game.*** 67 | 4. ***Word chain Game.*** 68 | 5. ***Hidden Card Game.*** 69 | 6. ***Rolling Dice.*** 70 | 7. ***Character Guessing Game.*** 71 | 8. ***Capital of City Finding.*** 72 | ## 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | ## Deployment Methods 83 | --- 84 | 1. ***Get `SESSION ID` by [`SCANING QR`](https://suhail-md-vtsf.onrender.com/) Or [`PARING CODE`](https://sohitechs.com/blog/18/#lin=SuhailMdPair). And then `Go-to Whatapp>Three dots>Linked Devices`*** 85 | 2. ***Get Mongodb_URI from [`Mongodb site`](https://www.mongodb.com/) | Watch Tutorial [`To Get Mongodb_URI`](https://youtu.be/6rnftFl0fAI). `Optional`*** 86 | 3. ***Click [`FORK`](https://github.com/SuhailTechInfo/Suhail-Md/fork) and `Star ⭐ Repository` for Courage.*** 87 | 4. ***Deploy tutorial [`Youtube Video`](https://youtu.be/6rnftFl0fAI).*** 88 | 5. ***Deploy FREE on `Codespace,` First see [`Codespace tutorial`](https://youtu.be/3NdJb6_1cJM)*** 89 | 6. ***Deploy on [`HEROKU`](https://dashboard.heroku.com/new?template=https://github.com/SuhailTechInfo/Suhail-Md)*** 90 | 7. ***Deploy on [`Replit`](https://replit.com/github/SuhailTechInfo/Suhail-Md)*** 91 | 8. ***Deploy on [`Railway`](https://railway.app/template/GZOvIe?referralCode=wVDLrh)*** 92 | 9. ***Deploy on [`Koyeb`](https://app.koyeb.com/apps/deploy?type=git&repository=github.com/SuhailTechInfo/Suhail-Md&branch=main&env[SESSION_ID]&env[OWNER_NUMBER]=923184474176&env[MONGODB_URI]&&env[OWNER_NAME]=Suhail&env[KOYEB_API]&env[PREFIX]=.&env[WAPRESENCE]&env[AUTO_READ_STATUS]=false&env[DISABLE_PM]=false&env[PACK_AUTHER]=whatsapp+bot&env[PACK_NAME]=Suhail+MD&env[STYLE]=0&env[MODE]=private&env[READ_MESSAGE]=false&env[THEME]=SUHAIL&env[WARN_COUNT]=3&env[BLOCK_JID]=null&env[TIME_ZONE]=Asia/Karachi&name=suhail-md&env[KOYEB_NAME]=suhail-md&env[SUDO]=null&env[THUMB_IMAGE]=https://i.imgur.com/NpA3ZsJ.jpeg)*** 93 | 94 | ## 95 | --- 96 | 97 | 98 | - Star ⭐ repo if you like this bot. 99 | - If any problem, then [`+923184474176`](https://wa.me/923184474176) 100 | 101 | 102 | ### Thanks To 103 | - [Sam Pamday](https://github.com/Sampandey001) 104 | 105 | 106 | The Suhail_Md is made available under the [GPL-3 license](https://github.com/SuhailTechInfo/Suhail-Md/blob/main/LICENCE). 107 | 108 | 109 |

NOTICE 110 |

111 | 112 | ## 113 | - *Suhail-Md is not made by `WhatsApp Inc.` Sometimes or misusing the bot might `ban` your `WhatsApp account!`* 114 | - *In that case, I'm not responsible for banning your account.* 115 | - *Use Suhail-Md at your own risk by keeping this warning in mind.* 116 | - [`heroku`]( https://dashboard.heroku.com/new?template=https://github.com/SuhailTechInfo/Suhail-Md) 117 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "suhail-md", 3 | "description": "I am Suhail-Md Whatsapp Chuddy Buddy built in NodeJs to make experience better\n\t if Any Problem : www.youtube.com/c/SuhailTechInfo", 4 | "logo": "https://telegra.ph/file/d5b1c3544fedc23e11a06.jpg", 5 | "keywords": ["whatsappbot", "suhailMd", "suhail Md bot", "Suhail-Md", "SuhailMdWhatsaooBot", "SuhailWaBot","SuhailMD","Suhail Md Whatsapp Bot","multi device"], 6 | "success_url": "/suhail/", 7 | "app_url": "/suhail/", 8 | 9 | "env": { 10 | "OWNER_NAME": { 11 | "description": "Name of Bot Owner", 12 | "value": "Suhail Ser", 13 | "required" :true 14 | }, 15 | 16 | "WELCOME": { 17 | "description": "put 'false' or 'true' to enable & disable WELCOME ", 18 | "value": "false", 19 | "required" :false 20 | }, 21 | 22 | "GOODBYE": { 23 | "description": "put 'false' or 'true' to enable & disable GOODBYE ", 24 | "value": "false", 25 | "required" :false 26 | }, 27 | "BOT_NAME": { 28 | "description": " NAME FOR BOT", 29 | "required" :false, 30 | "value": "sᴜʜᴀɪʟ-ᴍᴅ" 31 | }, 32 | "IMAGE": { 33 | "description": "Image for bot", 34 | "required" :false, 35 | "value": "https://telegra.ph/file/d5b1c3544fedc23e11a06.jpg" 36 | }, 37 | "TZ": { 38 | "description": "Put TIME_ZONE according to your location", 39 | "required" :false, 40 | "value": "Asia/Karachi" 41 | }, 42 | "FLUSH": { 43 | "description": " Make it 'true' if bot connected but not responed (After deployement!)", 44 | "required" :false, 45 | "value": "true" 46 | }, 47 | "WARN_COUNT": { 48 | "description": " Warn count for users to kick/block when warn limit exceed!", 49 | "required" :false, 50 | "value": "3" 51 | }, 52 | "READ_COMMAND": { 53 | "description": " Read bot cmds", 54 | "required" :false, 55 | "value": "false" 56 | }, 57 | "AUTO_SAVE_STATUS": { 58 | "description": " Auto save whatsapp status", 59 | "required" :false, 60 | "value": "false" 61 | }, 62 | "HEROKU_API_KEY": { 63 | "description": "Put Your Heroku Api Key Here", 64 | "value": "", 65 | "required" :true 66 | }, 67 | "HEROKU_APP_NAME": { 68 | "description": "Put Your Heroku App Name Here", 69 | "value": "", 70 | "required" :true 71 | }, 72 | "WAPRESENCE": { 73 | "description": "Fill the value: 'unavailable'(for nothing) | 'available'(for alwaysonline) | 'composing'(for typing) | 'recording' | 'paused' ", 74 | "required" :false, 75 | "value": "unavailable" 76 | }, 77 | "AUTO_READ_STATUS": { 78 | "description": "Fill the value true if you want bot view your Statuses.", 79 | "required" :false, 80 | "value": "true" 81 | }, 82 | "MSGS_IN_LOG": { 83 | "description": "Fill the value true if you want to see Messages in Console.", 84 | "required" :false, 85 | "value": "false" 86 | }, 87 | "READ_MESSAGE": { 88 | "description": "Fill the value true if you want bot to read all messages.", 89 | "required" :false, 90 | "value": "false" 91 | }, 92 | "DISABLE_PM": { 93 | "description": "Disable bot in pm, Take it false if you wanna run bot in your pm (if MODE is Public)", 94 | "value": "false", 95 | "required" :false 96 | }, 97 | "PREFIX": { 98 | "description": "Enter your desired prefix for bot.", 99 | "value": "." 100 | }, 101 | "OWNER_NUMBER": { 102 | "description": "The phone numbers of the users who you want to be admin for the bot (should be in international format without + and multiple numbers must be separated by a comma \",\")", 103 | "value": "923184474176" 104 | }, 105 | "SESSION_ID": { 106 | "description": "put your SESSION_ID here.", 107 | "value": "" 108 | 109 | }, 110 | "OPENAI_API_KEY": { 111 | "description": "put your OPENAI api key here.Get it from beta.openai.com ", 112 | "value": "", 113 | "required" :false 114 | }, 115 | "ELEVENLAB_API_KEY": { 116 | "description": "Put your ElevenLab api key here for Aitts. Watch tutorial from https://youtu.be/HCDcdPtkwg4 ", 117 | "value": "", 118 | "required" :false 119 | }, 120 | "REMOVE_BG_KEY": { 121 | "description": "put your REMOVE BG KEY here.Get it from removeBg.com ", 122 | "value": "", 123 | "required" :false 124 | }, 125 | "MODE": { 126 | "description": "Worktype of your bot. Use public or private, if it is private then only bot number can use it. If public then everyone can use it.", 127 | "value": "private" 128 | }, 129 | "PACK_NAME": { 130 | "description": "Put Sticker Pack_Name.", 131 | "value": "Suhail Md", 132 | "required": false 133 | }, 134 | "PACK_AUTHER": { 135 | "description": "Put Sticker Author_Name.", 136 | "value": "", 137 | "required": false 138 | } 139 | }, 140 | "addons": [ 141 | { 142 | "plan": "heroku-postgresql:basic" 143 | } 144 | ], 145 | "buildpacks": [ 146 | { "url": "https://github.com/heroku/heroku-buildpack-nodejs#latest" }, 147 | { "url": "https://github.com/carlosdommor/heroku-buildpack-ffmpeg-latest" } 148 | ], 149 | "formation": { 150 | "web": { 151 | "quantity": 1, 152 | "size": "standard-2x" 153 | } 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra') 2 | if (fs.existsSync('.env')) require('dotenv').config({ path: __dirname+'/.env' }) 3 | 4 | 5 | //═══════[Required Variables]════════\\ 6 | global.audio= "" ; 7 | global.video= "" ; 8 | global.port =process.env.PORT 9 | global.appUrl=process.env.APP_URL || "" // put your app url here, 10 | global.email ="samsamsun789@gmail.com" 11 | global.location="Lahore,Pakistan." 12 | global.mongodb= process.env.MONGODB_URI || "" 13 | global.allowJids= process.env.ALLOW_JID || "null" 14 | global.blockJids= process.env.BLOCK_JID || "120363023983262391@g.us" 15 | global.DATABASE_URI = process.env.DATABASE_URL || "" 16 | 17 | global.timezone= process.env.TZ || process.env.TIME_ZONE || "Asia/Karachi"; 18 | global.github=process.env.GITHUB|| "https://github.com/SuhailTechInfo/Suhail-Md"; 19 | global.gurl =process.env.GURL || "https://whatsapp.com/channel/0029Va9thusJP20yWxQ6N643"; 20 | global.website=process.env.GURL || "https://whatsapp.com/channel/0029Va9thusJP20yWxQ6N643" ; 21 | global.THUMB_IMAGE = process.env.THUMB_IMAGE || process.env.IMAGE || "https://telegra.ph/file/d5b1c3544fedc23e11a06.jpg" ; // SET LOGO FOR IMAGE 22 | 23 | 24 | 25 | global.devs = "923184474176" // Developer Contact 26 | global.sudo = process.env.SUDO ? process.env.SUDO.replace(/[\s+]/g, '') : "null"; 27 | global.owner= process.env.OWNER_NUMBER ? process.env.OWNER_NUMBER.replace(/[\s+]/g, '') : "923184474176"; 28 | 29 | 30 | 31 | 32 | //========================= [ BOT SETTINGS ] =========================\\ 33 | global.style = process.env.STYLE || '5', // put '1' to "5" here to check bot styles 34 | global.flush = process.env.FLUSH || "false"; // Make it "true" if bot not responed 35 | global.gdbye = process.env.GOODBYE || "false"; 36 | global.wlcm = process.env.WELCOME || "false"; // Make it "false" for disable WELCOME 37 | 38 | global.warncount = process.env.WARN_COUNT || 3, 39 | global.disablepm = process.env.DISABLE_PM || "false", 40 | global.MsgsInLog = process.env.MSGS_IN_LOG|| "false", // "true" to see messages , "log" to open logs , "false" to hide logs messages 41 | global.userImages= process.env.USER_IMAGES|| "text", 42 | global.waPresence= process.env.WAPRESENCE || "set according to your need" ; // 'unavailable' | 'available' | 'composing' | 'recording' | 'paused' 43 | 44 | 45 | //========================= [ AUTO READ MSGS & CMDS ] =========================\\ 46 | global.readcmds = process.env.READ_COMMAND || "false" 47 | global.readmessage = process.env.READ_MESSAGE || "false" 48 | global.readmessagefrom = process.env.READ_MESSAGE_FROM || "null,923xxxxxxxx"; 49 | 50 | 51 | //========================= [ AUTO SAVE & READ STATUS ] =========================\\ 52 | global.read_status = process.env.AUTO_READ_STATUS || "false" 53 | global.save_status = process.env.AUTO_SAVE_STATUS || "false" 54 | global.save_status_from = process.env.SAVE_STATUS_FROM || "null,923xxxxxxxx"; 55 | global.read_status_from = process.env.READ_STATUS_FROM || "923184474176,923xxxxxxxx"; 56 | 57 | global.api_smd = "https://api-smd-1.vercel.app" 58 | global.scan = "https://suhail-md-vtsf.onrender.com/"; 59 | 60 | module.exports = { 61 | 62 | menu: process.env.MENU || "", /** Available @MENU @Schemes 1: Aztec_Md, 2: A17_Md, 3: Suhail-Md Default ---------- If Not Choose then it Randomely Pic One Of Them Each time **/ 63 | 64 | HANDLERS: process.env.PREFIX || ".", 65 | BRANCH : process.env.BRANCH || "main", 66 | VERSION : process.env.VERSION || "V.1.2.8", 67 | caption : process.env.CAPTION || "©sᴜʜᴀɪʟ²²¹-ᴍᴅ" , // ```『 ᴘᴏᴡᴇʀᴇᴅ ʙʏ sᴜʜᴀɪʟ²²¹-ᴍᴅ 』```", //*『sᴜʙsᴄʀɪʙᴇ • sᴜʜᴀɪʟ ᴛᴇᴄʜ』*\n youtube.com/@suhailtechinfo0"), 68 | 69 | author : process.env.PACK_AUTHER|| "Suhail-MD", 70 | packname: process.env.PACK_NAME || "♥️", 71 | botname : process.env.BOT_NAME || "sᴜʜᴀɪʟ-ᴍᴅ", 72 | ownername:process.env.OWNER_NAME|| "It'x Suhail", 73 | 74 | sessionName:process.env.SESSION_ID || "", // PUT SESSION ID HERE 75 | errorChat : process.env.ERROR_CHAT || "", 76 | KOYEB_API : process.env.KOYEB_API || "false", 77 | 78 | REMOVE_BG_KEY : process.env.REMOVE_BG_KEY || "", 79 | OPENAI_API_KEY: process.env.OPENAI_API_KEY || "", 80 | HEROKU_API_KEY: process.env.HEROKU_API_KEY || "", 81 | HEROKU_APP_NAME:process.env.HEROKU_APP_NAME|| "", 82 | antilink_values:process.env.ANTILINK_VALUES|| "all", 83 | HEROKU: process.env.HEROKU_APP_NAME && process.env.HEROKU_API_KEY, 84 | 85 | aitts_Voice_Id : process.env.AITTS_ID || "37", 86 | ELEVENLAB_API_KEY: process.env.ELEVENLAB_API_KEY || "", 87 | WORKTYPE: process.env.WORKTYPE||process.env.MODE || "private", 88 | LANG: process.env.THEME ? process.env.THEME.toUpperCase() : "SUHAIL", 89 | 90 | 91 | 92 | }; 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | global.isMongodb = false; 122 | let file = require.resolve(__filename) 123 | fs.watchFile(file, () => { fs.unwatchFile(file);console.log(`Update'${__filename}'`);delete require.cache[file]; require(file); }) 124 | 125 | 126 | // ========================= [ Disables in V.1.2.8 ] ===============================\\ 127 | //style : process.env.STYLE || "2", // put '1' & "2" here to check bot styles 128 | //readmessage:process.env.READ_MESSAGE|| "false", 129 | //warncount: process.env.WARN_COUNT || 3, 130 | //userImages:process.env.USER_IMAGES|| "text", // SET IMAGE AND VIDEO URL FOR BOT MENUS 131 | //disablepm: process.env.DISABLE_PM || "false", 132 | //MsgsInLog: process.env.MSGS_IN_LOG|| "false", // "true" to see messages , "log" to open logs , "false" to hide logs messages 133 | //readcmds:process.env.READ_COMMANDS|| "false", 134 | //alwaysonline:process.env.WAPRESENCE|| "unavailable", // 'unavailable' | 'online' | 'composing' | 'recording' | 'paused' 135 | //read_status: process.env.AUTO_READ_STATUS || "false", 136 | //save_status: process.env.AUTO_SAVE_STATUS || "false", 137 | 138 | -------------------------------------------------------------------------------- /heroku.yml: -------------------------------------------------------------------------------- 1 | build: 2 | docker: 3 | worker: /lib/Dockerfile 4 | run: 5 | worker: npm start 6 | 7 | 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "suhail-md", 3 | "version": "1.2.8-api", 4 | "description": "Multi device whatsapp bot by SuhailTechInfo.", 5 | "main": "lib/client.js", 6 | "type": "commonjs", 7 | "engines" : { "node": "v18.16.0", "npm": "9.5.1" }, 8 | "scripts": { 9 | "start": "pm2 start lib/client.js --deep-monitoring --attach --name Suhail", 10 | "stop": "pm2 stop Suhail" 11 | }, 12 | "keywords": ["whatsapp bot md","whatsapp bot","sc bot","sc wa bot","suhail md","suhail whatsapp bot","Suhail md bot","multidevice","baileys bot"], 13 | "author": "SuhailTechInfo", 14 | "license" :"Apache-2.0", 15 | "dependencies": { 16 | "@adiwajshing/keyed-db": "^0.2.4", 17 | "@hapi/boom": "^9.1.4", 18 | "@whiskeysockets/baileys": "6.6.0", 19 | "acrcloud": "^1.4.0", 20 | "anime-character-random": "latest", 21 | "aptoide-scraper": "^1.0.1", 22 | "async-g-i-s": "^1.4.0", 23 | "axios": "^0.24.0", 24 | "canvas": "^2.11.2", 25 | "cheerio": "^1.0.0-rc.10", 26 | "child_process": "^1.0.2", 27 | "crypto-js": "latest", 28 | "discord-mongoose-economy": "^1.2.0", 29 | "discord-xp": "^1.1.16", 30 | "dotenv": "^16.0.0", 31 | "express": "^4.18.1", 32 | "ffmpeg": "^0.0.4", 33 | "file-type": "^16.5.3", 34 | "fluent-ffmpeg": "^2.1.2", 35 | "form-data": "^4.0.0", 36 | "fs-extra": "^10.1.0", 37 | "google-it": "^1.6.4", 38 | "google-tts-api": "^2.0.2", 39 | "heroku-client": "3.1.0", 40 | "human-readable": "^0.2.1", 41 | "jimp": "^0.16.1", 42 | "jsdom": "^16.4.0", 43 | "koyeb-api-client": "latest", 44 | "moment-timezone": "^0.5.34", 45 | "mongoose": "^6.2.1", 46 | "mumaker": "^2.0.0", 47 | "node-cron": "^3.0.0", 48 | "node-fetch": "^2.6.1", 49 | "node-webpmux": "^3.1.0", 50 | "pastebin-js": "latest", 51 | "path": "^0.12.7", 52 | "pg": "^8.11.3", 53 | "pm2": "^5.2.0", 54 | "qrcode": "latest", 55 | "secktor-pack": "latest", 56 | "simple-git": "^3.15.1", 57 | "translatte": "^3.0.1", 58 | "util": "^0.12.4", 59 | "wa-sticker-formatter": "^4.3.2", 60 | "youtubei.js": "^7.0.0", 61 | "ytdl-secktor": "^0.0.1-development" 62 | }, 63 | "directories": { 64 | "lib": "lib", 65 | "assets": "temp" 66 | }, 67 | "devDependencies": { 68 | "pino": "^7.0.5" 69 | }, 70 | "repository": { 71 | "type": "git", 72 | "url": "git+https://github.com/SuhailTechInfo/Suhail-Md.git" 73 | }, 74 | "bugs": { 75 | "url": "https://github.com/SuhailTechInfo/Suhail-Md/issues" 76 | }, 77 | "homepage": "https://github.com/SuhailTechInfo/Suhail-Md#readme" 78 | } 79 | -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: { 2 | deps = [ 3 | pkgs.nodejs 4 | pkgs.nodePackages.typescript 5 | pkgs.ffmpeg 6 | pkgs.imagemagick 7 | pkgs.git 8 | pkgs.neofetch 9 | pkgs.libwebp 10 | pkgs.speedtest-cli 11 | pkgs.wget 12 | pkgs.yarn 13 | pkgs.libuuid 14 | ]; 15 | env = { 16 | LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ 17 | pkgs.libuuid 18 | ]; 19 | }; 20 | } 21 | 22 | --------------------------------------------------------------------------------