Changeset 392 in code for trunk/logger.go


Ignore:
Timestamp:
Aug 17, 2020, 1:01:53 PM (5 years ago)
Author:
contact
Message:

Format CTCP ACTION messages in logs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/logger.go

    r391 r392  
    131131                return fmt.Sprintf("-%s- %s", msg.Prefix.Name, msg.Params[1])
    132132        case "PRIVMSG":
    133                 return fmt.Sprintf("<%s> %s", msg.Prefix.Name, msg.Params[1])
     133                if cmd, params, ok := parseCTCPMessage(msg); ok && cmd == "ACTION" {
     134                        return fmt.Sprintf("* %s %s", msg.Prefix.Name, params)
     135                } else {
     136                        return fmt.Sprintf("<%s> %s", msg.Prefix.Name, msg.Params[1])
     137                }
    134138        default:
    135139                return ""
     
    145149        line = line[11:]
    146150
    147         var cmd, suffix string
     151        var cmd, sender, text string
    148152        if strings.HasPrefix(line, "<") {
    149153                cmd = "PRIVMSG"
    150                 suffix = "> "
     154                parts := strings.SplitN(line[1:], "> ", 2)
     155                if len(parts) != 2 {
     156                        return nil, time.Time{}, nil
     157                }
     158                sender, text = parts[0], parts[1]
    151159        } else if strings.HasPrefix(line, "-") {
    152160                cmd = "NOTICE"
    153                 suffix = "- "
     161                parts := strings.SplitN(line[1:], "- ", 2)
     162                if len(parts) != 2 {
     163                        return nil, time.Time{}, nil
     164                }
     165                sender, text = parts[0], parts[1]
     166        } else if strings.HasPrefix(line, "* ") {
     167                cmd = "PRIVMSG"
     168                parts := strings.SplitN(line[2:], " ", 2)
     169                if len(parts) != 2 {
     170                        return nil, time.Time{}, nil
     171                }
     172                sender, text = parts[0], "\x01ACTION "+parts[1]+"\x01"
    154173        } else {
    155174                return nil, time.Time{}, nil
    156175        }
    157 
    158         i := strings.Index(line, suffix)
    159         if i < 0 {
    160                 return nil, time.Time{}, nil
    161         }
    162         sender := line[1:i]
    163         text := line[i+2:]
    164176
    165177        year, month, day := ref.Date()
Note: See TracChangeset for help on using the changeset viewer.