azils3's picture
Upload 216 files
618430a verified
#!/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
# <https://www.github.com/TeamUltroid/Ultroid/blob/main/LICENSE/>.
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()