mirror of
https://github.com/anope/anope.git
synced 2026-07-06 19:43:13 +02:00
Add the IRCv3 reply tag to messages sent as responses to a user.
This commit is contained in:
@@ -44,6 +44,7 @@ struct CoreExport CommandReply
|
||||
{
|
||||
virtual ~CommandReply() = default;
|
||||
virtual void SendMessage(BotInfo *source, const Anope::string &msg) = 0;
|
||||
virtual void SendMessage(CommandSource& source, const Anope::string &msg);
|
||||
};
|
||||
|
||||
/* The source for a command */
|
||||
|
||||
@@ -193,6 +193,7 @@ public:
|
||||
*/
|
||||
void SendMessage(BotInfo *source, const char *fmt, ...) ATTR_FORMAT(3, 4);
|
||||
void SendMessage(BotInfo *source, const Anope::string &msg) override;
|
||||
void SendMessage(CommandSource& source, const Anope::string &msg) override;
|
||||
|
||||
/** Identify the user to a nick.
|
||||
* updates last_seen, logs the user in,
|
||||
|
||||
+6
-1
@@ -17,6 +17,11 @@
|
||||
#include "regchannel.h"
|
||||
#include "channels.h"
|
||||
|
||||
void CommandReply::SendMessage(CommandSource& source, const Anope::string &msg)
|
||||
{
|
||||
SendMessage(source.service, msg);
|
||||
}
|
||||
|
||||
CommandSource::CommandSource(const Anope::string &n, User *user, NickCore *core, CommandReply *r, BotInfo *bi, const Anope::string &m)
|
||||
: nick(n)
|
||||
, u(user)
|
||||
@@ -119,7 +124,7 @@ void CommandSource::Reply(const Anope::string &message)
|
||||
sepstream sep(translated_message, '\n', true);
|
||||
Anope::string tok;
|
||||
while (sep.GetToken(tok))
|
||||
this->reply->SendMessage(this->service, tok);
|
||||
this->reply->SendMessage(*this, tok);
|
||||
}
|
||||
|
||||
Command::Command(Module *o, const Anope::string &sname, size_t minparams, size_t maxparams) : Service(o, "Command", sname), max_params(maxparams), min_params(minparams), module(o)
|
||||
|
||||
@@ -352,6 +352,30 @@ void User::SendMessage(BotInfo *source, const Anope::string &msg)
|
||||
}
|
||||
}
|
||||
|
||||
void User::SendMessage(CommandSource& source, const Anope::string &msg)
|
||||
{
|
||||
Anope::map<Anope::string> tags;
|
||||
if (!source.msgid.empty())
|
||||
tags["+draft/reply"] = source.msgid;
|
||||
|
||||
const char *translated_message = Language::Translate(this, msg.c_str());
|
||||
|
||||
/* Send privmsg instead of notice if:
|
||||
* - UsePrivmsg is enabled
|
||||
* - The user is not registered and NSDefMsg is enabled
|
||||
* - The user is registered and has set /ns set msg on
|
||||
*/
|
||||
bool send_privmsg = Config->UsePrivmsg && ((!this->nc && Config->DefPrivmsg) || (this->nc && this->nc->HasExt("MSG")));
|
||||
sepstream sep(translated_message, '\n', true);
|
||||
for (Anope::string tok; sep.GetToken(tok);)
|
||||
{
|
||||
if (send_privmsg)
|
||||
IRCD->SendPrivmsgInternal(*source.service, this->GetUID(), tok, tags);
|
||||
else
|
||||
IRCD->SendNoticeInternal(*source.service, this->GetUID(), tok, tags);
|
||||
}
|
||||
}
|
||||
|
||||
void User::Identify(NickAlias *na)
|
||||
{
|
||||
if (this->nick.equals_ci(na->nick))
|
||||
|
||||
Reference in New Issue
Block a user