1 #! /usr/bin/env python
   2 """Este fichero puede ser llamado bot.py
   3 """
   4 import BaseHTTPServer, SimpleHTTPServer, SocketServer
   5 import feedparser
   6 
   7 from irclib import *
   8 from ircbot import SingleServerIRCBot
   9 from configuration import bot_conf, channels
  10 
  11 class TestBot(SingleServerIRCBot):
  12     def __init__(self):
  13         servers = [ (bot_conf['server'], bot_conf['port']) ]
  14         nickname = bot_conf['nickname']
  15         realname = bot_conf['realname']
  16         SingleServerIRCBot.__init__(self, servers, nickname, realname)
  17 
  18     def on_nicknameinuse(self, c, e):
  19         c.nick(c.get_nickname() + '_')
  20 
  21     def on_welcome(self, c, e):
  22         for channel in channels:
  23             c.join(channel)
  24 
  25     def on_pubmsg(self, c, e):
  26         d = feedparser.parse("http://el-directorio.org/CambiosRecientes?action=rss_rc")
  27         text = e.arguments()[0]
  28         text = text.split(':', 1)
  29         sender = text[0]
  30         commands = text[1:]
  31 
  32         if len(commands) > 0 and sender == c.get_nickname():
  33             c.privmsg('#el-directorio', d.entries[0].link+" ha sido modificada.")
  34             self.do_command(e, commands[0].strip())
  35         return
  36 
  37     def on_dccchat(self, c, e):
  38         if len(e.arguments()) != 2:
  39             return
  40         args = e.arguments()[1].split()
  41         if len(args) == 4:
  42             try:
  43                 address = ip_numstr_to_quad(args[2])
  44                 port = int(args[3])
  45             except ValueError:
  46                 return
  47             self.dcc_connect(address, port)
  48 
  49     def do_command(self, e, cmd):
  50         nick = nm_to_n(e.source())
  51         c = self.connection
  52 
  53         if cmd == "disconnect":
  54             self.disconnect()
  55         elif cmd == "die":
  56             self.die()
  57         elif cmd == "dcc":
  58             dcc = self.dcc_listen()
  59             c.ctcp("DCC", nick, "CHAT chat %s %d" % (
  60                 ip_quad_to_numstr(dcc.localaddress),
  61                 dcc.localport))
  62         else:
  63             c.notice(nick, "Not understood: " + cmd)
  64 
  65 def main():
  66     bot = TestBot()
  67     bot.start()
  68 
  69 if __name__ == "__main__":
  70     main()

   1 """Este fichero debe ser llamado configuartion.py
   2 """
   3 
   4 bot_conf = {
   5         'nickname' :    'el-bot',
   6         'realname':             'Bot de Ceronman',
   7         'server':               'irc.freenode.org',
   8         'port':                 6667,
   9 }
  10 
  11 channels = [
  12         '#iskariote',
  13         '#el-directorio',
  14 ]

Python/Code/IrcBotRss (last edited 2010-09-20 20:38:34 by Kmilo)