Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- class IRCClient:
- socket = None
- connected = False
- nickname = 'pfgbot'
- channels = ['#ircbots']
- def __init__(self):
- self.socket = socket.socket()
- self.socket.connect(('irc.atheme.org', 6667))
- self.send("NICK %s" % self.nickname)
- self.send("USER %(nick)s %(nick)s %(nick)s :%(nick)s" % {'nick':self.nickname})
- while True:
- buf = self.socket.recv(4096)
- lines = buf.split("\n")
- for data in lines:
- data = str(data).strip()
- if data == '':
- continue
- print "I<", data
- # server ping/pong?
- if data.find('PING') != -1:
- n = data.split(':')[1]
- self.send('PONG :' + n)
- if self.connected == False:
- self.perform()
- self.connected = True
- args = data.split(None, 3)
- if len(args) != 4:
- continue
- ctx = {}
- ctx['sender'] = args[0][1:]
- ctx['type'] = args[1]
- ctx['target'] = args[2]
- ctx['msg'] = args[3][1:]
- # whom to reply?
- target = ctx['target']
- if ctx['target'] == self.nickname:
- target = ctx['sender'].split("!")[0]
- # some basic commands
- # directed to the bot?
- if ctx['type'] == 'PRIVMSG' and (ctx['msg'].lower()[0:len(self.nickname)] == self.nickname.lower() or ctx['target'] == self.nickname):
- # something is speaking to the bot
- owner = "pfgatheme!pfgatheme@pfgatheme.pfgatheme.athemenet"
- isOwner = ctx['sender'] == owner
- password = '****'
- query = ctx['msg']
- if ctx['target'] != self.nickname:
- query = query[len(self.nickname):]
- query = query.lstrip(':,;. ')
- # do something intelligent here, like query a chatterbot
- print 'someone spoke to us: ', query
- #self.say('-_-', target)
- if query == '':
- self.say('Hello', target)
- elif (query == 'quit') and isOwner:
- self.say('It is now safe to turn off your computer.',target)
- self.send('QUIT :Goodbye')
- print(0/0)
- elif (query.split(" ")[0] == "join") and isOwner:
- self.send("JOIN %s" % query.split(" ")[1])
- self.say('hello!', query.split(" ")[1])
- self.send('ns identify ' + password)
- elif (query == 'quit') or (query.split(" ")[0] == "join") or (query == 'usr') or (query == 'raw'):
- self.say('You are not my master. ' + ctx['sender'] + " is my master.", target)
- else:
- self.say('Hello -_-',target)
- def send(self, msg):
- print "I>",msg
- self.socket.send(msg+"\r\n")
- def say(self, msg, to):
- self.send("PRIVMSG %s :%s" % (to, msg))
- def perform(self):
- #self.send("PRIVMSG R : Register <>")
- self.send("PRIVMSG R : Login <>")
- self.send("MODE %s +x" % self.nickname)
- for c in self.channels:
- self.send("JOIN %s" % c)
- # say hello to every channel
- #self.say('hello!', c)
- IRCClient()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement