@@ -0,0 +1,1088 @@
+from twisted.plugin import IPlugin%0Afrom twisted.words.protocols import irc%0Afrom txircd.module_interface import Command, ICommand, IModuleData, ModuleData%0Afrom zope.interface import implements%0A%0Aclass IsonCommand(ModuleData, Command):%0A    implements(IPlugin, IModuleData, ICommand)%0A    %0A    name = %22IsonCommand%22%0A    core = True%0A    %0A    def hookIRCd(self, ircd):%0A        self.ircd = ircd%0A    %0A    def userCommands(self):%0A        return %5B (%22ISON%22, 1, self) %5D%0A    %0A    def parseParams(self, user, params, prefix, tags):%0A        if not params:%0A            user.sendSingleError(%22IsonParams%22, irc.ERR_NEEDMOREPARAMS, %22ISON%22, %22:Not enough parameters%22)%0A            return None%0A        return %7B%0A            %22nicks%22: params%5B:5%5D%0A        %7D%0A    %0A    def execute(self, user, data):%0A        onUsers = %5B%5D%0A        for nick in data%5B%22nicks%22%5D:%0A            if nick not in self.ircd.userNicks:%0A                continue%0A            onUsers.append(self.ircd.users%5Bself.ircd.userNicks%5Bnick%5D%5D.nick)%0A        user.sendMessage(irc.RPL_ISON, %22:%7B%7D%22.format(%22 %22.join(onUsers)))%0A        return True%0A%0AisonCmd = IsonCommand()

Implement the ISON command