From 2796bba9c9bccdb6a09ef381ce76012271600edd Mon Sep 17 00:00:00 2001 From: Alexandre Morignot <erdnaxeli@cervoi.se> Date: Wed, 19 Oct 2016 23:57:12 +0200 Subject: [PATCH] Fix newNick --- irc/events.go | 6 ++++-- irc/transport.go | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/irc/events.go b/irc/events.go index 5d31aa9..5ce7e33 100644 --- a/irc/events.go +++ b/irc/events.go @@ -12,10 +12,12 @@ import ( ) func (t *Transport) connected(client *irc.Conn, line *irc.Line) { - t.Logger.Printf("%s is connected", client.Me().Nick) + nick := t.getNick(client) + t.Logger.Printf("%s is connected", nick) + if t.client != client { // user's client - for _, channel := range t.userChannels[client.Me().Nick] { + for _, channel := range t.userChannels[nick] { log.Printf("Join %s", channel) client.Join(channel) } diff --git a/irc/transport.go b/irc/transport.go index 8efde31..3fe092c 100644 --- a/irc/transport.go +++ b/irc/transport.go @@ -33,6 +33,7 @@ func New(name string, cfg map[string]interface{}) (jc.Transport, error) { t := &Transport{ cfg: cfg, connectionError: make(chan error), + realNicks: make(map[string]string), userClients: make(map[string]*irc.Conn), userChannels: make(map[string][]string), @@ -110,7 +111,6 @@ func (t *Transport) newIrcConfig(nick string, cfg map[string]interface{}) (*irc. } func (t *Transport) newNick(nick string) string { - log.Printf("new nick %s", nick) realNick, ok := t.realNicks[nick] if !ok { realNick = nick @@ -118,7 +118,7 @@ func (t *Transport) newNick(nick string) string { delete(t.realNicks, nick) } - newNick := nick + "^" + newNick := nick + "_" t.realNicks[newNick] = realNick return newNick } @@ -138,7 +138,7 @@ func (t *Transport) getIrcClient(cfg *irc.Config) *irc.Conn { } func (t *Transport) isUserDistant(user string) bool { - for k, _ := range t.userClients { + for k, _ := range t.realNicks { if k == user { return true } @@ -146,3 +146,14 @@ func (t *Transport) isUserDistant(user string) bool { return false } + +func (t *Transport) getNick(client *irc.Conn) string { + ircNick := client.Me().Nick + nick, ok := t.realNicks[ircNick] + + if ok { + return nick + } else { + return ircNick + } +} -- GitLab