def push(self, event, *args, **kwargs): callbacks = self.callbackmap.get(event) if callbacks is None: return alloweds = [] for callback in callbacks: instance = callback['instance'] channel = kwargs.get('channel') if instance and channel: klass = instance.__class__ config = self.core.config.plugins[klass.__name__] or {} if not isallowed(config, channel): continue alloweds.append(callback) if event == events.COMMAND: command = kwargs['command'] funcs = [c['func'] for c in alloweds if command == c['command']] else: funcs = [c['func'] for c in alloweds] for func in funcs: deferred = threads.deferToThread(lambda: func(*args, **kwargs)) deferred.addErrback(self._failed)
def inner(command, user, channel, params): if isallowed(config, channel): template = Template(config['template']) for result in self.fetch(suffix, params, **options): message = template.safe_substitute(result) self.notice(channel, message)