Skip to content
Snippets Groups Projects
Select Git revision
  • 05558cdf808e2979d649e8bed3e13b7fa9c62f1c
  • master default protected
2 results

telegram.go

Blame
  • telegram.go 5.29 KiB
    package main
    
    import (
    	"github.com/bwmarrin/discordgo"
    	tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
    	"io"
    	"log"
    	"net/http"
    	"strconv"
    	"strings"
    	"time"
    )
    
    var botAPI *tgbotapi.BotAPI
    
    type botLogger struct{}
    
    func (botLogger) Printf(format string, v ...interface{}) {
    	log.Printf("telegram: "+format, v...)
    }
    func (botLogger) Println(v ...interface{}) {
    	log.Println(append([]interface{}{"telegram:"}, v...)...)
    }
    
    func init() {
    	if err := tgbotapi.SetLogger(botLogger{}); err != nil {
    		panic(err)
    	}
    }
    
    func openTelegram() {
    	if bot, err := tgbotapi.NewBotAPI(config.Telegram.Token); err != nil {
    		log.Fatalf("error connecting to telegram: %s", err)
    	} else {
    		botAPI = bot
    	}
    	log.Printf("connected to telegram as @%s (%v)", botAPI.Self.UserName, botAPI.Self.ID)
    	botAPI.Debug = config.System.Verbose
    
    	ready <- struct{}{}
    }
    
    func handleTelegram() {
    	u := tgbotapi.NewUpdate(0)
    	u.Timeout = 60
    
    	if updates, err := botAPI.GetUpdatesChan(u); err != nil {
    		log.Fatalf("error getting updates: %s", err)
    	} else {
    		if config.Telegram.BypassBacklog {
    			time.Sleep(time.Millisecond * 500)
    			updates.Clear()
    		}
    
    		for update := range updates {
    			respondTelegram(update)
    		}
    	}
    }
    
    var previousCaller = make(map[int64]int)
    
    func setPreviousCaller(cid int64, uid int) bool {
    	if previousCaller[cid] == uid {
    		return true
    	}
    	previousCaller[cid] = uid
    	return false
    }