Commit 77a84fd2 authored by louiz’'s avatar louiz’

NOTICE from channels are displayed in the channel, with a green "[notice]"

parent 6ebb586b
...@@ -235,6 +235,21 @@ void IrcClient::forward_server_message(const IrcMessage& message) ...@@ -235,6 +235,21 @@ void IrcClient::forward_server_message(const IrcMessage& message)
this->bridge->send_xmpp_message(this->hostname, from, body); 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) void IrcClient::on_isupport_message(const IrcMessage& message)
{ {
const size_t len = message.arguments.size(); const size_t len = message.arguments.size();
......
...@@ -147,6 +147,10 @@ public: ...@@ -147,6 +147,10 @@ public:
* When a channel message is received * When a channel message is received
*/ */
void on_channel_message(const IrcMessage& message); void on_channel_message(const IrcMessage& message);
/**
* A notice is received
*/
void on_notice(const IrcMessage& message);
/** /**
* Save the topic in the IrcChannel * Save the topic in the IrcChannel
*/ */
...@@ -282,7 +286,7 @@ private: ...@@ -282,7 +286,7 @@ private:
typedef void (IrcClient::*irc_callback_t)(const IrcMessage&); typedef void (IrcClient::*irc_callback_t)(const IrcMessage&);
static const std::unordered_map<std::string, irc_callback_t> irc_callbacks = { 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}, {"002", &IrcClient::forward_server_message},
{"003", &IrcClient::forward_server_message}, {"003", &IrcClient::forward_server_message},
{"005", &IrcClient::on_isupport_message}, {"005", &IrcClient::on_isupport_message},
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment