Files
mtproxy_checker/cmd/tdlib_ping
Denozordec e0c289e08d
Publish mtproxy_checker Docker image / test (push) Successful in 7s
Build tdlib_ping (linux/amd64) / build-tdlib-ping (push) Failing after 30s
Publish mtproxy_checker Docker image / build-and-push (push) Successful in 49s
Update tdlib_ping workflow to trigger on any branch and tag, aligning with Docker workflow triggers. Revise README to reflect changes in CI build process, clarifying artifact retrieval for both branch pushes and manual runs.
2026-04-11 16:24:52 +07:00
..

tdlib_ping — официальный JSON-интерфейс TDLib

Бинарник вызывает td_create_client_id / td_send / td_receive / td_execute из td/telegram/td_json_client.h (рекомендуемый multi-client API), без Node.js.

Контракт stdout — одна строка JSON для mtproxy_checkerd:

{"ok":true,"error":"","exit_code":0}

Сборка в CI (Gitea)

В репозитории есть workflow .gitea/workflows/tdlib_ping.yaml (те же триггеры, что и у публикации Docker: push по любой ветке и любому тегу, плюс workflow_dispatch):

  • при push тега собирается tdlib_ping-linux-amd64 и прикрепляется к релизу с этим тегом (релиз создаётся автоматически, если его ещё нет);
  • при push ветки или ручном запуске — только артефакт прогона в Actions.

Скачайте бинарник со страницы релиза или из вкладки Actions → нужный run → Artifacts. На сервере положите в каталог вроде /usr/local/bin, выставьте chmod +x, задайте MTPROXY_TDLIB_HELPER.

Сборка

Linux (Debian/Ubuntu), установите заголовки и библиотеку, например:

sudo apt-get install -y libtdjson-dev   # имя пакета может отличаться по дистрибутиву
export CGO_ENABLED=1
go build -tags=tdlib -o tdlib_ping ./cmd/tdlib_ping

macOS: brew install tdlib, затем при необходимости export PKG_CONFIG_PATH=... если pkg-config --libs tdlib находит -ltdjson.

Без libtdjson линковка завершится ошибкой — это ожидаемо.

Сборка без тега (как часть go build ./...):

go build ./cmd/tdlib_ping

получится заглушка, которая печатает JSON с exit_code: 2 и пояснением — чтобы репозиторий собирался без TDLib.

Переменные окружения

Переменная По умолчанию Назначение
MTPROXY_TD_API_ID 12345 Замените на значение с my.telegram.org
MTPROXY_TD_API_HASH демо-строка из примера TDLib Замените на свой api_hash
MTPROXY_TDLIB_PING_MS 45000 Общий дедлайн цикла (мс)
MTPROXY_TDLIB_DATABASE_DIR пусто Если задан — постоянный каталог для database_directory / files_directory (подкаталоги db/ и files/ создаются автоматически). Иначе — временный каталог на каждый запуск
MTPROXY_TD_USE_TEST_DC пусто Если 1use_test_dc: true в setTdlibParameters (иногда помогает обойти ожидание телефона на «чистой» БД)

Запуск

./tdlib_ping 'tg://proxy?server=HOST&port=PORT&secret=HEX'

Если MTPROXY_TDLIB_DATABASE_DIR не задан, каталоги БД TDLib создаются под уникальным префиксом во временном каталоге на каждый запуск (и удаляются после выхода).

Ограничение

При первом запуске с «чистой» БД TDLib может перейти в authorizationStateWaitPhoneNumber. Тогда helper завершится с ошибкой в JSON — нужен уже проинициализированный database_directory или рабочий сценарий входа. Для типичного мониторинга MTProxy на выделенной машине обычно достаточно повторных запусков с фиксированным каталогом (MTPROXY_TDLIB_DATABASE_DIR, см. таблицу выше).