├── 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 | [](https://www.python.org/downloads/)
6 | [](LICENSE)
7 | [](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 |

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 |

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 | )
--------------------------------------------------------------------------------