示例#1
0
 def on_mode(self, c, e):
     if e.target() == self.channel:
         try:
             if parse_channel_modes(e.arguments()[0]) == ['+','o',c.get_nickname()]:
                 self.fix_modes()
         except IndexError:
             pass
示例#2
0
文件: uniko.py 项目: puzzlet/uniko
 def handle_channel_event(self, bot, event):
     network = bot.network
     target = event.target()
     if not bot.network.is_listening_bot(bot, target):
         return False # not the channel's listening bot
     if not self.check_channel(bot, target):
         return False
     nickname = irclib.nm_to_n(event.source() or '')
     if network.is_one_of_us(nickname):
         return False
     eventtype = event.eventtype().lower()
     assert isinstance(eventtype, str)
     if eventtype not in self.actions:
         return False
     elif eventtype in ['mode']:
         modes = irclib.parse_channel_modes(b' '.join(event.arguments()))
         if all(_[0] == b'+' and _[1] in b'ov' for _ in modes):
             return False
     msg = self.formatter(event, network.get_channel(event.target()), network.encoding)
     if not msg:
         return False
     for target_network in self.networks:
         if target_network == network:
             continue
         self.push_message(target_network,
             Message(command='privmsg',
                 arguments=(self.channels[target_network], msg)))
     return True
示例#3
0
 def on_mode(self, c, e):
     if e.target() == self.channel:
         try:
             if parse_channel_modes(
                     e.arguments()[0]) == ['+', 'o',
                                           c.get_nickname()]:
                 self.fix_modes()
         except IndexError:
             pass
示例#4
0
 def on_mode(self, c, e):
     modes = parse_channel_modes(" ".join(e.arguments()))
     nick = nm_to_n(e.source())
     for mode in modes:
         signedMode = mode[0] + mode[1]
         if mode[2] is None:
             mode[2] = ""
         else:
             mode[2] = " " + mode[2]
         self.log(e.target(), "* " + nick + " sets mode " + signedMode + mode[2])
示例#5
0
 def _on_mode(self, c, e):
     """[Internal]"""
     modes = parse_channel_modes(" ".join(e.arguments()))
     t = e.target()
     if is_channel(t):
         ch = self.channels[t]
         for mode in modes:
             if mode[0] == "+":
                 f = ch.set_mode
             else:
                 f = ch.clear_mode
             f(mode[1], mode[2])
     else:
         # Mode on self... XXX
         pass
示例#6
0
 def _on_mode(self, c, e):
     """[Internal]"""
     modes = parse_channel_modes(" ".join(e.arguments()))
     t = e.target()
     if is_channel(t):
         ch = self.channels[t]
         for mode in modes:
             if mode[0] == "+":
                 f = ch.set_mode
             else:
                 f = ch.clear_mode
             f(mode[1], mode[2])
     else:
         # Mode on self... XXX
         pass
示例#7
0
 def _on_mode(self, conn, evt):
     """[Internal]"""
     modes = parse_channel_modes(" ".join(evt._params[1:]))
     t = evt._params[0]
     if is_channel(t):
         ch = self.channels[t]
         for mode in modes:
             if mode[0] == "+":
                 f = ch.set_mode
             else:
                 f = ch.clear_mode
             f(mode[1], mode[2])
     else:
         # Mode on self... XXX
         pass
示例#8
0
def stats_mode(self, e, c):
    whosets = nm_to_n(e.source())
    target = e.target()
    modes = parse_channel_modes(" ".join(e.arguments()))

    for mode in modes:
        modestr = "%s%s" % (mode[0], mode[1])
        whogets = mode[2]
        print "on_mode: %s: %s %s %s" % (whosets, target, modestr, whogets)

        if modestr == '+b':
            cursor = self.db.cursor()
            if stats.nicks == []:
                load_nick_table(cursor)
            if whosets in stats.nicks:
                cursor.execute(
                    "UPDATE users SET banned = banned + 1 WHERE user = %s;",
                    [whosets])
示例#9
0
 def on_mode(self, c, e):
     modes = parse_channel_modes(" ".join(e.arguments()))
     self.logger.logMode(e, modes)
示例#10
0
文件: marjubot.py 项目: joosep/marju2
 def on_mode(self, c, e):
     modes = parse_channel_modes(" ".join(e.arguments()))
     self.logger.logMode(e, modes)