All pastes #1531133 Raw Edit

bots.py

public python v1 · immutable
#1531133 ·published 2009-08-16 04:51 UTC
rendered paste body
"""Multiple bots using multithreading"""__author__ = 'Rodrigo Aliste P <raliste@googlemail.com>'import socketfrom threading import ThreadHOST = 'irc.valkfire.net'PORT = 6667IDENT = 'pybot'REALNAME = 'pybot %s'class Bot(Thread):  def __init__(self, nickname, realname):    Thread.__init__(self)        self.nickname = nickname    self.realname = realname    def run(self):    self.connect()    def connect(self):    print 'Connecting to server. I\'m %s!' % self.get_realname()      self.socket = socket.socket()    self.socket.connect((HOST, PORT))    self.socket.send('NICK %s\r\n' % self.nickname)    self.socket.send('USER %s HOST bla :%s\r\n' % (IDENT, self.get_realname()))        self.loop()  def disconnect(self):    print 'Disconnecting...'    self.socket.send('QUIT :%s' % 'Saliendo...')    self.socket.close()  def loop(self):    while True:      line = self.socket.recv(1024)           if 'PING' in line:        self.socket.send('PONG %s\r\n' % HOST)  def talk(self, channel, message):    self.socket.send('PRIVMSG %s :%s\r\n' % (channel, message))  def get_realname(self):    return REALNAME % self.realname     class BotHandler1(Bot):  # write custom methods here...  pass    class BotHandler2(Bot):  # write custom methods here...  pass  def main():   try:     a = BotHandler1('rod1', '1')    a.start()    b = BotHandler2('rod2', '2')    b.start()  except:    raise    if __name__ == '__main__':  main()