summaryrefslogtreecommitdiff
path: root/src/users.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/users.cpp')
-rw-r--r--src/users.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/users.cpp b/src/users.cpp
index 9f1cc8404..fa69b928a 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -234,17 +234,27 @@ void User::SendMessage(BotInfo *source, const char *fmt, ...)
}
}
-void User::SendMessage(BotInfo *source, const Anope::string &msg)
+void User::SendMessage(BotInfo *source, Anope::string msg)
{
+ if (Config->UseStrictPrivMsg)
+ msg = msg.replace_all_cs("%R", "/");
+ else
+ msg = msg.replace_all_cs("%R", "/msg ");
+
/* 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
*/
- if (Config->UsePrivmsg && ((!this->nc && Config->NSDefFlags.HasFlag(NI_MSG)) || (this->nc && this->nc->HasFlag(NI_MSG))))
- ircdproto->SendPrivmsg(source, this->nick, "%s", msg.c_str());
- else
- ircdproto->SendNotice(source, this->nick, "%s", msg.c_str());
+ sepstream sep(msg, '\n');
+ Anope::string tok;
+ while (sep.GetToken(tok))
+ {
+ if (Config->UsePrivmsg && ((!this->nc && Config->NSDefFlags.HasFlag(NI_MSG)) || (this->nc && this->nc->HasFlag(NI_MSG))))
+ ircdproto->SendPrivmsg(source, this->nick, "%s", tok.c_str());
+ else
+ ircdproto->SendNotice(source, this->nick, "%s", tok.c_str());
+ }
}
/** Collides a nick.