From d905e8867128e369a7325928501912cf8396697e Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Sat, 16 Dec 2017 19:20:57 +0100 Subject: [PATCH] We now handle irc NOTICE messages --- src/ircmanager.cpp | 23 +++++++++++++++++++++++ src/ircmanager.hpp | 1 + 2 files changed, 24 insertions(+) diff --git a/src/ircmanager.cpp b/src/ircmanager.cpp index 8723ea82..30d53e62 100644 --- a/src/ircmanager.cpp +++ b/src/ircmanager.cpp @@ -242,6 +242,8 @@ void IrcManager::messageReceived(Communi::IrcMessage *message) this->handleUserNoticeMessage(message); } else if (command == "MODE") { this->handleModeMessage(message); + } else if (command == "NOTICE") { + this->handleNoticeMessage(static_cast(message)); } } @@ -417,6 +419,27 @@ void IrcManager::removeIgnoredUser(QString const &username) } } +void IrcManager::handleNoticeMessage(Communi::IrcNoticeMessage *message) +{ + auto rawChannelName = message->target(); + + assert(rawChannelName.length() >= 2); + + auto trimmedChannelName = rawChannelName.mid(1); + + auto c = this->channelManager.getTwitchChannel(trimmedChannelName); + + if (!c) { + debug::Log("[IrcManager:handleNoticeMessage] Channel {} not found in channel manager", + trimmedChannelName); + return; + } + + std::shared_ptr msg(Message::createSystemMessage(message->content())); + + c->addMessage(msg); +} + void IrcManager::onConnected() { std::shared_ptr msg(Message::createSystemMessage("connected to chat")); diff --git a/src/ircmanager.hpp b/src/ircmanager.hpp index c64c98a4..ca247c9f 100644 --- a/src/ircmanager.hpp +++ b/src/ircmanager.hpp @@ -85,6 +85,7 @@ private: void handleWhisperMessage(Communi::IrcMessage *message); void handleUserNoticeMessage(Communi::IrcMessage *message); void handleModeMessage(Communi::IrcMessage *message); + void handleNoticeMessage(Communi::IrcNoticeMessage *message); void onConnected(); void onDisconnected();