diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-04-25 00:35:57 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-04-25 00:35:57 +0200 |
commit | 77a84fd2d99bcffd562f09c8235e5bcd365accb1 (patch) | |
tree | 1fb5c605ecd2a76bc4c4cdfe20dd24a3a3507cb4 /src/irc | |
parent | 6ebb586b6ce097d5768e3863411042f4dc6c979e (diff) | |
download | biboumi-77a84fd2d99bcffd562f09c8235e5bcd365accb1.tar.gz biboumi-77a84fd2d99bcffd562f09c8235e5bcd365accb1.tar.bz2 biboumi-77a84fd2d99bcffd562f09c8235e5bcd365accb1.tar.xz biboumi-77a84fd2d99bcffd562f09c8235e5bcd365accb1.zip |
NOTICE from channels are displayed in the channel, with a green "[notice]"
Diffstat (limited to 'src/irc')
-rw-r--r-- | src/irc/irc_client.cpp | 15 | ||||
-rw-r--r-- | src/irc/irc_client.hpp | 6 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp index 537b738..f077e37 100644 --- a/src/irc/irc_client.cpp +++ b/src/irc/irc_client.cpp @@ -235,6 +235,21 @@ void IrcClient::forward_server_message(const IrcMessage& message) this->bridge->send_xmpp_message(this->hostname, from, body); } +void IrcClient::on_notice(const IrcMessage& message) +{ + std::string from = message.prefix; + const std::string to = message.arguments[0]; + const std::string body = message.arguments[1]; + + if (to == this->current_nick) + this->bridge->send_xmpp_message(this->hostname, from, body); + else + { + IrcMessage modified_message(std::move(from), "PRIVMSG", {to, std::string("\u000303[notice]\u0003 ") + body}); + this->on_channel_message(modified_message); + } +} + void IrcClient::on_isupport_message(const IrcMessage& message) { const size_t len = message.arguments.size(); diff --git a/src/irc/irc_client.hpp b/src/irc/irc_client.hpp index 811d416..849190a 100644 --- a/src/irc/irc_client.hpp +++ b/src/irc/irc_client.hpp @@ -148,6 +148,10 @@ public: */ void on_channel_message(const IrcMessage& message); /** + * A notice is received + */ + void on_notice(const IrcMessage& message); + /** * Save the topic in the IrcChannel */ void on_topic_received(const IrcMessage& message); @@ -282,7 +286,7 @@ private: typedef void (IrcClient::*irc_callback_t)(const IrcMessage&); static const std::unordered_map<std::string, irc_callback_t> irc_callbacks = { - {"NOTICE", &IrcClient::forward_server_message}, + {"NOTICE", &IrcClient::on_notice}, {"002", &IrcClient::forward_server_message}, {"003", &IrcClient::forward_server_message}, {"005", &IrcClient::on_isupport_message}, |