{"NS_ACCESS_OUTRANKED", "You cannot give users access greater than or equal to your own."},
{"NS_USER_OUTRANKED", "\002%s\002 outranks you (command has no effect)."},
{"NS_ACCESS_DENIED", "Access denied."},
+ {"NS_NO_ACCESS", "You lack sufficient access to use this command."},
{"NS_TABLE_NONE", " None"},
+ {"NS_INVALID_ACCESS_RANGE", "Invalid access range; minimum (%d) must be lower than maximum (%d)."},
{"NS_CLVL_DONE", "%s now has access \002%d\002 in %s."},
{"NS_A_LACKS_ACCESS_BUT_GOD_NICK", "%s lacks access to %s but has \002security override\002 enabled."},
{"NS_A_LACKS_ACCESS_BUT_GOD_AUTH", "%s (%s) lacks access to %s but has \002security override\002 enabled."},
{"NS_UP_ALREADY_OP", "You are already opped in \002%s\002."},
{"NS_UP_ALREADY_VOICE", "You are already voiced in \002%s\002."},
{"NS_DOWN_ALREADY", "You are not opped or voiced in \002%s\002."},
+ {"NS_MDELUSER_DONE", "Deleted \002%d\002 account(s) matching \002%s\002 with access from \002%d\002 to \002%d\002 from the %s user list."},
{NULL, NULL}
};
#include "cmd_neonserv_clvl.c"
#include "cmd_neonserv_deluser.c"
#include "cmd_neonserv_delme.c"
-//#include "cmd_neonserv_mdeluser.c"
+#include "cmd_neonserv_mdeluser.c"
//#include "cmd_neonserv_trim.c"
//#include "cmd_neonserv_giveownership.c"
#include "cmd_neonserv_users.c"
register_command(BOTID, "down", neonserv_cmd_down, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN);
register_command(BOTID, "upall", neonserv_cmd_upall, 0, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH);
register_command(BOTID, "downall", neonserv_cmd_downall, 0, 0);
+ register_command(BOTID, "mdeluser", neonserv_cmd_mdeluser, 2, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH);
start_bots();
bind_bot_ready(neonserv_bot_ready);
--- /dev/null
+
+/*
+* argv[0] access (format: minaccess-maxaccess)
+* argv[1] pattern
+*/
+
+static CMD_BIND(neonserv_cmd_mdeluser) {
+ check_mysql();
+ if(!checkChannelAccess(user, chan, "channel_candel", 1, 0)) {
+ reply(getTextBot(), user, "NS_ACCESS_DENIED");
+ return;
+ }
+ int min_access, max_access;
+ char *seperator = strstr(argv[0], "-");
+ if(seperator) {
+ seperator = '\0';
+ seperator++;
+ min_access = atoi(argv[0]);
+ max_access = atoi(seperator);
+ if(max_access > min_access) {
+ reply(getTextBot(), user, "NS_INVALID_ACCESS_RANGE", min_access, max_access);
+ return;
+ }
+ } else {
+ min_access = atoi(argv[0]);
+ max_access = min_access;
+ }
+ if(max_access >= getChannelAccess(user, chan, 1)) {
+ reply(getTextBot(), user, "NS_NO_ACCESS");
+ return;
+ }
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ int del_count = 0;
+ printf_mysql_query("SELECT `user_user`, `chanuser_id` FROM `chanusers` LEFT JOIN `users` ON `chanuser_uid` = `user_id` WHERE `chanuser_cid` = '%d' AND `chanuser_access` >= '%d' AND `chanuser_access` <= '%d'", chan->channel_id, min_access, max_access);
+ res = mysql_use();
+ while((row = mysql_fetch_row(res)) != NULL) {
+ if(!match(argv[1], row[0])) {
+ del_count++;
+ printf_mysql_query("DELETE FROM `chanusers` WHERE `chanuser_id` = '%s'", row[1]);
+ }
+ }
+ reply(getTextBot(), user, "NS_MDELUSER_DONE", del_count, argv[1], min_access, max_access, chan->name);
+}
+