import socket import sys import re import random import json   server = 'irc.choopa.net' channel = '#archivebot' botNick = 'WIP-Bot' dataFolder = './Data/' helpDocs = 'http://pastebin.com/aD7a9j8S'   ########################### ### Front-End Functions ### ###########################   ## Help def giveHelpDocs(chan, user):    sendmsg(user, u'\u0002[HELP]\u0002 Visit ' + helpDocs + ' for a guide!')     ########################## ### Back-End Functions ### ##########################   ## IRC commands def sendmsg(chan, msg):    print chan + ': ' + msg    ircsock.send('PRIVMSG ' + chan + ' :' + msg + '\n')   def sendcmd(msg):    print msg    ircsock.send(msg + '\n')   def joinchan(chan):    ircsock.send('JOIN ' + chan + '\n')         ################## ### Connection ### ##################   try:    ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except:    print 'Failed to get socket.'    sys.exit(0)   ircsock.connect((server, 6667))   userStr = 'USER %s %s %s :%s'%(botNick, botNick, botNick, 'URL Bot\n') sendcmd(userStr) sendcmd('NICK ' + botNick + "\n")     ############### ### Parsing ### ###############   while 1:    try:       ircmsg = ircsock.recv(2048)    except:       print 'Disconnected.'       sys.exit();    ircmsg = ircmsg.strip('\n\r')    splitmsg = ircmsg.split(' :')      # Extract IRC message    try:       sender = splitmsg[0]       msg = splitmsg[1]    except:       sender = ''       msg = ''      # Extract username    try:       username = re.search(':(.+?)!', ircmsg).group(1)    except:       username = ''      print(ircmsg)      ### Server    if splitmsg[0] == 'PING':       pong = 'PONG ' + splitmsg[1]       sendcmd(pong)      if re.search(':End of /MOTD command.', ircmsg):       joinchan(channel)      ### User    # Check if it's in the room.    if re.search('PRIVMSG ' + channel + '$(?i)', sender):       ## Detect URLs       url_search = re.search('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', msg)       if url_search:         found_url = url_search.group(0)         sendmsg(channel, '!ao ' + found_url)