]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_delaymsg.cpp
Add support for blocking tag messages with the deaf mode.
[user/henk/code/inspircd.git] / src / modules / m_delaymsg.cpp
index ed37477d84f33250bed6ea791b503f9351442e93..27e2c3e4011ca6c65870763b1c888c353f2580fa 100644 (file)
@@ -1,7 +1,10 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2013, 2017-2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012-2015 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -29,11 +32,12 @@ class DelayMsgMode : public ParamMode<DelayMsgMode, LocalIntExt>
                , jointime("delaymsg", ExtensionItem::EXT_MEMBERSHIP, Parent)
        {
                ranktoset = ranktounset = OP_VALUE;
+               syntax = "<seconds>";
        }
 
        bool ResolveModeConflict(std::string& their_param, const std::string& our_param, Channel*) CXX11_OVERRIDE
        {
-               return (atoi(their_param.c_str()) < atoi(our_param.c_str()));
+               return ConvToNum<intptr_t>(their_param) < ConvToNum<intptr_t>(our_param);
        }
 
        ModeAction OnSet(User* source, Channel* chan, std::string& parameter) CXX11_OVERRIDE;
@@ -91,7 +95,7 @@ void DelayMsgMode::OnUnset(User* source, Channel* chan)
 
 Version ModuleDelayMsg::GetVersion()
 {
-       return Version("Provides channel mode +d <int>, to deny messages to a channel until <int> seconds have passed", VF_VENDOR);
+       return Version("Adds channel mode d (delaymsg) which prevents newly joined users from speaking until the specified number of seconds have passed.", VF_VENDOR);
 }
 
 void ModuleDelayMsg::OnUserJoin(Membership* memb, bool sync, bool created, CUList&)
@@ -137,7 +141,8 @@ ModResult ModuleDelayMsg::HandleMessage(User* user, const MessageTarget& target,
        {
                if (channel->GetPrefixValue(user) < VOICE_VALUE)
                {
-                       user->WriteNumeric(ERR_CANNOTSENDTOCHAN, channel->name, InspIRCd::Format("You must wait %d seconds after joining to send to the channel (+d)", len));
+                       const std::string message = InspIRCd::Format("You cannot send messages to this channel until you have been a member for %d seconds.", len);
+                       user->WriteNumeric(Numerics::CannotSendTo(channel, message));
                        return MOD_RES_DENY;
                }
        }