Changeset 392 in code for trunk/irc.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/irc.go

    r350 r392  
    370370        js.keys[i], js.keys[j] = js.keys[j], js.keys[i]
    371371}
     372
     373// parseCTCPMessage parses a CTCP message. CTCP is defined in
     374// https://tools.ietf.org/html/draft-oakley-irc-ctcp-02
     375func parseCTCPMessage(msg *irc.Message) (cmd string, params string, ok bool) {
     376        if (msg.Command != "PRIVMSG" && msg.Command != "NOTICE") || len(msg.Params) < 2 {
     377                return "", "", false
     378        }
     379        text := msg.Params[1]
     380
     381        if !strings.HasPrefix(text, "\x01") {
     382                return "", "", false
     383        }
     384        text = strings.Trim(text, "\x01")
     385
     386        words := strings.SplitN(text, " ", 2)
     387        cmd = strings.ToUpper(words[0])
     388        if len(words) > 1 {
     389                params = words[1]
     390        }
     391
     392        return cmd, params, true
     393}
Note: See TracChangeset for help on using the changeset viewer.