Spaces:
Paused
Paused
File size: 19,497 Bytes
35fed95 ffa3d9d 60bdff2 35fed95 908bd01 35fed95 28ab557 60bdff2 28ab557 ffa3d9d 28ab557 da6bb93 60bdff2 da6bb93 60bdff2 da6bb93 28ab557 da6bb93 28ab557 da6bb93 60bdff2 da6bb93 60bdff2 da6bb93 60bdff2 da6bb93 60bdff2 da6bb93 28ab557 da6bb93 28ab557 da6bb93 ffa3d9d da6bb93 28ab557 da6bb93 28ab557 da6bb93 28ab557 da6bb93 28ab557 da6bb93 28ab557 da6bb93 28ab557 da6bb93 908bd01 28ab557 ffa3d9d 908bd01 da6bb93 908bd01 da6bb93 908bd01 da6bb93 908bd01 da6bb93 28ab557 da6bb93 908bd01 da6bb93 908bd01 da6bb93 908bd01 da6bb93 908bd01 da6bb93 908bd01 da6bb93 28ab557 da6bb93 ffa3d9d da6bb93 28ab557 da6bb93 28ab557 da6bb93 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
---
title: Telegram Bot API Proxy & Tools
emoji: 🚀
colorFrom: green
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
---
<!-- Navigation -->
<p align="center">
<a href="#ru">Русский</a> • <a href="#en">English</a>
</p>
---
<a id="ru"></a>
## 🇷🇺 Прокси Telegram Bot API с расширенными инструментами
Этот Space запускает локальный сервер Telegram Bot API (на основе официальной сборки TDLib) и предоставляет многофункциональное Node.js приложение-прокси с дополнительными инструментами для управления файлами и генерации ссылок.
**Посетите корневой URL вашего Space для интерактивной документации по API.**
### 1. Конфигурация
#### 1.1. Секреты (Обязательные и Опциональные)
Эти переменные должны быть установлены как "Secrets" в настройках вашего Hugging Face Space (`Settings -> Secrets`).
| Переменная | Обязательность | Описание | Пример значения |
| :-------------------------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------- |
| `TELEGRAM_API_ID` | **Обязательно** | Ваш API ID, полученный от Telegram (my.telegram.org). | `1234567` |
| `TELEGRAM_API_HASH` | **Обязательно** | Ваш API Hash, полученный от Telegram. | `0123456789abcdef0123456789abcdef` |
| `GITHUB_TOKEN` | Опционально | Персональный токен доступа GitHub с правом `gist`. Необходим для автоматического обновления Gist с информацией о Space. | `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
| `ENV_GIST_ID` | Опционально | ID существующего GitHub Gist, в который будет записываться информация. Требуется, если указан `GITHUB_TOKEN`. | `abcdef0123456789abcdef0123456789` |
| `LINK_ENCRYPTION_KEY` | Опционально | Секретная фраза для шифрования полезной нагрузки в ссылках `/downloadEncrypted`. Если не указана, генерация зашифрованных ссылок отключена. | `ОченьДлинныйИСлучайныйКлюч123!` |
| `GITHUB_USERNAME` | Опционально | Ваш логин на GitHub. Используется для формирования ссылки на Gist. Если не указан, но `GITHUB_TOKEN` и `ENV_GIST_ID` есть, Gist все равно будет обновляться. | `ваш_логин_github` |
#### 1.2. Переменные Окружения (Настраиваемые с Значениями по Умолчанию)
Эти переменные можно переопределить, добавив их в "Secrets" вашего Space. Если они не переопределены, используются значения по умолчанию.
| Переменная | По умолчанию | Описание |
| :----------------------------- | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `INTERNAL_TELEGRAM_API_PORT` | `8081` | Внутренний порт, на котором запускается сам процесс `telegram-bot-api`. Node.js приложение проксирует запросы на этот порт. |
| `TELEGRAM_DATA_DIR` | `/var/lib/telegram-bot-api` | Директория на сервере, где `telegram-bot-api` хранит свои данные, включая кэшированные файлы. |
| `FILES_TTL` | `-1` | Время жизни (TTL) для файлов в кэше `TELEGRAM_DATA_DIR` в часах. Файлы старше этого времени будут периодически удаляться. Значение `-1` отключает автоматическую очистку. |
| `PROXY_TELEGRAM_PATH_PREFIX` | `/tg` | URL-префикс, по которому будет доступен "чистый" прокси к Telegram Bot API. Например, `https://[SPACE_URL]/tg/bot<TOKEN>/METHOD`. |
| `DEFAULT_LINK_EXPIRY_HOURS` | `24` | Время жизни по умолчанию в часах для генерируемых зашифрованных ссылок (через эндпоинт `/file/.../getFile` или при автоматическом расширении ответов). Значение `-1` означает бессрочные ссылки. |
### 2. Основные возможности и эндпоинты
**Посетите корневой URL вашего Space (`https://[YOUR_SPACE_URL]/`) для интерактивной HTML-документации по всем эндпоинтам.**
Ниже приведено краткое описание:
#### 2.1. "Чистый" Прокси Telegram Bot API
* **URL**: `https://[YOUR_SPACE_URL]/tg/bot<YOUR_BOT_TOKEN>/<METHOD_NAME>`
* **Описание**: Прямое проксирование запросов к вашему локальному экземпляру Telegram Bot API. Возвращает **неизмененный** ответ от API. Используйте этот эндпоинт, если вам нужен стандартный ответ API без каких-либо дополнений.
#### 2.2. Расширенные Инструменты и Операции с Файлами
##### Базовый путь для файловых операций: `https://[YOUR_SPACE_URL]/file`
1. **Получение информации о файле с дополнительными ссылками:**
* **Эндпоинт**: `GET /file/<YOUR_BOT_TOKEN>/getFile?file_id=<FILE_ID>`
* **Описание**: Делает запрос к локальному Telegram API (`getFile`), получает стандартный ответ и **дополняет** его следующими полями:
* `direct_download_link_by_path`: Прямая ссылка для скачивания файла по его относительному пути в кэше.
* `direct_download_link_by_id`: Прямая ссылка для скачивания файла через эндпоинт `/downloadFile`.
* `delete_link_by_path`: Ссылка для удаления файла по его относительному пути в кэше.
* `delete_link_by_id`: Ссылка для удаления файла по его ID.
* `encrypted_download_link_by_path` (если `LINK_ENCRYPTION_KEY` установлен): Зашифрованная ссылка на скачивание по пути с ограниченным сроком действия.
* `encrypted_download_link_by_id` (если `LINK_ENCRYPTION_KEY` установлен): Зашифрованная ссылка на скачивание по ID с ограниченным сроком действия.
* **Параметр `link_expiry_hours`**: Можно добавить к запросу (например, `?file_id=...&link_expiry_hours=2`), чтобы указать время жизни для генерируемых зашифрованных ссылок (в часах, `-1` для бессрочных). По умолчанию используется `DEFAULT_LINK_EXPIRY_HOURS`.
2. **Другие файловые операции**:
* `GET /stats`: Статистика по файлам в `TELEGRAM_DATA_DIR`.
* Опциональный query-параметр `run_ttl_now=true` для немедленного запуска очистки старых файлов.
* `GET /list?token=<YOUR_BOT_TOKEN>`: Список файлов для указанного бота с размерами.
* `GET /<YOUR_BOT_TOKEN>/downloadFile?file_id=<FILE_ID>`: Скачать файл по ID.
* `GET /<RELATIVE_PATH_INCLUDING_BOT_TOKEN_DIR>`: Скачать файл по его полному относительному пути в кэше (например, `/bot123:abc/photos/file_0.jpg`).
* `GET /downloadEncrypted?payload=<ENCRYPTED_PAYLOAD>`: Скачать файл по зашифрованной полезной нагрузке (полученной из эндпоинта `getFile`).
* `GET /deleteFile?file=<RELATIVE_PATH_INCLUDING_BOT_TOKEN_DIR>`: Удалить файл по его полному относительному пути.
* `GET /<YOUR_BOT_TOKEN>/deleteById?file_id=<FILE_ID>`: Удалить файл по ID.
### 3. Информация в Gist
Если настроены `GITHUB_TOKEN` и `ENV_GIST_ID`, информация о вашем Space (включая полезные URL) будет автоматически обновляться в указанном GitHub Gist (в файле с именем `hf_space_telegram_bot_api_proxy_info.json`).
### 4. Важно о путях к файлам
* Локальный `telegram-bot-api` обычно сохраняет файлы в подкаталоге, названном в честь токена бота (например, `/var/lib/telegram-bot-api/bot123:abc/...`). Файлы в этом кэше могут не иметь расширений или иметь числовые суффиксы.
* Относительные пути, используемые в URL инструментов (например, для скачивания или удаления по пути), должны включать эту структуру каталога токена: `bot<TOKEN>/<category>/<filename_in_cache>`.
* При скачивании файлов приложение пытается установить корректный `Content-Disposition` и `Content-Type` для лучшего взаимодействия с браузером.
---
<br>
<a id="en"></a>
## 🇬🇧 Telegram Bot API Proxy & Tools
This Space runs a local Telegram Bot API server (based on the official TDLib build) and provides a feature-rich Node.js proxy application with additional tools for file management and link generation.
**Visit the root URL of your Space for interactive API documentation.**
### 1. Configuration
#### 1.1. Secrets (Required and Optional)
These variables must be set as "Secrets" in your Hugging Face Space settings (`Settings -> Secrets`).
| Variable | Requirement | Description | Example Value |
| :-------------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------- |
| `TELEGRAM_API_ID` | **Required** | Your API ID obtained from Telegram (my.telegram.org). | `1234567` |
| `TELEGRAM_API_HASH` | **Required** | Your API Hash obtained from Telegram. | `0123456789abcdef0123456789abcdef` |
| `GITHUB_TOKEN` | Optional | GitHub Personal Access Token with `gist` scope. Needed for automatic Gist updates with Space information. | `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
| `ENV_GIST_ID` | Optional | ID of an existing GitHub Gist where information will be written. Required if `GITHUB_TOKEN` is provided. | `abcdef0123456789abcdef0123456789` |
| `LINK_ENCRYPTION_KEY` | Optional | Secret passphrase for encrypting payloads in `/downloadEncrypted` links. If not set, encrypted link generation is disabled. | `AVeryLongAndRandomKey123!` |
| `GITHUB_USERNAME` | Optional | Your GitHub username. Used for forming the Gist link. If not set, but `GITHUB_TOKEN` and `ENV_GIST_ID` are, Gist will still be updated. | `your_github_username` |
#### 1.2. Environment Variables (Configurable with Defaults)
These variables can be overridden by adding them to your Space "Secrets". If not overridden, default values are used.
| Variable | Default Value | Description |
| :----------------------------- | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `INTERNAL_TELEGRAM_API_PORT` | `8081` | The internal port on which the `telegram-bot-api` process itself runs. The Node.js application proxies requests to this port. |
| `TELEGRAM_DATA_DIR` | `/var/lib/telegram-bot-api` | The directory on the server where `telegram-bot-api` stores its data, including cached files. |
| `FILES_TTL` | `-1` | Time-to-live (TTL) for files in the `TELEGRAM_DATA_DIR` cache, in hours. Files older than this will be periodically deleted. A value of `-1` disables automatic cleanup. |
| `PROXY_TELEGRAM_PATH_PREFIX` | `/tg` | The URL prefix where the "clean" proxy to the Telegram Bot API will be available. E.g., `https://[SPACE_URL]/tg/bot<TOKEN>/METHOD`. |
| `DEFAULT_LINK_EXPIRY_HOURS` | `24` | Default lifetime in hours for generated encrypted links (via the `/file/.../getFile` endpoint or when auto-augmenting responses). A value of `-1` means links do not expire. |
### 2. Core Features & Endpoints
**Visit the root URL of your Space (`https://[YOUR_SPACE_URL]/`) for interactive HTML documentation of all endpoints.**
Below is a brief overview:
#### 2.1. "Clean" Telegram Bot API Proxy
* **URL**: `https://[YOUR_SPACE_URL]/tg/bot<YOUR_BOT_TOKEN>/<METHOD_NAME>`
* **Description**: Directly proxies requests to your local Telegram Bot API instance. Returns the **unmodified** response from the API. Use this endpoint if you need the standard API response without any additions.
#### 2.2. Enhanced Tools & File Operations
##### Base path for file operations: `https://[YOUR_SPACE_URL]/file`
1. **Get File Info with Augmented Links:**
* **Endpoint**: `GET /file/<YOUR_BOT_TOKEN>/getFile?file_id=<FILE_ID>`
* **Description**: Makes a request to the local Telegram API (`getFile`), gets the standard response, and then **augments** it with the following fields:
* `direct_download_link_by_path`: Direct link to download the file by its relative path in the cache.
* `direct_download_link_by_id`: Direct link to download the file via the `/downloadFile` endpoint.
* `delete_link_by_path`: Link to delete the file by its relative path in the cache.
* `delete_link_by_id`: Link to delete the file by its ID.
* `encrypted_download_link_by_path` (if `LINK_ENCRYPTION_KEY` is set): Encrypted, time-limited download link by path.
* `encrypted_download_link_by_id` (if `LINK_ENCRYPTION_KEY` is set): Encrypted, time-limited download link by ID.
* **`link_expiry_hours` parameter**: Can be added to the request (e.g., `?file_id=...&link_expiry_hours=2`) to specify the lifetime for generated encrypted links (in hours, `-1` for indefinite). Defaults to `DEFAULT_LINK_EXPIRY_HOURS`.
2. **Other File Operations**:
* `GET /stats`: Statistics for files in `TELEGRAM_DATA_DIR`.
* Optional query parameter `run_ttl_now=true` to immediately trigger cleanup of old files.
* `GET /list?token=<YOUR_BOT_TOKEN>`: List files for the specified bot with sizes.
* `GET /<YOUR_BOT_TOKEN>/downloadFile?file_id=<FILE_ID>`: Download a file by its ID.
* `GET /<RELATIVE_PATH_INCLUDING_BOT_TOKEN_DIR>`: Download a file by its full relative path in the cache (e.g., `/bot123:abc/photos/file_0.jpg`).
* `GET /downloadEncrypted?payload=<ENCRYPTED_PAYLOAD>`: Download a file using an encrypted payload (obtained from the `getFile` endpoint).
* `GET /deleteFile?file=<RELATIVE_PATH_INCLUDING_BOT_TOKEN_DIR>`: Delete a file by its full relative path.
* `GET /<YOUR_BOT_TOKEN>/deleteById?file_id=<FILE_ID>`: Delete a file by its ID.
### 3. Gist Information
If `GITHUB_TOKEN` and `ENV_GIST_ID` are configured, information about your Space (including useful URLs) will be automatically updated in the specified GitHub Gist (in a file named `hf_space_telegram_bot_api_proxy_info.json`).
### 4. Important Notes on File Paths
* The local `telegram-bot-api` typically saves files in a subdirectory named after the bot token (e.g., `/var/lib/telegram-bot-api/bot123:abc/...`). Files in this cache may not have extensions or may have numerical suffixes.
* Relative paths used in tool URLs (e.g., for download or delete by path) must include this bot token directory structure: `bot<TOKEN>/<category>/<filename_in_cache>`.
* When downloading files, the application attempts to set correct `Content-Disposition` and `Content-Type` headers for better browser interaction. |