*High quality* ban command by Skywing.
} else if(!strnicmp(trigger, "ban ", 4) && checkpriv(puser, 'O') && currentchannel.haveop == true) {
Channeluser *currentuser = 0;
bool bcontinue = true;
char banuser[256] = "";
char banmsg[256] = "";
char tmpname[256] = "";
for(unsigned int icnt = 0; icnt < strlen(ptxt); icnt++) {
if(ptxt[icnt] == ',' || ptxt[icnt] == '"') {
bcontinue = false;
break;
}
}
if(bcontinue == true) {
sscanf(trigger + 4, "%s %s", banuser, banmsg);
CharLower(banuser);
usershere->rewind();
if(!strchr(banuser, '*') && !strchr(banuser, '?')) {
while(!usershere->at_end()) {
currentuser = usershere->get();
strcpy(tmpname, currentuser->name);
CharLower(tmpname);
if(!strcmp(tmpname, banuser) && (currentuser->icon & 0x02))
bcontinue = false;
++*usershere;
}
if(bcontinue == true) {
if(checkpriv(banuser, 'S') || checkexisting(botlist, banuser)) {
sprintf(outstr, "/w %s %s is safelisted", !strcmp(puser, bnemuentry) ? botname : puser, banuser);
addqueue(sb, outstr);
} else {
sprintf(outstr, "/ban %s", ptxt + 4)
addqueue(sb, outstr);
}
}
} else {
while(!usershere->at_end()) {
currentuser = usershere->get();
strcpy(tmpname, currentuser->name);
CharLower(tmpname);
if(match(tmpname, banuser) && !checkpriv(tmpname, 'S') && !(currentuser->icon & 0x02) && !checkexisting(botlist, banuser)) {
sprintf(outstr, "/ban %s %s", tmpname, ptxt + 4 + strlen(banuser) + 1);
addqueue(sb, outstr);
}
+*usershere;-
}
}
}
processed = true;