├── images ├── banner.png └── example.png ├── tokens.txt ├── proxy.txt ├── requirements.txt ├── README.md └── bot.py /images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vonssy/Billions-BOT/HEAD/images/banner.png -------------------------------------------------------------------------------- /images/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vonssy/Billions-BOT/HEAD/images/example.png -------------------------------------------------------------------------------- /tokens.txt: -------------------------------------------------------------------------------- 1 | your_session_id_token_1 2 | your_session_id_token_2 3 | your_session_id_token_3 -------------------------------------------------------------------------------- /proxy.txt: -------------------------------------------------------------------------------- 1 | ip:port # Default Protcol HTTP. 2 | protocol://ip:port 3 | protocol://user:pass@ip:port -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | aiohttp==3.11.10 2 | aiohttp-socks==0.9.1 3 | fake-useragent==1.5.1 4 | colorama==0.4.6 5 | pytz==2024.1 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚀 Billions Network BOT 2 | 3 | > Automated daily check-in completion and multi-account management 4 | 5 | [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) 6 | [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) 7 | [![GitHub Stars](https://img.shields.io/github/stars/vonssy/Billions-BOT.svg)](https://github.com/vonssy/Billions-BOT/stargazers) 8 | 9 | ## 📋 Table of Contents 10 | 11 | - [Overview](#overview) 12 | - [Features](#features) 13 | - [Requirements](#requirements) 14 | - [Installation](#installation) 15 | - [Configuration](#configuration) 16 | - [Usage](#usage) 17 | - [Proxy Recommendation](#proxy-recommendation) 18 | - [Support](#support) 19 | - [Contributing](#contributing) 20 | 21 | ## 🎯 Overview 22 | 23 | Billions Network BOT is an automated tool designed to daily check-in completion across multiple accounts. It provides seamless offers robust proxy support for enhanced security and reliability. 24 | 25 | **🔗 Get Started:** [Register on Billions Network](https://signup.billions.network?rc=E6R6G7KW) 26 | 27 | > **Important:** Signup with google account 28 | 29 | ## ✨ Features 30 | 31 | - 🔄 **Automated Account Management** - Retrieve account information automatically 32 | - 🌐 **Flexible Proxy Support** - Run with or without proxy configuration 33 | - 🔀 **Smart Proxy Rotation** - Automatic rotation of invalid proxies 34 | - ⏰ **Daily Check-In** - Automated daily check-in 35 | - 👥 **Multi-Account Support** - Manage multiple accounts simultaneously 36 | 37 | ## 📋 Requirements 38 | 39 | - **Python:** Version 3.9 or higher 40 | - **pip:** Latest version recommended 41 | 42 | ## 🛠 Installation 43 | 44 | ### 1. Clone the Repository 45 | 46 | ```bash 47 | git clone https://github.com/vonssy/Billions-BOT.git 48 | cd Billions-BOT 49 | ``` 50 | 51 | ### 2. Install Dependencies 52 | 53 | ```bash 54 | pip install -r requirements.txt 55 | # or for Python 3 specifically 56 | pip3 install -r requirements.txt 57 | ``` 58 | 59 | ## ⚙️ Configuration 60 | 61 | ### Account Setup 62 | 63 |
64 | Billions Network Session Id Token Example 65 |

Example of fetching Billions Network session id token

66 |
67 | 68 | Create or edit `tokens.txt` in the project directory: 69 | 70 | ``` 71 | your_session_id_token_1 72 | your_session_id_token_2 73 | your_session_id_token_3 74 | ``` 75 | 76 | ### Proxy Configuration (Optional) 77 | 78 | Create or edit `proxy.txt` in the project directory: 79 | 80 | ``` 81 | # Simple format (HTTP protocol by default) 82 | 192.168.1.1:8080 83 | 84 | # With protocol specification 85 | http://192.168.1.1:8080 86 | https://192.168.1.1:8080 87 | 88 | # With authentication 89 | http://username:password@192.168.1.1:8080 90 | ``` 91 | 92 | ## 🚀 Usage 93 | 94 | Run the bot using one of the following commands: 95 | 96 | ```bash 97 | python bot.py 98 | # or for Python 3 specifically 99 | python3 bot.py 100 | ``` 101 | 102 | ### Runtime Options 103 | 104 | When starting the bot, you'll be prompted to choose: 105 | 106 | 1. **Proxy Mode Selection:** 107 | - Option `1`: Run with proxy 108 | - Option `2`: Run without proxy 109 | 110 | 2. **Auto-Rotation:** 111 | - `y`: Enable automatic invalid proxy rotation 112 | - `n`: Disable auto-rotation 113 | 114 | ## 🌐 Proxy Recommendation 115 | 116 |
117 | NST Proxy Banner 118 |
119 | 120 | For reliable multi-wallet automation and geo-restriction bypass, we recommend **Nstproxy**: 121 | 122 | ### Why Nstproxy? 123 | - 💰 **Affordable pricing** starting from $0.1/GB 124 | - 🌍 **Global coverage** with multiple locations 125 | - 🔄 **Advanced rotation control** 126 | - 🛡️ **Anti-ban technology** 127 | 128 | ### Get Started with Nstproxy 129 | - 🔗 **Website:** [Nstproxy.com](https://www.nstproxy.com/?utm_source=vonssy) 130 | - 💬 **Telegram:** [@nstproxy](https://t.me/nstproxy) 131 | - 🎮 **Discord:** [Join Server](https://discord.gg/5jjWCAmvng) 132 | - 📚 **GitHub:** [Nstproxy Repository](https://github.com/Nstproxy) 133 | 134 | > 🎁 **Special Offer:** Use code `VONSSY` for **10% OFF** your first purchase! 135 | 136 | ## 💖 Support the Project 137 | 138 | If this project has been helpful to you, consider supporting its development: 139 | 140 | ### Cryptocurrency Donations 141 | 142 | | Network | Address | 143 | |---------|---------| 144 | | **EVM** | `0xe3c9ef9a39e9eb0582e5b147026cae524338521a` | 145 | | **TON** | `UQBEFv58DC4FUrGqinBB5PAQS7TzXSm5c1Fn6nkiet8kmehB` | 146 | | **SOL** | `E1xkaJYmAFEj28NPHKhjbf7GcvfdjKdvXju8d8AeSunf` | 147 | | **SUI** | `0xa03726ecbbe00b31df6a61d7a59d02a7eedc39fe269532ceab97852a04cf3347` | 148 | 149 | ## 🤝 Contributing 150 | 151 | We welcome contributions from the community! Here's how you can help: 152 | 153 | 1. ⭐ **Star this repository** if you find it useful 154 | 2. 👥 **Follow** for updates on new features 155 | 3. 🐛 **Report issues** via GitHub Issues 156 | 4. 💡 **Suggest improvements** or new features 157 | 5. 🔧 **Submit pull requests** for bug fixes or enhancements 158 | 159 | ## 📞 Contact & Support 160 | 161 | - **Developer:** vonssy 162 | - **Issues:** [GitHub Issues](https://github.com/vonssy/Billions-BOT/issues) 163 | - **Discussions:** [GitHub Discussions](https://github.com/vonssy/Billions-BOT/discussions) 164 | 165 | --- 166 | 167 |
168 | 169 | **Made with ❤️ by [vonssy](https://github.com/vonssy)** 170 | 171 | *Thank you for using Billions Network BOT! Don't forget to ⭐ star this repository.* 172 | 173 |
-------------------------------------------------------------------------------- /bot.py: -------------------------------------------------------------------------------- 1 | from aiohttp import ( 2 | ClientResponseError, 3 | ClientSession, 4 | ClientTimeout, 5 | BasicAuth 6 | ) 7 | from aiohttp_socks import ProxyConnector 8 | from fake_useragent import FakeUserAgent 9 | from datetime import datetime, timezone 10 | from colorama import * 11 | import asyncio, base64, time, json, re, os, pytz 12 | 13 | wib = pytz.timezone('Asia/Jakarta') 14 | 15 | class BillionsNetwork: 16 | def __init__(self) -> None: 17 | self.headers = { 18 | "Accept": "application/json, text/plain, */*", 19 | "Accept-Language": "id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7", 20 | "Origin": "https://signup.billions.network", 21 | "Referer": "https://signup.billions.network/", 22 | "Sec-Fetch-Dest": "empty", 23 | "Sec-Fetch-Mode": "cors", 24 | "Sec-Fetch-Site": "same-site", 25 | "User-Agent": FakeUserAgent().random 26 | } 27 | self.BASE_API = "https://signup-backend.billions.network" 28 | self.proxies = [] 29 | self.proxy_index = 0 30 | self.account_proxies = {} 31 | self.cookie_headers = {} 32 | 33 | def clear_terminal(self): 34 | os.system('cls' if os.name == 'nt' else 'clear') 35 | 36 | def log(self, message): 37 | print( 38 | f"{Fore.CYAN + Style.BRIGHT}[ {datetime.now().astimezone(wib).strftime('%x %X %Z')} ]{Style.RESET_ALL}" 39 | f"{Fore.WHITE + Style.BRIGHT} | {Style.RESET_ALL}{message}", 40 | flush=True 41 | ) 42 | 43 | def welcome(self): 44 | print( 45 | f""" 46 | {Fore.GREEN + Style.BRIGHT}Billions Network {Fore.BLUE + Style.BRIGHT}Auto BOT 47 | """ 48 | f""" 49 | {Fore.GREEN + Style.BRIGHT}Rey? {Fore.YELLOW + Style.BRIGHT} 50 | """ 51 | ) 52 | 53 | def format_seconds(self, seconds): 54 | hours, remainder = divmod(seconds, 3600) 55 | minutes, seconds = divmod(remainder, 60) 56 | return f"{int(hours):02}:{int(minutes):02}:{int(seconds):02}" 57 | 58 | async def load_proxies(self): 59 | filename = "proxy.txt" 60 | try: 61 | if not os.path.exists(filename): 62 | self.log(f"{Fore.RED + Style.BRIGHT}File {filename} Not Found.{Style.RESET_ALL}") 63 | return 64 | with open(filename, 'r') as f: 65 | self.proxies = [line.strip() for line in f.read().splitlines() if line.strip()] 66 | 67 | if not self.proxies: 68 | self.log(f"{Fore.RED + Style.BRIGHT}No Proxies Found.{Style.RESET_ALL}") 69 | return 70 | 71 | self.log( 72 | f"{Fore.GREEN + Style.BRIGHT}Proxies Total : {Style.RESET_ALL}" 73 | f"{Fore.WHITE + Style.BRIGHT}{len(self.proxies)}{Style.RESET_ALL}" 74 | ) 75 | 76 | except Exception as e: 77 | self.log(f"{Fore.RED + Style.BRIGHT}Failed To Load Proxies: {e}{Style.RESET_ALL}") 78 | self.proxies = [] 79 | 80 | def check_proxy_schemes(self, proxies): 81 | schemes = ["http://", "https://", "socks4://", "socks5://"] 82 | if any(proxies.startswith(scheme) for scheme in schemes): 83 | return proxies 84 | return f"http://{proxies}" 85 | 86 | def get_next_proxy_for_account(self, account): 87 | if account not in self.account_proxies: 88 | if not self.proxies: 89 | return None 90 | proxy = self.check_proxy_schemes(self.proxies[self.proxy_index]) 91 | self.account_proxies[account] = proxy 92 | self.proxy_index = (self.proxy_index + 1) % len(self.proxies) 93 | return self.account_proxies[account] 94 | 95 | def rotate_proxy_for_account(self, account): 96 | if not self.proxies: 97 | return None 98 | proxy = self.check_proxy_schemes(self.proxies[self.proxy_index]) 99 | self.account_proxies[account] = proxy 100 | self.proxy_index = (self.proxy_index + 1) % len(self.proxies) 101 | return proxy 102 | 103 | def build_proxy_config(self, proxy=None): 104 | if not proxy: 105 | return None, None, None 106 | 107 | if proxy.startswith("socks"): 108 | connector = ProxyConnector.from_url(proxy) 109 | return connector, None, None 110 | 111 | elif proxy.startswith("http"): 112 | match = re.match(r"http://(.*?):(.*?)@(.*)", proxy) 113 | if match: 114 | username, password, host_port = match.groups() 115 | clean_url = f"http://{host_port}" 116 | auth = BasicAuth(username, password) 117 | return None, clean_url, auth 118 | else: 119 | return None, proxy, None 120 | 121 | raise Exception("Unsupported Proxy Type.") 122 | 123 | def normalize_iso_format(self, next_daily_reward: str): 124 | date_str = next_daily_reward.replace("Z", "+00:00") 125 | 126 | match = re.match(r"(.*\.\d{1,6})(\+00:00)", date_str) 127 | if match: 128 | timestamp, offset = match.groups() 129 | if '.' in timestamp: 130 | seconds, micros = timestamp.split('.') 131 | micros = micros.ljust(6, '0') 132 | date_str = f"{seconds}.{micros}{offset}" 133 | 134 | return datetime.fromisoformat(date_str) 135 | 136 | def decode_token(self, token: str): 137 | try: 138 | header, payload, signature = token.split(".") 139 | decoded_payload = base64.urlsafe_b64decode(payload + "==").decode("utf-8") 140 | parsed_payload = json.loads(decoded_payload) 141 | exp_time = parsed_payload["exp"] 142 | 143 | return exp_time 144 | except Exception as e: 145 | return None 146 | 147 | def mask_account(self, account): 148 | if "@" in account: 149 | local, domain = account.split('@', 1) 150 | mask_account = local[:3] + '*' * 3 + local[-3:] 151 | return f"{mask_account}@{domain}" 152 | 153 | def print_question(self): 154 | while True: 155 | try: 156 | print(f"{Fore.WHITE + Style.BRIGHT}1. Run With Proxy{Style.RESET_ALL}") 157 | print(f"{Fore.WHITE + Style.BRIGHT}2. Run Without Proxy{Style.RESET_ALL}") 158 | proxy_choice = int(input(f"{Fore.BLUE + Style.BRIGHT}Choose [1/2] -> {Style.RESET_ALL}").strip()) 159 | 160 | if proxy_choice in [1, 2]: 161 | proxy_type = ( 162 | "With" if proxy_choice == 1 else 163 | "Without" 164 | ) 165 | print(f"{Fore.GREEN + Style.BRIGHT}Run {proxy_type} Proxy Selected.{Style.RESET_ALL}") 166 | break 167 | else: 168 | print(f"{Fore.RED + Style.BRIGHT}Please enter either 1 or 2.{Style.RESET_ALL}") 169 | except ValueError: 170 | print(f"{Fore.RED + Style.BRIGHT}Invalid input. Enter a number (1 or 2).{Style.RESET_ALL}") 171 | 172 | rotate_proxy = False 173 | if proxy_choice == 1: 174 | while True: 175 | rotate_proxy = input(f"{Fore.BLUE + Style.BRIGHT}Rotate Invalid Proxy? [y/n] -> {Style.RESET_ALL}").strip() 176 | 177 | if rotate_proxy in ["y", "n"]: 178 | rotate_proxy = rotate_proxy == "y" 179 | break 180 | else: 181 | print(f"{Fore.RED + Style.BRIGHT}Invalid input. Enter 'y' or 'n'.{Style.RESET_ALL}") 182 | 183 | return proxy_choice, rotate_proxy 184 | 185 | async def check_connection(self, proxy_url=None): 186 | connector, proxy, proxy_auth = self.build_proxy_config(proxy_url) 187 | try: 188 | async with ClientSession(connector=connector, timeout=ClientTimeout(total=30)) as session: 189 | async with session.get(url="https://api.ipify.org?format=json", proxy=proxy, proxy_auth=proxy_auth) as response: 190 | response.raise_for_status() 191 | return True 192 | except (Exception, ClientResponseError) as e: 193 | self.log( 194 | f"{Fore.CYAN+Style.BRIGHT}Status :{Style.RESET_ALL}" 195 | f"{Fore.RED+Style.BRIGHT} Connection Not 200 OK {Style.RESET_ALL}" 196 | f"{Fore.MAGENTA+Style.BRIGHT}-{Style.RESET_ALL}" 197 | f"{Fore.YELLOW+Style.BRIGHT} {str(e)} {Style.RESET_ALL}" 198 | ) 199 | 200 | return None 201 | 202 | async def user_data(self, token: str, proxy_url=None, retries=5): 203 | url = f"{self.BASE_API}/me" 204 | headers = { 205 | **self.headers, 206 | "Cookie": self.cookie_headers[token] 207 | } 208 | await asyncio.sleep(3) 209 | for attempt in range(retries): 210 | connector, proxy, proxy_auth = self.build_proxy_config(proxy_url) 211 | try: 212 | async with ClientSession(connector=connector, timeout=ClientTimeout(total=60)) as session: 213 | async with session.get(url=url, headers=headers, proxy=proxy, proxy_auth=proxy_auth) as response: 214 | response.raise_for_status() 215 | return await response.json() 216 | except (Exception, ClientResponseError) as e: 217 | if attempt < retries - 1: 218 | await asyncio.sleep(5) 219 | continue 220 | self.log( 221 | f"{Fore.CYAN + Style.BRIGHT}Account :{Style.RESET_ALL}" 222 | f"{Fore.RED+Style.BRIGHT} Fetch Data Failed {Style.RESET_ALL}" 223 | f"{Fore.MAGENTA+Style.BRIGHT}-{Style.RESET_ALL}" 224 | f"{Fore.YELLOW+Style.BRIGHT} {str(e)} {Style.RESET_ALL}" 225 | ) 226 | 227 | return None 228 | 229 | async def claim_daily_reward(self, token: str, proxy_url=None, retries=5): 230 | url = f"{self.BASE_API}/claim-daily-reward" 231 | headers = { 232 | **self.headers, 233 | "Content-Length": "0", 234 | "Cookie": self.cookie_headers[token] 235 | } 236 | await asyncio.sleep(3) 237 | for attempt in range(retries): 238 | connector, proxy, proxy_auth = self.build_proxy_config(proxy_url) 239 | try: 240 | async with ClientSession(connector=connector, timeout=ClientTimeout(total=60)) as session: 241 | async with session.post(url=url, headers=headers, proxy=proxy, proxy_auth=proxy_auth) as response: 242 | response.raise_for_status() 243 | return await response.json() 244 | except (Exception, ClientResponseError) as e: 245 | if attempt < retries - 1: 246 | await asyncio.sleep(5) 247 | continue 248 | self.log( 249 | f"{Fore.CYAN+Style.BRIGHT}Check-In:{Style.RESET_ALL}" 250 | f"{Fore.RED+Style.BRIGHT} Not Claimed {Style.RESET_ALL}" 251 | f"{Fore.MAGENTA+Style.BRIGHT}-{Style.RESET_ALL}" 252 | f"{Fore.YELLOW+Style.BRIGHT} {str(e)} {Style.RESET_ALL}" 253 | ) 254 | 255 | return None 256 | 257 | async def process_check_connection(self, token: str, use_proxy: bool, rotate_proxy: bool): 258 | while True: 259 | proxy = self.get_next_proxy_for_account(token) if use_proxy else None 260 | self.log( 261 | f"{Fore.CYAN+Style.BRIGHT}Proxy :{Style.RESET_ALL}" 262 | f"{Fore.WHITE+Style.BRIGHT} {proxy} {Style.RESET_ALL}" 263 | ) 264 | 265 | is_valid = await self.check_connection(proxy) 266 | if not is_valid: 267 | if rotate_proxy: 268 | proxy = self.rotate_proxy_for_account(token) 269 | 270 | continue 271 | 272 | return True 273 | 274 | async def process_accounts(self, token: str, use_proxy: bool, rotate_proxy: bool): 275 | is_valid = await self.process_check_connection(token, use_proxy, rotate_proxy) 276 | if is_valid: 277 | proxy = self.get_next_proxy_for_account(token) if use_proxy else None 278 | 279 | user = await self.user_data(token, proxy) 280 | if not user: 281 | return 282 | 283 | email = user.get("email", "Unknown") 284 | power = user.get("power", 0) 285 | 286 | self.log( 287 | f"{Fore.CYAN + Style.BRIGHT}Account :{Style.RESET_ALL}" 288 | f"{Fore.WHITE + Style.BRIGHT} {self.mask_account(email)} {Style.RESET_ALL}" 289 | ) 290 | self.log( 291 | f"{Fore.CYAN + Style.BRIGHT}Power :{Style.RESET_ALL}" 292 | f"{Fore.WHITE + Style.BRIGHT} {power} PTS {Style.RESET_ALL}" 293 | ) 294 | 295 | next_daily_reward = user.get("nextDailyRewardAt", None) 296 | if next_daily_reward is None: 297 | claim = await self.claim_daily_reward(token, proxy) 298 | if claim: 299 | self.log( 300 | f"{Fore.CYAN + Style.BRIGHT}Check-In:{Style.RESET_ALL}" 301 | f"{Fore.GREEN + Style.BRIGHT} Claimed Successfully {Style.RESET_ALL}" 302 | f"{Fore.MAGENTA + Style.BRIGHT}-{Style.RESET_ALL}" 303 | f"{Fore.CYAN + Style.BRIGHT} Reward: {Style.RESET_ALL}" 304 | f"{Fore.WHITE + Style.BRIGHT}25 Power PTS{Style.RESET_ALL}" 305 | ) 306 | 307 | else: 308 | utc_now = datetime.now(timezone.utc) 309 | next_daily_reward_utc = self.normalize_iso_format(next_daily_reward) 310 | 311 | if utc_now < next_daily_reward_utc: 312 | next_daily_reward_wib = next_daily_reward_utc.astimezone(wib).strftime('%x %X %Z') 313 | 314 | self.log( 315 | f"{Fore.CYAN + Style.BRIGHT}Check-In:{Style.RESET_ALL}" 316 | f"{Fore.YELLOW + Style.BRIGHT} Not Time To Claim {Style.RESET_ALL}" 317 | f"{Fore.MAGENTA + Style.BRIGHT}-{Style.RESET_ALL}" 318 | f"{Fore.CYAN + Style.BRIGHT} Claim At: {Style.RESET_ALL}" 319 | f"{Fore.WHITE + Style.BRIGHT}{next_daily_reward_wib}{Style.RESET_ALL}" 320 | ) 321 | 322 | else: 323 | claim = await self.claim_daily_reward(token, proxy) 324 | if claim: 325 | self.log( 326 | f"{Fore.CYAN + Style.BRIGHT}Check-In:{Style.RESET_ALL}" 327 | f"{Fore.GREEN + Style.BRIGHT} Claimed Successfully {Style.RESET_ALL}" 328 | f"{Fore.MAGENTA + Style.BRIGHT}-{Style.RESET_ALL}" 329 | f"{Fore.CYAN + Style.BRIGHT} Reward: {Style.RESET_ALL}" 330 | f"{Fore.WHITE + Style.BRIGHT}25 Power PTS{Style.RESET_ALL}" 331 | ) 332 | 333 | async def main(self): 334 | try: 335 | with open('tokens.txt', 'r') as file: 336 | tokens = [line.strip() for line in file if line.strip()] 337 | 338 | proxy_choice, rotate_proxy = self.print_question() 339 | 340 | while True: 341 | self.clear_terminal() 342 | self.welcome() 343 | self.log( 344 | f"{Fore.GREEN + Style.BRIGHT}Account's Total: {Style.RESET_ALL}" 345 | f"{Fore.WHITE + Style.BRIGHT}{len(tokens)}{Style.RESET_ALL}" 346 | ) 347 | 348 | use_proxy = True if proxy_choice == 1 else False 349 | if use_proxy: 350 | await self.load_proxies() 351 | 352 | separator = "=" * 26 353 | for idx, token in enumerate(tokens, 1): 354 | if token: 355 | self.log( 356 | f"{Fore.CYAN + Style.BRIGHT}{separator}[{Style.RESET_ALL}" 357 | f"{Fore.WHITE + Style.BRIGHT} {idx} {Style.RESET_ALL}" 358 | f"{Fore.CYAN + Style.BRIGHT}Of{Style.RESET_ALL}" 359 | f"{Fore.WHITE + Style.BRIGHT} {len(tokens)} {Style.RESET_ALL}" 360 | f"{Fore.CYAN + Style.BRIGHT}]{separator}{Style.RESET_ALL}" 361 | ) 362 | 363 | exp_time = self.decode_token(token) 364 | if int(time.time()) > exp_time: 365 | self.log( 366 | f"{Fore.CYAN + Style.BRIGHT}Status :{Style.RESET_ALL}" 367 | f"{Fore.RED + Style.BRIGHT} Session Id Already Expired {Style.RESET_ALL}" 368 | ) 369 | continue 370 | 371 | self.cookie_headers[token] = f"session_id={token}" 372 | 373 | await self.process_accounts(token, use_proxy, rotate_proxy) 374 | await asyncio.sleep(3) 375 | 376 | self.log(f"{Fore.CYAN + Style.BRIGHT}={Style.RESET_ALL}"*63) 377 | seconds = 24 * 60 * 60 378 | while seconds > 0: 379 | formatted_time = self.format_seconds(seconds) 380 | print( 381 | f"{Fore.CYAN+Style.BRIGHT}[ Wait for{Style.RESET_ALL}" 382 | f"{Fore.WHITE+Style.BRIGHT} {formatted_time} {Style.RESET_ALL}" 383 | f"{Fore.CYAN+Style.BRIGHT}... ]{Style.RESET_ALL}" 384 | f"{Fore.WHITE+Style.BRIGHT} | {Style.RESET_ALL}" 385 | f"{Fore.BLUE+Style.BRIGHT}All Accounts Have Been Processed.{Style.RESET_ALL}", 386 | end="\r" 387 | ) 388 | await asyncio.sleep(1) 389 | seconds -= 1 390 | 391 | except FileNotFoundError: 392 | self.log(f"{Fore.RED}File 'tokens.txt' Not Found.{Style.RESET_ALL}") 393 | return 394 | except Exception as e: 395 | self.log(f"{Fore.RED+Style.BRIGHT}Error: {e}{Style.RESET_ALL}") 396 | raise e 397 | 398 | if __name__ == "__main__": 399 | try: 400 | bot = BillionsNetwork() 401 | asyncio.run(bot.main()) 402 | except KeyboardInterrupt: 403 | print( 404 | f"{Fore.CYAN + Style.BRIGHT}[ {datetime.now().astimezone(wib).strftime('%x %X %Z')} ]{Style.RESET_ALL}" 405 | f"{Fore.WHITE + Style.BRIGHT} | {Style.RESET_ALL}" 406 | f"{Fore.RED + Style.BRIGHT}[ EXIT ] Billions Network - BOT{Style.RESET_ALL} " 407 | ) --------------------------------------------------------------------------------