1
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 ]