diff --git a/cmd/app/db.go b/cmd/app/db.go index 660b068..3b2e550 100644 --- a/cmd/app/db.go +++ b/cmd/app/db.go @@ -1,6 +1,7 @@ package main import ( + "log" "errors" "gorm.io/driver/sqlite" @@ -61,3 +62,14 @@ func (bc BotController) SetBotContent(Literal string, Content string) { bc.db.Model(&c).Update("Content", Content) } +func (bc BotController) GetUser(UserID int64) User { + var user User + bc.db.First(&user, "id", UserID) + if user == (User{}) { + log.Printf("New user: [%d]", UserID) + user = User{ID: UserID, State: "start"} + bc.db.Create(&user) + } + + return user +} diff --git a/cmd/app/main.go b/cmd/app/main.go index f6cf58f..3b43a1c 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -42,14 +42,7 @@ func ProcessUpdate(bc BotController, update tgbotapi.Update) { func handleMessage(bc BotController, update tgbotapi.Update) { var UserID = update.Message.From.ID - - var user User - bc.db.First(&user, "id", UserID) - if user == (User{}) { - log.Printf("New user: [%d]", UserID) - user = User{ID: UserID, State: "start"} - bc.db.Create(&user) - } + user := bc.GetUser(UserID) bc.db.Model(&user).Update("MsgCounter", user.MsgCounter+1) log.Printf("User[%d] messages: %d", user.ID, user.MsgCounter) @@ -77,8 +70,7 @@ func handleMessage(bc BotController, update tgbotapi.Update) { } func handleCallbackQuery(bc BotController, update tgbotapi.Update) { - var user User - bc.db.First(&user, "id", update.CallbackQuery.From.ID) + user := bc.GetUser(update.CallbackQuery.From.ID) if update.CallbackQuery.Data == "leave_ticket_button" { handleLeaveTicketButton(bc, update, user)