tags:

views:

1646

answers:

6

I want to build a bot that basically does the following:

  1. Listens to the room and interacts with users and encourages them to PM the bot.
  2. Once a user has PMed the bot engage with the client using various AI techniques.

Should I just use the IRC library or Sockets in python or do I need more of a bot framework.

What would you do?

Thanks!

Here is the code I'm currently using, however, I haven't gotten it to work.

#!/usr/bin/python 
import socket
network = 'holmes.freenet.net'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
irc.send ( 'NICK PyIRC\r\n' )
irc.send ( 'USER PyIRC PyIRC PyIRC :Python IRC\r\n' )
irc.send ( 'JOIN #pyirc\r\n' )
irc.send ( 'PRIVMSG #pyirc :Can you hear me?\r\n' )
irc.send ( 'PART #pyirc\r\n' )
irc.send ( 'QUIT\r\n' )
irc.close()
+2  A: 

If you want to have AI techniques involved, then I suggest you look at the AIML package for Python. It is the same technology that ALICE bots are done in.

Evan Fosmark
Thanks for the heads up on the AIML package!
NoahClark
+4  A: 

Use Twisted or Asynchat if you want to have a sane design. It is possible to just do it with sockets but why bother doing it from scratch?

Unknown
I just checked out Twisted again and found it under the IM section. Thanks for the link. What exactly does the Asynchat help with?
NoahClark
Networking code.
Unknown
A: 

I made a (very crappy, and for a long time being refactored) IRC bot using irclib. The documentation is next-to-nothing, but it gets rid of making you have to do all that socket connecting and such, which is stuff I really don't want to deal with. To each his own, though.

Xiong Chiamiov
A: 

Use an existing IRC library instead of implementing the protocol yourself.

Nicolás
+1  A: 

If what you want is to create the AI portion, why bother writing all the code needed for the IRC connection by yourself?

I suggest using SupyBot, and simply write your AI-code as a plugin for it. There is reasonably understandable documentation and lots of example-code to find. Also, it comes with a decent amount of plugins for all sorts of uses that might complement your AI.

Epcylon
A: 

You'll have to implement a few lines to send a reply to the server's PINGs

Tommy