diff --git a/backends/libcommuni/session.cpp b/backends/libcommuni/session.cpp index 91a7fee84137d4cb236636f98dde8c6c6d7bbf74..cb0b6c9273aaf68949c62763314a6184aad97c2c 100644 --- a/backends/libcommuni/session.cpp +++ b/backends/libcommuni/session.cpp @@ -189,6 +189,7 @@ void MyIrcSession::on_messageReceived(IrcMessage *message) { void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { QString channel; QStringList members; + std::string nick; IrcNumericMessage *m = (IrcNumericMessage *) message; switch (m->code()) { @@ -196,7 +197,14 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { m_topicData = TO_UTF8(m->parameters().value(2)); break; case 333: - np->handleSubject(user, TO_UTF8(m->parameters().value(1)) + suffix, m_topicData, TO_UTF8(m->parameters().value(2))); + nick = TO_UTF8(m->parameters().value(2)); + if (nick.find("!") != std::string::npos) { + nick = nick.substr(0, nick.find("!")); + } + if (nick.find("/") != std::string::npos) { + nick = nick.substr(0, nick.find("/")); + } + np->handleSubject(user, TO_UTF8(m->parameters().value(1)) + suffix, m_topicData, nick); break; case 353: channel = m->parameters().value(2);