Giter Site home page Giter Site logo

gogram's Introduction

Gogram
Telegram MTProto API Framework for Golang
HOME DOCS RELEASES SUPPORT

GoGram

Light Weight, Fast, Elegant Telegram MTProto API framework in Golang for building Telegram clients and bots.

Status

GoDoc Go Report Card License GitHub stars GitHub forks GitHub issues GitHub pull requests

⭐️ 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.

Setup

Please note that Gogram requires Go 1.18 or later.

go get -u github.com/ivanezko/gogram/telegram

Getting Started

package main

import "github.com/ivanezko/gogram/telegram"

func main() {
	client, err := telegram.NewClient(telegram.ClientConfig{
		AppID: 6, AppHash: "<app-hash>",
		// StringSession: "<string-session>",
	})

	if err != nil {
		log.Fatal(err)
	}

	client.LoginBot("<bot-token>") // or client.Login("<phone-number>") 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 only

	client.Idle() // block main goroutine until client is closed
}

Support

If you'd like to support Gogram, you can consider:

Key Features

  • Ready: Install Gogram with go 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 - 184 (Updated on 2024-07-07)

Doing Stuff

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
})

Sending Media

client.SendMedia("username", "<file-name>", &telegram.MediaOptions{ // filename/inputmedia,...
    Caption: "Hello from Gogram!",
    TTL: int32((math.Pow(2, 31) - 1)), //  TTL For OneTimeMedia
})

client.SendAlbum("username", []string{"<file-name>", "<file-name>"}, &telegram.MediaOptions{ // Array of filenames/inputmedia,...
    Caption: "Hello from Gogram!",
})

// with progress
var pm *telegram.ProgressManager
client.SendMedia("username", "<file-name>", &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("<chat-id>", "<message-id>", pm.GetStats())
        }
    },
})

Inline Queries

client.On("inline:<pattern>", func(iq *telegram.InlineQuery) error { // client.AddInlineHandler
	builder := iq.Builder()
	builder.Article("<title>", "<description>", "<text>", &telegram.ArticleOptions{
			LinkPreview: true,
	})

	return nil
})

Callback Queries

client.On("callback:<pattern>", 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 directory.

Features TODO

  • Basic MTProto implementation (LAYER 184)
  • Updates handling system + Cache
  • HTML, Markdown Parsing, Friendly Methods
  • Support for Flag2.0, Layer 147
  • WebRTC Calls Support
  • Documentation for all methods
  • Stabilize File Uploading
  • Stabilize File Downloading
  • Secret Chats Support
  • Cdn DC Support

Known Issues

  • ~ Open Issues if Found :)

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.

Resources

License

This library is provided under the terms of the GPL-3.0 License.

gogram's People

Contributors

amarnathcjd avatar roseloverx avatar deepsource-autofix[bot] avatar ivanezko avatar aiexz avatar mukundsinghrajput avatar jwillp avatar eos175 avatar anjanamadu avatar deepsourcebot avatar xzb-1248 avatar dropout1337 avatar itzrexmodz avatar xamarnath avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.