diff --git a/client/handlers.go b/client/handlers.go index 028267b..3b0a5f9 100644 --- a/client/handlers.go +++ b/client/handlers.go @@ -6,6 +6,7 @@ package client import ( "github.com/fluffle/goevent/event" "strings" + "time" ) // Consts for unnamed events. @@ -99,6 +100,13 @@ func (conn *Conn) h_433(line *Line) { // Args[1] is the new nick we were attempting to acquire neu := conn.NewNick(line.Args[1]) conn.Nick(neu) + // arm a timer to try get back our nick. + go func(old string) { + retry := 1 * time.Minute + for time.Sleep(retry); conn.cfg.Me.Nick != old; time.Sleep(retry) { + conn.Nick(old) + } + }(conn.cfg.Me.Nick) // if this is happening before we're properly connected (i.e. the nick // we sent in the initial NICK command is in use) we will not receive // a NICK message to confirm our change of nick, so ReNick here...