Changeset 392 in code
Legend:
- Unmodified
- Added
- Removed
-
trunk/irc.go
r350 r392 370 370 js.keys[i], js.keys[j] = js.keys[j], js.keys[i] 371 371 } 372 373 // parseCTCPMessage parses a CTCP message. CTCP is defined in 374 // https://tools.ietf.org/html/draft-oakley-irc-ctcp-02 375 func 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 } -
trunk/logger.go
r391 r392 131 131 return fmt.Sprintf("-%s- %s", msg.Prefix.Name, msg.Params[1]) 132 132 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 } 134 138 default: 135 139 return "" … … 145 149 line = line[11:] 146 150 147 var cmd, s uffixstring151 var cmd, sender, text string 148 152 if strings.HasPrefix(line, "<") { 149 153 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] 151 159 } else if strings.HasPrefix(line, "-") { 152 160 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" 154 173 } else { 155 174 return nil, time.Time{}, nil 156 175 } 157 158 i := strings.Index(line, suffix)159 if i < 0 {160 return nil, time.Time{}, nil161 }162 sender := line[1:i]163 text := line[i+2:]164 176 165 177 year, month, day := ref.Date()
Note:
See TracChangeset
for help on using the changeset viewer.