# Anedepami (PyBot v2.0) - by Ikewise, with help from Adrian Malacoda # Based on code by chevloschelios: # http://ubuntuforums.org/showthread.php?t=1493702 import socket import datetime botversion = '2.0' server = '127.0.0.1' port = 6667 channel = '#lobby' botnick = 'Anedepami' # Functions def timestamp(): time = datetime.datetime.now().strftime('[%H:%M:%S]') return time def join(chan): irc.send(bytes('JOIN :'+ chan +'\r\n', 'UTF-8')) #say(chan, 'Hello '+ chan +'!') def part(chan): irc.send(bytes('PART '+ chan +'\r\n', 'UTF-8')) def logoff(sendmsg): irc.send(bytes('QUIT :'+ sendmsg +'\r\n', 'UTF-8')) def outputText(): if currentMessage[1] == 'QUIT': if len(currentMessage) > 3: print('GLOBAL: ' + timestamp() + ' * Quits: ' + currentMessage[0][1:currentMessage[0].find('!')] + ' (' + currentMessage[0][currentMessage[0].find('!') + 1:] + ') (Quit: ' + currentMessage[3] + ')') else: print('GLOBAL: ' + timestamp() + ' * Quits: ' + currentMessage[0][1:currentMessage[0].find('!')] + ' (' + currentMessage[0][currentMessage[0].find('!') + 1:] + ')') if currentMessage[1] == 'JOIN': if botnick in currentMessage[0]: print(currentMessage[2][1:] + ': ' + timestamp() + ' * Joins: ' + currentMessage[0][0:currentMessage[0].find('!')] + ' (' + currentMessage[0][currentMessage[0].find('!') + 1:] + ')') else: print(currentMessage[2][1:] + ': ' + timestamp() + ' * Joins: ' + currentMessage[0][1:currentMessage[0].find('!')] + ' (' + currentMessage[0][currentMessage[0].find('!') + 1:] + ')') if currentMessage[1] == 'PART': if len(currentMessage) > 3: print(currentMessage[2] + ': ' + timestamp() + ' * Parts: ' + currentMessage[0][1:currentMessage[0].find('!')] + ' (' + currentMessage[0][currentMessage[0].find('!') + 1:] + ') (' + currentMessage[3] + ')') else: print(currentMessage[2] + ': ' + timestamp() + ' * Parts: ' + currentMessage[0][1:currentMessage[0].find('!')] + ' (' + currentMessage[0][currentMessage[0].find('!') + 1:] + ')') if currentMessage[1] == 'PRIVMSG': print(currentMessage[2] + ': ' + timestamp() + ' <' + currentMessage[0][1:currentMessage[0].find('!')] + '> ' + currentMessage[3][1:]) # Program begins print('Connecting to ' + server + ':' + str(port) + '...') print() irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) irc.connect((server, port)) irc.send(bytes('NICK '+ botnick +'\n', 'UTF-8')) irc.send(bytes('USER '+ botnick +' '+ botnick +' '+ botnick +' :Python IRC bot\r\n', 'UTF-8')) join(channel) while True: currentMessage = '' serverData = str(irc.recv(4096)) if serverData == "b''": # Detect connection loss break serverData = serverData[2:len(serverData) - 5].split('\\r\\n:') for i in serverData: if i.startswith('PING'): # Respond to server pings irc.send(bytes('PONG ' + i.split()[1] + '\r\n', 'UTF-8')) if i.lower().find('!quit') != -1: # Shutdown command logoff('Shutdown') currentMessage = i.split(' ', 3) #print(timestamp() + ' ' + str(currentMessage)) if len(currentMessage) >= 2: outputText() # End of program print() print('Connection terminated.')