Files
valera/cmd/valera/main.go
T
VLADIMIR 2e1dbbc6be
continuous-integration/drone/push Build is passing
add бицепц
2023-04-28 13:27:32 +07:00

89 lines
1.9 KiB
Go

package main
import (
"log"
"net/http"
"valera/internal/config"
"valera/internal/db"
"valera/internal/states"
"valera/internal/states/clear_bot_state"
"valera/internal/states/eat_bot_state"
"valera/internal/states/go_bot_state"
"valera/internal/states/help_bot_state"
"valera/internal/states/pause_bot_state"
"valera/internal/states/ping_bot_state"
"valera/internal/states/start_bot_state"
"valera/internal/states/stat_bot_state"
"valera/internal/states/weight_bot_state"
tgbot "github.com/go-telegram-bot-api/telegram-bot-api"
)
const (
version = "v1.9.0"
)
func main() {
cfg := config.NewAppConfig()
bot, err := tgbot.NewBotAPI(cfg.TgConfig.Token)
if err != nil {
panic(err)
}
dataBase, err := db.NewDB(cfg)
if err != nil {
panic(err)
}
u := tgbot.NewUpdate(0)
u.Timeout = 60
updates, err := bot.GetUpdatesChan(u)
if err != nil {
panic(err)
}
botStates := []states.BotState{
clear_bot_state.NewClearBotState(bot, dataBase),
go_bot_state.NewGoBotState(bot, dataBase),
stat_bot_state.NewStatBotState(bot, dataBase),
start_bot_state.NewStartBotState(bot, dataBase, version),
help_bot_state.NewHelpBotState(bot, dataBase),
ping_bot_state.NewPingBotState(bot, dataBase),
pause_bot_state.NewPauseBotState(bot, dataBase),
eat_bot_state.NewEatBotState(bot, dataBase),
weight_bot_state.NewWeightBotState(bot, dataBase),
}
go func() {
for _, s := range botStates {
http.HandleFunc(s.GetHandler())
}
log.Println("Server is start up! port", cfg.Port)
log.Fatal(http.ListenAndServe(cfg.Port, nil))
}()
for update := range updates {
if update.Message == nil {
continue
}
text := update.Message.Text
chatID := update.Message.Chat.ID
username := update.Message.From.UserName
userInfoDTO, err := dataBase.GetChatInfo(chatID, username)
if err != nil {
log.Println(err)
continue
}
for _, s := range botStates {
if err := s.Do(text, userInfoDTO); err != nil {
log.Println(err)
}
}
}
}