#!/usr/bin/python3 # Ultroid - UserBot # Copyright (C) 2021-2025 TeamUltroid # # This file is a part of < https://github.com/TeamUltroid/Ultroid/ > # PLease read the GNU Affero General Public License in # . import os from time import sleep ULTROID = r""" _ _ _ _ _ _ | | | | | | (_) | | | | | | | |_ _ __ ___ _ __| | | | | | | __| '__/ _ \| |/ _ | | |__| | | |_| | | (_) | | (_| | \____/|_|\__|_| \___/|_|\__,_| """ def spinner(x): if x == "tele": print("Checking if Telethon is installed...") else: print("Checking if Pyrogram is installed...") for _ in range(3): for frame in r"-\|/-\|/": print("\b", frame, sep="", end="", flush=True) sleep(0.1) def clear_screen(): # https://www.tutorialspoint.com/how-to-clear-screen-in-python#:~:text=In%20Python%20sometimes%20we%20have,screen%20by%20pressing%20Control%20%2B%20l%20. if os.name == "posix": os.system("clear") else: # for windows platfrom os.system("cls") def get_api_id_and_hash(): print( "Get your API ID and API HASH from my.telegram.org or @ScrapperRoBot to proceed.\n\n", ) try: API_ID = int(input("Please enter your API ID: ")) except ValueError: print("APP ID must be an integer.\nQuitting...") exit(0) API_HASH = input("Please enter your API HASH: ") return API_ID, API_HASH def telethon_session(): try: spinner("tele") import telethon x = "\bFound an existing installation of Telethon...\nSuccessfully Imported.\n\n" except ImportError: print("Installing Telethon...") os.system("pip uninstall telethon -y && pip install -U telethon") x = "\bDone. Installed and imported Telethon." clear_screen() print(ULTROID) print(x) # the imports from telethon.errors.rpcerrorlist import ( ApiIdInvalidError, PhoneNumberInvalidError, UserIsBotError, ) from telethon.sessions import StringSession from telethon.sync import TelegramClient API_ID, API_HASH = get_api_id_and_hash() # logging in try: with TelegramClient(StringSession(), API_ID, API_HASH) as ultroid: print("Generating a string session for •ULTROID•") try: ultroid.send_message( "me", f"**ULTROID** `SESSION`:\n\n`{ultroid.session.save()}`\n\n**Do not share this anywhere!**", ) print( "Your SESSION has been generated. Check your Telegram saved messages!" ) return except UserIsBotError: print("You are trying to Generate Session for your Bot's Account?") print("Here is That!\n{ultroid.session.save()}\n\n") print("NOTE: You can't use that as User Session..") except ApiIdInvalidError: print( "Your API ID/API HASH combination is invalid. Kindly recheck.\nQuitting..." ) exit(0) except ValueError: print("API HASH must not be empty!\nQuitting...") exit(0) except PhoneNumberInvalidError: print("The phone number is invalid!\nQuitting...") exit(0) except Exception as er: print("Unexpected Error Occurred while Creating Session") print(er) print("If you think It as a Bug, Report to @UltroidSupportChat.\n\n") def pyro_session(): try: spinner("pyro") from pyrogram import Client x = "\bFound an existing installation of Pyrogram...\nSuccessfully Imported.\n\n" except BaseException: print("Installing Pyrogram...") os.system("pip install pyrogram tgcrypto") x = "\bDone. Installed and imported Pyrogram." from pyrogram import Client clear_screen() print(ULTROID) print(x) # generate a session API_ID, API_HASH = get_api_id_and_hash() print("Enter phone number when asked.\n\n") try: with Client(name="ultroid", api_id=API_ID, api_hash=API_HASH, in_memory=True) as pyro: ss = pyro.export_session_string() pyro.send_message( "me", f"`{ss}`\n\nAbove is your Pyrogram Session String for @TheUltroid. **DO NOT SHARE it.**", ) print("Session has been sent to your saved messages!") exit(0) except Exception as er: print("Unexpected error occurred while creating session, make sure to validate your inputs.") print(er) def main(): clear_screen() print(ULTROID) try: type_of_ss = int( input( "\nUltroid supports both telethon as well as pyrogram sessions.\n\nWhich session do you want to generate?\n1. Telethon Session.\n2. Pyrogram Session.\n\nEnter choice: " ) ) except Exception as e: print(e) exit(0) if type_of_ss == 1: telethon_session() elif type_of_ss == 2: pyro_session() else: print("Invalid choice.") x = input("Run again? (Y/n)") if x.lower() in ["y", "yes"]: main() else: exit(0) main()