function opNick(nick, connection, view) { connection.sendRawMessage("MODE " + view.target() + " +o " + nick); } function opNick2(nick, nick2, connection, view) { connection.sendRawMessage("MODE " + view.target() + " +oo " + nick + " " + nick2); } function opNick3(nick, nick2, nick3, connection, view) { connection.sendRawMessage("MODE " + view.target() + " +ooo " + nick + " " + nick2 + " " + nick3); } function massOp(connection, view) { var members = view.chatMembers(); var nicks = new Array(); var member; for(var i = 0; i < members.length; i++) { member = members[i]; if (!member.operator()) { nicks.push(member.nickname()); } } var len = nicks.length; var nick; var nick2 var nick3; if (len % 3 > 0) { if (len % 3 == 2) { nick = nicks.shift(); nick2 = nicks.shift(); opNick2(nick, nick2, connection, view); len = nicks.length; } else if (len % 3 == 1) { nick = nicks.shift(); opNick(nick, connection, view); } } while (nicks.length > 0) { nick = nicks.shift(); nick2 = nicks.shift(); nick3 = nicks.shift(); opNick3(nick, nick2, nick3, connection, view); } return false; } // process the command and return true if you handle it or false to pass on to another plugin function processUserCommand( command, arguments, connection, view ) { // return true if the command was handled or to prevent other plugins or Colloquy from handling it if (command == 'mop') { massOp(connection, view); return true; } return false; }