TDLib (библиотека базы данных Telegram) — это кроссплатформенная библиотека для создания клиентов Telegram. Его можно легко использовать практически из любого языка программирования.
Функции
Примеры и документация
Зависимости
Здание
Использование в проектах CMake C++
Использование в проектах Java
Использование в проектах .NET
Использование с другими языками программирования
Лицензия
TDLib
имеет множество преимуществ. В частности, TDLib
:
Кроссплатформенность : TDLib
можно использовать на Android, iOS, Windows, macOS, Linux, FreeBSD, OpenBSD, NetBSD, illumos, Windows Phone, WebAssembly, watchOS, tvOS, VisionOS, Tizen, Cygwin. Он также должен работать на других системах *nix с минимальными усилиями или без них.
Многоязычность : TDLib
можно легко использовать с любым языком программирования, поддерживающим функции C. Кроме того, у него уже есть собственные привязки Java (с использованием JNI
) и привязки .NET (с использованием C++/CLI
и C++/CX
).
Простота в использовании : TDLib
заботится обо всех деталях реализации сети, шифровании и локальном хранении данных.
Высокая производительность : в Telegram Bot API каждый экземпляр TDLib
одновременно обрабатывает более 25 000 активных ботов.
Хорошо документировано : все методы API TDLib
и общедоступные интерфейсы полностью документированы.
Последовательность : TDLib
гарантирует, что все обновления доставляются в правильном порядке.
Надежность : TDLib
остается стабильной при медленных и ненадежных подключениях к Интернету.
Безопасность : все локальные данные шифруются с использованием предоставленного пользователем ключа шифрования.
Полностью асинхронный : запросы к TDLib
не блокируют друг друга или что-либо еще, ответы отправляются, когда они доступны.
См. наше руководство по началу работы для описания основных концепций TDLib.
Взгляните на наши примеры.
См. генератор инструкций сборки TDLib для получения подробных инструкций о том, как собрать TDLib.
См. описание наших интерфейсов JSON, C++, Java и .NET.
См. схему td_api.tl или автоматически созданную HTML-документацию для получения списка всех доступных методов и классов TDLib
.
TDLib
зависит от:
Компилятор, совместимый с C++14 (Clang 3.4+, GCC 4.9+, MSVC 19.0+ (Visual Studio 2015+), Intel C++ Compiler 17+)
OpenSSL
zlib
gperf (только сборка)
CMake (3.0.2+, только сборка)
PHP (необязательно, для создания документации)
Самый простой способ собрать TDLib
— использовать наш генератор инструкций сборки TDLib. Вам нужно всего лишь выбрать язык программирования и целевую операционную систему, чтобы получить полные инструкции по сборке.
В общем, вам необходимо установить все зависимости TDLib
, войти в каталог, содержащий исходные коды TDLib
, и скомпилировать их с помощью CMake:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
Чтобы собрать TDLib
на устройствах с небольшим объемом памяти, вы можете запустить скрипт SplitSource.php перед компиляцией основного исходного кода TDLib
и скомпилировать только необходимые цели:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --target prepare_cross_compiling cd .. php SplitSource.php cd build cmake --build . --target tdjson cmake --build . --target tdjson_static cd .. php SplitSource.php --undo
В наших тестах clang 6.0 с libc++ требовал менее 500 МБ ОЗУ на файл, а GCC 4.9/6.3 использовал менее 1 ГБ ОЗУ на файл.
Для проектов C++, использующих CMake, лучший подход — собрать TDLib
как часть вашего проекта или установить его для всей системы.
Существует несколько библиотек, которые вы можете использовать в своем проекте CMake:
Td::TdJson, Td::TdJsonStatic — динамическая и статическая версии интерфейса JSON. Он имеет простой интерфейс C, поэтому его можно легко использовать с любым языком программирования, способным выполнять функции C. Дополнительную информацию см. в документации td_json_client.
Td::TdStatic — статическая библиотека с интерфейсом C++ для общего использования. Дополнительную информацию см. в документации ClientManager и Client.
Например, часть вашего CMakeLists.txt может выглядеть так:
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
Или вы можете установить TDLib
, а затем ссылаться на него в своем CMakeLists.txt следующим образом:
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
См. пример/cpp/CMakeLists.txt.
TDLib
предоставляет собственный интерфейс Java через JNI. Чтобы включить его, укажите параметр -DTD_ENABLE_JNI=ON
для CMake.
См. example/java для примера использования TDLib
из Java и подробные инструкции по сборке и использованию.
TDLib
предоставляет собственный интерфейс .NET через C++/CLI
и C++/CX
. Чтобы включить его, укажите параметр -DTD_ENABLE_DOTNET=ON
для CMake. .NET Core поддерживает C++/CLI
только начиная с версии 3.1 и только в Windows, поэтому, если используется более старая версия .NET Core или требуется переносимость, вместо этого следует использовать интерфейс TDLib
JSON через P/Invoke.
См. example/csharp, где приведен пример использования TDLib
из C#, а также подробные инструкции по сборке и использованию. См. пример использования TDLib
из приложения UWP на C# и подробные инструкции по сборке и использованию расширения Visual Studio «TDLib для универсальной платформы Windows».
Когда TDLib
собран с включенной опцией TD_ENABLE_DOTNET
, документация C++
удаляется из некоторых файлов. Вам необходимо извлечь эти файлы, чтобы вернуть документацию C++
обратно:
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
TDLib
предоставляет эффективные собственные интерфейсы C++, Java и .NET. Но в большинстве случаев мы предлагаем использовать интерфейс JSON, который можно легко использовать с любым языком программирования, поддерживающим функции C. См. документацию td_json_client для подробного описания интерфейса JSON, схему td_api.tl или автоматически созданную документацию HTML для списка всех доступных методов и классов TDLib
.
Интерфейс TDLib
JSON придерживается семантического управления версиями, а версии с одинаковым основным номером версии являются двоичными и обратно совместимыми, но базовый API TDLib
может отличаться для разных второстепенных версий и даже исправлений. Если вам необходимо поддерживать разные версии TDLib
, вы можете использовать значение параметра version
, чтобы найти точную версию TDLib
для использования соответствующих методов API.
См. example/python/tdjson_example.py для примера такого использования.
TDLib
лицензируется в соответствии с условиями лицензии Boost Software License. Дополнительную информацию см. в LICENSE_1_0.txt.