From 12cbde331f26aa2f6f6d9768f7e9643a8b6f2133 Mon Sep 17 00:00:00 2001 From: overspend1 Date: Sun, 21 Dec 2025 18:24:41 +0100 Subject: [PATCH] Add SMS option to session generator --- scripts/generate-session-string.py | 31 +++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/scripts/generate-session-string.py b/scripts/generate-session-string.py index 08a3881..388cc6c 100644 --- a/scripts/generate-session-string.py +++ b/scripts/generate-session-string.py @@ -3,14 +3,16 @@ Generate a Telethon StringSession for OverUB. """ +import argparse import asyncio import os from telethon import TelegramClient +from telethon.errors import SessionPasswordNeededError from telethon.sessions import StringSession -async def generate() -> None: +async def generate(args: argparse.Namespace) -> None: if os.path.exists(".env"): with open(".env", "r", encoding="utf-8") as handle: for line in handle: @@ -33,7 +35,26 @@ async def generate() -> None: print("Starting session generation. You will be prompted to log in.") client = TelegramClient(StringSession(), api_id, api_hash) - await client.start() + await client.connect() + if await client.is_user_authorized(): + session_string = client.session.save() + await client.disconnect() + print("\nSession string:") + print(session_string) + print("\nAdd to .env as OVERUB_SESSION_STRING=" + session_string) + return + phone = args.phone or os.getenv("OVERUB_PHONE") or os.getenv("PHONE") + if not phone: + phone = input("Phone number (+123456789): ").strip() + sent = await client.send_code_request(phone, force_sms=args.sms) + code_type = getattr(sent, "type", None) + print(f"Code delivery type: {type(code_type).__name__ if code_type else 'unknown'}") + code = input("Enter the code you received: ").strip() + try: + await client.sign_in(phone=phone, code=code, phone_code_hash=sent.phone_code_hash) + except SessionPasswordNeededError: + password = input("Two-step verification password: ").strip() + await client.sign_in(password=password) session_string = client.session.save() await client.disconnect() @@ -43,7 +64,11 @@ async def generate() -> None: def main() -> None: - asyncio.run(generate()) + parser = argparse.ArgumentParser(description="Generate Telethon StringSession for OverUB") + parser.add_argument("--phone", default="") + parser.add_argument("--sms", action="store_true", help="Force SMS delivery") + args = parser.parse_args() + asyncio.run(generate(args)) if __name__ == "__main__":