diff --git a/irc.go b/irc.go index 60872c8..e8c63f8 100644 --- a/irc.go +++ b/irc.go @@ -91,6 +91,7 @@ func pinger(i *IRCConnection) { i.SendRaw(fmt.Sprintf("PING %d", time.Nanoseconds())) //Try to recapture nickname if it's not as configured. if i.nick != i.nickcurrent { + i.nickcurrent = i.nick i.SendRaw(fmt.Sprintf("NICK %s", i.nick)) } } @@ -200,6 +201,7 @@ func IRC(nick, user string) *IRCConnection { irc.Error = make(chan os.Error) irc.nick = nick irc.user = user + irc.VerboseCallbackHandler = true irc.setupCallbacks() return irc } diff --git a/irc_callback.go b/irc_callback.go index ac9cfba..018fec5 100644 --- a/irc_callback.go +++ b/irc_callback.go @@ -49,11 +49,14 @@ func (irc *IRCConnection) RunCallbacks(event *IRCEvent) { } } if callbacks, ok := irc.events[event.Code]; ok { + if irc.VerboseCallbackHandler { + fmt.Printf("%v (%v) >> %#v\n", event.Code, len(callbacks), event) + } for _, callback := range callbacks { go callback(event) } - } else { - fmt.Printf("No callback for: %#v\n", event) + } else if irc.VerboseCallbackHandler { + fmt.Printf("%v (0) >> %#v\n", event.Code, event) } } @@ -107,4 +110,8 @@ func (irc *IRCConnection) setupCallbacks() { irc.nickcurrent = e.Arguments[0] } }) + + irc.AddCallback("001", func(e *IRCEvent) { + irc.nickcurrent = e.Arguments[0] + }) } diff --git a/irc_struct.go b/irc_struct.go index 23b6c09..8174018 100644 --- a/irc_struct.go +++ b/irc_struct.go @@ -26,6 +26,8 @@ type IRCConnection struct { ticker <-chan int64 ticker2 <-chan int64 + VerboseCallbackHandler bool + quitting bool }