diff --git a/src/parse.c b/src/parse.c --- a/src/parse.c +++ b/src/parse.c @@ -43,6 +43,11 @@ #define TIME 17 #define TELL 18 #define OP 19 +#define DEOP 20 +#define KICK 21 +#define BAN 22 +#define UNBAN 23 +#define KICKBAN 24 const char *COMMAND_LIST[] = { @@ -74,8 +79,11 @@ "!list", "!search", "!info", "!ping", "!on", "!off", "!debug", "!vaccuum", "!logout", - "!who", "!whois", "!time", "!tell", - "!op", NULL + "!who", "!whois", "!time", + "!tell", "!op", "!deop", + "!kick", "!ban", "!unban", + "!kickban", + NULL }; char *parse (MSG * message) @@ -284,6 +292,42 @@ snprintf (msg, 512, "MODE %s +o %s\r\n", message->channel, token); } return msg; + + case DEOP: + if ((token = strtok (NULL, "\r\n")) != NULL) { + if (strstr (message->email, db_lookup (DATABASE_FILE, "mcbot.email"))) + snprintf (msg, 512, "MODE %s -o %s\r\n", message->channel, token); + } + return msg; + + case KICK: + if ((token = strtok (NULL, "\r\n")) != NULL) { + if (strstr (message->email, db_lookup (DATABASE_FILE, "mcbot.email"))) + snprintf (msg, 512, "KICK %s %s\r\n", message->channel, token); + } + return msg; + + case BAN: + if ((token = strtok (NULL, "\r\n")) != NULL) { + if (strstr (message->email, db_lookup (DATABASE_FILE, "mcbot.email"))) + snprintf (msg, 512, "MODE %s +b %s\r\n", message->channel, token); + } + return msg; + + case UNBAN: + if ((token = strtok (NULL, "\r\n")) != NULL) { + if (strstr (message->email, db_lookup (DATABASE_FILE, "mcbot.email"))) + snprintf (msg, 512, "MODE %s -b %s\r\n", message->channel, token); + } + return msg; + + case KICKBAN: + if ((token = strtok (NULL, "\r\n")) != NULL) { + if (strstr (message->email, db_lookup (DATABASE_FILE, "mcbot.email"))) + snprintf (msg, 512, "MODE %s +b %s\r\nKICK %s %s\r\n", message->channel, token, + message->channel, token); + } + return msg; } } i++;