GetTGAPI 阅读提示
这里汇集了 TDLib 文档列出的语言绑定与客户端示例,便于按编程语言查找接入方式。其中的第三方项目并非都由 Telegram 维护,GetTGAPI 也未逐一验证其当前安全性或兼容性。选择依赖前,应到各仓库核对最近维护、许可及支持的 TDLib 版本。
此目录回答“使用什么接口、到哪里找示例”,不替代每个项目的安装文档。先阅读 TDLib 总览与构建,再按语言定位;Python 和 Java 的具体步骤见 开发指南。文中的历史开发时间与项目评价均来自所列版本原文。
TDLib 使用与构建示例
该目录包含以不同编程语言使用 TDLib 的基本示例,以及在不同平台上构建库的示例。若要查看所有 TDLib 方法的文档,请查阅 td_api.tl 模式定义,或自动生成的 HTML 文档,其中列出全部 TDLib 方法和类。基本概念还可参考官方 Getting Started 入门教程。
TDLib 几乎可在任何平台上由任何编程语言便捷地使用。详细构建步骤见 TDLib 构建说明生成器。请选择需要的语言,查看示例与详细说明:
- Python
- JavaScript
- Go
- Java
- Kotlin
- C#
- C++
- Swift
- Objective-C
- Object Pascal
- Dart
- Rust
- Erlang
- PHP
- Lua
- Ruby
- Crystal
- Haskell
- Nim
- Clojure
- Emacs Lisp
- D
- Elixir
- Vala
- 1С
- C
- 汇编语言
- G
- 其他语言
在 Python 项目中使用 TDLib
Python 可以通过 JSON 接口使用 TDLib。
已有一些方便的 Python 封装可供这个 JSON 接口使用。
如果使用 Python >= 3.6,可查看 python-telegram。它充分使用 asyncio,提供良好的文档和多个示例,可通过 pip 安装,也可在 Docker 容器中使用。还可以尝试它的一个分支 python-telegram。
如果希望结合 asyncio 与 Python >= 3.9 使用 TDLib,可查看 aiotdlib 或 Pytdbot;后者基于高性能 TDLib 绑定 AYMENJD/tdjson。
如果希望将 TDLib 与 SidusAI 配合使用,可查看 sidusai-tdlib。
旧版 Python 可以使用 pytdlib。该封装包含 TDLib API 类生成器,以及与 TDLib 交互的基本接口。
还可以查看 example/python/tdjson_example.py、tdlib-python 或 Python Wrapper TDLib,了解 TDLib JSON 接口与 Python 集成的基本示例。
在 JavaScript 项目中使用 TDLib
TDLib 可以编译成 WebAssembly,并由浏览器中的 JavaScript 使用。tdweb 提供浏览器环境的便捷封装,telegram-react 则是基于 TDLib 的 Telegram 客户端示例。
另见 Svelte-tdweb-starter,它是 tdweb 的 Svelte 封装;以及 Telegram-Photoframe,它将选定群组或频道展示成相框式网页应用。
Node.js 可以通过 JSON 接口使用 TDLib。
这个 JSON 接口已有便捷的 Node.js 封装,例如面向 TypeScript/JavaScript 的现代 TDLib 框架 Airgram,以及提供便捷、完全异步 TDLib 交互接口和多个示例的 tdl。
其他 Node.js 集成示例还包括 TdNode、tglib、node-tdlib、tdlnode、Paper Plane 和 node-tlg。
还可以查看 DIBgram 的源码;这是一个外观类似 Telegram Desktop 的非官方 Telegram 网页应用。
NativeScript 也可以通过 JSON 接口使用 TDLib。nativescript-tglib 是用于构建 Telegram 客户端的 NativeScript 库示例。
TDLib 也能用于 iOS 和 Android 上的 React Native。react-native-tdlib 是用于构建 Telegram 客户端的 React Native 库示例。
在 Go 项目中使用 TDLib
Go 可通过 JSON 接口与 Cgo 使用 TDLib,既可静态链接,也可动态链接。
这个 JSON 接口已有便捷的 Go 封装。例如 github.com/AshokShau/gotdbot、github.com/zelenin/go-tdlib 和 github.com/Arman92/go-tdlib,它们提供便捷的 TDLib 客户端、TDLib API 类生成器及大量示例。
github.com/aliforever/go-tdlib 也提供 TDLib JSON 接口与 Go 集成的示例。
在 Java 项目中使用 TDLib
Java 可以通过原生 JNI 绑定使用 TDLib。
上游提供 JNI 桥接方法,以及全部 TDLib API 方法和对象所需 Java 类的生成器。桌面 Java 的使用示例、详细构建与使用说明见 example/java。Android 的详细构建说明见 example/android。
在 Kotlin 项目中使用 TDLib
Kotlin/JVM 可以采用与 Java 相同的方式使用 TDLib。
参见 tdl-coroutines,这是基于协程的 Kotlin Multiplatform TDLib 封装。
另见 Kotlin 协程封装 td-ktx。
也可以使用提供 Kotlin 专用绑定的 ktd 库。
在 C# 项目中使用 TDLib
TDLib 通过 C++/CLI 和 C++/CX 提供原生 .NET 接口。tdlib-netcore 提供类似 SWIG 的绑定,可自动生成 TDLib API 类。example/uwp 展示如何为通用 Windows 平台构建 TDLib SDK 并从 C# 使用;example/csharp 展示如何启用 C++/CLI 构建 TDLib 并在 Windows 上从 C# 使用。
使用 .NET Core 编写跨平台 C# 应用时,可查看 tdsharp。它采用 JSON 接口,提供异步交互接口、自动生成的 TDLib API 类及示例。
另见 Unigram:使用通用 Windows 平台 TDLib SDK,在不到 2 个月内以 C# 从零重写的完整客户端;egram.tel:使用 C#、.NET Core、ReactiveUI 和 Avalonia 的跨平台 Telegram 客户端;以及面向三星手表的 Telegram 客户端 telewear。
在 C++ 项目中使用 TDLib
TDLib 具有用于发送和接收请求的简单、便捷 C++11 接口,可以静态链接到应用中。
C++ 使用示例见 example/cpp。td_example.cpp 包含授权、处理新消息、获取聊天列表及发送文本消息的示例。
还可以查看 Sailfish OS 的 Telegram 应用 Fernschreiber 和 Depecher;Ubuntu Touch 的 Qt 客户端 TELEports;Pidgin 插件 tdlib-purple;Nokia N9 客户端 MeeGram;以及 TDLib JSON 接口的 Sciter 原生扩展 TDLib Native Sciter Extension。这些项目均基于 TDLib。
在 Swift 项目中使用 TDLib
Swift 可以通过 JSON 接口使用 TDLib,支持静态或动态链接。
iOS、watchOS、tvOS、visionOS 和 macOS 的构建示例见 example/ios。
TDLibKit、tdlib-swift 和 TDLib-iOS 提供便捷的 TDLib 客户端,包含为全部 API 方法和对象自动生成、文档完整的类。
还可查看 Moc 的源码;这是功能强大的原生 macOS 和 iPadOS Telegram 客户端,针对大型社区管理和个人使用优化。
macOS Swift 应用示例见 example/swift。
在 Objective-C 项目中使用 TDLib
Objective-C 可以通过 JSON 接口使用 TDLib,支持静态或动态链接。
iOS、watchOS、tvOS、visionOS 和 macOS 的构建示例见 example/ios。
在 Delphi 与 Lazarus 的 Object Pascal 项目中使用 TDLib
Object Pascal 可以通过 JSON 使用 TDLib。
Delphi 使用示例见 tdlib-delphi。
Lazarus 使用示例见 tdlib-lazarus。
在 Dart 项目中使用 TDLib
Dart 可以通过 JSON 接口,结合 Dart Native Extension 或 Dart FFI 使用 TDLib。
tdlib-dart 提供便捷的 TDLib 客户端,包含全部 API 方法和对象的自动生成类及完整文档。
通过 FFI 提供 Dart 绑定的示例还包括 dart_tdlib、flutter_libtdjson、Dart wrapper for TDLib 和 tdlib_bindings。
从 Dart 使用 TDLib 的示例见 Telegram Client library、project.scarlet、tdlib、tdlib-dart、FluGram 和 telegram-service。
另见以 Dart 编写的 Telegram 客户端 telegram-flutter,以及 Flutter Telegram 客户端 f-Telegram。
在 Rust 项目中使用 TDLib
Rust 可以通过 JSON 接口使用 TDLib。
rust-tdlib 和 tdlib 提供便捷的 TDLib 客户端,包含全部 API 方法和对象的自动生成类及完整文档。
Rust 绑定示例见 rtdlib、tdlib-rs、tdlib-futures、tdlib-sys、tdjson-rs、rust-tdlib 和 tdlib-json-sys。
另见使用 Rust 与 GTK 编写的 Telegram 客户端 Paper Plane。
在 Erlang 项目中使用 TDLib
Erlang 可以通过 JSON 接口使用 TDLib。
Erlang 绑定示例见 erl-tdlib。
在 PHP 项目中使用 TDLib
如果使用现代 PHP >= 7.4,可以通过 PHP FFI 扩展使用 TDLib。例如 ffi-tdlib、tdlib-php-ffi 和 tdjson_example 都是基于 FFI 的封装。
另见 TDLib API 类生成器 tdlib-schema。
较早的 PHP 版本可以通过 PHP 扩展封装 TDLib 功能。
phptdlib、tdlib 和 PIF-TDPony 是这种提供 PHP 访问能力的扩展示例。
tdlib-bundle 是基于 phptdlib 的 Symfony bundle。
在 Lua 项目中使用 TDLib
Lua 可以通过 JSON 接口使用 TDLib。
Lua 绑定及基本使用示例见 luajit-tdlib、tdlua 和 luajit-tdlib。
另见 tdbot,它使 Lua 脚本能够使用 TDLib 的全部功能。
在 D 项目中使用 TDLib
D 可以通过 JSON 接口使用 TDLib。
D 绑定示例见 d-tdlib-service。
在 Ruby 项目中使用 TDLib
Ruby 可以通过 JSON 接口使用 TDLib。
Ruby 绑定与客户端示例见 tdlib-ruby。
在 Crystal 项目中使用 TDLib
Crystal 可以通过 JSON 接口使用 TDLib。
Crystal 绑定示例见 Proton,它为全部 API 方法和对象提供自动生成的类型。
在 Haskell 项目中使用 TDLib
Haskell 可以使用 TDLib。
使用示例和 Haskell 封装见 haskell-tdlib 或 tdlib。该库包含为全部 TDLib API 方法和对象自动生成的 Haskell 类型。
在 Nim 项目中使用 TDLib
Nim 可以使用 TDLib。
使用示例与 Nim 封装见 telenim。
在 Clojure 项目中使用 TDLib
Clojure 可以通过 JSON 接口使用 TDLib。
Clojure 绑定示例见 clojure-tdlib-json-wrapper。
在 Emacs Lisp 项目中使用 TDLib
Emacs Lisp 可以使用 TDLib。
GNU Emacs Telegram 客户端示例见 telega.el。
在 Elixir 项目中使用 TDLib
Elixir 可以使用 TDLib。
使用示例及 Elixir 客户端见 Elixir TDLib。该库包含全部 TDLib API 方法和对象的自动生成类及完整文档。
在 Vala 项目中使用 TDLib
Vala 可以使用 TDLib。
使用示例见 TDLib Vala。
在 1С:Enterprise 中使用 TDLib
1С 可以使用 TDLib。
使用示例见 TDLib bindings for 1С:Enterprise 和 e1c.tAgents。
在 C 项目中使用 TDLib
C 可以通过 JSON 接口使用 TDLib,支持静态或动态链接。
使用示例见 easy-tg。
也可以尝试官方 C 客户端,它曾用于 telegram-cli 的一个未公开、基于 TDLib 的版本。
在汇编项目中使用 TDLib
汇编语言可以通过 JSON 接口使用 TDLib。
也可查看 gas_tdjson_example、arm_tdjson_example 和 arm64_tdjson_example。
在 G 项目中使用 TDLib
TDLib 可以用于 LabVIEW 开发环境中的 G 图形化编程语言。
使用示例见 TDLib bindings for LabVIEW。
从其他编程语言中使用 TDLib
其他语言可借助 tdbot 或 TDLib JSON CLI 使用 TDLib。这些工具通过 stdin 和 stdout,以 JSON 接口与 TDLib 交互。例如,这种方式也可用于 Brainfuck;上游作者写道,他们尚未看到通过 TDLib、用 Brainfuck 发送 Telegram 消息的示例。
另一种方式是在你的编程语言中直接使用 TDLib JSON 接口。
如果你制作了有价值的 TDLib 绑定或某种语言的 TDLib 客户端,希望将它加入此示例列表,可以向上游提交 issue。