telegram-mcp-cli
by Telegram-mcp
README.md
<div align="center">
# โก telegram-mcp-cli
### Modern Command-Line Interface & Bot Automation Controller for Telegram
[](https://pypi.org/project/telegram-mcp-cli/)
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/LonamiWebs/Telethon)
[](https://docs.pytest.org/)
<p align="center">
<b>Interact with, test, and automate Telegram bots directly from your terminal.</b><br>
Built on MTProto with direct Telethon <code>.session</code> file support, automatic environment detection, and session protection.
</p>
</div>
---
## ๐ Table of Contents
- [โจ Key Features](#-key-features)
- [๐๏ธ Architecture](#๏ธ-architecture)
- [๐ Quick Start](#-quick-start)
- [๐ป Command Reference](#-command-reference)
- [๐ก๏ธ Safety & Session Protection](#๏ธ-safety--session-protection)
- [๐งช Testing](#-testing)
- [๐ License](#-license)
---
## โจ Key Features
* ๐ **Instant Session Switching (`tg-cli auth <path.session>`)**: Pass any existing Telethon `.session` file directly. Automatically validates SQLite integrity, detects the target server cluster, and aligns settings.
* ๐ค **Bot Testing & Automation**: Send text payloads, trigger slash commands (e.g. `/start`), inspect responses, and click inline keyboard buttons.
* ๐ก๏ธ **Environment Mismatch Shield**: Automatically detects whether your session belongs to the **Test Server** (Sandbox) or **Production Server** and protects against cross-environment auth revocation.
* ๐ **Process-Level Session Guard**: Prevents concurrent duplicate connections (`/tmp/telegram-mcp.lock`) to eliminate `AuthKeyDuplicatedError`.
* ๐ **Rich Terminal Display**: Colorized output, message panels, button trees, and clean tabular diagnostics powered by `rich`.
* ๐ฌ **Real-Time Interactive Chat (`tg-cli chat <@bot>`)**: Live terminal chat session with background streaming of incoming messages, inline button triggers (`/click`), and history scrolling.
* โก **Arbitrary MTProto Execution (`tg-cli exec`)**: Direct command-line evaluation of Python MTProto snippets with live client injection.
---
## ๐๏ธ Architecture
```mermaid
flowchart TD
subgraph Terminal ["User / Agent CLI"]
CLI["tg-cli (argparse + rich)"]
end
subgraph Core ["telegram-mcp-cli Engine"]
Config["Config Manager (.env)"]
Shield["Environment Mismatch Shield"]
Lock["Process Lock (/tmp/telegram-mcp.lock)"]
Controller["TelegramCliClient (Telethon)"]
end
subgraph Telegram ["Telegram MTProto Network"]
TestDC["Telegram Test DC (Sandbox)"]
ProdDC["Telegram Production DC (Live)"]
end
CLI --> Config
CLI --> Controller
Controller --> Lock
Controller --> Shield
Shield -->|Test Session| TestDC
Shield -->|Prod Session| ProdDC
```
---
## ๐ Quick Start
### 1. Installation
**From PyPI (Recommended):**
```bash
pip install telegram-mcp-cli
```
**From Source:**
```bash
git clone https://github.com/Telegram-mcp/telegram-mcp-cli.git
cd telegram-mcp-cli
pip install -e .
```
### 2. Configure Authentication
> [!TIP]
> If you already have a `telegram-mcp` installation at `/root/bot-mcp`, `tg-cli` automatically detects and shares credentials from its `.env`!
To set up or switch active sessions directly:
```bash
# Option A: Point to an existing Telethon .session file
tg-cli auth /path/to/my_account.session
# Option B: Run interactive phone / QR login
tg-cli auth login
```
### 3. Verify Connection
```bash
tg-cli status
```
---
## ๐ป Command Reference
| Command | Description | Example |
| :--- | :--- | :--- |
| `auth` | Configure active session file or login | `tg-cli auth my_bot.session` |
| `status` | View connection, DC, and account status | `tg-cli status` |
| `send` | Send formatted text message to a bot/chat | `tg-cli send @mybot "Hello from CLI"` |
| `command` | Send `/command` and wait for bot reply | `tg-cli command @mybot /start` |
| `click` | Click inline button by text or index | `tg-cli click @mybot --button "Option 1"` |
| `chat` | Start interactive live chat session | `tg-cli chat @mybot` |
| `history` | Fetch recent conversation history | `tg-cli history @mybot --limit 10` |
| `send-file` | Upload photo, document, or audio | `tg-cli send-file @mybot doc.pdf` |
| `exec` | Execute MTProto Python snippet | `tg-cli exec "await client.get_me()"` |
| `unlock` | Release session lock & terminate conflicting process | `tg-cli unlock` |
---
## ๐ก๏ธ Safety & Session Protection
> [!WARNING]
> Telegram permanently revokes authorization keys if multiple processes connect with the same session key simultaneously (`AuthKeyDuplicatedError`).
* **File Locking**: `tg-cli` uses `/tmp/telegram-mcp.lock` to ensure no two processes use the session concurrently.
* **Instant Lock Clearing (`tg-cli unlock`)**: If a background MCP server or orphaned process holds the lock, run `tg-cli unlock` to cleanly terminate it and free the lock.
* **Force Takeover (`--force`)**: Pass `--force` to any command (e.g. `tg-cli chat @bot --force` or `tg-cli status --force`) to automatically terminate conflicting background processes before connecting.
* **Environment Matching**: Test Server sessions (DC 2 Sandbox) and Production sessions cannot be cross-connected. The CLI will abort with a clear warning before Telegram revokes the key.
---
## ๐งช Testing
Run the automated unit test suite with `pytest`:
```bash
python3 -m pytest tests -v
```
---
## ๐ License
This project is licensed under the [MIT License](LICENSE).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessUnresponsive