Select Git revision
telegram.go
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
}