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)
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, "人... 人家才不是傲嬌呢 >////<")