diff --git a/client/connection.go b/client/connection.go index 9c7676e..0b3f3ad 100644 --- a/client/connection.go +++ b/client/connection.go @@ -20,6 +20,9 @@ type Conn struct { Me *state.Nick Network string + // Replaceable function to customise the 433 handler's new nick + NewNick func(string) string + // Event handler registry and dispatcher ER event.EventRegistry ED event.EventDispatcher @@ -97,6 +100,7 @@ func Client(nick, ident, name string, SSLConfig: nil, PingFreq: 3 * time.Minute, Flood: false, + NewNick: func(s string) string { return s + "_" }, badness: 0, lastsent: time.Now(), } diff --git a/client/handlers.go b/client/handlers.go index 2624a71..72a72c6 100644 --- a/client/handlers.go +++ b/client/handlers.go @@ -79,7 +79,7 @@ func (conn *Conn) h_001(line *Line) { // Handler to deal with "433 :Nickname already in use" func (conn *Conn) h_433(line *Line) { // Args[1] is the new nick we were attempting to acquire - neu := line.Args[1] + "_" + neu := conn.NewNick(line.Args[1]) conn.Nick(neu) // 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