diff --git a/cmd/app/botcontroller.go b/cmd/app/botcontroller.go index 9d4d5aa..3191da6 100644 --- a/cmd/app/botcontroller.go +++ b/cmd/app/botcontroller.go @@ -1,6 +1,7 @@ package main import ( + "errors" "log" "gorm.io/gorm" @@ -44,3 +45,18 @@ func GetBotController() BotController { return BotController{cfg: cfg, bot: bot, db: db, updates: updates} } + +func (bc BotController) LogMessage(update tgbotapi.Update) error { + var msg *tgbotapi.Message + if update.Message != nil { + msg = update.Message + } else { + return errors.New("invalid update provided to message logger") + } + + var UserID = msg.From.ID + + bc.LogMessageRaw(UserID, msg.Text, msg.Time()) + + return nil +} diff --git a/cmd/app/db.go b/cmd/app/db.go index f15985d..f96874a 100644 --- a/cmd/app/db.go +++ b/cmd/app/db.go @@ -3,6 +3,7 @@ package main import ( "errors" "log" + "time" "gorm.io/driver/sqlite" "gorm.io/gorm" @@ -38,6 +39,7 @@ func GetDB() (*gorm.DB, error) { db.AutoMigrate(&User{}) db.AutoMigrate(&BotContent{}) + db.AutoMigrate(&Message{}) return db, err } @@ -73,3 +75,19 @@ func (bc BotController) GetUser(UserID int64) User { return user } + +type Message struct { + gorm.Model + UserID int64 + Msg string + Datetime *time.Time +} + +func (bc BotController) LogMessageRaw(UserID int64, Msg string, Time time.Time) { + msg := Message{ + UserID: UserID, + Msg: Msg, + Datetime: &Time, + } + bc.db.Create(&msg) +} diff --git a/cmd/app/main.go b/cmd/app/main.go index ac3aee7..ca07ee0 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -41,11 +41,13 @@ func ProcessUpdate(bc BotController, update tgbotapi.Update) { func handleMessage(bc BotController, update tgbotapi.Update) { var UserID = update.Message.From.ID user := bc.GetUser(UserID) + bc.LogMessage(update) bc.db.Model(&user).Update("MsgCounter", user.MsgCounter+1) log.Printf("User[%d] messages: %d", user.ID, user.MsgCounter) log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) log.Printf("[Entities] %s", update.Message.Entities) + log.Printf("[COMMAND] %s", update.Message.Command()) possibleCommand := strings.Split(update.Message.Text, " ")[0] args := strings.Split(update.Message.Text, " ")[1:]