WalleGriffkinder commited on
Commit
908bd01
·
verified ·
1 Parent(s): 730d794

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +97 -22
README.md CHANGED
@@ -4,20 +4,28 @@ emoji: 🛠️
4
  colorFrom: green
5
  colorTo: blue
6
  sdk: docker
7
- app_port: 7860 # Основной порт Telegram Bot API
8
  pinned: false
9
  ---
10
 
11
- ## Telegram Bot API с расширенными инструментами и туннелем
12
 
13
- Этот Space запускает локальный сервер Telegram Bot API и предоставляет дополнительные инструменты через Node.js Express приложение, доступное по туннелю `localhost.run`:
14
 
15
- 1. **Статистика по файлам**: Количество файлов и общий размер в директории данных Telegram Bot API.
16
- 2. **Скачивание файлов**: Возможность скачивать файлы (например, аватарки пользователей), пути к которым возвращает локальный Telegram Bot API.
17
- 3. **Очистка старых файлов (TTL)**: Автоматическое удаление старых файлов из кэша Telegram Bot API.
18
- 4. **Обновление Gist**: Информация о Space и URL туннеля к инструментам сохраняется в GitHub Gist.
 
 
 
 
 
 
 
 
19
 
20
- ### Необходимые секреты
21
 
22
  Добавьте следующие секреты в настройках вашего Space (`Settings -> Secrets`):
23
 
@@ -25,21 +33,88 @@ pinned: false
25
  * `TELEGRAM_API_HASH`: Ваш API Hash от Telegram.
26
  * `GITHUB_USERNAME`: Ваш логин на GitHub (для обновления Gist).
27
  * `GITHUB_TOKEN`: Ваш Personal Access Token от GitHub с правом `gist` (для обновления Gist).
28
- * `ENV_GIST_ID`: ID вашего GitHub Gist, куда будет сохраняться информация о Space и URL туннеля. Создайте пустой Gist и скопируйте его ID из URL.
 
29
 
30
- ### Переменные окружения (можно переопределить через секреты)
31
 
32
- * `EXPRESS_PORT`: Внутренний порт для Node.js Express приложения (по умолчанию `3001`).
33
- * `TELEGRAM_DATA_DIR`: Директория данных для `telegram-bot-api` (по умолчанию `/var/lib/telegram-bot-api`).
34
- * `FILES_TTL`: Время жизни файлов в часах. Старые файлы будут удаляться. Установите `-1` для отключения (по умолчанию `-1`).
 
35
 
36
- ### Как использовать
37
 
38
- 1. **Основной API**: Доступен через стандартный URL вашего Space на порту `7860`.
39
- 2. **Инструменты (статистика, файлы)**:
40
- * URL туннеля будет выведен в логах Space при запуске и сохранен в указанный `ENV_GIST_ID`.
41
- * **Статистика**: `[URL_туннеля]/stats`
42
- * **Скачивание файла**:
43
- Если `telegram-bot-api` (например, в ответе `getMe` для поля `photo.small_file_id`) вернул локальный путь типа `/var/lib/telegram-bot-api/photos/12345/file_0.jpg`, то для его скачивания используйте:
44
- `[URL_туннеля]/file/photos/12345/file_0.jpg`
45
- **Важно**: Часть `/var/lib/telegram-bot-api/` из пути отбрасывается, используется только относительный путь внутри этой директории.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  colorFrom: green
5
  colorTo: blue
6
  sdk: docker
7
+ app_port: 7860
8
  pinned: false
9
  ---
10
 
11
+ ## Telegram Bot API с расширенными инструментами и прокси (Русский)
12
 
13
+ Этот Space запускает локальный сервер Telegram Bot API и предоставляет расширенное приложение Node.js Express, доступное по URL-адресу вашего Space, предлагая:
14
 
15
+ 1. **Проксированный Telegram Bot API**: Доступ к вашему локальному Telegram Bot API через `https://[YOUR_SPACE_URL]/tg/bot<YOUR_BOT_TOKEN>/<METHOD_NAME>`.
16
+ 2. **Статистика файлов**: Получение количества и общего размера файлов в каталоге данных Telegram Bot API через `https://[YOUR_SPACE_URL]/stats`.
17
+ 3. **Расширенные операции с файлами (через префикс `/file/`)**:
18
+ * **Список файлов**: `.../file/list?token=<BOT_TOKEN>` - Список всех файлов для указанного бота, включая размеры отдельных файлов и общий размер перечисленных файлов.
19
+ * **Получение информации о файле и ссылок**: `.../file/<BOT_TOKEN>/getFile?file_id=<FILE_ID>` - Возвращает ответ `getFile` от Telegram, дополненный прямыми ссылками для скачивания (по пути, по ID и зашифрованной версией).
20
+ * **Скачивание по ID**: `.../file/<BOT_TOKEN>/downloadFile?file_id=<FILE_ID>` - Прямое скачивание файла.
21
+ * **Скачивание по пути**: `.../file/<BOT_TOKEN_AS_DIR>/<PATH_TO_FILE_INSIDE_BOT_DIR>` - Скачивание, если известен точный относительный путь (например, `.../file/bot123:abc/photos/file_0.jpg`).
22
+ * **Зашифрованное скачивание**: `.../file/downloadEncrypted?payload=<ENCRYPTED_PAYLOAD>` - Скачивание с использованием полезной нагрузки из эндпоинта `getFile` (скрывает токен бота и ID файла из прямого URL).
23
+ * **Удаление файла по пути**: `.../file/deleteFile?file=<BOT_TOKEN_AS_DIR>/<PATH_TO_FILE_INSIDE_BOT_DIR>` - Удаление файла из кэша с использованием его прямого пути.
24
+ * **Удаление файла по ID**: `.../file/<BOT_TOKEN>/deleteById?file_id=<FILE_ID>` - Удаление файла из кэша с использованием токена бота и ID файла (внутренне вызывает `getFile` для определения пути).
25
+ 4. **Очистка кэша (TTL)**: Автоматическое удаление старых файлов из кэша Telegram Bot API.
26
+ 5. **Агрегированное обновление Gist**: Информация об этом Space (включая URL-адреса инструментов) сохраняется в указанный GitHub Gist, агрегируя информацию, если несколько Space указывают на один и тот же файл Gist.
27
 
28
+ ### Необходимые секреты (Русский)
29
 
30
  Добавьте следующие секреты в настройках вашего Space (`Settings -> Secrets`):
31
 
 
33
  * `TELEGRAM_API_HASH`: Ваш API Hash от Telegram.
34
  * `GITHUB_USERNAME`: Ваш логин на GitHub (для обновления Gist).
35
  * `GITHUB_TOKEN`: Ваш Personal Access Token от GitHub с правом `gist` (для обновления Gist).
36
+ * `ENV_GIST_ID`: ID вашего GitHub Gist, куда будет сохраняться/обновляться информация о Space. Создайте пустой Gist и скопируйте его ID из URL.
37
+ * `LINK_ENCRYPTION_KEY`: Секретная фраза (например, длинная случайная строка), используемая для генерации зашифрованных ссылок на скачивание. Если не установлена, зашифрованные ссылки генерироваться не будут.
38
 
39
+ ### Переменные окружения (можно переопределить через секреты) (Русский)
40
 
41
+ * `INTERNAL_TELEGRAM_API_PORT`: Порт для внутреннего процесса `telegram-bot-api` (по умолчанию: `8081`). Приложение Node.js проксирует запросы на этот порт.
42
+ * `TELEGRAM_DATA_DIR`: Каталог данных для `telegram-bot-api` (по умолчанию: `/var/lib/telegram-bot-api`).
43
+ * `FILES_TTL`: Время жизни кэшированных файлов в часах. Старые файлы автоматически удаляются. Установите `-1` для отключения (по умолчанию: `-1`).
44
+ * `PROXY_TELEGRAM_PATH_PREFIX`: Префикс URL для проксирования вызовов Telegram API (по умолчанию: `/tg`).
45
 
46
+ ### Как использовать (Русский)
47
 
48
+ 1. **Корневой эндпоинт**: `https://[YOUR_SPACE_URL]/` - Предоставляет JSON-список доступных основных эндпоинтов.
49
+ 2. **Прокси Telegram Bot API**:
50
+ * Используйте `https://[YOUR_SPACE_URL]/tg/bot<YOUR_BOT_TOKEN>/<METHOD_NAME>` вместо стандартного URL `api.telegram.org`.
51
+ 3. **Инструменты**:
52
+ * **Статистика**: `https://[YOUR_SPACE_URL]/stats`
53
+ * **Операции с файлами**: Все начинаются с `https://[YOUR_SPACE_URL]/file/`. Примеры:
54
+ * **Список файлов для вашего бота**: `.../file/list?token=12345:ABCDEF...` (Ответ включает размеры отдельных файлов и общий размер файлов этого бота).
55
+ * **Получение информации о файле**: `.../file/12345:ABCDEF.../getFile?file_id=SOME_FILE_ID`
56
+ * **Скачивание файла напрямую по его пути**: `https://[YOUR_SPACE_URL]/file/bot12345:ABCDEF.../photos/file_0.jpg`
57
+ * **Удаление файла по пути**: `https://[YOUR_SPACE_URL]/file/deleteFile?file=bot12345:ABCDEF.../photos/file_0.jpg`
58
+ * **Удаление файла по ID**: `https://[YOUR_SPACE_URL]/file/12345:ABCDEF.../deleteById?file_id=SOME_FILE_ID`
59
+ * Gist, указанный `ENV_GIST_ID`, будет содержать обновленный JSON-файл (`hf_space_tg_tools_info.json`) с URL-адресами, специфичными для вашего экземпляра Space.
60
+
61
+ **Важные замечания о путях к файлам (Русский):**
62
+ * Когда `telegram-bot-api` сохраняет файлы, он обычно использует подкаталог, названный в честь токена бота (например, `/var/lib/telegram-bot-api/bot12345:ABCDEF.../`).
63
+ * Для эндпоинтов, таких как прямое скачивание по пути (`/file/<filepath>`) или удаление по пути (`/file/deleteFile?file=<filepath>`), часть `<filepath>` должна включать эту структуру каталогов токена бота, например, `bot12345:ABCDEF.../photos/file_0.jpg`.
64
+
65
+ ---
66
+ <br>
67
+
68
+ ## Telegram Bot API with Enhanced Tools and Proxy (English)
69
+
70
+ This Space runs a local Telegram Bot API server and provides an enhanced Node.js Express application, accessible via your Space URL, offering:
71
+
72
+ 1. **Proxied Telegram Bot API**: Access your local Telegram Bot API via `https://[YOUR_SPACE_URL]/tg/bot<YOUR_BOT_TOKEN>/<METHOD_NAME>`.
73
+ 2. **File Statistics**: Get count and total size of files in the Telegram Bot API data directory via `https://[YOUR_SPACE_URL]/stats`.
74
+ 3. **Advanced File Operations (via `/file/` prefix)**:
75
+ * **List Files**: `.../file/list?token=<BOT_TOKEN>` - List all files for a specific bot, including individual file sizes and the total size of listed files.
76
+ * **Get File Info & Links**: `.../file/<BOT_TOKEN>/getFile?file_id=<FILE_ID>` - Returns Telegram's `getFile` response, augmented with direct download links (by path, by ID, and an encrypted version).
77
+ * **Download by ID**: `.../file/<BOT_TOKEN>/downloadFile?file_id=<FILE_ID>` - Directly downloads the file.
78
+ * **Download by Path**: `.../file/<BOT_TOKEN_AS_DIR>/<PATH_TO_FILE_INSIDE_BOT_DIR>` - Downloads if you know the exact relative path (e.g., `.../file/bot123:abc/photos/file_0.jpg`).
79
+ * **Encrypted Download**: `.../file/downloadEncrypted?payload=<ENCRYPTED_PAYLOAD>` - Downloads using a payload from the `getFile` endpoint (hides bot token and file ID from the direct URL).
80
+ * **Delete File by Path**: `.../file/deleteFile?file=<BOT_TOKEN_AS_DIR>/<PATH_TO_FILE_INSIDE_BOT_DIR>` - Deletes a file from the cache using its direct path.
81
+ * **Delete File by ID**: `.../file/<BOT_TOKEN>/deleteById?file_id=<FILE_ID>` - Deletes a file from the cache using its bot token and file ID (internally calls `getFile` to find the path).
82
+ 4. **Cache Cleanup (TTL)**: Automatic deletion of old files from the Telegram Bot API cache.
83
+ 5. **Aggregated Gist Update**: Information about this Space (including tool URLs) is saved to a specified GitHub Gist, aggregating info if multiple spaces point to the same Gist file.
84
+
85
+ ### Necessary Secrets (English)
86
+
87
+ Add the following secrets in your Space settings (`Settings -> Secrets`):
88
+
89
+ * `TELEGRAM_API_ID`: Your API ID from Telegram.
90
+ * `TELEGRAM_API_HASH`: Your API Hash from Telegram.
91
+ * `GITHUB_USERNAME`: Your GitHub login (for updating the Gist).
92
+ * `GITHUB_TOKEN`: Your GitHub Personal Access Token with `gist` scope.
93
+ * `ENV_GIST_ID`: ID of your GitHub Gist where Space info will be saved/updated. Create an empty Gist and copy its ID from the URL.
94
+ * `LINK_ENCRYPTION_KEY`: A secret passphrase (e.g., a long random string) used for generating encrypted download links. If not set, encrypted links will not be generated.
95
+
96
+ ### Environment Variables (can be overridden via secrets) (English)
97
+
98
+ * `INTERNAL_TELEGRAM_API_PORT`: Port for the internal `telegram-bot-api` process (default: `8081`). The Node.js app proxies to this.
99
+ * `TELEGRAM_DATA_DIR`: Data directory for `telegram-bot-api` (default: `/var/lib/telegram-bot-api`).
100
+ * `FILES_TTL`: Time-to-live for cached files in hours. Older files are auto-deleted. Set to `-1` to disable (default: `-1`).
101
+ * `PROXY_TELEGRAM_PATH_PREFIX`: URL prefix for proxying Telegram API calls (default: `/tg`).
102
+
103
+ ### How to Use (English)
104
+
105
+ 1. **Root Endpoint**: `https://[YOUR_SPACE_URL]/` - Provides a JSON list of available main endpoints.
106
+ 2. **Telegram Bot API Proxy**:
107
+ * Use `https://[YOUR_SPACE_URL]/tg/bot<YOUR_BOT_TOKEN>/<METHOD_NAME>` instead of the standard `api.telegram.org` URL.
108
+ 3. **Tools**:
109
+ * **Statistics**: `https://[YOUR_SPACE_URL]/stats`
110
+ * **File Operations**: All start with `https://[YOUR_SPACE_URL]/file/`. Examples:
111
+ * **List files for your bot**: `.../file/list?token=12345:ABCDEF...` (Response includes individual file sizes and total size for this bot's files).
112
+ * **Get info for a file**: `.../file/12345:ABCDEF.../getFile?file_id=SOME_FILE_ID`
113
+ * **Download a file directly using its path**: `https://[YOUR_SPACE_URL]/file/bot12345:ABCDEF.../photos/file_0.jpg`
114
+ * **Delete a file by path**: `https://[YOUR_SPACE_URL]/file/deleteFile?file=bot12345:ABCDEF.../photos/file_0.jpg`
115
+ * **Delete a file by ID**: `https://[YOUR_SPACE_URL]/file/12345:ABCDEF.../deleteById?file_id=SOME_FILE_ID`
116
+ * The Gist specified by `ENV_GIST_ID` will contain an updated JSON file (`hf_space_tg_tools_info.json`) with URLs specific to your Space instance.
117
+
118
+ **Important Notes on File Paths (English):**
119
+ * When `telegram-bot-api` saves files, it typically uses a subdirectory named after the bot token (e.g., `/var/lib/telegram-bot-api/bot12345:ABCDEF.../`).
120
+ * For endpoints like direct download by path (`/file/<filepath>`) or delete by path (`/file/deleteFile?file=<filepath>`), the `<filepath>` part must include this bot token directory structure, e.g., `bot12345:ABCDEF.../photos/file_0.jpg`.