diff options
-rw-r--r-- | cap.go | 6 | ||||
-rw-r--r-- | cmd_cap.go | 10 |
2 files changed, 12 insertions, 4 deletions
@@ -6,8 +6,10 @@ import ( var Caps = map[string]string{} -var capls string -var capls302 string +var ( + capls string + capls302 string +) // Can't be in init() because Caps will be registered with init in the future // and init()s are executed by filename alphabetical order @@ -1,6 +1,7 @@ package main import ( + "strconv" "strings" ) @@ -25,8 +26,13 @@ func handleClientCap(msg RMsg, client *Client) error { client.State = ClientStateCapabilities } var err error - if len(msg.Params) >= 2 && msg.Params[1] == "302" { - err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls302)) + if len(msg.Params) >= 2 { + capVersion, err := strconv.ParseUint(msg.Params[1], 10, 64) + if err == nil && capVersion >= 302 { + err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls302)) + } else { + err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls)) + } } else { err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls)) } |