/** Holds a timed ban
*/
-class TimedBan : public classbase
+class TimedBan
{
public:
std::string channel;
class CommandTban : public Command
{
public:
- CommandTban (InspIRCd* Instance, Module* Creator) : Command(Instance, Creator,"TBAN", 0, 3)
+ CommandTban(Module* Creator) : Command(Creator,"TBAN", 3)
{
syntax = "<channel> <duration> <banmask>";
TRANSLATE4(TR_TEXT, TR_TEXT, TR_TEXT, TR_END);
Channel* channel = ServerInstance->FindChan(parameters[0]);
if (channel)
{
- int cm = channel->GetStatus(user);
- if ((cm == STATUS_HOP) || (cm == STATUS_OP))
+ int cm = channel->GetPrefixValue(user);
+ if ((cm == HALFOP_VALUE) || (cm == OP_VALUE))
{
if (!ServerInstance->IsValidMask(parameters[2]))
{
TimedBanList.push_back(T);
channel->WriteAllExcept(user, true, '@', tmp, "NOTICE %s :%s added a timed ban on %s lasting for %ld seconds.", channel->name.c_str(), user->nick.c_str(), mask.c_str(), duration);
ServerInstance->PI->SendChannelNotice(channel, '@', user->nick + " added a timed ban on " + mask + " lasting for " + ConvToStr(duration) + " seconds.");
- if (ServerInstance->Config->AllowHalfop)
- {
- channel->WriteAllExcept(user, true, '%', tmp, "NOTICE %s :%s added a timed ban on %s lasting for %ld seconds.", channel->name.c_str(), user->nick.c_str(), mask.c_str(), duration);
- ServerInstance->PI->SendChannelNotice(channel, '%', user->nick + " added a timed ban on " + mask + " lasting for " + ConvToStr(duration) + " seconds.");
- }
return CMD_SUCCESS;
}
return CMD_FAILURE;
}
- else user->WriteNumeric(482, "%s %s :You must be at least a%soperator to change modes on this channel",user->nick.c_str(), channel->name.c_str(),
- ServerInstance->Config->AllowHalfop ? " half-" : " channel ");
+ else
+ {
+ user->WriteNumeric(482, "%s %s :You do not have permission to change modes on this channel",
+ user->nick.c_str(), channel->name.c_str());
+ }
return CMD_FAILURE;
}
user->WriteNumeric(401, "%s %s :No such channel",user->nick.c_str(), parameters[0].c_str());
{
CommandTban cmd;
public:
- ModuleTimedBans(InspIRCd* Me)
- : Module(Me), cmd(Me, this)
+ ModuleTimedBans()
+ : cmd(this)
{
ServerInstance->AddCommand(&cmd);
TimedBanList.clear();
std::string expiry = "*** Timed ban on " + chan + " expired.";
cr->WriteAllExcept(ServerInstance->FakeClient, true, '@', empty, "NOTICE %s :%s", cr->name.c_str(), expiry.c_str());
ServerInstance->PI->SendChannelNotice(cr, '@', expiry);
- if (ServerInstance->Config->AllowHalfop)
- {
- cr->WriteAllExcept(ServerInstance->FakeClient, true, '%', empty, "NOTICE %s :%s", cr->name.c_str(), expiry.c_str());
- ServerInstance->PI->SendChannelNotice(cr, '%', expiry);
- }
ServerInstance->SendMode(setban, ServerInstance->FakeClient);
ServerInstance->PI->SendMode(chan, ServerInstance->Modes->GetLastParseParams(), ServerInstance->Modes->GetLastParseTranslate());
virtual Version GetVersion()
{
- return Version("$Id$", VF_COMMON | VF_VENDOR, API_VERSION);
+ return Version("Adds timed bans", VF_COMMON | VF_VENDOR);
}
};