+ io.send_line("PRIVMSG " + target + " :page title for url: "
+ + title)
+
+ sender = ""
+ for rune in tokens[0]:
+ if rune == "!":
+ break
+ if rune != ":":
+ sender += rune
+ receiver = ""
+ for rune in tokens[2]:
+ if rune == "!":
+ break
+ if rune != ":":
+ receiver += rune
+ target = sender
+ if receiver != nickname:
+ target = receiver
+ msg = str.join(" ", tokens[3:])[1:]
+ url_check(msg)
+
+ while 1:
+ line = io.recv_line()
+ if not line:
+ continue
+ tokens = line.split(" ")
+ if len(tokens) > 1:
+ if tokens[1] == "PRIVMSG":
+ act_on_privmsg(tokens)
+ if tokens[0] == "PING":
+ io.send_line("PONG " + tokens[1])
+
+def parse_command_line_arguments():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-s, --server", action="store", dest="server",
+ default=SERVER,
+ help="server or server net to connect to (default: " + SERVER +
+ ")")
+ parser.add_argument("-p, --port", action="store", dest="port", type=int,
+ default=PORT, help="port to connect to (default : " + str(PORT) +
+ ")")
+ parser.add_argument("-t, --timeout", action="store", dest="timeout",
+ type=int, default=TIMEOUT,
+ help="timeout in seconds after which to attempt reconnect " +
+ "(default: " + str(TIMEOUT) + ")")
+ parser.add_argument("-u, --username", action="store", dest="username",
+ default=USERNAME, help="username to use (default: " + USERNAME +
+ ")")
+ parser.add_argument("-n, --nickname", action="store", dest="nickname",
+ default=NICKNAME, help="nickname to use (default: " + NICKNAME +
+ ")")
+ parser.add_argument("CHANNEL", action="store", help="channel to join")
+ opts, unknown = parser.parse_known_args()
+ return opts
+
+opts = parse_command_line_arguments()
+while 1:
+ try:
+ io = init_session(opts.server, opts.port, opts.timeout, opts.nickname,
+ opts.username, opts.CHANNEL)
+ lineparser_loop(io, opts.nickname)
+ except ExceptionForRestart:
+ io.socket.close()
+ continue