Пример #1
0
 def call_command(self, command, *args):
     if command in ('NOTICE', 'PRIVMSG'):
         self.apply_permissions(args[0])
     if command == 'PRIVMSG':
         self.process_privmsg(args[0])
     hooks = self.hooks.find('command', command.upper())
     Hooks.call(hooks, *args)
Пример #2
0
 def call_event(self, event, *args):
     hooks = self.hooks.find('event', event)
     Hooks.call(hooks, *args)
     if event == 'line':
         line = args[0]
         msg = Message(line, self)
         self.call_command(msg.cmd, msg)
Пример #3
0
 def call_event(self, event, *args):
     hooks = self.hooks.find('event', event)
     Hooks.call(hooks, *args)
     if event == 'line':
         line = args[0]
         msg = Message(line, self)
         self.call_command(msg.cmd, msg)
Пример #4
0
 def call_command(self, command, *args):
     hooks = self.hooks.find('command', command.upper())
     Hooks.call(hooks, *args)
     if command == 'PRIVMSG':
         msg = args[0]
         trigger = self.detect_trigger(msg)
         if trigger:
             self.call_trigger(trigger, msg)
Пример #5
0
 def do_tick(self, timestamp):
     hooks = self.hooks.find('timestamp', 0, timestamp)
     Hooks.call(hooks, timestamp)
     for hook in hooks:
         _, desc, _, _, data = hook
         seconds = data.get('seconds', None)
         if seconds:
             with self.hooks.modify(hook):
                 desc[0] += seconds
         else:
             self.hooks.uninstall(hook)
Пример #6
0
 def do_tick(self, timestamp):
     hooks = self.hooks.find('timestamp', 0, timestamp)
     Hooks.call(hooks, timestamp)
     for hook in hooks:
         _, desc, _, _, data = hook
         seconds = data.get('seconds', None)
         if seconds:
             with self.hooks.modify(hook):
                 desc[0] += seconds
         else:
             self.hooks.uninstall(hook)
Пример #7
0
    def call_trigger(self, trigger, *args):
        msg = args[0]
        for depth in range(self.max_trigger, 0, -1):
            parts = tuple(trigger.split(None, depth))
            desc = (depth,) + parts[:depth]
            hooks = self.hooks.find('trigger', desc)
            if not hooks:
                continue

            targstr = parts[depth] if len(parts) > depth else ''
            targs = (' '.join(parts[:depth]),) + tuple(targstr.split())
            Hooks.call(hooks, msg, targs, targstr)
Пример #8
0
    def do_url(self, msg, url):
        match = domain_re.match(url)
        if not match:
            return
        domain = match.group(1)

        hooks = self.hooks.find('url', domain)
        hooks.extend(self.hooks.find('url', domain.replace('.', ' ')))
        if Hooks.call(hooks, msg, domain, url):
            return

        hooks = self.hooks.find('url', 'any')
        Hooks.call(hooks, msg, domain, url)
Пример #9
0
    def call_trigger(self, trigger, *args):
        authorized = True
        msg = args[0]
        for depth in range(self.max_trigger, 0, -1):
            parts = tuple(trigger.split(None, depth))
            desc = (depth,) + parts[:depth]
            hooks = self.hooks.find('trigger', desc)

            if not hooks:
                continue

            for i, hook in enumerate(hooks):
                plugin = hook[3].im_self._name
                level = hook[3]._level
                if level > max(msg.permissions.get('ANY', 0), msg.permissions.get(plugin, 0)):
                    del hooks[i]
                    authorized = False

            if not hooks:
                continue

            targstr = parts[depth] if len(parts) > depth else u''
            targs = (' '.join(parts[:depth]),) + tuple(targstr.split())
            if Hooks.call(hooks, msg, targs, targstr):
                break

        if not authorized:
            msg.reply("You don't have permission to use that trigger")