PyBot/pybot.py
2021-10-15 23:18:03 -05:00

94 lines
3.3 KiB
Python
Executable File

# 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.')