]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/modcmd.c
Auto Routing Plan System
[irc/evilnet/x3.git] / src / modcmd.c
index 72373500d5eab4cee1ca3c4ab4fba2c4c838f60b..ce25e38bc2dc11c16784fb42e6154d461d4a19bb 100644 (file)
@@ -639,13 +639,6 @@ svccmd_invoke_argv(struct userNode *user, struct service *service, struct chanNo
     unsigned int cmd_arg, perms, flags, options;
     char channel_name[CHANNELLEN+1];
 
-    /* First check pubcmd for the channel. */
-    if (channel && (channel->channel_info) && (service->bot == chanserv)
-        && !check_user_level(channel, user, lvlPubCmd, 1, 0)) {
-        send_message(user, service->bot, "MCMSG_PUBLIC_DENY", channel->name);
-        return 0;
-    }
-
     options = (server_qualified ? SVCCMD_QUALIFIED : 0) | SVCCMD_DEBIT | SVCCMD_NOISY;
     /* Find the command argument. */
     cmd_arg = IsChannelName(argv[0]) ? 1 : 0;
@@ -663,6 +656,14 @@ svccmd_invoke_argv(struct userNode *user, struct service *service, struct chanNo
             send_message(user, service->bot, "MSG_COMMAND_UNKNOWN", argv[cmd_arg]);
         return 0;
     }
+
+    /* Check pubcmd for the channel. */
+    if (channel && (channel->channel_info) && (service->bot == chanserv)
+        && !check_user_level(channel, user, lvlPubCmd, 1, 0)) {
+        send_message(user, service->bot, "MCMSG_PUBLIC_DENY", channel->name);
+        return 0;
+    }
+
     flags = cmd->effective_flags;
     /* If they put a channel name first, check if the command allows
      * it.  If so, swap it with the command name.
@@ -2140,10 +2141,10 @@ modcmd_expand(const char *variable) {
         exp.type = HF_TABLE;
         exp.value.table.length = 1;
         exp.value.table.width = 1;
-        exp.value.table.flags = TABLE_REPEAT_ROWS;
+        exp.value.table.flags = TABLE_REPEAT_ROWS | TABLE_NO_HEADERS;
         exp.value.table.contents = calloc(dict_size(service->commands)+1, sizeof(char**));
         exp.value.table.contents[0] = calloc(1, sizeof(char*));
-        exp.value.table.contents[0][0] = "Commands:";
+        exp.value.table.contents[0][0] = "Commands";
         dict_foreach(service->commands, append_entry, &exp);
         return exp;
     } else if (!irccasecmp(variable, "languages")) {
@@ -2420,6 +2421,7 @@ create_default_binds(int rebind) {
         { "Global", { "Global", NULL } },
         { "NickServ", { "NickServ", NULL } },
         { "OpServ", { "OpServ", "modcmd", "sendmail", "saxdb", "proxycheck", NULL } },
+        { "SpamServ", { "SpamServ", NULL } },
         { NULL, { NULL } }
     };
     unsigned int ii, jj;
@@ -2470,6 +2472,8 @@ create_default_binds(int rebind) {
             svccmd->min_opserv_level = 101;
             svccmd = service_make_alias(service, "service", "*modcmd.joiner", NULL);
             svccmd->min_opserv_level = 900;
+            svccmd = service_make_alias(service, "routing", "*modcmd.joiner", NULL);
+            svccmd->min_opserv_level = 100;
         }
     }
 }