justlog/filelog/userlog.go

43 lines
948 B
Go
Raw Normal View History

2017-03-08 20:08:44 +01:00
package filelog
import (
"github.com/gempir/gempbotgo/twitch"
"strings"
"os"
"fmt"
)
type Logger struct {
logPath string
}
func NewFileLogger(logPath string) Logger {
2017-03-08 20:08:44 +01:00
return Logger{
logPath: logPath,
}
}
2017-03-11 11:06:50 +01:00
func (l *Logger) LogMessageForUser(msg twitch.Message) error {
2017-03-08 20:08:44 +01:00
year := msg.Timestamp.Year()
month := msg.Timestamp.Month()
channel := strings.Replace(msg.Channel.Name, "#", "", 1)
2017-03-08 20:08:44 +01:00
err := os.MkdirAll(fmt.Sprintf(l.logPath+"%s/%d/%s/", channel, year, month), 0755)
if err != nil {
return err
2017-03-08 20:08:44 +01:00
}
filename := fmt.Sprintf(l.logPath+"%s/%d/%s/%s.txt", channel, year, month, msg.User.Username)
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0755)
if err != nil {
return err
2017-03-08 20:08:44 +01:00
}
defer file.Close()
contents := fmt.Sprintf("[%s] %s: %s\r\n", msg.Timestamp.Format("2006-01-2 15:04:05"), msg.User.Username, msg.Text)
if _, err = file.WriteString(contents); err != nil {
return err
2017-03-08 20:08:44 +01:00
}
return nil
2017-03-11 11:06:50 +01:00
}