Advertisement
Guest User

pircBot v0.2?

a guest
Jan 20th, 2012
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.40 KB | None | 0 0
  1. import socket
  2. import os
  3. import time
  4. import sys
  5.  
  6. class connection():
  7.  
  8.     nick = "testerPiBot"
  9.     realname = nick
  10.     ident = nick
  11.     channel = "#raspberrypi"
  12.     nickList = []
  13.     away = True
  14.  
  15.     def __init__(self, address):
  16.         self.address = address
  17.         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  18.        
  19.         self.sock.connect((socket.gethostbyname(address), 6667))
  20.         self.sock.send("USER %s %s %s :%s\r\n" % (self.ident, address, "UNIX-SERVER", self.realname))
  21.         self.sock.send("NICK %s\r\n" % (self.nick))
  22.         self.sock.send("JOIN %s\r\n" % (self.channel))
  23.         self.away = False
  24.     def server_response(self):
  25.         response = self.sock.recv(1024)
  26.         if "PING :" in response[:7] and "PRIVMSG" not in response:
  27.             self.sock.send( response.replace("PING", "PONG" ))
  28.             return 0
  29.         if "!" in response and ":" in response[response.index(":") + 1:]:
  30.             return response
  31.     def send_message(self, message):
  32.         if not message:
  33.             return False
  34.         if self.channel:
  35.             message_tuple = ( self.nick, self.ident, self.address, self.channel, message)
  36.             return self.sock.send(":%s!%s@%s PRIVMSG %s :%s\r\n" % message_tuple)
  37.     def parse_message(self, message):
  38.         nick = message[message.index(":"):message.index("!")]
  39.         if nick not in self.nickList:
  40.             self.nickList.append(nick)
  41.         message = message[message.index(":")+1:]
  42.         message = message[message.index(":"):]
  43.         return "%s %s" % (nick, message)
  44.     def close(self):
  45.         self.sock.close()
  46.  
  47.  
  48. connected = True
  49. server = connection( "irc.freenode.net" )
  50. qouteDict = {
  51.     "are they for sale yet":"Not yet, but hold on because it's not going to be much longer. ;)",
  52.     "can I buy one yet":"Not yet, but hold on because it's not going to be much longer. ;)",
  53.     "when can I buy a raspberry pi":"Likely later in January or early Febuary. Keep an eye on the store, http://www.raspberrypi.com, and subscribe to the mailing list.",
  54.     "when can I buy one":"Likely later in January or early February. Keep an eye on the store!",
  55.     "where can I buy a raspberry pi":"From the raspberry pi store, of course, after it's released, at http://www.raspberrypi.com.",
  56.     "will it run windows":"Currently no, and likely not in the foreseeable future, due to the limited resources and the processor achetecture. Feel free to take a look around linux!",
  57.     "can it run crysis on max":"Of course, and it also flies and plays folky drum and bass.",
  58.     "how much is a raspberry pi":"Model A will be $25, a model B will be $35. This is of course not including any peripherals."
  59.     }
  60. trustedNicks = [ "mrdragons" ]
  61.  
  62. if os.path.exists("qoutes"):
  63.     execfile("qoutes")
  64. else:
  65.     qoutesFile=open("qoutes", "w")
  66.  
  67. try:
  68.     while connected:
  69.         response = server.server_response()
  70.         if response:
  71.             print(response)
  72.             message = server.parse_message(response.lower())
  73.             messageRay = message.split(" ")
  74.             tempMessage = server.parse_message(response)
  75.             tempMessageRay = message.split(" ")
  76.  
  77.             print(qouteDict)
  78.             if server.away == False:
  79.                 if "kill pibot" in message:
  80.                     server.close()
  81.                 elif "hello pibot" in message or "hey pibot" in message or "hi pibot" in message:
  82.                     server.send_message("Hello thar, %s!" % messageRay[0].strip(":"))
  83.                 elif "what's the time?" in message or "what time is it?" in message:
  84.                     server.send_message("%s: Adventure time! (And %s.)" % ( messageRay[0].strip(":"), time.strftime("%A, %B %d, %H:%M EST")))
  85.                 elif "go away" in message and "pibot" in message:
  86.                     server.away = True
  87.                     server.send_message("Fine, tell me when you want me back...")
  88.                
  89.                 elif "pibot" in messageRay[1] and "remember" in messageRay[2] and "=" in message:
  90.                     if messageRay[0].strip(":") in trustedNicks:
  91.                         findPos = message.find("=")
  92.                         startPos = len(messageRay[0]) + 2 + len(messageRay[1]) + 1 + len(messageRay[2])
  93.                         qouteDict.update({message[startPos:findPos]:message[findPos+1:len(message)-2]})
  94.                         server.send_message("Okay, I'll remember that.")
  95.                         qoutesFile=open("qoutes", "w")
  96.                         qoutesFile.write("qouteDict= "+ str(qouteDict) +"\ntrustedNicks=" + str(trustedNicks))
  97.                         qoutesFile.close()
  98.                     else:
  99.                         server.send_message("%s: I don't trust you. >_>" % messageRay[0].strip(":"))
  100.                 elif "pibot" in messageRay[1] and "forget" in messageRay[2]:
  101.                                         if messageRay[0].strip(":") in trustedNicks:
  102.                                                 startPos = len(messageRay[0]) + 2 + len(messageRay[1]) + 1 + len(messageRay[2])
  103.                         try:
  104.                                                     qouteDict.pop(message[startPos:-2])
  105.                                                     server.send_message("\x01ACTION forgets that.\x01")
  106.                             qoutesFile=open("qoutes", "w")
  107.                             qoutesFile.write("qouteDict= "+ str(qouteDict) +"\ntrustedNicks=" + str(trustedNicks))
  108.                             qoutesFile.close()
  109.                         except KeyError:
  110.                             server.send_message("I don't know that.")
  111.                                         else:
  112.                                                 server.send_message("%s: I don't trust you. >_>" % tempMessageRay[0].strip(":"))
  113.                 elif "pibot" in message[1:] and "add trusted nick" in message and '\"' in message:
  114.                     if messageRay[0].strip(":") in trustedNicks:
  115.                         startPos = message.find('\"')+1
  116.                         trustedNicks.append(message[startPos:-3])
  117.                         print(trustedNicks)
  118.                         qoutesFile=open("qoutes", "w")
  119.                                             qoutesFile.write("qouteDict= "+ str(qouteDict) +"\ntrustedNicks=" + str(trustedNicks))
  120.                                             qoutesFile.close()
  121.                         server.send_message("User added successfully.")
  122.                     else:
  123.                         server.send_message("I don't trust you. >_>")
  124.                 elif "fuck" in message and "pibot" in message:
  125.                     server.send_message("%s: Only if you bring your own condoms." % messageRay[0].strip(":"))
  126.                 elif len(messageRay) > 1:
  127.                     mostSimilar = 100
  128.                     sendQoute = "test"
  129.                     for qoute in qouteDict:
  130.                         counter=0
  131.                         similarity=0
  132.                         qouteRay= qoute.split(" ")
  133.                         for word in qouteRay:
  134.                             if word in message:
  135.                                 similarity += 1
  136.                             counter+=1
  137.                         #if counter-similarity < len(qouteRay)/2:
  138.                         if counter-similarity < mostSimilar:
  139.                             mostSimilar = counter-similarity
  140.                             sendQoute = qoute
  141.                     if mostSimilar < len(qouteRay)/2:
  142.                         server.send_message("%s" % ( qouteDict[sendQoute] ))
  143.  
  144.             if "come back" in message and "pibot" in message:
  145.                 server.send_message("I'ma back")
  146.                 server.away = False
  147.  
  148. except KeyboardInterrupt:
  149.     server.close()
  150.     print("Exitted.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement