void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override { if (!MemoServ::service) return; const Anope::string &nick = params[0]; const Anope::string &text = params[1]; if (Anope::ReadOnly && !source.IsOper()) { source.Reply(_("Sorry, memo sending is temporarily disabled.")); return; } if (source.GetAccount()->HasFieldS("UNCONFIRMED")) { source.Reply(_("You must confirm your account before you may send a memo.")); return; } MemoServ::MemoServService::MemoResult result = MemoServ::service->Send(source.GetNick(), nick, text); if (result == MemoServ::MemoServService::MEMO_SUCCESS) { source.Reply(_("Memo sent to \002%s\002."), nick.c_str()); Log(LOG_COMMAND, source, this) << "to send a memo to " << nick; } else if (result == MemoServ::MemoServService::MEMO_INVALID_TARGET) source.Reply(_("\002{0}\002 is not a registered unforbidden nick or channel."), nick); else if (result == MemoServ::MemoServService::MEMO_TOO_FAST) source.Reply(_("Please wait \002{0}\002 seconds before using the \002{1}\002 command again."), Config->GetModule("memoserv")->Get<time_t>("senddelay"), source.command); else if (result == MemoServ::MemoServService::MEMO_TARGET_FULL) source.Reply(_("Sorry, \002{0}\002 currently has too many memos and cannot receive more."), nick); }
void OnInfo(CommandSource &source, Serialize::Object *e, InfoFormatter &info) { if (!source.IsOper()) return; for (OperInfo *o : e->GetRefs<OperInfo *>(operinfo)) info[_("Oper Info")] = Anope::printf(_("(by %s on %s) %s"), o->GetCreator().c_str(), Anope::strftime(o->GetCreated(), source.GetAccount(), true).c_str(), o->GetInfo().c_str()); }
void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override { #warning "this is completely disabled" #if 0 if (!MemoServ::service) return; if (Anope::ReadOnly && !source.IsOper()) { source.Reply(_("Sorry, memo sending is temporarily disabled.")); return; } const Anope::string &nick = params[0]; const Anope::string &text = params[1]; const NickServ::Nick *na = NULL; /* prevent user from rsend to themselves */ if ((na = NickServ::FindNick(nick)) && na->GetAccount() == source.GetAccount()) { source.Reply(_("You can not request a receipt when sending a memo to yourself.")); return; } if (Config->GetModule(this->GetOwner())->Get<bool>("operonly") && !source.IsServicesOper()) source.Reply(_("Access denied. This command is for operators only.")); else { MemoServ::MemoServService::MemoResult result = MemoServ::service->Send(source.GetNick(), nick, text); if (result == MemoServ::MemoServService::MEMO_INVALID_TARGET) source.Reply(_("\002{0}\002 isn't registered."), nick); else if (result == MemoServ::MemoServService::MEMO_TOO_FAST) source.Reply(_("Please wait \002{0}\002 seconds before using the \002{1}\002 command again."), Config->GetModule("memoserv/main")->Get<time_t>("senddelay"), source.command); else if (result == MemoServ::MemoServService::MEMO_TARGET_FULL) source.Reply(_("Sorry, \002{0}\002 currently has too many memos and cannot receive more."), nick); else { source.Reply(_("Memo sent to \002{0}\002."), nick); bool ischan, isregistered; MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(nick, ischan, isregistered, false); if (mi == NULL) throw CoreException("NULL mi in ms_rsend"); MemoServ::Memo *m = (mi->memos->size() ? mi->GetMemo(mi->memos->size() - 1) : NULL); if (m != NULL) m->receipt = true; } } #endif }
EventReturn OnPreCommand(CommandSource &source, Command *command, std::vector<Anope::string> ¶ms) override { if (source.IsOper()) return EVENT_CONTINUE; if (command->GetName() == "nickserv/register") { if (this->CheckLimitReached(source, params.size() > 1 ? params[1] : "")) return EVENT_STOP; } else if (command->GetName() == "nickserv/set/email") { if (this->CheckLimitReached(source, params.size() > 0 ? params[0] : "")) return EVENT_STOP; } else if (command->GetName() == "nickserv/ungroup" && source.GetAccount()) { if (this->CheckLimitReached(source, source.GetAccount()->GetEmail())) return EVENT_STOP; } return EVENT_CONTINUE; }
bool Show(CommandSource &source, const Anope::string &what) const { return source.IsOper() || std::find(show.begin(), show.end(), what) != show.end(); }
EventReturn OnPreCommand(CommandSource &source, Command *command, std::vector<Anope::string> ¶ms) override { if (command->GetName() == "nickserv/info" && params.size() > 0) { ForbidData *d = this->forbid_service.FindForbid(params[0], FT_NICK); if (d != NULL) { if (source.IsOper()) source.Reply(_("Nick \002%s\002 is forbidden by %s: %s"), params[0], d->GetCreator(), d->GetReason()); else source.Reply(_("Nick \002%s\002 is forbidden."), params[0]); return EVENT_STOP; } } else if (command->GetName() == "chanserv/info" && params.size() > 0) { ForbidData *d = this->forbid_service.FindForbid(params[0], FT_CHAN); if (d != NULL) { if (source.IsOper()) source.Reply(_("Channel \002%s\002 is forbidden by %s: %s"), params[0], d->GetCreator(), d->GetReason()); else source.Reply(_("Channel \002%s\002 is forbidden."), params[0]); return EVENT_STOP; } } else if (source.IsOper()) return EVENT_CONTINUE; else if (command->GetName() == "nickserv/register" && params.size() > 1) { ForbidData *d = this->forbid_service.FindForbid(source.GetNick(), FT_REGISTER); if (d != NULL) { source.Reply(_("\002{0}\002 may not be registered."), source.GetNick()); return EVENT_STOP; } d = this->forbid_service.FindForbid(params[1], FT_EMAIL); if (d != NULL) { source.Reply(_("Your email address is not allowed, choose a different one.")); return EVENT_STOP; } } else if (command->GetName() == "nickserv/set/email" && params.size() > 0) { ForbidData *d = this->forbid_service.FindForbid(params[0], FT_EMAIL); if (d != NULL) { source.Reply(_("Your email address is not allowed, choose a different one.")); return EVENT_STOP; } } else if (command->GetName() == "chanserv/register" && !params.empty()) { ForbidData *d = this->forbid_service.FindForbid(params[0], FT_REGISTER); if (d != NULL) { source.Reply(_("Channel \002{0}\002 is currently suspended."), params[0]); return EVENT_STOP; } } return EVENT_CONTINUE; }