Files
Hermes-Skills/mcp/telegram-mcp/references/telethon-login.py
T
Hermes Skills Manager 6770bc9b9d Initial commit: Hermes Agent skills collection
- Trading skills (OKX, dividend, lottery, quantitative)
- Creative skills (ASCII art, diagrams, video)
- Development skills (GitHub, debugging, TDD)
- Research skills (arXiv, blog monitoring)
- Productivity skills (email, documents, notes)
- MCP integration skills
- Custom user skills
2026-07-05 02:31:15 -04:00

61 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""
Telegram MTProto login script for first-time authentication.
Bypasses mcp-telegram's pydantic-settings env_file conflict.
Usage (user must run interactively via SSH):
bash /tmp/tg_login.sh
The script will:
1. Ask for phone number
2. Send verification code to Telegram
3. Prompt for code (type immediately when received)
4. Handle 2FA if needed
5. Save session for mcp-telegram to use
"""
import asyncio
from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError
import socks
import sys
import os
# === Configuration ===
# Update these or read from env
API_ID = int(os.environ.get('TG_API_ID', '0'))
API_HASH = os.environ.get('TG_API_HASH', '')
SESSION_PATH = os.path.expanduser('~/.local/share/state/mcp-telegram/mcp_telegram_session')
PROXY = (socks.SOCKS5, '127.0.0.1', 7890) # Mihomo
async def main():
if not API_ID or not API_HASH:
print("Error: Set TG_API_ID and TG_API_HASH environment variables first.")
print(" export TG_API_ID=your_id")
print(" export TG_API_HASH=your_hash")
sys.exit(1)
phone = input("Phone number (with country code, e.g. +1234567890): ").strip()
# Ensure session directory exists
os.makedirs(os.path.dirname(SESSION_PATH), exist_ok=True)
client = TelegramClient(SESSION_PATH, API_ID, API_HASH, proxy=PROXY)
try:
await client.start(phone=phone)
except SessionPasswordNeededError:
pwd = input("2FA password: ").strip()
await client.sign_in(password=pwd)
me = await client.get_me()
print(f"\n✅ Login successful!")
print(f" User: {me.username} (ID: {me.id})")
print(f" Session saved to: {SESSION_PATH}")
print(f"\nYou can now use mcp-telegram MCP server.")
await client.disconnect()
if __name__ == '__main__':
asyncio.run(main())