├── tokens.txt ├── proxies.txt ├── config.json ├── package.json ├── README.md └── index.js /tokens.txt: -------------------------------------------------------------------------------- 1 | token1 2 | token2 3 | -------------------------------------------------------------------------------- /proxies.txt: -------------------------------------------------------------------------------- 1 | https://username:password@ip:port -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "captcha_service": "capmonster/2captcha", 3 | "captcha_api_key": "", 4 | "invite": "Invite / InviteCode", 5 | "joinDelay": 3000, 6 | "useProxies": false, 7 | "boost": { 8 | "enabled": false, 9 | "delay": 3000, 10 | "serverId": "serverId" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server-joiner", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "2captcha": "^3.0.5", 13 | "chalk": "^4.1.2", 14 | "discord.js-selfbot-v13": "^2.14.5", 15 | "discord.js-selfbot-v13-proxy": "^2.14.3", 16 | "gradient-string": "^2.0.2", 17 | "https-proxy-agent": "5.0.1", 18 | "proxy-agent": "^6.2.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Updated (June 2025)! 2 | This script has been updated and rewritten. to buy a **private** working joiner or booster or any custom discord tools, dm me on discord @vedora.org or on telegram @tahagorme 3 | https://discord.gg/vedora 4 | 5 | ![image](https://github.com/user-attachments/assets/abaee64d-a849-4a44-a4e1-b2226b095569) 6 | 7 | 8 | https://github.com/user-attachments/assets/b96ff8d5-61d6-447d-804c-6cc15cf629c5 9 | 10 | 11 | 12 | also checkout my free mass dm tool. https://github.com/TahaGorme/discord-mass-dm-tool 13 | # Discord Server Joiner and Booster 14 | 15 | Discord Server Joiner and Booster is a script that allows you to automatically join a Discord server using multiple user tokens and boost them. This script also supports server boosting and 2captcha API and Capmonster.cloud API key for captcha solving. 16 | 17 | 18 | 19 | ## Installation 20 | 21 | Download [nodejs](https://nodejs.org/) 22 | 23 | 24 | 25 | ```javascript 26 | git clone https://github.com/TahaGorme/token-joiner-and-booster.git 27 | ``` 28 | 29 | ```javascript 30 | cd token-joiner-and-booster 31 | ``` 32 | 33 | ```bash 34 | npm i 35 | ``` 36 | 37 | ```javascript 38 | node . 39 | ``` 40 | ## Config 41 | 42 | The config.json file contains the following properties: 43 | - `captcha_service`: (optional) Your Captcha service (2Captcha or Capmonster) 44 | - `captcha_api_key`: (optional) Your 2captcha or Capmonster API key for solving captchas. 45 | - `invite`: The invite or invite code for the Discord server you wish to join. 46 | - `joinDelay`: The delay (in milliseconds) between each join attempt. 47 | - `useProxies`: Enable it if you want to use proxies (fill proxies in proxies.txt) 48 | - `boost`: (optional) An object containing properties for server boosting. 49 | - `enabled`: Whether or not you want to boost the server on joining. 50 | - `delay`: The delay (in milliseconds) before boosting the server. 51 | - `serverId`: The ID of the server to boost. 52 | 53 | ### Program Usage 54 | 55 | The program will automatically attempt to join the server using each token provided in the tokens.txt file. The `joinDelay` property determines the delay between each join attempt. 56 | 57 | If server boosting is enabled, the program will wait for the specified delay before boosting the server with the first available boost. 58 | 59 | 60 | ## Proxy Usage 61 | If `useProxies` is enabled in the config, the program will use proxies from proxies.txt. 62 | This program only supports `http` and `https` proxies. 63 | proxies should be in the format `https://username:password@ip:port` if the proxy has authentication or `https://ip:port` if the proxy does not have authentication. 64 | NOTE: the http prefix is mandatory before the proxy 65 | 66 | ### Error Handling 67 | 68 | The program includes error handling for unhandled rejections and uncaught exceptions. If an error occurs, the program will log the error message and continue running. 69 | 70 | ## Discord Server 71 | https://discord.gg/AEMGVcnTWp 72 | 73 | ## Contributing 74 | Pull requests are welcomed. For major changes, please open an issue first to discuss what you would like to change. 75 | 76 | 77 | ## License 78 | [MIT](https://choosealicense.com/licenses/mit/) 79 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // this has been patched.... 2 | // to purchase a private joiner and boost tool, dm me on discord @uutu or on telegram @tahagorme 3 | const chalk = require("chalk") 4 | console.log(`This script has been patched, to purchase the unpatched version, contact me on discord @uutu or on telegram @tahagorme`) 5 | process.on("unhandledRejection", (reason, promise) => { 6 | console.log( 7 | `${chalk.redBright( 8 | "[ERROR]" 9 | )} Unhandled rejection at ${promise}, reason: ${reason}` 10 | ) 11 | // Application specific logging, throwing an error, or other logic here 12 | }) 13 | 14 | process.on("uncaughtException", (err, origin) => { 15 | console.log( 16 | `${chalk.redBright("[ERROR]")} Uncaught exception: ${err} at ${origin}` 17 | ) 18 | // Application specific logging, throwing an error, or other logic here 19 | }) 20 | const gradient = require("gradient-string") 21 | 22 | const config = require("./config.json") 23 | const { Client } = require("discord.js-selfbot-v13") 24 | var totalJoined = 0 25 | var failed = 0 26 | var invite = config.invite 27 | if (invite.includes(".")) { 28 | inviteCode = invite.match(/\/([^/]+)$/)?.[1] || "" 29 | } else { 30 | inviteCode = invite 31 | } 32 | 33 | const HttpsProxyAgent = require("https-proxy-agent") 34 | const fs = require("fs") 35 | //read from tokens.txt 36 | 37 | console.log(gradient.rainbow("Token Joiner by @uutu")) 38 | 39 | async function readTokens() { 40 | const tokens = fs.readFileSync("tokens.txt").toString().split("\n") 41 | 42 | for (i in tokens) { 43 | await new Promise((resolve) => setTimeout(resolve, i * config.joinDelay)) 44 | doEverything( 45 | tokens[i]?.trim()?.replace("\r", "")?.replace("\n", ""), 46 | tokens 47 | ) 48 | } 49 | } 50 | readTokens() 51 | const proxies = fs.readFileSync("proxies.txt").toString().split("\n") 52 | 53 | async function doEverything(token, tokens) { 54 | 55 | const randomProxy = proxies[Math.floor(Math.random() * proxies.length)] 56 | ?.replace("\r", "") 57 | ?.replace("\n", "") 58 | var client 59 | if (config.useProxies) { 60 | var agent = HttpsProxyAgent(randomProxy) 61 | client = config.captcha_api_key 62 | ? new Client({ 63 | captchaService: config.captcha_service.toLowerCase(), 64 | captchaKey: config.captcha_api_key, 65 | checkUpdate: false, 66 | http: { agent: agent }, 67 | captchaWithProxy: true, 68 | proxy: randomProxy, 69 | restRequestTimeout: 60 * 1000, 70 | interactionTimeout: 60 * 1000, 71 | restWsBridgeTimeout: 5 * 1000, 72 | }) 73 | : new Client({ checkUpdate: false }) 74 | } else { 75 | client = config.captcha_api_key 76 | ? new Client({ 77 | captchaService: config.captcha_service.toLowerCase(), 78 | captchaKey: config.captcha_api_key, 79 | checkUpdate: false, 80 | }) 81 | : new Client({ checkUpdate: false }) 82 | } 83 | client.on("ready", async () => { 84 | console.log( 85 | chalk.green("Logged in as ") + gradient.cristal(client.user.tag) 86 | ) 87 | 88 | await client 89 | .fetchInvite(inviteCode) 90 | .then(async (invite) => { 91 | await invite 92 | .acceptInvite(true) 93 | .then(async () => { 94 | console.log( 95 | chalk.greenBright( 96 | `Joined as ${gradient.passion(client.user.tag)}` 97 | ) 98 | ) 99 | totalJoined++ 100 | process.title = `Joined: ${totalJoined} | Failed: ${failed}` 101 | 102 | if (client.token === tokens[tokens.length - 1]) { 103 | console.log( 104 | `${chalk.magentaBright("[INFO]")} Joined ${gradient.passion( 105 | totalJoined 106 | )} servers and failed to join ${gradient.passion( 107 | failed 108 | )} servers` 109 | ) 110 | 111 | process.title = `Joined: ${totalJoined} | Failed: ${failed}` 112 | } 113 | 114 | if (config.boost.enabled) { 115 | setTimeout(async () => { 116 | const allBoosts = await client.billing.fetchGuildBoosts() 117 | allBoosts.each(async (boost) => { 118 | await boost.unsubscribe().catch((err) => {}) 119 | setTimeout(async () => { 120 | await boost.subscribe(config.boost.serverId) 121 | console.log( 122 | `${chalk.greenBright( 123 | "[SUCCESS]" 124 | )} Boosted Server as ${gradient.cristal( 125 | client.user.tag 126 | )}` 127 | ) 128 | }, 500) 129 | }) 130 | }, config.boost.delay) 131 | } 132 | }) 133 | .catch((err) => { 134 | console.log( 135 | `${chalk.redBright("[ERROR]")} Failed to join as ${gradient.fruit( 136 | client.user.tag 137 | )}` 138 | ) 139 | failed++ 140 | process.title = `Joined: ${totalJoined} | Failed: ${failed}` 141 | 142 | console.error(chalk.redBright(err)) 143 | 144 | if (client.token === tokens[tokens.length - 1]) { 145 | console.log( 146 | `${chalk.magentaBright("[INFO]")} Joined ${gradient.passion( 147 | totalJoined 148 | )} servers and failed to join ${gradient.passion( 149 | failed 150 | )} servers` 151 | ) 152 | 153 | process.title = `Joined: ${totalJoined} | Failed: ${failed}` 154 | } 155 | }) 156 | }) 157 | .catch((err) => { 158 | if (err.toString().includes("Unknown Invite")) 159 | return console.log(`${chalk.redBright("[ERROR]")} Unknown Invite: The provided invite (${inviteCode}) is invalid or formatted incorrectly.`) 160 | console.error(err) 161 | }) 162 | }) 163 | client.login(token).catch((err) => { 164 | console.log( 165 | `${chalk.redBright("[ERROR]")} Invalid token ${gradient.instagram(token)}`, err 166 | ) 167 | if (client.token === tokens[tokens.length - 1]) { 168 | console.log( 169 | `${chalk.magentaBright("[INFO]")} Joined ${gradient.passion( 170 | totalJoined 171 | )} servers and failed to join ${gradient.passion(failed)} servers` 172 | ) 173 | 174 | process.title = `Joined: ${totalJoined} | Failed: ${failed}` 175 | } 176 | }) 177 | } 178 | --------------------------------------------------------------------------------