summaryrefslogtreecommitdiff
path: root/src/users.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/users.cpp')
-rw-r--r--src/users.cpp56
1 files changed, 25 insertions, 31 deletions
diff --git a/src/users.cpp b/src/users.cpp
index 84a5173a4..956d77b9c 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -332,48 +332,42 @@ void User::SendMessage(BotInfo *source, const char *fmt, ...)
va_end(args);
}
-void User::SendMessage(BotInfo *source, const Anope::string &msg)
+namespace
{
- 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);)
+ void SendMessageInternal(BotInfo *source, User* target, const Anope::string &msg, const Anope::map<Anope::string> &tags)
{
- if (send_privmsg)
- IRCD->SendPrivmsgInternal(source, this->GetUID(), tok);
- else
- IRCD->SendNoticeInternal(source, this->GetUID(), tok);
+ const char *translated_message = Language::Translate(target, 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
+ */
+ auto account = target->Account();
+ bool send_privmsg = Config->UsePrivmsg && ((!account && Config->DefPrivmsg) || (account && account->HasExt("MSG")));
+ sepstream sep(translated_message, '\n', true);
+ for (Anope::string tok; sep.GetToken(tok);)
+ {
+ if (send_privmsg)
+ IRCD->SendPrivmsgInternal(source, target->GetUID(), tok, tags);
+ else
+ IRCD->SendNoticeInternal(source, target->GetUID(), tok, tags);
+ }
}
}
+void User::SendMessage(BotInfo *source, const Anope::string &msg)
+{
+ SendMessageInternal(source, this, 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);
- }
+ SendMessageInternal(*source.service, this, msg, tags);
}
void User::Identify(NickAlias *na)