Merge pull request #29 from gempir/usernotice

Usernotice
This commit is contained in:
Daniel Pasch 2019-08-17 12:29:40 +02:00 committed by GitHub
commit 67a874606e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 132 additions and 13 deletions

View file

@ -150,6 +150,17 @@ func (s *Server) getChannelLogs(c echo.Context) error {
Type: message.Type,
Channel: message.Channel,
}
case *twitch.UserNoticeMessage:
message := *parsedMessage.(*twitch.UserNoticeMessage)
chatMsg = chatMessage{
Timestamp: timestamp{message.Time},
Username: message.User.Name,
DisplayName: message.User.DisplayName,
Text: message.SystemMsg + " " + message.Message,
Type: message.Type,
Channel: message.Channel,
}
}
logResult.Messages = append(logResult.Messages, chatMsg)
@ -233,6 +244,17 @@ func (s *Server) getChannelLogsRange(c echo.Context) error {
Type: message.Type,
Channel: message.Channel,
}
case *twitch.UserNoticeMessage:
message := *parsedMessage.(*twitch.UserNoticeMessage)
chatMsg = chatMessage{
Timestamp: timestamp{message.Time},
Username: message.User.Name,
DisplayName: message.User.DisplayName,
Text: message.SystemMsg + " " + message.Message,
Type: message.Type,
Channel: message.Channel,
}
}
logResult.Messages = append(logResult.Messages, chatMsg)

View file

@ -61,7 +61,7 @@ func (s *Server) Init() {
XSSProtection: "", // disabled
ContentTypeNosniff: "nosniff",
XFrameOptions: "", // disabled
HSTSMaxAge: 0, // disabled
HSTSMaxAge: 0, // disabled
ContentSecurityPolicy: "", // disabled
}))
e.Use(middleware.CORSWithConfig(DefaultCORSConfig))
@ -226,6 +226,8 @@ func writeTextResponse(c echo.Context, cLog *chatLog) error {
c.Response().Write([]byte(fmt.Sprintf("[%s] #%s %s: %s\n", cMessage.Timestamp.Format("2006-01-2 15:04:05"), cMessage.Channel, cMessage.Username, cMessage.Text)))
case twitch.CLEARCHAT:
c.Response().Write([]byte(fmt.Sprintf("[%s] #%s %s\n", cMessage.Timestamp.Format("2006-01-2 15:04:05"), cMessage.Channel, cMessage.Text)))
case twitch.USERNOTICE:
c.Response().Write([]byte(fmt.Sprintf("[%s] #%s %s\n", cMessage.Timestamp.Format("2006-01-2 15:04:05"), cMessage.Channel, cMessage.Text)))
}
}

View file

@ -324,6 +324,17 @@ func (s *Server) getUserLogs(c echo.Context) error {
Type: message.Type,
Channel: message.Channel,
}
case *twitch.UserNoticeMessage:
message := *parsedMessage.(*twitch.UserNoticeMessage)
chatMsg = chatMessage{
Timestamp: timestamp{message.Time},
Username: message.User.Name,
DisplayName: message.User.DisplayName,
Text: message.SystemMsg + " " + message.Message,
Type: message.Type,
Channel: message.Channel,
}
}
logResult.Messages = append(logResult.Messages, chatMsg)
@ -408,6 +419,17 @@ func (s *Server) getUserLogsRange(c echo.Context) error {
Type: message.Type,
Channel: message.Channel,
}
case *twitch.UserNoticeMessage:
message := *parsedMessage.(*twitch.UserNoticeMessage)
chatMsg = chatMessage{
Timestamp: timestamp{message.Time},
Username: message.User.Name,
DisplayName: message.User.DisplayName,
Text: message.SystemMsg + " " + message.Message,
Type: message.Type,
Channel: message.Channel,
}
}
logResult.Messages = append(logResult.Messages, chatMsg)

View file

@ -54,14 +54,14 @@ func (b *Bot) Connect(channelIds []string) {
twitchClient.OnPrivateMessage(func(message twitch.PrivateMessage) {
go func() {
err := b.fileLogger.LogPrivateMessageForUser(message.Channel, message.User, message)
err := b.fileLogger.LogPrivateMessageForUser(message.User, message)
if err != nil {
log.Error(err.Error())
}
}()
go func() {
err := b.fileLogger.LogPrivateMessageForChannel(message.Channel, message.User, message)
err := b.fileLogger.LogPrivateMessageForChannel(message)
if err != nil {
log.Error(err.Error())
}
@ -73,17 +73,45 @@ func (b *Bot) Connect(channelIds []string) {
}
})
twitchClient.OnUserNoticeMessage(func(message twitch.UserNoticeMessage) {
log.Debug(message.Raw)
go func() {
err := b.fileLogger.LogUserNoticeMessageForUser(message.User.ID, message)
if err != nil {
log.Error(err.Error())
}
}()
if _, ok := message.Tags["msg-param-recipient-id"]; ok {
go func() {
err := b.fileLogger.LogUserNoticeMessageForUser(message.Tags["msg-param-recipient-id"], message)
if err != nil {
log.Error(err.Error())
}
}()
}
go func() {
err := b.fileLogger.LogUserNoticeMessageForChannel(message)
if err != nil {
log.Error(err.Error())
}
}()
})
twitchClient.OnClearChatMessage(func(message twitch.ClearChatMessage) {
go func() {
err := b.fileLogger.LogClearchatMessageForUser(message.Channel, message.TargetUserID, message)
err := b.fileLogger.LogClearchatMessageForUser(message.TargetUserID, message)
if err != nil {
log.Error(err.Error())
}
}()
go func() {
err := b.fileLogger.LogClearchatMessageForChannel(message.Channel, message)
err := b.fileLogger.LogClearchatMessageForChannel(message)
if err != nil {
log.Error(err.Error())
}

View file

@ -12,15 +12,15 @@ import (
"github.com/gempir/go-twitch-irc"
)
func (l *Logger) LogPrivateMessageForChannel(channel string, user twitch.User, message twitch.PrivateMessage) error {
func (l *Logger) LogPrivateMessageForChannel(message twitch.PrivateMessage) error {
year := message.Time.Year()
month := int(message.Time.Month())
day := message.Time.Day()
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%d/%d", message.Tags["room-id"], year, month, day), 0750)
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%d/%d", message.RoomID, year, month, day), 0750)
if err != nil {
return err
}
filename := fmt.Sprintf(l.logPath+"/%s/%d/%d/%d/channel.txt", message.Tags["room-id"], year, month, day)
filename := fmt.Sprintf(l.logPath+"/%s/%d/%d/%d/channel.txt", message.RoomID, year, month, day)
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0640)
if err != nil {
@ -35,15 +35,38 @@ func (l *Logger) LogPrivateMessageForChannel(channel string, user twitch.User, m
return nil
}
func (l *Logger) LogClearchatMessageForChannel(channel string, message twitch.ClearChatMessage) error {
func (l *Logger) LogClearchatMessageForChannel(message twitch.ClearChatMessage) error {
year := message.Time.Year()
month := int(message.Time.Month())
day := message.Time.Day()
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%d/%d", message.Tags["room-id"], year, month, day), 0750)
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%d/%d", message.RoomID, year, month, day), 0750)
if err != nil {
return err
}
filename := fmt.Sprintf(l.logPath+"/%s/%d/%d/%d/channel.txt", message.Tags["room-id"], year, month, day)
filename := fmt.Sprintf(l.logPath+"/%s/%d/%d/%d/channel.txt", message.RoomID, year, month, day)
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0640)
if err != nil {
return err
}
defer file.Close()
if _, err = file.WriteString(message.Raw + "\n"); err != nil {
return err
}
return nil
}
func (l *Logger) LogUserNoticeMessageForChannel(message twitch.UserNoticeMessage) error {
year := message.Time.Year()
month := int(message.Time.Month())
day := message.Time.Day()
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%d/%d", message.RoomID, year, month, day), 0750)
if err != nil {
return err
}
filename := fmt.Sprintf(l.logPath+"/%s/%d/%d/%d/channel.txt", message.RoomID, year, month, day)
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0640)
if err != nil {

View file

@ -27,7 +27,7 @@ func NewFileLogger(logPath string) Logger {
}
}
func (l *Logger) LogPrivateMessageForUser(channel string, user twitch.User, message twitch.PrivateMessage) error {
func (l *Logger) LogPrivateMessageForUser(user twitch.User, message twitch.PrivateMessage) error {
year := message.Time.Year()
month := int(message.Time.Month())
@ -49,7 +49,29 @@ func (l *Logger) LogPrivateMessageForUser(channel string, user twitch.User, mess
return nil
}
func (l *Logger) LogClearchatMessageForUser(channel string, userID string, message twitch.ClearChatMessage) error {
func (l *Logger) LogClearchatMessageForUser(userID string, message twitch.ClearChatMessage) error {
year := message.Time.Year()
month := int(message.Time.Month())
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%d/", message.RoomID, year, month), 0750)
if err != nil {
return err
}
filename := fmt.Sprintf(l.logPath+"/%s/%d/%d/%s.txt", message.RoomID, year, month, userID)
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0640)
if err != nil {
return err
}
defer file.Close()
if _, err = file.WriteString(message.Raw + "\n"); err != nil {
return err
}
return nil
}
func (l *Logger) LogUserNoticeMessageForUser(userID string, message twitch.UserNoticeMessage) error {
year := message.Time.Year()
month := int(message.Time.Month())