All Projects → go-telegram-bot-api → Telegram Bot Api

go-telegram-bot-api / Telegram Bot Api

Licence: mit
Golang bindings for the Telegram Bot API

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Telegram Bot Api

mtproxy autoinstaller
MTProxy autoinstaller for Ubuntu
Stars: ✭ 25 (-99.24%)
Mutual labels:  telegram
ForwardTagRemoverBot
A Telegram Bot To Hide Forward Source
Stars: ✭ 54 (-98.35%)
Mutual labels:  telegram
raspberry pi home security system
Home monitoring system with a Raspberry Pi and sending notifications with a Telegram bot
Stars: ✭ 14 (-99.57%)
Mutual labels:  telegram
aboutmeinfo-telegram-bot
ℹ️ About Me Info Bot: Share your social media and links on Telegram
Stars: ✭ 20 (-99.39%)
Mutual labels:  telegram
Tweet2Telegram
❤️ Liked Tweets to Telegram
Stars: ✭ 83 (-97.47%)
Mutual labels:  telegram
shellbot
API em Shell Script para desenvolvimento de Bots na plataforma Telegram.
Stars: ✭ 87 (-97.34%)
Mutual labels:  telegram
FreeFire-Phishing
Free Fire Phishing Tool ID Hack Tool For Online Hacking
Stars: ✭ 140 (-95.73%)
Mutual labels:  telegram
Mtproxy
MTProxyTLS一键安装绿色脚本
Stars: ✭ 256 (-92.18%)
Mutual labels:  telegram
checkmk-telegram-notify
Get alerted by Check_MK via Telegram bash script
Stars: ✭ 28 (-99.15%)
Mutual labels:  telegram
TeleShadow2
TeleShadow - Telegram Desktop Session Stealer (Windows)
Stars: ✭ 88 (-97.31%)
Mutual labels:  telegram
teleGit
Telegram Bot in Python
Stars: ✭ 22 (-99.33%)
Mutual labels:  telegram
nebula8
Open source bot to administer a telegram group with different functionalities and blacklist
Stars: ✭ 21 (-99.36%)
Mutual labels:  telegram
telegram-bot-delphi
A simple example of integration with a telegram bot API.
Stars: ✭ 22 (-99.33%)
Mutual labels:  telegram
tg crawler
Just a crawler based on tg-cli for Telegram. Deprecated by now, please use telegram-export.
Stars: ✭ 71 (-97.83%)
Mutual labels:  telegram
remoteTelegramShell
control your Linux OS computer through Telegram
Stars: ✭ 73 (-97.77%)
Mutual labels:  telegram
TG-FileStreamBot
Stream Telegram files to web
Stars: ✭ 193 (-94.11%)
Mutual labels:  telegram
rollem-telegram-bot
🎲 An RPG dice rolling bot for Telegram.
Stars: ✭ 26 (-99.21%)
Mutual labels:  telegram
Infomate.club
RSS feed collections with article summarization
Stars: ✭ 255 (-92.21%)
Mutual labels:  telegram
gofilesbot
Filter bot for file serving groups. The bot is performing its function in a different way! Read for more...
Stars: ✭ 28 (-99.15%)
Mutual labels:  telegram
TeleArc
TeleArc - Arc theme for Telegram Desktop
Stars: ✭ 40 (-98.78%)
Mutual labels:  telegram

Golang bindings for the Telegram Bot API

Go Reference Test

All methods are fairly self-explanatory, and reading the godoc page should explain everything. If something isn't clear, open an issue or submit a pull request.

There are more tutorials and high-level information on the website, go-telegram-bot-api.dev.

The scope of this project is just to provide a wrapper around the API without any additional features. There are other projects for creating something with plugins and command handlers without having to design all that yourself.

Join the development group if you want to ask questions or discuss development.

Example

First, ensure the library is installed and up to date by running go get -u github.com/go-telegram-bot-api/telegram-bot-api/v5.

This is a very simple bot that just displays any gotten updates, then replies it to that chat.

package main

import (
	"log"

	tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)

func main() {
	bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
	if err != nil {
		log.Panic(err)
	}

	bot.Debug = true

	log.Printf("Authorized on account %s", bot.Self.UserName)

	u := tgbotapi.NewUpdate(0)
	u.Timeout = 60

	updates := bot.GetUpdatesChan(u)

	for update := range updates {
		if update.Message != nil { // If we got a message
			log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)

			msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
			msg.ReplyToMessageID = update.Message.MessageID

			bot.Send(msg)
		}
	}
}

If you need to use webhooks (if you wish to run on Google App Engine), you may use a slightly different method.

package main

import (
	"log"
	"net/http"

	"github.com/go-telegram-bot-api/telegram-bot-api/v5"
)

func main() {
	bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
	if err != nil {
		log.Fatal(err)
	}

	bot.Debug = true

	log.Printf("Authorized on account %s", bot.Self.UserName)

	wh, _ := tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+bot.Token, "cert.pem")

	_, err = bot.SetWebhook(wh)
	if err != nil {
		log.Fatal(err)
	}

	info, err := bot.GetWebhookInfo()
	if err != nil {
		log.Fatal(err)
	}

	if info.LastErrorDate != 0 {
		log.Printf("Telegram callback failed: %s", info.LastErrorMessage)
	}

	updates := bot.ListenForWebhook("/" + bot.Token)
	go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil)

	for update := range updates {
		log.Printf("%+v\n", update)
	}
}

If you need, you may generate a self-signed certificate, as this requires HTTPS / TLS. The above example tells Telegram that this is your certificate and that it should be trusted, even though it is not properly signed.

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3560 -subj "//O=Org\CN=Test" -nodes

Now that Let's Encrypt is available, you may wish to generate your free TLS certificate there.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].