create messages table and logger

This commit is contained in:
Akulij 2025-03-27 21:19:41 +08:00
parent 38c7bef71c
commit 5144cb58dc
3 changed files with 36 additions and 0 deletions

View File

@ -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
}

View File

@ -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)
}

View File

@ -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:]