Example #1
0
    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)
Example #2
0
 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)