Advertisement
pfgpastebin

bot

Jan 27th, 2015
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.67 KB | None | 0 0
  1. import socket
  2.  
  3. class IRCClient:
  4.     socket = None
  5.     connected = False
  6.     nickname = 'pfgbot'
  7.     channels = ['#ircbots']
  8.  
  9.     def __init__(self):
  10.         self.socket = socket.socket()
  11.         self.socket.connect(('irc.atheme.org', 6667))
  12.         self.send("NICK %s" % self.nickname)
  13.         self.send("USER %(nick)s %(nick)s %(nick)s :%(nick)s" % {'nick':self.nickname})
  14.  
  15.         while True:
  16.             buf = self.socket.recv(4096)
  17.             lines = buf.split("\n")
  18.             for data in lines:
  19.                 data = str(data).strip()
  20.  
  21.                 if data == '':
  22.                     continue
  23.                 print "I<", data
  24.  
  25.                 # server ping/pong?
  26.                 if data.find('PING') != -1:
  27.                     n = data.split(':')[1]
  28.                     self.send('PONG :' + n)
  29.                     if self.connected == False:
  30.                         self.perform()
  31.                         self.connected = True
  32.  
  33.                 args = data.split(None, 3)
  34.                 if len(args) != 4:
  35.                     continue
  36.                 ctx = {}
  37.                 ctx['sender'] = args[0][1:]
  38.                 ctx['type']   = args[1]
  39.                 ctx['target'] = args[2]
  40.                 ctx['msg']    = args[3][1:]
  41.  
  42.                 # whom to reply?
  43.                 target = ctx['target']
  44.                 if ctx['target'] == self.nickname:
  45.                     target = ctx['sender'].split("!")[0]
  46.  
  47.                 # some basic commands
  48.  
  49.                
  50.  
  51.                 # directed to the bot?
  52.                 if ctx['type'] == 'PRIVMSG' and (ctx['msg'].lower()[0:len(self.nickname)] == self.nickname.lower() or ctx['target'] == self.nickname):
  53.                     # something is speaking to the bot
  54.                     owner = "pfgatheme!pfgatheme@pfgatheme.pfgatheme.athemenet"
  55.                     isOwner = ctx['sender'] == owner
  56.                     password = '****'
  57.                    
  58.                     query = ctx['msg']
  59.                     if ctx['target'] != self.nickname:
  60.                         query = query[len(self.nickname):]
  61.                         query = query.lstrip(':,;. ')
  62.                     # do something intelligent here, like query a chatterbot
  63.                     print 'someone spoke to us: ', query
  64.                     #self.say('-_-', target)
  65.                     if query == '':
  66.                         self.say('Hello', target)
  67.                     elif (query == 'quit') and isOwner:
  68.                         self.say('It is now safe to turn off your computer.',target)
  69.                         self.send('QUIT :Goodbye')
  70.                         print(0/0)
  71.                     elif (query.split(" ")[0] == "join") and isOwner:
  72.                         self.send("JOIN %s" % query.split(" ")[1])
  73.                         self.say('hello!', query.split(" ")[1])
  74.                         self.send('ns identify ' + password)
  75.                     elif (query == 'quit') or (query.split(" ")[0] == "join") or (query == 'usr') or (query == 'raw'):
  76.                         self.say('You are not my master. ' + ctx['sender'] + " is my master.", target)
  77.                     else:
  78.                         self.say('Hello -_-',target)
  79.     def send(self, msg):
  80.         print "I>",msg
  81.         self.socket.send(msg+"\r\n")
  82.  
  83.     def say(self, msg, to):
  84.         self.send("PRIVMSG %s :%s" % (to, msg))
  85.  
  86.     def perform(self):
  87.         #self.send("PRIVMSG R : Register <>")
  88.         self.send("PRIVMSG R : Login <>")
  89.         self.send("MODE %s +x" % self.nickname)
  90.         for c in self.channels:
  91.             self.send("JOIN %s" % c)
  92.             # say hello to every channel
  93.             #self.say('hello!', c)
  94.  
  95. IRCClient()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement