Beispiel #1
0
 def unapply(self):
     log.msg("Unapplying {0}".format(self))
     def _knowOp(has_op):
         if not has_op:
             log.err("Bot doesn't have operator status")
             return True
         traceback.print_stack()
         for masks in xgroup(self.meta['ban_masks'], 3):
             self.tracker.pypickupbot.sendLine("MODE %s -%s %s" % (
                 self.tracker.pypickupbot.channel,
                 'b' * len(masks),
                 str(' '.join(masks))
                 ))
         return False
     return FetchedList.bot_has_op(self.tracker.pypickupbot) \
         .addCallback(_knowOp)
Beispiel #2
0
    def apply(self):
        log.msg("Applying {0}".format(self))
        def _knowOp(l):
            has_op, users = zip(*l)[1]
            if not has_op:
                log.err("Bot doesn't have operator status")
                return False

            for masks in xgroup(self.meta['ban_masks'], 3): #arbitrary number
                self.tracker.pypickupbot.sendLine("MODE %s +%s %s" % (
                    self.tracker.pypickupbot.channel,
                    'b' * len(masks),
                    str(' '.join(masks))
                    ))

            kickreason = ''
            if 'reason' in self.meta:
                kickreason += self.meta['reason']
            kickreason += '[' + self.expiry() + ']'
            for nick, ident, host, flags in users:
                if self.tracker.cmp_masks(
                    '%s!%s@%s' % (nick, ident, host),
                    self.meta['ban_masks']
                    ):
                    self.tracker.pypickupbot.sendLine(
                        "KICK %s %s :%s" % 
                        (
                            self.tracker.pypickupbot.channel,
                            nick,
                            kickreason
                        )
                        )
            return True
        return defer.DeferredList(
            [
                FetchedList.bot_has_op(self.tracker.pypickupbot),
                FetchedList.get_users(self.tracker.pypickupbot,
                                      self.tracker.pypickupbot.channel).get()
            ]
            ).addCallback(_knowOp)