Esempio n. 1
0
    def listen_and_response(self):
        msg = irc_cmd.recv_msg(self.irc_socket, 1)
        if not msg:
            return

        privmsg = irc_cmd.parsing_irc_privmsg(msg[0])
        if not privmsg:
            return
        (user, channel, dialog) = privmsg
        dialog = dialog.strip()
        # dialog only messages "@xxx xxx xxx" without endline
        print("\nprivmsg", privmsg)
        if dialog.startswith("@cal"):
            val = cal(dialog[len("@cal "):])

            if type(val) in (int, float, complex):
                msg = val
            elif val == "overflow":
                msg = "overflow"
            else:
                msg = "Usage: @cal <expression>"

            irc_cmd.send_msg_to(self.irc_socket, channel, "{}: {}".format(user, msg))
        elif dialog.startswith("@log"):
            parameters = dialog.split()

            try:
                number_idx = parameters.index("-n")
                number = int(parameters[number_idx+1])
            except:
                number = None

            try:
                parameters.index("-u")
                mode = "user"
            except:
                mode = "ip"
            
            num = number if number else 5
            auth_error_times = log(mode, num)
            for line in auth_error_times:
                print(line)
                ip = line[0] + (15 - len(line[0]))*" "
                times = line[1]
                irc_cmd.send_msg_to(self.irc_socket, channel, "{} {} times".format(ip, times))

        else:
            print(dialog, channel, user)
            self.keyword_match(dialog, channel, user)
Esempio n. 2
0
    def keyword_match(self, msg, channel, user):
        match = re.findall(r"(>[/]+<)", msg)
        for i in match:
            irc_cmd.send_msg_to(self.irc_socket, channel, i.replace("/", "\\"))

        match = re.findall(r"(>[\\]+<)", msg)
        for i in match:
            irc_cmd.send_msg_to(self.irc_socket, channel, i.replace("\\", "/"))
                    
        match = re.findall(r"惹$", msg)
        if match:
            irc_cmd.send_msg_to(self.irc_socket, channel, "{}: 你國文沒學好嗎?".format(user))
            
        match = re.findall(r"[ㄅㄎㄇㄉ]$", msg)
        if match:
            irc_cmd.send_msg_to(self.irc_socket, channel, "{}: 請重念小學吧!".format(user))

        match = re.findall(r"[Qq][Bb]", msg)
        if match:
            irc_cmd.send_msg_to(self.irc_socket, channel, "QB 必需死")

        match = re.findall(r"傲嬌", msg)
        if match:
            irc_cmd.send_msg_to(self.irc_socket, channel, "人... 人家才不是傲嬌呢 >////<")