from random import randint import socket # This is to identify your user/pass to the IRC server so your bot can be masked # Thought it was safer to have it on user input rather than hardcoded # user is important cause it gives only the user control of the bot user = raw_input("enter user ") secret = raw_input("enter password ") # name of the bot, channel and irc network botnick = raw_input("BOT NICKNAME ") channel = raw_input("IRC CHANNEL ") network = 'irc.freenode.net' # irc protocol port = 6667 irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) irc.connect((network, port)) print irc.recv(4096) # bot will identify to the IRC server and join desired channel irc.send('NICK ' + botnick + '\r\n') irc.send('USER vitebot vitebot vitebot:Python IRC\r\n') irc.send('nickserv identify ' + user + ' ' + secret+ '\r\n') irc.send('JOIN '+ channel +'\r\n') irc.send('PRIVMSG '+ channel +' :Hello World.\r\n') class Nick: def __init__(self, nick = 0): self.nick = nick class Hero: def __init__(self, hp= 100, money = 0, cash = 100): self.hp = hp self.money = money self.cash = cash def eat(self): self.hp = self.hp + 1 def move(self): self.move = move class Bad: def __init__(self, hp = 100): self.hp = hp class FIGHT: def badattack(): x = randint(0, 20) hero.hp -= x def heroattack(): y = randint(0, 20) print "Hero scores %s " % y bad.hp -= y # Creating shortcut variables data = irc.recv(4096) find = data.find send = irc.send attack = FIGHT() hero = Hero() bad = Bad() move = hero.move temp = Nick() nick = temp.nick # game script def dorado(): send('PRIVMSG ' + nick + " : You now have %s\r\n" % hero.money) send('PRIVMSG ' + nick + " : You have reached dorado\r\n") options() def albrook(): send('PRIVMSG ' + nick + " : You now have %s\r\n" % hero.money) send('PRIVMSG ' + nick + " : You have reached albrook\r\n") options() def multiplaza(): send('PRIVMSG ' + nick + " : You now have %s\r\n" % hero.money) send('PRIVMSG ' + nick + " : You have reached multiplaza\r\n") options() def calidonia(): send('PRIVMSG ' + nick + " : You now have %s\r\n" % hero.money) send('PRIVMSG ' + nick + " : You have reached calidonia\r\n") options() def cintacostera(): send('PRIVMSG ' + nick + " : You now have %s\r\n" % hero.money) send('PRIVMSG ' + nick + " : You have reached cinta costera\r\n") options() def panamaviejo(): send('PRIVMSG ' + nick + " : You now have %s\r\n" % hero.money) send('PRIVMSG ' + nick + " : You have reached Panama Viejo\r\n") options() def engine(): send('PRIVMSG ' + nick + " : Where to\r\n") if move == "dorado": dorado() elif move == "albrook": albrook() elif move == "multiplaza": multiplaza() elif move == "calidonia": calidonia() elif move == "cinta costera": cintacostera() elif move == "panama viejo": panamaviejo() else: send('PRIVMSG ' + nick + " : For money type atm To move type travel available destinations are: dorado\\albrook\\multiplaza\\calidonia\\cinta costera\\panama viejo\r\n") def options(): while True: send('PRIVMSG ' + nick + " : !stats, !atm or !travel> \r\n") move = find if move == ":!travel": if hero.money <= 0: send('PRIVMSG ' + nick + " : You don't have any money\r\n") else: engine() if move == ":!stats": send('PRIVMSG ' + nick + " : You have %s money and %s life\n") % (hero.money, hero.hp) elif move == ":!atm": hero.money += hero.cash hero.cash = 0 send('PRIVMSG ' + nick + " : You now have %s money\r\n" % hero.money) if move == ":!end": send('PRIVMSG ' + nick + " : Thanks for playing Good BYE\r\n") elif hero.hp <= 0: send('PRIVMSG ' + nick + " : GAME OVER YOU HAVE NO MORE LIFE\r\n") def gamestart(): send('PRIVMSG ' + nick + """ : You have arrived at the Tocumen airport You are a backpacker but here you are THE MOCHILERO You have no cash You see an ATM You also notice you can travel to another place But there fee is $50 to any of the locations\r\n""") while True: # This fetches the nicks nick = data.split('!')[0] nick = nick.replace(':', ' ') nick = nick.replace(' ', '') nick = nick.strip(' \t\n\r') # PING PONG with the IRC server to avoid getting booted if find('PING') != -1: send('PONG ' + data.split()[1] + '\r\n') print "PONG SENT" print data # Establishing bot behaviour elif find(':!Play') != -1: if user == nick: send(' PRIVMSG ' + nick + ' : Game Loading') print data gamestart(); options() elif find(':!quit') != -1: if user == nick: send(' PRIVMSG ' + channel + ': Good Bye') send('quit\r\n') print data quit()