Added Argo Manifests
This commit is contained in:
82
scripts/generate_telegram_session.py
Executable file
82
scripts/generate_telegram_session.py
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate a Telethon StringSession for TELETHON_TOKEN.
|
||||
|
||||
Examples:
|
||||
TELETHON_API_ID=123456 TELETHON_API_HASH=abc123 \
|
||||
python3 scripts/generate_telegram_session.py
|
||||
|
||||
python3 scripts/generate_telegram_session.py \
|
||||
--api-id 123456 \
|
||||
--api-hash abc123 \
|
||||
--phone +391234567890
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import asyncio
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Generate a Telethon StringSession for the TELETHON_TOKEN secret."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--api-id",
|
||||
default=os.environ.get("TELETHON_API_ID"),
|
||||
help="Telegram API ID. Defaults to TELETHON_API_ID.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--api-hash",
|
||||
default=os.environ.get("TELETHON_API_HASH"),
|
||||
help="Telegram API hash. Defaults to TELETHON_API_HASH.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--phone",
|
||||
default=os.environ.get("TELETHON_PHONE"),
|
||||
help="Telegram user phone number. Defaults to TELETHON_PHONE.",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
if not args.api_id:
|
||||
parser.error("--api-id or TELETHON_API_ID is required")
|
||||
try:
|
||||
args.api_id = int(args.api_id)
|
||||
except ValueError:
|
||||
parser.error("--api-id or TELETHON_API_ID must be an integer")
|
||||
if not args.api_hash:
|
||||
parser.error("--api-hash or TELETHON_API_HASH is required")
|
||||
return args
|
||||
|
||||
|
||||
async def generate_session(args: argparse.Namespace) -> str:
|
||||
from telethon import TelegramClient
|
||||
from telethon.sessions import StringSession
|
||||
|
||||
client = TelegramClient(StringSession(), args.api_id, args.api_hash)
|
||||
try:
|
||||
phone = args.phone or input("Telegram phone number, including country code: ")
|
||||
await client.start(phone=phone)
|
||||
return client.session.save()
|
||||
finally:
|
||||
await client.disconnect()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
print(
|
||||
"Starting Telegram user login. The final stdout line is the TELETHON_TOKEN value.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
session_string = asyncio.run(generate_session(args))
|
||||
if not session_string:
|
||||
print("Failed to generate a session string.", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
print(session_string)
|
||||
print("Store this value as TELETHON_TOKEN in the Kubernetes Secret.", file=sys.stderr)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user