]> jfr.im git - irc/quakenet/newserv.git/blobdiff - chanserv/chanservuser.c
Implement --help parameter.
[irc/quakenet/newserv.git] / chanserv / chanservuser.c
index 8e6a2ef59e14f593267b40a665a03bbdd21dca75..bd755bbe7d7d4fad625a3466571fe16b7cabc323 100644 (file)
@@ -174,6 +174,20 @@ void chanservuserhandler(nick *target, int message, void **params) {
        break;
       }
       
+      if ((cmd->level & QCMD_ACHIEVEMENTS) && !UIsDev(rup) &&
+          ((time(NULL) < ACHIEVEMENTS_START) || 
+           ((time(NULL) > ACHIEVEMENTS_END) && !UIsAchievements(rup)))) {
+        chanservstdmessage(sender, QM_UNKNOWNCMD, cargv[0]);
+        break;
+      } 
+    
+      if ((cmd->level & QCMD_TITLES) && !UIsDev(rup) &&
+          ((time(NULL) < ACHIEVEMENTS_START) ||
+           (time(NULL) > ACHIEVEMENTS_END))) {
+        chanservstdmessage(sender, QM_UNKNOWNCMD, cargv[0]);
+        break;
+      }
+      
       cmd->calls++;
       
       if (cmd->maxparams < (cargc-1)) {
@@ -182,6 +196,8 @@ void chanservuserhandler(nick *target, int message, void **params) {
       }
       
       cmd->handler((void *)sender, cargc-1, &(cargv[1]));
+      
+      triggerhook(HOOK_CHANSERV_CMD, sender);
     }
     break;
 
@@ -776,7 +792,7 @@ void cs_doallautomodes(nick *np) {
           continue;
         }
 
-        if (CUKnown(rcup) && rcup->chan->index->channel->users->totalusers >= 3) {
+        if (CUHasOpPriv(rcup) && cs_ischannelactive(rcup->chan->index->channel, NULL)) {
           /* This meets the channel use criteria, update. */
           rcup->chan->lastactive=time(NULL);
           
@@ -787,7 +803,6 @@ void cs_doallautomodes(nick *np) {
           }
         }
 
-
        localsetmodeinit(&changes, rcup->chan->index->channel, chanservnick);
        if (*lp & CUMODE_OP) {
          if (!IsService(np) && (CUIsDeny(rcup) || (CIsBitch(rcup->chan) && !CUHasOpPriv(rcup))))
@@ -812,11 +827,16 @@ void cs_doallautomodes(nick *np) {
       } else {
        /* Channel exists but user is not joined: invite if they are +j-b */
        if (CUIsAutoInvite(rcup) && CUKnown(rcup) && !CUIsBanned(rcup)) {
-         localinvite(chanservnick, rcup->chan->index->channel, np);
+         localinvite(chanservnick, rcup->chan->index, np);
        }
       }
-    }
-  }
+    } /* if (rcup->chan->index->channel) */ else {
+      /* Channel doesn't currently exist - send invite anyway for +j */
+      if (CUIsAutoInvite(rcup) && CUKnown(rcup) && !CUIsBanned(rcup)) {
+        localinvite(chanservnick, rcup->chan->index, np);
+      }
+    } 
+  } /* for */
 }
 
 void cs_checknickbans(nick *np) {