tdlib/td

GitHub: tdlib/td

Telegram官方跨平台客户端开发库,封装了网络通信和加密存储,提供多语言绑定和高性能异步API。

Stars: 8539 | Forks: 1965

# TDLib TDLib (Telegram Database library) 是一个用于构建 [Telegram](https://telegram.org) 客户端的跨平台库。它几乎可以轻松地从任何编程语言中使用。 ## 目录 - [功能](#features) - [示例和文档](#usage) - [依赖项](#dependencies) - [构建](#building) - [在 CMake C++ 项目中使用](#using-cxx) - [在 Java 项目中使用](#using-java) - [在 .NET 项目中使用](#using-dotnet) - [在其他编程语言中使用](#using-json) - [许可证](#license) ## 功能 `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](https://core.telegram.org/bots/api) 中,每个 `TDLib` 实例同时处理超过 25000 个活跃机器人。 * **文档齐全**:所有 `TDLib` API 方法和公共接口都有完整的文档记录。 * **一致性**:`TDLib` 保证所有更新都按正确的顺序交付。 * **可靠**:`TDLib` 在缓慢且不可靠的 Internet 连接上保持稳定。 * **安全**:所有本地数据均使用用户提供的加密密钥进行加密。 * **完全异步**:对 `TDLib` 的请求不会互相阻塞或阻塞其他任何东西,响应在可用时发送。 ## 示例和文档 请参阅我们的 [入门](https://core.telegram.org/tdlib/getting-started) 教程,了解 TDLib 基本概念的描述。 看看我们的 [示例](https://github.com/tdlib/td/blob/master/example/README.md#tdlib-usage-and-build-examples)。 有关如何构建 TDLib 的详细说明,请参阅 [TDLib 构建说明生成器](https://tdlib.github.io/td/build.html)。 请参阅我们的 [JSON](#using-json)、[C++](#using-cxx)、[Java](#using-java) 和 [.NET](#using-dotnet) 接口说明。 请参阅 [td_api.tl](https://github.com/tdlib/td/blob/master/td/generate/scheme/td_api.tl) 方案或自动生成的 [HTML 文档](https://core.telegram.org/tdlib/docs/td__api_8h.html) 以获取所有可用 `TDLib` [方法](https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_function.html) 和 [类](https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_object.html) 的列表。 ## 依赖项 `TDLib` 依赖于: * C++17 兼容编译器 (Clang 5.0+, GCC 7.0+, MSVC 19.1+ (Visual Studio 2017.7+), Intel C++ Compiler 19+) * OpenSSL * zlib * gperf (仅构建时) * CMake (3.10+, 仅构建时) * PHP (可选,用于文档生成) ## 构建 构建 `TDLib` 最简单的方法是使用我们的 [TDLib 构建说明生成器](https://tdlib.github.io/td/build.html)。 您只需要选择您的编程语言和目标操作系统,即可接收完整的构建说明。 通常,您需要安装所有 `TDLib` [依赖项](#dependencies),进入包含 `TDLib` 源代码的目录并使用 CMake 编译它们: ``` mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . ``` 要在低内存设备上构建 `TDLib`,您可以运行 [SplitSource.php](https://github.com/tdlib/td/blob/master/SplitSource.php) 脚本 在编译 `TDLib` 源代码之前,并且只编译所需的目标: ``` php SplitSource.php mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --target tdjson cmake --build . --target tdjson_static cd .. php SplitSource.php --undo ``` 在我们的测试中,带有 libc++ 的 clang 6.0 每个文件需要不到 500 MB 的 RAM,而 GCC 4.9/6.3 每个文件使用不到 1 GB 的 RAM。 ## 在 CMake C++ 项目中使用 对于使用 CMake 的 C++ 项目,最好的方法是将 `TDLib` 作为项目的一部分构建,或者将其安装到系统范围内。 您可以在 CMake 项目中使用以下几个库: * Td::TdJson, Td::TdJsonStatic — JSON 接口的动态和静态版本。这具有简单的 C 接口,因此可以轻松地与任何能够执行 C 函数的编程语言一起使用。 有关更多信息,请参阅 [td_json_client](https://core.telegram.org/tdlib/docs/td__json__client_8h.html) 文档。 * Td::TdStatic — 具有用于一般用途的 C++ 接口的静态库。 有关更多信息,请参阅 [ClientManager](https://core.telegram.org/tdlib/docs/classtd_1_1_client_manager.html) 和 [Client](https://core.telegram.org/tdlib/docs/classtd_1_1_client.html) 文档。 例如,您的 CMakeLists.txt 部分可能如下所示: ``` add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic) ``` 或者您可以安装 `TDLib`,然后在您的 CMakeLists.txt 中像这样引用它: ``` find_package(Td 1.8.62 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic) ``` 参见 [example/cpp/CMakeLists.txt](https://github.com/tdlib/td/blob/master/example/cpp/CMakeLists.txt)。 ## 在 Java 项目中使用 `TDLib` 通过 JNI 提供原生 Java 接口。要启用它,请向 CMake 指定选项 `-DTD_ENABLE_JNI=ON`。 有关从 Java 使用 `TDLib` 的示例以及详细的构建和使用说明,请参见 [example/java](https://github.com/tdlib/td/tree/master/example/java)。 ## 在 .NET 项目中使用 `TDLib` 通过 `C++/CLI` 和 `C++/CX` 提供原生 .NET 接口。要启用它,请分别向 CMake 指定选项 `-DTD_ENABLE_DOTNET=ON` 或 `-DTD_ENABLE_DOTNET=CX`。 .NET Core 仅从 3.1 版本开始支持 `C++/CLI`,并且仅在 Windows 上支持,因此如果使用较旧的 .NET Core 或需要可移植性,则应通过 P/Invoke 使用 `TDLib` JSON 接口。 有关从 C# 使用 `TDLib` 的示例以及详细的构建和使用说明,请参见 [example/csharp](https://github.com/tdlib/td/tree/master/example/csharp)。 有关从 C# UWP 应用程序使用 `TDLib` 的示例以及 Visual Studio 扩展“TDLib for Universal Windows Platform”的详细构建和使用说明,请参见 [example/uwp](https://github.com/tdlib/td/tree/master/example/uwp)。 当启用了 `TD_ENABLE_DOTNET` 选项构建 `TDLib` 时,某些文件中的 `C++` 文档会被移除。您需要检出这些文件以恢复 `C++` 文档: ``` git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h ``` ## 在其他编程语言中使用 `TDLib` 提供高效的原生 C++、Java 和 .NET 接口。 但对于大多数用例,我们建议使用 JSON 接口,该接口可以轻松地与任何能够执行 C 函数的编程语言一起使用。 有关详细的 JSON 接口描述,请参阅 [td_json_client](https://core.telegram.org/tdlib/docs/td__json__client_8h.html) 文档, [td_api.tl](https://github.com/tdlib/td/blob/master/td/generate/scheme/td_api.tl) 方案或自动生成的 [HTML 文档](https://core.telegram.org/tdlib/docs/td__api_8h.html) 以获取 所有可用 `TDLib` [方法](https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_function.html) 和 [类](https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_object.html) 的列表。 `TDLib` JSON 接口遵循语义化版本控制,具有相同主版本号的版本是二进制兼容和向后兼容的,但底层 `TDLib` API 在不同的次要版本甚至补丁版本中可能不同。 如果您需要支持不同的 `TDLib` 版本,则可以使用 `version` 选项的值来查找确切的 `TDLib` 版本,以使用适当的 API 方法。 有关此类用法的示例,请参见 [example/python/tdjson_example.py](https://github.com/tdlib/td/blob/master/example/python/tdjson_example.py)。 ## 许可证 `TDLib` 根据 Boost Software License 的条款获得许可。有关更多信息,请参见 [LICENSE_1_0.txt](http://www.boost.org/LICENSE_1_0.txt)。
标签:AI工具, API, Bash脚本, Bot API, C++, Homebrew安装, IM, NET, Social Media, TDLib, Telegram, WebAssembly, 加密, 即时通讯, 多人体追踪, 多语言支持, 安全测试工具, 安全测试框架, 客户端开发, 库, 应急响应, 开源, 异步, 数据擦除, 桌面开发, 漏洞扫描器, 移动开发, 聊天