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