*
*
* CMDNAME: deluser
- * CMDLEVEL: QCMD_OPER
+ * CMDLEVEL: QCMD_DEV
* CMDARGS: 2
* CMDDESC: Removes a user from the bot.
* CMDFUNC: csu_dodeluser
* CMDPROTO: int csu_dodeluser(void *source, int cargc, char **cargv);
+ * CMDHELP: Usage: deluser <username> <reason>
+ * CMDHELP: Removes the specified username from the bot.
+ * CMDHELP: A reason is required and will be broadcasted.
*/
#include "../chanserv.h"
int csu_dodeluser(void *source, int cargc, char **cargv) {
nick *sender=source;
reguser *rup=getreguserfromnick(sender), *target;
+ char *reason;
if (!rup)
return CMD_ERROR;
- if (cargc<1) {
+ if (cargc<2) {
chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "deluser");
return CMD_ERROR;
}
+ reason = cargv[1];
+ if(!checkreason(sender, reason))
+ return CMD_ERROR;
+
if (!(target=findreguser(sender, cargv[0])))
return CMD_ERROR;
-
- cs_log(sender,"DELUSER %s (%s)",target->username,cargc>1?cargv[1]:"");
+
+ if(target->ID == lastuserID) {
+ chanservsendmessage(sender, "Sorry, can't delete last user -- wait a while and try again.");
+ return CMD_ERROR;
+ }
+
+ if(UHasStaffPriv(target)) {
+ cs_log(sender,"DELUSER FAILED username %s (reason: %s)",target->username,reason);
+ chanservwallmessage("%s (%s) just FAILED using DELUSER on %s (reason: %s)", sender->nick, rup->username, target->username, reason);
+ chanservsendmessage(sender, "Sorry, that user is privileged.");
+ return CMD_ERROR;
+ }
+
+ cs_log(sender,"DELUSER OK username %s (reason: %s)",target->username,reason);
+ chanservwallmessage("%s (%s) just used DELUSER on %s (reason: %s)", sender->nick, rup->username, target->username, reason);
+
cs_removeuser(target);
chanservstdmessage(sender, QM_DONE);