Skip to content

Instantly share code, notes, and snippets.

@mdellavo
Created April 27, 2010 21:14
Show Gist options
  • Save mdellavo/381346 to your computer and use it in GitHub Desktop.
Save mdellavo/381346 to your computer and use it in GitHub Desktop.
import asyncore, asynchat, logging, socket
log = logging.getLogger(__name__)
class Bot(asynchat.async_chat):
def __init__(self, nick, ident, realname):
asynchat.async_chat.__init__(self)
self.nick = nick
self.ident = ident
self.realname = realname
self.buffer = []
self.set_terminator("\r\n")
def send_command(self, command, *args):
data = command.upper() + ' ' + ' '.join(args)
log.debug('sending "%s"', data)
self.push(data + "\r\n")
def collect_incoming_data(self, data):
self.buffer.append(data)
def found_terminator(self):
data = ''.join(self.buffer)
self.buffer = []
log.debug('got "%s"', data)
def handle_connect(self):
self.send_command('NICK', self.nick)
self.send_command('USER', self.ident, 'iw 0', ':' + self.realname)
def connect(self, host, port):
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
asynchat.async_chat.connect(self, (host, port))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment