gotdtd:用 Go 语言操作 Telegram 的底层库
gotd/td:用 Go 语言操作 Telegram 的底层库
做 Telegram 相关开发的人应该都遇到过这个问题:想用 Go 写个机器人或者自动化工具,但官方没有 Go 语言的 SDK。Python 有 telethon,JavaScript 有 gramjs,Go 生态一直是空白。
gotd/td 就是填这个坑的项目。它是一个纯 Go 实现的 Telegram MTProto 客户端库,Star 数 2262,不算特别火,但在 Go 开发 Telegram 这个细分领域里,基本是唯一的选择。

这个项目能干什么
简单说,gotd/td 让你用 Go 代码直接调用 Telegram 的 MTProto 接口。不管是写机器人还是做用户端工具,都可以用它。
几个核心能力:
- 完整实现 MTProto 2.0 协议,可以调用任意 Telegram API 方法
- 支持语音和视频通话,包括一对一和群组通话
- 内存占用低,每个空闲客户端只占 150kb,能同时处理上千个连接
- 支持 WebSocket 传输,甚至可以在 WASM 环境里跑
- 自动重连、会话存储、数据中心迁移这些该有的都有
用起来也不复杂。装好依赖,写几行代码就能跑起来:
client := telegram.NewClient(appID, appHash, telegram.Options{})
if err := client.Run(context.Background(), func(ctx context.Context) error {
api := client.API()
// 调用 Telegram API
return nil
}); err != nil {
panic(err)
}

测试做得比较扎实
这个项目让我印象深的地方是测试。不只是普通的单元测试,它有:
- 端到端测试,直接连真实的 Telegram 服务器跑
- 自己用 Go 写了个 Telegram 服务端,专门用来测试
- 24 小时运行的金丝雀机器人,持续测试重连、消息处理、内存泄漏
很多开源项目测试都是糊弄一下,这个项目在测试上确实花了功夫。
适合谁用
如果你是 Go 开发者,想做 Telegram 相关的东西,这基本是必选项。几个典型场景:
- 写 Telegram 机器人,需要直接调用底层 API
- 做自动化工具,比如消息转发、数据采集
- 需要处理大量并发连接的服务
不过有个坑要注意:Telegram 对账号风控比较严,滥用 API 容易被封号。项目文档里专门写了「如何不被封」的指南,用之前建议仔细看看。
和其他方案的对比
Python 生态有 telethon 和 pyrogram,成熟度更高,社区也更大。但如果你的技术栈是 Go,或者对性能有要求,gotd/td 是更好的选择。
项目还有一个上层封装库 GoTGProto,封装了一些常用操作,用起来更简单。如果觉得 gotd/td 太底层,可以试试那个。
代码是 MIT 协议,商业项目也能用。
了一些常用操作,用起来更简单。如果觉得 gotd/td 太底层,可以试试那个。
代码是 MIT 协议,商业项目也能用。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)