├── README.md ├── main.py ├── req.txt ├── uptodate └── uptodate.txt /README.md: -------------------------------------------------------------------------------- 1 | # Twitch Viewer Bot 2 | Twitch Viewer Bot is a Python script that automates the process of increasing the number of viewers for a specific Twitch channel. 3 | This script is intended for educational purposes and should be used responsibly and with the proper authorization. 4 | 5 | ## Features 6 | - Check for updates: The script checks for updates and notifies the user if a new version is available. 7 | - Display announcements: Important announcements are displayed to the user. 8 | - Proxy server selection: Choose from a list of proxy servers to access Twitch channels. 9 | - Specify Twitch channel: Enter the username of the Twitch channel you want to increase viewers for. 10 | - Set viewer count: Define the number of viewers to send to the Twitch channel. 11 | - Browser configuration: Uses a headless Chrome browser for automation. 12 | - Usage instructions: Provides guidance on using the bot and troubleshooting common issues. 13 | 14 | ## Prerequisites 15 | - Python 3.x 16 | - Selenium 17 | - Chromedriver (Chrome web driver) 18 | - Colorama 19 | 20 | ## Chromedriver & Chrome Browser 21 | - Download and install the Chrome browser if it's not already on your system. 22 | - https://www.google.com/intl/en-en/chrome/ 23 | 24 | - Download the appropriate ChromeDriver version that is compatible with the Chrome browser. 25 | - https://sites.google.com/chromium.org/driver/ 26 | 27 | ## Installation/Usage 28 | 1. Install Python 3.x if you haven't already. 29 | 2. Install the required packages by running the following command: 30 | ```bash 31 | pip install -r req.txt 32 | ``` 33 | 3. Put the chromedriver.exe into the Script folder. 34 | 4. Open chromedriver.exe as administrator 35 | 5. Run the main.py script using the following command: 36 | ```bash 37 | python main.py 38 | ``` 39 | 6. Follow the prompts to configure the bot. 40 | 7. Keep the window open for as long as you want to use the bot. 41 | 8. To exit, press the ENTER key or close the window. 42 | 43 | Tutorial can be found here: 44 | https://www.youtube.com/watch?v=-POxHKOrUqo 45 | 46 | ## Disclaimer 47 | This script is provided for educational and experimental purposes only. The use of such tools to increase viewers on Twitch without proper authorization is against Twitch's terms of service and can result in account suspension or other penalties. Use this tool responsibly and with permission from the respective platform. 48 | 49 | ## License 50 | This project is licensed under the MIT License. 51 | The distribution of the script is prohibited as it violates the guidelines of the websites where it is applied. 52 | 53 | Copyright belongs to fLUIDscripts. 54 | 55 | ## Contributing 56 | Contributions and suggestions are welcome. If you have any ideas or improvements, feel free to open an issue or create a pull request. 57 | 58 | Happy streaming! 59 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import warnings 3 | from selenium import webdriver 4 | from selenium.webdriver.common.keys import Keys 5 | from selenium.webdriver.common.by import By 6 | from colorama import Fore 7 | from pystyle import Center, Colors, Colorate 8 | import os 9 | import time 10 | 11 | warnings.filterwarnings("ignore", category=DeprecationWarning) 12 | 13 | def check_for_updates(): 14 | try: 15 | r = requests.get("https://raw.githubusercontent.com/fluidmain/Twitch-Viewer-Bot/main/uptodate") 16 | remote_version = r.content.decode('utf-8').strip() 17 | local_version = open('uptodate.txt', 'r').read().strip() 18 | if remote_version != local_version: 19 | print("A updated version of the bot is avaiable. You can download the update here: https://github.com/fluidmain/Twitch-Viewer-Bot") 20 | time.sleep(3) 21 | return False 22 | return True 23 | except: 24 | return True 25 | 26 | 27 | def main(): 28 | if not check_for_updates(): 29 | return 30 | def print_announcement(): 31 | try: 32 | r = requests.get("https://pastebin.com/raw/1EwXmhbY", headers={"Cache-Control": "no-cache"}) 33 | announcement = r.content.decode('utf-8').strip() 34 | return announcement 35 | except: 36 | print("Bot version check failed. Start manually, but it may not work without the latest version.\n") 37 | 38 | 39 | 40 | def main(): 41 | if not check_for_updates(): 42 | return 43 | print_announcement() 44 | 45 | 46 | os.system(f"title fLUIDscripts. Twitch View Bot 3.1 ") 47 | 48 | print(Colors.orange, Center.XCenter("╭┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╮")) 49 | print(Colorate.Vertical(Colors.green_to_cyan, Center.XCenter(""" ┌─┐┬ ┬ ┬┬┌┬┐┌─┐┌─┐┬─┐┬┌─┐┌┬┐┌─┐ 50 | ├┤ │ │ ││ ││└─┐│ ├┬┘│├─┘ │ └─┐ 51 | └ ┴─┘└─┘┴─┴┘└─┘└─┘┴└─┴┴ ┴ └─┘o 52 | GITHUB: HTTPS://GITHUB.COM/FLUIDMAIN 53 | """))) 54 | print(Colors.orange, Center.XCenter("╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╯")) 55 | announcement = print_announcement() 56 | print("") 57 | print(Colors.orange, Center.XCenter("╭┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╮")) 58 | print(Colors.red, Center.XCenter("Thank you for using our bot.")) 59 | print(Colors.yellow, Center.XCenter(f"{announcement}")) 60 | print(Colors.orange, Center.XCenter("╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╯")) 61 | print("") 62 | 63 | # Proxy URLS 64 | proxy_servers = { 65 | 1: "https://www.blockaway.net", 66 | 2: "https://www.croxy.network", 67 | 3: "https://www.croxy.org", 68 | 4: "https://www.youtubeunblocked.live", 69 | 5: "https://www.croxyproxy.net", 70 | } 71 | 72 | # Selecting proxy server 73 | print(Colors.orange, Center.XCenter("╔════════════════════════════════════════════════════════════════════════════╗")) 74 | print(Colors.red, Center.XCenter("If a server is not reachable, please let me know. I will update it then.")) 75 | print(Colors.red, Center.XCenter("Select a server. Enter the Servernumber and press Enter.")) 76 | print(Colorate.Vertical(Colors.green_to_blue," ")) 77 | for i in range(1, 5): 78 | print(Colors.cyan, Center.XCenter(f"Server (online) {i}")) 79 | print(Colors.orange, Center.XCenter("╚════════════════════════════════════════════════════════════════════════════╝")) 80 | proxy_choice = int(input(Colorate.Vertical(Colors.cyan_to_blue, ">>"))) 81 | proxy_url = proxy_servers.get(proxy_choice) 82 | 83 | # Select Twitch Account 84 | print(Colorate.Vertical(Colors.green_to_blue," ")) 85 | print(Colorate.Vertical(Colors.green_to_blue," ")) 86 | print(Colorate.Vertical(Colors.green_to_blue," ")) 87 | print(Colors.orange, Center.XCenter("╔════════════════════════════════════════════════════════════════════════════╗")) 88 | print(Colors.cyan, Center.XCenter("Target Twitch account? Please provide only the username!")) 89 | print(Colors.cyan, Center.XCenter("Example: fluidscripts")) 90 | print(Colors.orange, Center.XCenter("╚════════════════════════════════════════════════════════════════════════════╝")) 91 | twitch_username = input(Colorate.Vertical(Colors.cyan_to_blue, ">>")) 92 | 93 | # Select Proxys Amount 94 | print(Colorate.Vertical(Colors.green_to_blue," ")) 95 | print(Colorate.Vertical(Colors.green_to_blue," ")) 96 | print(Colorate.Vertical(Colors.green_to_blue," ")) 97 | print(Colors.orange, Center.XCenter("╔════════════════════════════════════════════════════════════════════════════╗")) 98 | print(Colors.cyan, Center.XCenter("How many viewers should be sent?")) 99 | print(Colors.cyan, Center.XCenter("(Higher numbers may cause bugs!)")) 100 | print(Colors.orange, Center.XCenter("╚════════════════════════════════════════════════════════════════════════════╝")) 101 | proxy_count = int(input(Colorate.Vertical(Colors.cyan_to_blue, ">>"))) 102 | 103 | # Next Step 104 | os.system("cls") 105 | print(Colors.orange, Center.XCenter("╭┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╮")) 106 | print(Colorate.Vertical(Colors.green_to_cyan, Center.XCenter(""" ┌─┐┬ ┬ ┬┬┌┬┐┌─┐┌─┐┬─┐┬┌─┐┌┬┐┌─┐ 107 | ├┤ │ │ ││ ││└─┐│ ├┬┘│├─┘ │ └─┐ 108 | └ ┴─┘└─┘┴─┴┘└─┘└─┘┴└─┴┴ ┴ └─┘o 109 | GITHUB: HTTPS://GITHUB.COM/FLUIDMAIN 110 | """))) 111 | print(Colors.orange, Center.XCenter("╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╯")) 112 | print('') 113 | print('') 114 | print(Colors.orange, Center.XCenter("╔════════════════════════════════════════════════════════════════════════════╗")) 115 | print(Colors.cyan, Center.XCenter("The bot starts and sends viewers.")) 116 | print(Colors.cyan, Center.XCenter("If not all viewers arrive or it doesn't work,")) 117 | print(Colors.cyan, Center.XCenter("then restart the bot or change the proxy server.")) 118 | print(Colors.orange, Center.XCenter("╚════════════════════════════════════════════════════════════════════════════╝")) 119 | 120 | chrome_path = r'C:\Program Files\Google\Chrome\Application\chrome.exe' 121 | driver_path = 'chromedriver.exe' 122 | 123 | chrome_options = webdriver.ChromeOptions() 124 | chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) 125 | chrome_options.add_argument('--disable-logging') 126 | chrome_options.add_argument('--log-level=3') 127 | chrome_options.add_argument('--disable-extensions') 128 | chrome_options.add_argument('--headless') 129 | chrome_options.add_argument("--mute-audio") 130 | chrome_options.add_argument('--disable-dev-shm-usage') 131 | chrome_options.binary_location = chrome_path 132 | driver = webdriver.Chrome(options=chrome_options) 133 | 134 | driver.get(proxy_url) 135 | 136 | for i in range(proxy_count): 137 | driver.execute_script("window.open('" + proxy_url + "')") 138 | driver.switch_to.window(driver.window_handles[-1]) 139 | driver.get(proxy_url) 140 | 141 | text_box = driver.find_element(By.ID, 'url') 142 | text_box.send_keys(f'www.twitch.tv/{twitch_username}') 143 | text_box.send_keys(Keys.RETURN) 144 | 145 | # Ende 146 | os.system("cls") 147 | print(Colors.orange, Center.XCenter("╭┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╮")) 148 | print(Colorate.Vertical(Colors.green_to_cyan, Center.XCenter(""" ┌─┐┬ ┬ ┬┬┌┬┐┌─┐┌─┐┬─┐┬┌─┐┌┬┐┌─┐ 149 | ├┤ │ │ ││ ││└─┐│ ├┬┘│├─┘ │ └─┐ 150 | └ ┴─┘└─┘┴─┴┘└─┘└─┘┴└─┴┴ ┴ └─┘o 151 | GITHUB: HTTPS://GITHUB.COM/FLUIDMAIN 152 | """))) 153 | print(Colors.orange, Center.XCenter("╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╯")) 154 | print(Colors.orange, Center.XCenter("╔════════════════════════════════════════════════════════════════════════════╗")) 155 | print(Colors.cyan, Center.XCenter("Viewers have arrived.")) 156 | print(Colors.cyan, Center.XCenter("")) 157 | print(Colors.cyan, Center.XCenter("If the viewer count decreases or the bot stops working,")) 158 | print(Colors.cyan, Center.XCenter("consider restarting the script or trying a different proxy server.")) 159 | print(Colors.cyan, Center.XCenter("")) 160 | print(Colors.cyan, Center.XCenter("Keep the window open for as long as you want to use the bot.")) 161 | print(Colors.cyan, Center.XCenter("When you want to exit the bot, press the ENTER key or close the window.")) 162 | print(Colors.orange, Center.XCenter("╚════════════════════════════════════════════════════════════════════════════╝")) 163 | input(Colorate.Vertical(Colors.cyan_to_blue, ">>")) 164 | driver.quit() 165 | 166 | 167 | if __name__ == '__main__': 168 | main() 169 | 170 | # ========================================== 171 | # Copyright 2023 - fLUIDscripts. 172 | # ========================================== 173 | -------------------------------------------------------------------------------- /req.txt: -------------------------------------------------------------------------------- 1 | colorama 2 | pystyle 3 | selenium 4 | requests 5 | -------------------------------------------------------------------------------- /uptodate: -------------------------------------------------------------------------------- 1 | A!2bC@4dE*6fG 2 | -------------------------------------------------------------------------------- /uptodate.txt: -------------------------------------------------------------------------------- 1 | A!2bC@4dE*6fG --------------------------------------------------------------------------------