Skip to content

Laaguini/tgbot

Repository files navigation

tgbot

tgbot is a simple lightweight no-dependencies library for Telegram Bot API

Overview

Usage

Initialization

import "github.com/Laaguini/tgbot"

func main() {
    bot := &tgbot.New{
        Token:           "TOKEN",
        PollingInterval: 500 * time.Millisecond,
    }
    
    bot.Poll()
}

Getting bot info

// Info as JSON string
fmt.Println(bot.Info())

Handling text messages

// Any text message 
bot.OnAnyMessage(func(message tgbot.Message) {
    fmt.Printf("%s From: %s Message: %s \n", time.Now().Format("15:51:15"), message.From.Username, message.Text)
})
    
// Message that starts from '/', e.g '/start'
bot.OnCommand("start", func(message tgbot.Message) {
    bot.Send(message.Chat.Id, "Hi, "+message.From.FirstName+" !")
})
    
// Handling not a command
bot.OnMessage(func(message tgbot.Message) {
    bot.Send(message.Chat.Id, message.Text)
})

Handling stickers

bot.OnSticker(func(message tgbot.Message) {
    bot.Send(message.Chat.Id, message.Sticker.Emoji)
})

Handling files

// Donwnloading voice message
bot.OnVoice(func(message tgbot.Message) {
    voice := message.Voice
    fileReader := bot.GetFile(voice.Id)

    out, err := os.Create("./files/" + voice.Id + voice.Extensions[0])
    if err != nil {
        fmt.Println(err)
    }
    defer out.Close()
    defer fileReader.Close()

    _, err = io.Copy(out, fileReader)
    if err ! nil {
        fmt.Println(err)
    }
})

// Logging audio messsage info 
bot.OnAudio(func(message tgbot.Message) {
    audio := message.Audio	
    fmt.Println(audio.Name + " " + strconv.Itoa(audio.Duration) + " " + strconv.Itoa(audio.Size))
})

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages