X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/2729984e3c95b8a12d68dbeae568432fea550f0a..78fdeaf6a300fd4b0a7a06987f712a3ecdd104d3:/chanserv/usercmds/deluser.c diff --git a/chanserv/usercmds/deluser.c b/chanserv/usercmds/deluser.c index 7db62f4f..d6f6595e 100644 --- a/chanserv/usercmds/deluser.c +++ b/chanserv/usercmds/deluser.c @@ -7,8 +7,9 @@ * CMDDESC: Removes a user from the bot. * CMDFUNC: csu_dodeluser * CMDPROTO: int csu_dodeluser(void *source, int cargc, char **cargv); - * CMDHELP: Usage: deluser + * CMDHELP: Usage: deluser * CMDHELP: Removes the specified username from the bot. + * CMDHELP: A reason is required and will be broadcasted. */ #include "../chanserv.h" @@ -19,27 +20,37 @@ 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; - - if(UHasHelperPriv(target)) { - cs_log(sender,"DELUSER FAILED username %s (%s)",target->username,cargc>1?cargv[1]:""); - chanservwallmessage("%s (%s) just FAILED using DELUSER on %s (%s)", sender->nick, rup->username, 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 (%s)",target->username,cargc>1?cargv[1]:""); - chanservwallmessage("%s (%s) just used DELUSER on %s (%s)", sender->nick, rup->username, target->username, cargc>1?cargv[1]:""); + 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);