void IRCDProto::SendAction(const MessageSource &source, const Anope::string &dest, const Anope::string &message) { Anope::string actionbuf = "\1ACTION "; actionbuf.append(message); actionbuf.append('\1'); SendPrivmsg(source, dest, actionbuf); }
void User::SendMessage(const MessageSource &source, const Anope::string &msg) { 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->HasFieldS("MSG"))); sepstream sep(translated_message, '\n', true); for (Anope::string tok; sep.GetToken(tok);) { if (tok.empty()) tok = " "; spacesepstream ssep(tok, true); Anope::string buf; for (Anope::string word; ssep.GetToken(word);) { Anope::string add = buf.empty() ? word : " " + word; if (buf.length() + add.length() > Config->LineWrap) { if (send_privmsg) IRCD->SendPrivmsg(source, this->GetUID(), "%s", buf.c_str()); else IRCD->SendNotice(source, this->GetUID(), "%s", buf.c_str()); buf.clear(); add = word; } buf.append(add); } if (!buf.empty()) { if (send_privmsg) IRCD->SendPrivmsg(source, this->GetUID(), "%s", buf.c_str()); else IRCD->SendNotice(source, this->GetUID(), "%s", buf.c_str()); } } }