summaryrefslogtreecommitdiffstats
path: root/ircbot/contoller.py
blob: 9e728657108bf2e7aa30f5e47692a21330123f1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import irc.bot
import _thread
import rssbot

class NewsBot(irc.bot.SingleServerIRCBot):
    def __init__(self, name, server='ire', port=6667, chan='#news', timeout=60):
        irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name)
        self.name = name
        self.server = server
        self.port = port
        self.chan = chan
        self.to = timeout

#    def start(self):
#        self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,))

#   def send(self, string):
#       if len(string) < 450:
#           self.connection.privmsg(self.chan, string)
#       else:
#           space = 0
#           for x in range(math.ceil(len(string)/400)):
#               oldspace = space
#               space = string.find(" ", (x+1)*400, (x+1)*400+50)
#               self.connection.privmsg(self.chan, string[oldspace:space])
#               sleep(1)


    def on_welcome(self, connection, event):
        connection.join(self.chan)

    def on_privmsg(self, connection, event):
        args_array = event.arguments[0].split()
        if args_array[0][:-1]==self.name:
            answer = self.read_message(args_array[1:])
            self.send(answer)

    def send(self, string):
        for line in string.split('\n'):
            self.connection.privmsg(self.chan, line)
            sleep(0.5)

    def on_pubmsg(self, connection, event):
        self.on_privmsg(connection, event)

    def read_message(self, args):
        try:
            if args[0] == 'add':
                bot = rssbot.RssBot(args[2], args[1])
                bots[args[1]] = bot
                bot.start()
                return "bot " + args[1] + " added"

            elif args[0] == 'del':
                bots[args[1]].stop()
                del bots[args[1]]
                return "bot " + args[1] + " deleted"

            elif args[0] == 'save':
                output_buffer = ''
                for bot in bots:
                   output_buffer += bot + '|' + bots[bot].url + '\n'

                F = open(feedfile, "w")
                F.writelines(output_buffer)
                F.close()

                return "bots saved to " + feedfile
            elif args[0] == 'caps':
                return "add del save caps list"

            elif args[0] == 'list':
                output_buffer = ''
                for bot in bots:
                    output_buffer += bot + ' url: ' + bots[bot].url + '\n'
                return output_buffer

            elif args[0] == 'info':
                if args[1] in bots:
                    return 'title: ' + bots[args[1]].feed.feed.title + '\n' + 'size: ' + len(bots[args[1]].feed.entries)
                else:
                    return 'bot not found'

            else:
                return "unknown command"
        except:
            return "mimimimi"

feedfile = 'new_feeds'

bots = {}
knews = NewsBot('knews')

#config file reading
F = open(feedfile, "r")
lines = F.readlines()
F.close()

for line in lines:
    line = line.strip('\n')
    linear = line.split('|')
    bot = rssbot.RssBot(linear[1], linear[0])
    bot.start()
    bots[linear[0]] = bot

knews.start()