Скилл для работы с Telegram MTProto через Telethon Bridge. Предоставляет доступ к 23 инструментам (telegram_*) для отправки сообщений, голосовых (ElevenLabs TTS), истории чатов, реакций, файлов, управления каналами и статистики.
Поддерживает Claude Code (прямые MCP-вызовы) и OpenClaw (через Gateway).
Claude Code / OpenClaw
│
▼
MCP Server (telethon-mcp/server.py) ← HTTP-обёртка над REST API
│
▼
REST API (telethon-bridge/server.py) ← Telethon MTProto + sag (ElevenLabs)
│
▼
SOCKS5 (127.0.0.1:1080) ← SSH-туннель ← VPS (45.13.225.151)
│
▼
Telegram DC
~/.openclaw/mcp-servers/telethon-mcp/server.py) — тонкая обёртка, HTTP-запросы к REST API~/.openclaw/workspace/general/telethon-bridge/server.py) — Telethon клиент + sag CLIsession/savant (SQLite), одна активная сессияgateway.mjs (порт 18793) — форвардит входящие от owner в OpenClaw агентtelethon-bridge.service (user, порт 18792), telegateway.service (user, порт 18793)MCP-сервер поддерживает переменную TG_ALLOWED_CHAT_IDS — список разрешённых chat_id через запятую. Если переменная установлена, write-операции (send, edit, delete, forward, react, click, file, voice, pin, read, audio, circle, channel about/delete, join) разрешены только для указанных чатов.
Установка в mcp.json:
"env": {
"TELEGATEWAY_URL": "http://127.0.0.1:18792",
"TG_ALLOWED_CHAT_IDS": "me,1144466778,kngserious55"
}
Read-операции (messages, chats, search, stats, get_chat, get_photo, get_chatlist, download_media) не ограничены.
В Claude Code все инструменты доступны как mcp__telethon-bridge__<имя>.
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_send | chat_id, text | Отправка текстового сообщения |
telegram_edit | chat_id, msg_id, text | Редактирование сообщения |
telegram_delete | chat_id, msg_ids[] | Удаление сообщений |
telegram_forward | from_chat, to_chat, msg_ids[] | Пересылка сообщений |
telegram_pin | chat_id, msg_id, unpin? | Закреп/откреп сообщения |
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_messages | chat_id, limit?, offset_id? | История сообщений с пагинацией |
telegram_search | chat_id, query, limit?, from_user? | Поиск сообщений |
telegram_read | chat_id, max_id? | Отметить как прочитанное |
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_chats | limit? (default 30) | Список диалогов |
telegram_get_chat | chat_id | Инфо о чате/канале/пользователе |
telegram_me | — | Инфо о текущем пользователе |
telegram_get_photo | chat_id? (default "me") | Скачать фото профиля |
telegram_join_chat | hash | Вступить по invite-hash |
telegram_get_chatlist | slug | Каналы из t.me/addlist |
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_file | chat_id, file_path, caption? | Отправка файла (документ) |
telegram_voice | chat_id, text, voice? (default "Roger") | Voice note через ElevenLabs |
telegram_send_audio | chat_id, file_path, title?, performer? | Аудиофайл с тегами |
telegram_send_circle | chat_id, file_path | Круглое видео (video note) |
telegram_download_media | chat_id, msg_id | Скачать медиа в /tmp/bridge_dl/ |
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_react | chat_id, msg_id, reaction | Реакция (эмодзи или document_id) |
telegram_click | chat_id, msg_id, row?, col? | Клик по inline-кнопке |
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_set_channel_about | chat_id, text | Установить описание канала |
telegram_delete_channel | chat_id | Удалить канал (только owner) |
| Инструмент | Параметры | Описание |
|---|---|---|
| --- | --- | --- |
telegram_stats | chat_id? (default "me"), days? (default 7) | Статистика чата |
Важно: chat_id принимает username (kngserious55), ID (1184174498), или "me" для сохранёнок.
telegram_voice вызывает sag CLI, который обращается к ElevenLabs API:
sag speak -v <voice> --model-id eleven_multilingual_v2 --format mp3_44100_192 -o <wav> <text>
ffmpeg -i <wav> -c:a libopus -b:a 192k -ar 48000 -ac 1 <ogg>
Telethon send_file(voice_note=True)
server.py)| Параметр | Значение |
|---|---|
| --- | --- |
| Модель | eleven_multilingual_v2 |
| Формат | mp3_44100_192 (192 kbps) |
| OGG кодек | Opus 192k, 48000 Hz, mono |
@savantbeats)Голос передаётся напрямую в sag (без маппинга). Имя должно существовать в ElevenLabs-аккаунте.
Женские: Sarah, Laura, Alice, Matilda, Jessica, Bella, Lily
Мужские: Adam, Roger, Charlie, George, Callum, River, Harry, Liam, Will, Eric, Chris, Brian, Daniel, Bill
| Задача | Рекомендация |
|---|---|
| --- | --- |
| Разговорный, casual | Roger, Adam |
| Деловой, профессиональный | Bella, Matilda |
| Яркий, эмоциональный | Jessica, Laura |
| Спокойный, тёплый | Sarah, Lily |
| Ошибка | Причина | Решение |
|---|---|---|
| --- | --- | --- |
500: Internal Server Error | Голос не существует в аккаунте ElevenLabs | Использовать голос из таблицы выше |
500: Voice error: ffmpeg ... | Неподдерживаемый sample rate | Opus поддерживает: 8000/12000/16000/24000/48000 |
sag: missing API key | ELEVENLABS_API_KEY не установлен | Проверить .env бриджа |
database is locked | Два клиента Telethon одновременно | Бридж держит одну сессию — не подключаться параллельно |
FloodWait | Бридж автоматически ретраит до 3 раз (capped 60s) | Ждать или уменьшить частоту |
mcp__telethon-bridge__telegram_send(chat_id="username", text="Привет!")
mcp__telethon-bridge__telegram_voice(chat_id="me", text="Привет, мир!", voice="Jessica")
mcp__telethon-bridge__telegram_messages(chat_id="username", limit=10)
mcp__telethon-bridge__telegram_chats(limit=30)
// → ищем в выдаче нужный username/ID
mcp__telethon-bridge__telegram_file(chat_id="username", file_path="/path/to/file.pdf")
mcp__telethon-bridge__telegram_react(chat_id="username", msg_id=12345, reaction="🔥")
| Claude Code | OpenClaw | |
|---|---|---|
| --- | --- | --- |
| Вызов инструментов | mcp__telethon-bridge__ | mcp.call_tool("telethon-bridge", " |
| TTS | Через telegram_voice | sag speak напрямую или telegram_voice |
| Доступ к файлам | Прямой (локальная ФС) | Через OpenClaw workspace |
| Перезапуск бриджа | systemctl --user restart telethon-bridge.service | Тоже самое |
| Логи бриджа | journalctl --user -u telethon-bridge.service | Тоже самое |
# Статус
systemctl --user status telethon-bridge.service
# Перезапуск (после правок server.py)
systemctl --user restart telethon-bridge.service
# Логи
journalctl --user -u telethon-bridge.service -f
# Ручной запуск (отладка)
cd ~/.openclaw/workspace/general/telethon-bridge
python3 server.py
# Убить зависший процесс
fuser -k 18792/tcp
# Проверить здоровье
curl -s http://127.0.0.1:18792/health
| Правило | Описание |
|---|---|
| --- | --- |
| Никакого спама | Не отправлять рекламные сообщения без явного запроса |
| Чувствительные данные | Не логировать содержимое сообщений |
| Rate limiting | Не более ~30 сообщений в минуту |
| Приватные чаты | Не читать ЛС без явного разрешения владельца аккаунта |
| FLOOD_WAIT | Бридж ретраит автоматически (до 3 попыток, capped 60s) |
| ALLOWED_CHAT_IDS | Ограничивает write-операции заданным списком чатов |
~/.openclaw/workspace/general/telethon-bridge/server.py~/.openclaw/mcp-servers/telethon-mcp/server.py~/.openclaw/workspace/general/telethon-bridge/gateway.mjs.env бриджа: ~/.openclaw/workspace/general/telethon-bridge/.env~/.config/systemd/user/telethon-bridge.serviceELEVENLABS_API_KEY в .env → https://api.elevenlabs.io/v1/voices/home/linuxbrew/.linuxbrew/bin/sag speak --help共 3 个版本