Handle all unknown IRC command by forwarding the arguments as a message body
This way, the users can receive the result of any IRC command (although not parsed nor formatted in anyway) when biboumi doesn’t support it fix #2884
This commit is contained in:
+22
-1
@@ -8,6 +8,7 @@
|
||||
#include <utils/tolower.hpp>
|
||||
#include <utils/split.hpp>
|
||||
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
|
||||
@@ -154,7 +155,11 @@ void IrcClient::parse_in_buffer(const size_t)
|
||||
}
|
||||
}
|
||||
else
|
||||
log_info("No handler for command " << message.command);
|
||||
{
|
||||
log_info("No handler for command " << message.command <<
|
||||
", forwarding the arguments to the user");
|
||||
this->on_unknown_message(message);
|
||||
}
|
||||
// Try to find a waiting_iq, which response will be triggered by this IrcMessage
|
||||
this->bridge->trigger_on_irc_message(this->hostname, message);
|
||||
}
|
||||
@@ -797,6 +802,22 @@ void IrcClient::on_user_mode(const IrcMessage& message)
|
||||
" is [" + message.arguments[1] + "]");
|
||||
}
|
||||
|
||||
void IrcClient::on_unknown_message(const IrcMessage& message)
|
||||
{
|
||||
if (message.arguments.size() < 2)
|
||||
return ;
|
||||
std::string from = message.prefix;
|
||||
const std::string to = message.arguments[0];
|
||||
std::stringstream ss;
|
||||
for (auto it = message.arguments.begin() + 1; it != message.arguments.end(); ++it)
|
||||
{
|
||||
ss << *it;
|
||||
if (it + 1 != message.arguments.end())
|
||||
ss << " ";
|
||||
}
|
||||
this->bridge->send_xmpp_message(this->hostname, from, ss.str());
|
||||
}
|
||||
|
||||
size_t IrcClient::number_of_joined_channels() const
|
||||
{
|
||||
if (this->dummy_channel.joined)
|
||||
|
||||
Reference in New Issue
Block a user