penguin/golifehk

@golifehk bot in Telegram

main.go

raw ยท 2474 bytes

package main   

import (
    "fmt"
    "log"
    "os"
    mtrbus "github.com/tgckpg/golifehk/datasources/mtr/bus"
    kmb "github.com/tgckpg/golifehk/datasources/kmb"
    tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)

func main() {
    bot, err := tgbotapi.NewBotAPI( os.Getenv( "TELEGRAM_API_TOKEN" ) )
    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 {
            continue
        }

        log.Printf( "[%s] %s", update.Message.From.UserName, update.Message.Text )

        mesg, err := mtrbus.Query( "zh-Hant", update.Message.Text ).Message()

        isGroup := ( update.Message.Chat.ID < 0 )

        if isGroup {
            if err == nil {
                msg := tgbotapi.NewMessage( update.Message.Chat.ID, mesg )
                msg.ParseMode = "MarkdownV2"
                msg.ReplyToMessageID = update.Message.MessageID

                bot.Send( msg )
            }

        } else {

            var msg tgbotapi.MessageConfig
            if err == nil {
                msg = tgbotapi.NewMessage( update.Message.Chat.ID, mesg )
                msg.ParseMode = "MarkdownV2"
            } else {
                msg = tgbotapi.NewMessage( update.Message.Chat.ID, fmt.Sprintf( "%s", err ) )
            }

            msg.ReplyToMessageID = update.Message.MessageID
            bot.Send( msg )
        }

        mesg, err2 := kmb.Query( "zh-Hant", update.Message.Text ).Message()

        if err != nil && err2 != nil {
            continue
        }

        err = err2
        if isGroup {
            if err == nil {
                msg := tgbotapi.NewMessage( update.Message.Chat.ID, mesg )
                msg.ParseMode = "MarkdownV2"
                msg.ReplyToMessageID = update.Message.MessageID

                bot.Send( msg )
            }

        } else {

            var msg tgbotapi.MessageConfig
            if err == nil {
                msg = tgbotapi.NewMessage( update.Message.Chat.ID, mesg )
                msg.ParseMode = "MarkdownV2"
            } else {
                msg = tgbotapi.NewMessage( update.Message.Chat.ID, fmt.Sprintf( "%s", err ) )
            }

            msg.ReplyToMessageID = update.Message.MessageID
            bot.Send( msg )
        }
    }
}