├── Procfile ├── main.py └── requirements.txt /Procfile: -------------------------------------------------------------------------------- 1 | worker: python main.py 2 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | import datetime 4 | 5 | import pyrogram 6 | 7 | user_session_string = os.environ.get("user_session_string") 8 | bots = [i.strip() for i in os.environ.get("bots").split(' ')] 9 | bot_owner = os.environ.get("bot_owner") 10 | update_channel = os.environ.get("update_channel") 11 | status_message_id = int(os.environ.get("status_message_id")) 12 | api_id = int(os.environ.get("api_id")) 13 | api_hash = os.environ.get("api_hash") 14 | 15 | user_client = pyrogram.Client( 16 | user_session_string, api_id=api_id, api_hash=api_hash) 17 | 18 | 19 | def main(): 20 | with user_client: 21 | while True: 22 | print("[INFO] starting to check uptime..") 23 | edit_text = f"@{update_channel} Bot's Uptime Status.(Updated every 15 mins)\n\n" 24 | for bot in bots: 25 | print(f"[INFO] checking @{bot}") 26 | snt = user_client.send_message(bot, '/start') 27 | 28 | time.sleep(15) 29 | 30 | msg = user_client.get_history(bot, 1)[0] 31 | if snt.message_id == msg.message_id: 32 | print(f"[WARNING] @{bot} is down") 33 | edit_text += f"@{bot} status: `Down`\n\n" 34 | user_client.send_message(bot_owner, 35 | f"@{bot} status: `Down`") 36 | else: 37 | print(f"[INFO] all good with @{bot}") 38 | edit_text += f"@{bot} status: `Up`\n\n" 39 | user_client.read_history(bot) 40 | 41 | utc_now = datetime.datetime.utcnow() 42 | ist_now = utc_now + datetime.timedelta(minutes=30, hours=5) 43 | 44 | edit_text += f"__last checked on \n{str(utc_now)} UTC\n{ist_now} IST__" 45 | 46 | user_client.edit_message_text(update_channel, status_message_id, 47 | edit_text) 48 | print(f"[INFO] everything done! sleeping for 15 mins...") 49 | 50 | time.sleep(15 * 60) 51 | 52 | 53 | main() 54 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pyrogram[fast] 2 | --------------------------------------------------------------------------------