TDLib (biblioteca de base de datos de Telegram) es una biblioteca multiplataforma para crear clientes de Telegram. Se puede utilizar fácilmente desde casi cualquier lenguaje de programación.
Características
Ejemplos y documentación
Dependencias
Edificio
Uso en proyectos CMake C++
Uso en proyectos Java
Uso en proyectos .NET
Usar con otros lenguajes de programación
Licencia
TDLib
tiene muchas ventajas. En particular, TDLib
es:
Multiplataforma : TDLib
se puede utilizar en Android, iOS, Windows, macOS, Linux, FreeBSD, OpenBSD, NetBSD, illusmos, Windows Phone, WebAssembly, watchOS, tvOS, visionOS, Tizen, Cygwin. También debería funcionar en otros sistemas *nix con o sin un mínimo esfuerzo.
Multilenguaje : TDLib
se puede utilizar fácilmente con cualquier lenguaje de programación que sea capaz de ejecutar funciones C. Además, ya tiene enlaces nativos de Java (usando JNI
) y enlaces .NET (usando C++/CLI
y C++/CX
).
Fácil de usar : TDLib
se encarga de todos los detalles de implementación de la red, el cifrado y el almacenamiento de datos local.
Alto rendimiento : en la API de Telegram Bot, cada instancia TDLib
maneja más de 25000 bots activos simultáneamente.
Bien documentado : todos los métodos API TDLib
y las interfaces públicas están completamente documentados.
Consistente : TDLib
garantiza que todas las actualizaciones se entregan en el orden correcto.
Confiable : TDLib
permanece estable en conexiones a Internet lentas y poco confiables.
Seguro : todos los datos locales se cifran mediante una clave de cifrado proporcionada por el usuario.
Totalmente asíncrono : las solicitudes a TDLib
no se bloquean entre sí ni nada más, las respuestas se envían cuando están disponibles.
Consulte nuestro tutorial de introducción para obtener una descripción de los conceptos básicos de TDLib.
Eche un vistazo a nuestros ejemplos.
Consulte un generador de instrucciones de compilación de TDLib para obtener instrucciones detalladas sobre cómo compilar TDLib.
Ver descripción de nuestras interfaces JSON, C++, Java y .NET.
Consulte el esquema td_api.tl o la documentación HTML generada automáticamente para obtener una lista de todos los métodos y clases TDLib
disponibles.
TDLib
depende de:
Compilador compatible con C++ 14 (Clang 3.4+, GCC 4.9+, MSVC 19.0+ (Visual Studio 2015+), Compilador Intel C++ 17+)
AbiertoSSL
zlib
gperf (solo compilación)
CMake (3.0.2+, solo compilación)
PHP (opcional, para generación de documentación)
La forma más sencilla de compilar TDLib
es utilizar nuestro generador de instrucciones de compilación de TDLib. Sólo necesita elegir su lenguaje de programación y sistema operativo de destino para recibir instrucciones de compilación completas.
En general, debe instalar todas las dependencias TDLib
, ingresar al directorio que contiene las fuentes TDLib
y compilarlas usando CMake:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
Para compilar TDLib
en dispositivos con poca memoria, puede ejecutar el script SplitSource.php antes de compilar el código fuente principal TDLib
y compilar solo los objetivos necesarios:
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
En nuestras pruebas, clang 6.0 con libc++ requirió menos de 500 MB de RAM por archivo y GCC 4.9/6.3 usó menos de 1 GB de RAM por archivo.
Para proyectos de C++ que usan CMake, el mejor enfoque es compilar TDLib
como parte de su proyecto o instalarlo en todo el sistema.
Hay varias bibliotecas que puedes usar en tu proyecto CMake:
Td::TdJson, Td::TdJsonStatic: versión dinámica y estática de una interfaz JSON. Tiene una interfaz C simple, por lo que se puede utilizar fácilmente con cualquier lenguaje de programación que sea capaz de ejecutar funciones C. Consulte la documentación de td_json_client para obtener más información.
Td::TdStatic: biblioteca estática con interfaz C++ para uso general. Consulte la documentación de ClientManager y Client para obtener más información.
Por ejemplo, parte de su CMakeLists.txt puede verse así:
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
O puede instalar TDLib
y luego hacer referencia a él en su CMakeLists.txt de esta manera:
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
Consulte ejemplo/cpp/CMakeLists.txt.
TDLib
proporciona una interfaz Java nativa a través de JNI. Para habilitarlo, especifique la opción -DTD_ENABLE_JNI=ON
en CMake.
Consulte example/java para ver un ejemplo del uso de TDLib
desde Java e instrucciones detalladas de compilación y uso.
TDLib
proporciona una interfaz .NET nativa a través de C++/CLI
y C++/CX
. Para habilitarlo, especifique la opción -DTD_ENABLE_DOTNET=ON
en CMake. .NET Core admite C++/CLI
solo desde la versión 3.1 y solo en Windows, por lo que si se usa .NET Core anterior o se necesita portabilidad, entonces se debe usar la interfaz TDLib
JSON a través de P/Invoke.
Consulte example/csharp para ver un ejemplo del uso de TDLib
desde C# e instrucciones detalladas de compilación y uso. Consulte example/uwp para ver un ejemplo del uso de TDLib
desde la aplicación C# UWP e instrucciones detalladas de compilación y uso para la extensión de Visual Studio "TDLib para la plataforma universal de Windows".
Cuando TDLib
se crea con la opción TD_ENABLE_DOTNET
habilitada, la documentación C++
se elimina de algunos archivos. Debes consultar estos archivos para devolver la documentación de C++
:
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
TDLib
proporciona interfaces nativas C++, Java y .NET eficientes. Pero para la mayoría de los casos de uso sugerimos utilizar la interfaz JSON, que se puede utilizar fácilmente con cualquier lenguaje de programación que sea capaz de ejecutar funciones C. Consulte la documentación td_json_client para obtener una descripción detallada de la interfaz JSON, el esquema td_api.tl o la documentación HTML generada automáticamente para obtener una lista de todos los métodos y clases TDLib
disponibles.
La interfaz TDLib
JSON se adhiere al control de versiones semántico y las versiones con el mismo número de versión principal son binarias y compatibles con versiones anteriores, pero la API TDLib
subyacente puede ser diferente para diferentes versiones menores e incluso de parche. Si necesita admitir diferentes versiones TDLib
, puede usar un valor de la opción de version
para encontrar la versión exacta TDLib
para usar los métodos API apropiados.
Consulte example/python/tdjson_example.py para ver un ejemplo de dicho uso.
TDLib
tiene licencia según los términos de la licencia de software Boost. Consulte LICENCIA_1_0.txt para obtener más información.