├── INSTALL.bat ├── README.md ├── START.bat ├── main.py └── requirements.txt /INSTALL.bat: -------------------------------------------------------------------------------- 1 | @Echo Off 2 | SETLOCAL EnableDelayedExpansion 3 | for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do ( 4 | set "DEL=%%a" 5 | ) 6 | echo Creating virtual environment... 7 | python -m venv venv 8 | echo Activating virtual environment... 9 | call venv\Scripts\activate 10 | echo Installing dependencies... 11 | pip install -r requirements.txt 12 | call :colorEcho e0 "Please edit the main.py file to add your API_ID and API_HASH." 13 | echo. 14 | pause 15 | exit 16 | :colorEcho 17 | echo off 18 | "%~2" 19 | findstr /v /a:%1 /R "^$" "%~2" nul 20 | del "%~2" > nul 2>&1i -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SimpleTapBot 2 | 🖱️ clicker for [https://t.me/Simple_Tap_Bot](https://t.me/Simple_Tap_Bot/app?startapp=1717190976970) 3 | 4 | ## Features 5 | | Feature | Supported | 6 | |---------------------------------------------------------------|:----------------:| 7 | | Multithreading | ✅ | 8 | | Proxy binding to session | ✅ | 9 | | Auto-Click coin | ✅ | 10 | | Auto-Start abd Auto-Claim farm | ✅ | 11 | | Auto Buy Card | ✅ | 12 | | Auto-claim squad reward | ✅ | 13 | | Auto-start, auto-check and auto-claim tasks | ✅ | 14 | | Support for tdata / pyrogram .session / telethon .session | ✅ | 15 | 16 | 17 | ## Obtaining API Keys 18 | 1. Go to my.telegram.org and log in using your phone number. 19 | 2. Select "API development tools" and fill out the form to register a new application. 20 | 3. Record the API_ID and API_HASH provided after registering your application in the main.py file. 21 | 22 | ## Auto Install/Run 23 | - Click on Install.bat to automatically install the required dependencies 24 | - Then click on START.bat to run the project 25 | 26 | ## Menual Install/Run 27 | ## Menual Install/Run 28 | 1. Install the required dependencies: 29 | ```bash 30 | pip install -r requirements.txt 31 | ``` 32 | 2. Run the bot: 33 | ```bash 34 | python main.py 35 | ``` 36 | 37 | # Telegram Channel 38 | 39 | ✅ Channel for information and training on Telegram airdrop bots 🔷 Follow us on Telegram : [SIZIFAIRDROP](https://t.me/sizifairdrop) 40 | 41 | # Discussion 42 | 43 | If you have an question or something you can ask in here : [F.Davoodi](https://t.me/sizifart) 44 | -------------------------------------------------------------------------------- /START.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Activating virtual environment... 3 | call venv\Scripts\activate 4 | echo Starting the bot... 5 | python main.py 6 | pause 7 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | from pyrogram import Client 2 | from pyrogram.raw.functions.messages import StartBot 3 | from pyrogram.raw.functions.messages import RequestWebView 4 | from loguru import logger 5 | from urllib.parse import unquote 6 | import httpx, time, os, threading, random 7 | 8 | API_ID = 12735088 9 | API_HASH = '367fbd3d9ce186f160eca00c8a1aa3b8' 10 | 11 | CLICKS_AMOUNT = 5 12 | SLEEP_AFTER_TAP = 5 13 | SLEEP_NO_ENOUGHT_TAPS = 3600 14 | 15 | if not os.path.exists('sessions'): 16 | os.mkdir('sessions') 17 | 18 | class SimpleTap(): 19 | 20 | def __init__(self, user_id: int, initData: str): 21 | self.user_id = user_id 22 | self.initData = initData 23 | 24 | def profile(self): 25 | with httpx.Client() as session: 26 | try: 27 | r = session.post( 28 | 'https://api.simple.app/api/v1/public/telegram/profile/', 29 | json={ 30 | "userId": self.user_id, 31 | "authData": self.initData 32 | }, 33 | headers={ 34 | 'Accept': 'application/json, text/plain, */*', 35 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 36 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 37 | 'Content-Type': 'application/json', 38 | 'Origin': 'https://simpletap.app', 39 | 'Referer': 'https://simpletap.app/', 40 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 41 | } 42 | ) 43 | 44 | return r.json() 45 | except: 46 | return None 47 | 48 | def activate(self): 49 | with httpx.Client() as session: 50 | try: 51 | r = session.post( 52 | 'https://api.simple.app/api/v1/public/telegram/activate/', 53 | json={ 54 | "userId": self.user_id, 55 | "authData": self.initData 56 | }, 57 | headers={ 58 | 'Accept': 'application/json, text/plain, */*', 59 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 60 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 61 | 'Content-Type': 'application/json', 62 | 'Origin': 'https://simpletap.app', 63 | 'Referer': 'https://simpletap.app/', 64 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 65 | } 66 | ) 67 | 68 | return r.json() 69 | except: 70 | return None 71 | 72 | def tap(self, count: int): 73 | with httpx.Client() as session: 74 | try: 75 | r = session.post( 76 | 'https://api.simple.app/api/v1/public/telegram/tap/', 77 | json={ 78 | "userId": self.user_id, 79 | "authData": self.initData, 80 | "count": count 81 | }, 82 | headers={ 83 | 'Accept': 'application/json, text/plain, */*', 84 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 85 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 86 | 'Content-Type': 'application/json', 87 | 'Origin': 'https://simpletap.app', 88 | 'Referer': 'https://simpletap.app/', 89 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 90 | } 91 | ) 92 | 93 | return r.json() 94 | except: 95 | return None 96 | 97 | def get_task_list(self): 98 | with httpx.Client() as session: 99 | try: 100 | r = session.post( 101 | 'https://api.simple.app/api/v1/public/telegram/get-task-list-2/', 102 | json={ 103 | "userId": self.user_id, 104 | "authData": self.initData 105 | }, 106 | headers={ 107 | 'Accept': 'application/json, text/plain, */*', 108 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 109 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 110 | 'Content-Type': 'application/json', 111 | 'Origin': 'https://simpletap.app', 112 | 'Referer': 'https://simpletap.app/', 113 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 114 | } 115 | ) 116 | 117 | return r.json() 118 | except: 119 | return None 120 | 121 | def start_task(self, type: int, id: int): 122 | with httpx.Client() as session: 123 | try: 124 | r = session.post( 125 | 'https://api.simple.app/api/v1/public/telegram/start-task-start-2/', 126 | json={ 127 | "userId": self.user_id, 128 | "authData": self.initData, 129 | "type": type, 130 | "id": id 131 | }, 132 | headers={ 133 | 'Accept': 'application/json, text/plain, */*', 134 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 135 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 136 | 'Content-Type': 'application/json', 137 | 'Origin': 'https://simpletap.app', 138 | 'Referer': 'https://simpletap.app/', 139 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 140 | } 141 | ) 142 | 143 | return r.json() 144 | except: 145 | return None 146 | 147 | def check_task(self, type: int, id: int): 148 | with httpx.Client() as session: 149 | try: 150 | r = session.post( 151 | 'https://api.simple.app/api/v1/public/telegram/check-task-check-2/', 152 | json={ 153 | "userId": self.user_id, 154 | "authData": self.initData, 155 | "type": type, 156 | "id": id 157 | }, 158 | headers={ 159 | 'Accept': 'application/json, text/plain, */*', 160 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 161 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 162 | 'Content-Type': 'application/json', 163 | 'Origin': 'https://simpletap.app', 164 | 'Referer': 'https://simpletap.app/', 165 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 166 | } 167 | ) 168 | 169 | return r.json() 170 | except: 171 | return None 172 | 173 | def claim(self): 174 | with httpx.Client() as session: 175 | try: 176 | r = session.post( 177 | 'https://api.simple.app/api/v1/public/telegram/claim/', 178 | json={ 179 | "userId": self.user_id, 180 | "authData": self.initData 181 | }, 182 | headers={ 183 | 'Accept': 'application/json, text/plain, */*', 184 | 'Accept-Encoding': 'gzip, deflate, br, zstd', 185 | 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 186 | 'Content-Type': 'application/json', 187 | 'Origin': 'https://simpletap.app', 188 | 'Referer': 'https://simpletap.app/', 189 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' 190 | } 191 | ) 192 | 193 | return r.json() 194 | except: 195 | return None 196 | 197 | 198 | def thread(user_id, initData, i): 199 | logger.info(f'Proccess thread №{i} started!') 200 | api = SimpleTap(user_id=user_id, initData=initData) 201 | while True: 202 | profile_data = api.profile() 203 | if profile_data is not None: 204 | logger.info(f'Thread №{i} | Current balance: {profile_data["data"]["balance"]}') 205 | if profile_data['data']['activeFarmingBalance'] == 0: 206 | activate_status = api.activate() 207 | if activate_status is not None: 208 | if activate_status['result'] == 'OK': 209 | logger.success(f'Thread №{i} | Tokens farming is activated.') 210 | 211 | else: 212 | logger.error(f'Thread №{i} | Tokens farming not activated.') 213 | 214 | else: 215 | logger.error(f'Thread №{i} | Tokens get invalid response.') 216 | else: 217 | if profile_data['data']['activeFarmingSeconds'] == profile_data['data']['maxFarmingSecondSec']: 218 | claim_status = api.claim() 219 | if claim_status is not None: 220 | if claim_status['result'] == 'OK': 221 | logger.success(f'Thread №{i} | Tokens claimed. +{profile_data["data"]["activeFarmingBalance"]}') 222 | 223 | else: 224 | logger.error(f'Thread №{i} | Tokens not claimed.') 225 | 226 | else: 227 | logger.error(f'Thread №{i} | Tokens get invalid response.') 228 | else: 229 | pass 230 | 231 | task_list = api.get_task_list() 232 | if task_list is not None: 233 | for task in task_list['data']['social']: 234 | if task['status'] == 1: 235 | t1 = api.start_task(type=task['type'], id=task['id']) 236 | if t1 is not None: 237 | for tt1 in task_list['data']['social']: 238 | if tt1['id'] == task['id']: 239 | if tt1['status'] == 2: 240 | logger.info(f'Thread №{i} | Started task with id {tt1["id"]}') 241 | 242 | t2 = api.check_task(type=task['type'], id=task['id']) 243 | if t2 is not None: 244 | for tt2 in task_list['data']['social']: 245 | if tt2['id'] == task['id']: 246 | if tt2['status'] == 3: 247 | logger.info(f'Thread №{i} | Completed task with id {tt2["id"]}. Bonus: +{tt2["bonus"]}') 248 | 249 | time.sleep(3) 250 | 251 | else: 252 | logger.error(f'Thread №{i} | Tasks get invalid response.') 253 | 254 | if profile_data['data']['availableTaps'] >= CLICKS_AMOUNT: 255 | tap_data = api.tap(count=CLICKS_AMOUNT) 256 | if tap_data is not None: 257 | if tap_data['result'] == 'OK': 258 | logger.success(f'Thread №{i} | Successly tapped. +{CLICKS_AMOUNT}') 259 | 260 | time.sleep(SLEEP_AFTER_TAP) 261 | 262 | else: 263 | logger.error(f'Thread №{i} | No enought taps. Sleeping 1 hour.') 264 | time.sleep(SLEEP_NO_ENOUGHT_TAPS) 265 | else: 266 | logger.error(f'Thread №{i} | Profile get invalid response.') 267 | 268 | 269 | while True: 270 | print(''' 271 | 272 | ███████╗██╗███████╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗ 273 | ██╔════╝██║╚══███╔╝ ██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗ 274 | ███████╗██║ ███╔╝ ██║ ██║ ██║██║ ██║█████╗ ██████╔╝ 275 | ╚════██║██║ ███╔╝ ██║ ██║ ██║██║ ██║██╔══╝ ██╔══██╗ 276 | ███████║██║███████╗ ╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║ 277 | ╚══════╝╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ 278 | 279 | SimpleTap AUTO BOT 280 | Prepared and Developed by: F.Davoodi 281 | 282 | Select an action: 283 | 284 | 1. Add session 285 | 2. Start proccess 286 | ''') 287 | opt = input('\nChoose option > ') 288 | 289 | if opt == '1': 290 | session_name = input('\nEnter session name>') 291 | if not os.path.exists(f'sessions/{session_name}.session'): 292 | try: 293 | app = Client( 294 | name=session_name, 295 | api_id=API_ID, 296 | api_hash=API_HASH, 297 | workdir='sessions/' 298 | ) 299 | with app: 300 | me = app.get_me() 301 | me.id 302 | 303 | logger.success(f'Session with name "{session_name}" created!') 304 | except: 305 | logger.error('Cannot add session.') 306 | else: 307 | logger.error('Session name alredy used!') 308 | 309 | elif opt == '2': 310 | sessions = os.listdir('sessions') 311 | 312 | if len(sessions) >= 1: 313 | for i, session in enumerate(sessions, start=1): 314 | if session.endswith('.session'): 315 | try: 316 | app = Client( 317 | name=session.replace('.session', ''), 318 | api_id=API_ID, 319 | api_hash=API_HASH, 320 | workdir='sessions/' 321 | ) 322 | app.start() 323 | 324 | web_view = app.invoke(StartBot( 325 | peer=app.resolve_peer('Simple_Tap_Bot'), 326 | bot=app.resolve_peer('Simple_Tap_Bot'), 327 | random_id=random.randint(1000, 9999), 328 | start_param='1717785892732' 329 | )) 330 | web_view = app.invoke(RequestWebView( 331 | peer=app.resolve_peer('Simple_Tap_Bot'), 332 | bot=app.resolve_peer('Simple_Tap_Bot'), 333 | platform='android', 334 | from_bot_menu=False, 335 | url='https://simpletap.app/' 336 | )) 337 | 338 | user_id = app.get_me().id 339 | initData = unquote(string=unquote(string=web_view.url.split('tgWebAppData=', maxsplit=1)[1].split('&tgWebAppVersion', maxsplit=1)[0])) 340 | 341 | threading.Thread(target=thread, args=(user_id, initData, i,)).start() 342 | except: 343 | logger.error(f'Cannot start proccess thread with "{session}" session.') 344 | 345 | break 346 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pyrofork 2 | loguru 3 | httpx --------------------------------------------------------------------------------