mtg-price-bot/cmd/telegram/main.go
2021-06-06 12:43:40 +03:00

55 lines
1.4 KiB
Go

package main
import (
"encoding/json"
"io/ioutil"
"log"
"os"
"time"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
"gitlab.com/flygrounder/go-mtg-vk/internal/cardsinfo"
"gitlab.com/flygrounder/go-mtg-vk/internal/scenario"
"gitlab.com/flygrounder/go-mtg-vk/internal/caching"
"gitlab.com/flygrounder/go-mtg-vk/internal/telegram"
)
const welcomeMessage = "Здравствуйте, вас приветствует бот для поиска цен на карты MTG, введите название карты, которая вас интересует."
func main() {
dict, _ := os.Open("./assets/additional_cards.json")
dictBytes, _ := ioutil.ReadAll(dict)
var dictMap map[string]string
_ = json.Unmarshal(dictBytes, &dictMap)
bot, _ := tgbotapi.NewBotAPI(os.Getenv("TG_TOKEN"))
sender := &telegram.Sender{
API: bot,
}
sc := &scenario.Scenario{
Sender: sender,
Logger: log.New(os.Stdout, "", 0),
Cache: caching.NewClient("redis:6379", "", time.Hour*24, 0),
InfoFetcher: &cardsinfo.Fetcher{
Dict: dictMap,
},
}
u := tgbotapi.NewUpdate(0)
updates, _ := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
if update.Message.Text == "/start" {
sender.Send(update.Message.Chat.ID, welcomeMessage)
continue
}
go sc.HandleSearch(&scenario.UserMessage{
Body: update.Message.Text,
UserId: update.Message.Chat.ID,
})
}
}