Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amarnathcjd/gogram
Full-native implementation of MTProto protocol on Golang.
https://github.com/amarnathcjd/gogram
awesome botapi client go gogram golang hacktoberfest hacktoberfest-accepted hacktoberfest2023 mtproto mtproxy tdlib tdlib-go telegram telegram-api telegram-mtproto tg userbot userbot-go
Last synced: about 1 month ago
JSON representation
Full-native implementation of MTProto protocol on Golang.
- Host: GitHub
- URL: https://github.com/amarnathcjd/gogram
- Owner: AmarnathCJD
- License: gpl-3.0
- Created: 2022-03-29T09:16:20.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-11-08T17:57:07.000Z (about 1 month ago)
- Last Synced: 2024-11-09T03:44:01.091Z (about 1 month ago)
- Topics: awesome, botapi, client, go, gogram, golang, hacktoberfest, hacktoberfest-accepted, hacktoberfest2023, mtproto, mtproxy, tdlib, tdlib-go, telegram, telegram-api, telegram-mtproto, tg, userbot, userbot-go
- Language: Go
- Homepage:
- Size: 2.29 MB
- Stars: 206
- Watchers: 8
- Forks: 40
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
modern golang library for mtproto
documentation
•
releases
•
telegram chat
[![GoDoc](https://godoc.org/github.com/amarnathcjd/gogram?status.svg)](https://godoc.org/github.com/amarnathcjd/gogram)
[![Go Report Card](https://goreportcard.com/badge/github.com/amarnathcjd/gogram)](https://goreportcard.com/report/github.com/amarnathcjd/gogram)
[![License](https://img.shields.io/github/license/amarnathcjd/gogram.svg)](https://img.shields.io/github/license/amarnathcjd/gogram.svg)
[![GitHub stars](https://img.shields.io/github/stars/amarnathcjd/gogram.svg?style=social&label=Stars)](https://img.shields.io/github/stars/amarnathcjd/gogram.svg?style=social&label=Stars)
[![GitHub forks](https://img.shields.io/github/forks/amarnathcjd/gogram.svg?style=social&label=Fork)](https://img.shields.io/github/forks/amarnathcjd/gogram.svg?style=social&label=Fork)
⭐️ Gogram is a modern, elegant and concurrent MTProto API
framework. It enables you to easily interact with the main Telegram API through a user account (custom client) or a bot
identity (bot API alternative) using Go.
> Gogram is currently in its stable release stage. While there may still be a few bugs, feel free to use it and provide feedback if you encounter any issues or rough edges. 😊
## setup
please note that gogram requires Go 1.18 or later to support go-generics
```bash
go get -u github.com/amarnathcjd/gogram/telegram
```## quick start
```golang
package mainimport "github.com/amarnathcjd/gogram/telegram"
func main() {
client, err := telegram.NewClient(telegram.ClientConfig{
AppID: 6, AppHash: "",
})if err != nil {
log.Fatal(err)
}client.Conn()
client.LoginBot("") // or client.Login("") for user account, or client.AuthPrompt() for interactive login
client.On(telegram.OnMessage, func(message *telegram.NewMessage) error { // client.AddMessageHandler
message.Reply("Hello from Gogram!")
return nil
}, telegram.FilterPrivate) // waits for private messages onlyclient.Idle() // block main goroutine until client is closed
}
```- **[sample modular bot](https://github.com/AmarnathCJD/JuliaBot.git)**: a simple modular bot built using gogram with plugins support.
- **Try out Live Demo** at **[JuliaBot](https://t.me/rustyDbot)**.## support dev
If you'd like to support Gogram, you can consider:
- become a github sponsor
- star this repo :) ⭐## key features
-
ready: 🚀 install gogram withgo get
and you are ready to go! -
easy: 😊 makes the telegram api simple and intuitive, while still allowing advanced usages. -
elegant: 💎 low-level details are abstracted and re-presented in a more convenient way. -
fast: ⚡ backed by a powerful and concurrent library, gogram can handle even the heaviest workloads. -
zero dependencies: 🛠️ no need to install anything else than gogram itself. -
powerful: 💪 full access to telegram's api to execute any official client action and more. -
feature-rich: 🌟 built-in support for file uploading, formatting, custom keyboards, message editing, moderation tools and more. -
up-to-date: 🔄 gogram is always in sync with the latest telegram api changes and additions (tl-parser
is used to generate the api layer).
#### Current Layer - **194** (Updated on 2024-11-20)
## doing stuff
```golang
// sending a message
client.SendMessage("username", "Hello from Gogram!")
client.SendDice("username", "🎲")
client.On("message:/start", func(m *telegram.NewMessage) error {
m.Reply("Hello from Gogram!") // m.Respond("...")
return nil
})
```
```golang
// sending media
client.SendMedia("username", "", &telegram.MediaOptions{ // filename/inputmedia,...
Caption: "Hello from Gogram!",
TTL: int32((math.Pow(2, 31) - 1)), // TTL For OneTimeMedia
})
client.SendAlbum("username", []string{"", ""}, &telegram.MediaOptions{ // Array of filenames/inputmedia,...
Caption: "Hello from Gogram!",
})
// with progress
var pm *telegram.ProgressManager
client.SendMedia("username", "", &telegram.MediaOptions{
Progress: func(a,b int) {
if pm == nil {
pm = telegram.NewProgressManager(a, 3) // 3 is edit interval
}
if pm.ShouldEdit(b) {
fmt.Println(pm.GetStats(b)) // client.EditMessage("", "", pm.GetStats())
}
},
})
```
```golang
// inline queries
client.On("inline:", func(iq *telegram.InlineQuery) error { // client.AddInlineHandler
builder := iq.Builder()
builder.Article("", "", "", &telegram.ArticleOptions{
LinkPreview: true,
})
return nil
})
```
```golang
// callback queries
client.On("callback:", func(cb *telegram.CallbackQuery) error { // client.AddCallbackHandler
cb.Answer("This is a callback response", &CallbackOptions{
Alert: true,
})
return nil
})
```
For more examples, check the **[examples](examples)** directory.
## features
- [x] basic mtproto implementation (layer 184)
- [x] updates handling system + cache
- [x] html, markdown parsing, friendly methods
- [x] support for flag2.0, layer 147
- [x] webrtc calls support
- [ ] documentation for all methods
- [x] stabilize file uploading
- [x] stabilize file downloading
- [ ] secret chats support
- [ ] cdn dc support
- [x] reply markup builder helpers
- [x] reimplement file downloads (more speed + less cpu usage)
## known issues
- [x] ~ file download, is cpu intensive
- [x] ~ open issues if found :)
- [ ] ~ enhance peer caching.
## contributing
Gogram is an open-source project and your contribution is very much appreciated. If you'd like to contribute, simply fork the repository, commit your changes and send a pull request. If you have any questions, feel free to ask.
## License
This library is provided under the terms of the [GPL-3.0 License](LICENSE).