From ba9ca333d4d312598de69fb0e196bc852184d179 Mon Sep 17 00:00:00 2001 From: Cameron Grant Date: Fri, 3 Oct 2025 16:49:19 -0700 Subject: [PATCH] A session generator helper to create a telegram session. --- .dockerignore | 4 +++- session_generator.py | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 session_generator.py diff --git a/.dockerignore b/.dockerignore index 87495d9..4da8703 100644 --- a/.dockerignore +++ b/.dockerignore @@ -50,4 +50,6 @@ telethon_session.session telethon_session.session-journal session_name.session session_name.session-journal -session.session \ No newline at end of file +session.session + +session_generator.py \ No newline at end of file diff --git a/session_generator.py b/session_generator.py new file mode 100644 index 0000000..4bc4e5e --- /dev/null +++ b/session_generator.py @@ -0,0 +1,38 @@ +import os +from telethon import TelegramClient + +API_ID = int(os.environ.get("TG_API_ID", "0")) +API_HASH = os.environ.get("TG_API_HASH", "") +SESSION_PREFIX = os.environ.get("TG_SESSION", "telethon_session") # writes .session in cwd + +def _prompt_nonempty(prompt: str, default: str | None = None) -> str: + while True: + val = input(f"{prompt}{f' [{default}]' if default else ''}: ").strip() + if not val and default is not None: + return default + if val: + return val + print("Please enter a value.") + +def main(): + # If env vars are missing, ask interactively. + global API_ID, API_HASH, SESSION_PREFIX + if not API_ID: + api_id_str = _prompt_nonempty("Enter TG_API_ID (from my.telegram.org)") + try: + API_ID = int(api_id_str) + except ValueError: + raise SystemExit("TG_API_ID must be an integer.") + if not API_HASH: + API_HASH = _prompt_nonempty("Enter TG_API_HASH (from my.telegram.org)") + if not SESSION_PREFIX: + SESSION_PREFIX = _prompt_nonempty("Enter session prefix (file will be .session)", "telethon_session") + + client = TelegramClient(SESSION_PREFIX, API_ID, API_HASH) + client.start() # this will prompt for phone, code, and 2FA if needed + print(f"Session created: {SESSION_PREFIX}.session") + client.disconnect() + + +if __name__ == "__main__": + main() \ No newline at end of file