* Ultroid 2025 Co-authored-by: New-dev0 <New-dev0@users.noreply.github.com> Co-authored-by: Amit Sharma <buddhhu@users.noreply.github.com> Co-authored-by: TechiError <techierror@users.noreply.github.com> Co-authored-by: Aditya <me@xditya.me> Co-authored-by: Arnab Paryali <Arnabxd@users.noreply.github.com> Co-authored-by: hellboi_atul <hellboi-atul@users.noreply.github.com> Co-authored-by: sppidy <sppidy@users.noreply.github.com>
174 lines
5.2 KiB
Python
174 lines
5.2 KiB
Python
#!/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()
|