telegram-mcp/session_string_generator.py
anonim 726fef23f3 feat: enhance Telegram MCP server with new features and configuration updates
- Updated .env.example with new Telegram API credentials and session string options.
- Expanded .gitignore to exclude session files and configuration.
- Refactored main.py to support string session authentication and added new functions for contact and message management.
- Updated README.md to reflect new features, installation instructions, and usage examples.
- Added python-dotenv as a dependency in pyproject.toml for environment variable management.
2025-03-31 18:45:36 +03:00

91 lines
No EOL
3.5 KiB
Python
Executable file

#!/usr/bin/env python3
"""
Telegram Session String Generator
This script generates a session string that can be used for Telegram authentication
with the Telegram MCP server. The session string allows for portable authentication
without storing session files.
Usage:
python session_string_generator.py
Requirements:
- telethon
- python-dotenv
"""
import os
from telethon.sync import TelegramClient
from telethon.sessions import StringSession
from dotenv import load_dotenv
import sys
# Load environment variables from .env file
load_dotenv()
API_ID = os.getenv("TELEGRAM_API_ID")
API_HASH = os.getenv("TELEGRAM_API_HASH")
if not API_ID or not API_HASH:
print("Error: TELEGRAM_API_ID and TELEGRAM_API_HASH must be set in .env file")
print("Create an .env file with your credentials from https://my.telegram.org/apps")
sys.exit(1)
# Convert API_ID to integer
try:
API_ID = int(API_ID)
except ValueError:
print("Error: TELEGRAM_API_ID must be an integer")
sys.exit(1)
print("\n----- Telegram Session String Generator -----\n")
print("This script will generate a session string for your Telegram account.")
print("You will be asked to enter your phone number and the verification code sent to your Telegram app.")
print("The generated session string can be added to your .env file.")
print("\nYour credentials will NOT be stored on any server and are only used for local authentication.\n")
try:
# Connect to Telegram and generate the session string
with TelegramClient(StringSession(), API_ID, API_HASH) as client:
# The client.session.save() function from StringSession returns the session string
session_string = StringSession.save(client.session)
print("\nAuthentication successful!")
print("\n----- Your Session String -----")
print(f"\n{session_string}\n")
print("Add this to your .env file as:")
print(f"TELEGRAM_SESSION_STRING={session_string}")
print("\nIMPORTANT: Keep this string private and never share it with anyone!")
# Optional: auto-update the .env file
choice = input("\nWould you like to automatically update your .env file with this session string? (y/N): ")
if choice.lower() == 'y':
try:
# Read the current .env file
with open('.env', 'r') as file:
env_contents = file.readlines()
# Update or add the SESSION_STRING line
session_string_line_found = False
for i, line in enumerate(env_contents):
if line.startswith('TELEGRAM_SESSION_STRING='):
env_contents[i] = f"TELEGRAM_SESSION_STRING={session_string}\n"
session_string_line_found = True
break
if not session_string_line_found:
env_contents.append(f"TELEGRAM_SESSION_STRING={session_string}\n")
# Write back to the .env file
with open('.env', 'w') as file:
file.writelines(env_contents)
print("\n.env file updated successfully!")
except Exception as e:
print(f"\nError updating .env file: {e}")
print("Please manually add the session string to your .env file.")
except Exception as e:
print(f"\nError: {e}")
print("Failed to generate session string. Please try again.")
sys.exit(1)