From b770b2c5dcc6368627872e55cb580c588f026022 Mon Sep 17 00:00:00 2001 From: Akulij Date: Thu, 27 Mar 2025 20:44:20 +0800 Subject: [PATCH] move out bot controller logic into separate file --- cmd/app/botcontroller.go | 46 ++++++++++++++++++++++++++++++++++++++++ cmd/app/main.go | 38 --------------------------------- 2 files changed, 46 insertions(+), 38 deletions(-) create mode 100644 cmd/app/botcontroller.go diff --git a/cmd/app/botcontroller.go b/cmd/app/botcontroller.go new file mode 100644 index 0000000..9d4d5aa --- /dev/null +++ b/cmd/app/botcontroller.go @@ -0,0 +1,46 @@ +package main + +import ( + "log" + + "gorm.io/gorm" + + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" + + "github.com/akulij/ticketbot/config" +) + +type BotController struct { + cfg config.Config + bot *tgbotapi.BotAPI + db *gorm.DB + updates tgbotapi.UpdatesChannel +} + +func GetBotController() BotController { + cfg := config.GetConfig() + log.Printf("Token value: '%v'\n", cfg.BotToken) + log.Printf("Admin password: '%v'\n", cfg.AdminPass) + log.Printf("Admin ID: '%v'\n", *cfg.AdminID) + + bot, err := tgbotapi.NewBotAPI(cfg.BotToken) + if err != nil { + log.Panic(err) + } + + db, err := GetDB() + if err != nil { + log.Panic(err) + } + + bot.Debug = true // set true only while development, should be set to false in production + + log.Printf("Authorized on account %s", bot.Self.UserName) + + u := tgbotapi.NewUpdate(0) + u.Timeout = 60 + + updates := bot.GetUpdatesChan(u) + + return BotController{cfg: cfg, bot: bot, db: db, updates: updates} +} diff --git a/cmd/app/main.go b/cmd/app/main.go index d603153..f6cf58f 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -10,10 +10,6 @@ import ( "strings" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" - - "github.com/akulij/ticketbot/config" - - "gorm.io/gorm" ) var adminCommands = map[string]func(BotController, tgbotapi.Update){ @@ -25,40 +21,6 @@ var adminCommands = map[string]func(BotController, tgbotapi.Update){ // supposed to be lined with bot } -type BotController struct { - cfg config.Config - bot *tgbotapi.BotAPI - db *gorm.DB - updates tgbotapi.UpdatesChannel -} - -func GetBotController() BotController { - cfg := config.GetConfig() - log.Printf("Token value: '%v'\n", cfg.BotToken) - log.Printf("Admin password: '%v'\n", cfg.AdminPass) - log.Printf("Admin ID: '%v'\n", *cfg.AdminID) - - bot, err := tgbotapi.NewBotAPI(cfg.BotToken) - if err != nil { - log.Panic(err) - } - - db, err := GetDB() - if err != nil { - log.Panic(err) - } - - bot.Debug = true // set true only while development, should be set to false in production - - log.Printf("Authorized on account %s", bot.Self.UserName) - - u := tgbotapi.NewUpdate(0) - u.Timeout = 60 - - updates := bot.GetUpdatesChan(u) - - return BotController{cfg: cfg, bot: bot, db: db, updates: updates} -} func main() { var bc = GetBotController()