3 * argv[0] (optional) nick mask
6 static CMD_BIND(neonserv_cmd_deopall) {
7 int i, issuer_access, user_access, done_users;
9 struct UserNode *cuser;
10 struct ChanUser *chanuser;
11 struct ModeBuffer *modeBuf;
13 if(!checkChannelAccess(user, chan, "channel_canop", 1, 0)) {
14 reply(getTextBot(), user, "NS_ACCESS_DENIED");
19 modeBuf = initModeBuffer(client, chan);
20 issuer_access = getChannelAccess(user, chan, 0);
21 for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) {
22 if(nickmask && match(nickmask, chanuser->user->nick)) continue;
23 victim_access = getChannelAccess(user, chan, 0);
24 if(victim_access >= issuer_access) continue;
25 if(!(chanuser->flags & CHANUSERFLAG_OPPED)) continue;
26 modeBufferDeop(modeBuf, argv[i]);
29 freeModeBuffer(modeBuf);
30 reply(getTextBot(), user, "NS_DEOPALL_DONE", done_users, chan->name);