首页 小组 话题 文章 相册 用户 唠叨 搜索 我的社区

GoTGProto:简化Go语言下的Telegram API开发

2025-11-03 14:25:29
0
119




GoTGProto是一个基于gotd/td库的Go语言辅助包,专为Telegram MTProto协议设计。它旨在简化Telegram客户端的开发过程,让开发者更容易构建机器人(bots)和用户机器人(userbots)。这个项目目前处于beta阶段,适合那些希望在Golang中快速接入Telegram功能的开发者。通过内置的会话管理、peer存储和自定义辅助函数,它大大降低了使用原始API的复杂性。如果你正在寻找一个高效的Telegram客户端解决方案,GoTGProto值得一试。


关键特性


  • 简化API调用:自动处理peer存储,包括聊天ID和访问哈希,方便创建输入查询。

  • 媒体处理:支持上传和发送照片、文档、音频、视频等媒体,并从消息中检索媒体。

  • 会话支持:兼容字符串会话和SQL会话等存储方式。

  • 原始TL函数:允许直接调用任何Telegram API方法,提供灵活性。

  • 社区资源:有示例项目如GigaUserbot,以及文档和支持群组。


安装与入门

安装非常简单,只需运行以下命令:


textgo get github.com/celestix/gotgproto

入门时,需要从my.telegram.org获取AppID和ApiHash。以下是一个基本用户授权示例:


gopackage main

import (
"log"
"github.com/celestix/gotgproto"
"github.com/celestix/gotgproto/sessionMaker"
"github.com/glebarez/sqlite"
)

func main() {
client, err := gotgproto.NewClient(
123456, // AppID
"API_HASH_HERE", // ApiHash
gotgproto.ClientTypePhone("PHONE_NUMBER_HERE"),
&gotgproto.ClientOpts{
Session: sessionMaker.SqlSession(sqlite.Open("echobot")),
},
)
if err != nil {
log.Fatalln("failed to start client:", err)
}
client.Idle()
}

更多示例可在项目的examples目录中找到。


基本操作示例

GoTGProto提供了直观的API调用。以下是发送消息的简单示例:


goctx.SendMessage(chatId, &tg.MessagesSendMessageRequest{
Message: "Hello, World!",
})

上传并发送媒体(如照片):


gof, err := uploader.NewUploader(ctx.Raw).FromPath(ctx, "test.jpg")
if err != nil {
panic(err)
}
ctx.SendMedia(chatId, &tg.MessagesSendMediaRequest{
Message: "This is your caption",
Media: &tg.InputMediaUploadedPhoto{
File: f,
},
})

对于音频或其他文档类型,可以调整MimeType和属性。



GoTGProto的优势在于其易用性和自动化功能,相比原始gotd/td库,能显著缩短开发时间。如果你对Telegram开发感兴趣,可以访问GitHub仓库(https://github.com/celestix/gotgproto)查看完整文档,或加入支持群组获取帮助。这个项目开源于GPLv3许可,欢迎贡献代码!




评论