--- /dev/null
+
+/*
+* argv[0-*] nicks
+*/
+
+static CMD_BIND(neonserv_cmd_devoice) {
+ int i, done_users;
+ struct UserNode *cuser;
+ struct ChanUser *chanuser;
+ struct ModeBuffer *modeBuf;
+ check_mysql();
+ if(!checkChannelAccess(user, chan, "channel_canvoice", 1, 0)) {
+ reply(getTextBot(), user, "NS_ACCESS_DENIED");
+ return;
+ }
+ modeBuf = initModeBuffer(client, chan);
+ for(i = 0; i < argc; i++) {
+ cuser = searchUserByNick(argv[i]);
+ if(!cuser) continue;
+ chanuser = getChanUser(cuser, chan);
+ if(!chanuser) continue;
+ if(isUserProtected(chan, cuser, user)) {
+ reply(getTextBot(), user, "NS_USER_PROTECTED", cuser->nick);
+ continue;
+ }
+ done_users++;
+ if(!(chanuser->flags & CHANUSERFLAG_VOICED)) continue;
+ modeBufferDevoice(modeBuf, argv[i]);
+ }
+ freeModeBuffer(modeBuf);
+ if(done_users == argc)
+ reply(getTextBot(), user, "NS_DEVOICE_DONE", chan->name);
+ else
+ reply(getTextBot(), user, "NS_DEVOICE_FAIL", client->user->nick);
+}