from src import ModuleManager, utils @utils.export("serverset", utils.BoolSetting("ircv3-stats", "Whether or not to include the current server in IRCv3 statistics")) class Module(ModuleManager.BaseModule): _name = "IRCv3" @utils.hook("received.command.specsup", min_args=1) @utils.kwarg("help", "List servers supporting a given IRCv3 capability") @utils.kwarg("usage", "") def specsup(self, event): spec = event["args_split"][0].lower() supporting_servers = [] for server in self.bot.servers.values(): if server.get_setting("ircv3-stats", False): if spec in server.server_capabilities: port = str(server.connection_params.port) if server.connection_params.tls: port = "+%s" % port hostname = utils.irc.bold("%s:%s" % ( server.connection_params.hostname, port)) supporting_servers.append("%s (%s %s)" % ( str(server), hostname, server.version)) if supporting_servers: event["stdout"].write("%s: %s" % (spec, ", ".join(supporting_servers))) else: event["stderr"].write("No supporting servers found for %s" % spec) @utils.hook("received.command.caps") @utils.kwarg("help", "List negotiated IRCv3 capabilities") def capabilities(self, event): event["stdout"].write("IRCv3 capabilities: %s" % ", ".join(event["server"].agreed_capabilities))