package plugins import ( "fmt" "kurumibot/database/mdb" "strings" "time" "git.nix13.pw/scuroneko/laniakea" "git.nix13.pw/scuroneko/slog" ) func InitLogsPlugin() {} func InitLogMiddleware() *laniakea.Middleware { middle := laniakea.NewMiddleware("LogMiddleware") middle = middle.SetExecutor(logMiddleware).SetAsync(true) return middle.Build() } func logMiddleware(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) { if ctx.Msg == nil { return } entry := &mdb.MessageLogEntry{ MessageID: ctx.Msg.MessageID, SenderID: ctx.FromID, ChatID: ctx.Msg.Chat.ID, Text: ctx.Msg.Text, TimeStamp: time.Now().Unix(), } err := mdb.WriteMessageLog(db, entry) if err != nil { fmt.Println(err) } } type DatabaseWriter struct { slog.LoggerWriter db *laniakea.DatabaseContext } func (w *DatabaseWriter) Print(level slog.LogLevel, prefix string, traceback []*slog.MethodTraceback, messages ...any) error { t := time.Now() entry := &mdb.ConsoleLogEntry{ Level: level.GetName(), Prefix: prefix, Traceback: slog.FormatFullTraceback(traceback), Message: strings.Join(laniakea.Map(messages, func(el any) string { return fmt.Sprintf("%v", el) }), "\n"), Time: t, TimeStamp: t.Unix(), } err := mdb.WriteConsoleLog(w.db, entry) return err } func DatabaseLogger(db *laniakea.DatabaseContext) slog.LoggerWriter { w := &DatabaseWriter{db: db} return w }