示例#1
0
    def __init__(self,
                 nick='Domar',
                 nickpass='******',
                 server='irc.mibbit.com',
                 port=6667,
                 channel='#domar'):
        super(Domar, self).__init__(nick=nick,
                                    name='Domar bot, http://bitbucket.org/brcha/domar2',
                                    channels=[ channel, ],
                                    nickpass=nickpass,
                                    command_prefix=['!', '\.'],
				    verbose=False)

        self.server = server
        self.port = port

        self.db = DBManagerProcess(DB('erep.db'))
        self.db.start()
        self.admins   = self.db.get('admins', ['Hostilian', 'Rx_Queen'])
        self.owner    = self.db.get('owner',  ['Hostilian'])
        self.channels = self.db.get('channels', self.channels)
        self.db['admins']   = self.admins
        self.db['owner']    = self.owner
        self.db['channels'] = self.channels

        # Initialize citizens cache array
        citizens = self.db.get('citizens', [])
        self.db['citizens'] = citizens

        # Initialize RSS channels array
        rss_channels = self.db.get('rss_channels', [])
        self.db['rss_channels'] = rss_channels

        self.rssFeeder = eRepublikRSSFeeder(self, 60) # get RSS every 60 seconds
示例#2
0
class Domar(IRCBot):
    def __init__(self,
                 nick='Domar',
                 nickpass='******',
                 server='irc.mibbit.com',
                 port=6667,
                 channel='#domar'):
        super(Domar, self).__init__(nick=nick,
                                    name='Domar bot, http://bitbucket.org/brcha/domar2',
                                    channels=[ channel, ],
                                    nickpass=nickpass,
                                    command_prefix=['!', '\.'],
				    verbose=False)

        self.server = server
        self.port = port

        self.db = DBManagerProcess(DB('erep.db'))
        self.db.start()
        self.admins   = self.db.get('admins', ['Hostilian', 'Rx_Queen'])
        self.owner    = self.db.get('owner',  ['Hostilian'])
        self.channels = self.db.get('channels', self.channels)
        self.db['admins']   = self.admins
        self.db['owner']    = self.owner
        self.db['channels'] = self.channels

        # Initialize citizens cache array
        citizens = self.db.get('citizens', [])
        self.db['citizens'] = citizens

        # Initialize RSS channels array
        rss_channels = self.db.get('rss_channels', [])
        self.db['rss_channels'] = rss_channels

        self.rssFeeder = eRepublikRSSFeeder(self, 60) # get RSS every 60 seconds
        
    def run(self):
        super(Domar, self).run(host=self.server, port=self.port)

    def after_connect(self):
        # Initialize modules
        HelloModule(self)
        CurseModule(self)
        CitizenInfoModule(self)
        CitizenLinkModule(self)
        CitizenDonateModule(self)
        CitizenFightModule(self)
        RSSEnableModule(self)
        RSSDisableModule(self)
        CitizenHealthIncreaseModule(self)
        CitizenHappinessIncreaseModule(self)
        CondorsPlataModule(self)
        # Army modules
        army_modules.Define(self)
        army_modules.AddGeneral(self)
        army_modules.RemoveGeneral(self)
        army_modules.BindChannel(self)
        army_modules.UnbindChannel(self)
        army_modules.AddMember(self)
        army_modules.RemoveMember(self)
        army_modules.ListMembers(self)
        army_modules.ListGenerals(self)
        army_modules.SetOrder(self)
        army_modules.Order(self)

        # Start RSS feeder
        self.rssFeeder.start()

    def join(self, channel, key=None):
        # Keep track of channels to make them persistent
        if not channel.startswith('#'):
            return
        super(Domar, self).join(channel, key)
        if not channel in self.db['channels']:
            channels = self.db['channels']
            channels.append(channel)
            self.db['channels'] = channels

    def part(self, channel):
        # Keep track of channels to make them persistent
        if not channel.startswith('#'):
            return
        super(Domar, self).part(channel)
        if channel in self.db['channels']:
            channels = self.db['channels']
            channels.remove(channel)
            self.db['channels'] = channels

    def handle_close(self):
        self.rssFeeder.die = True
        self.rssFeeder.join(65)
        self.rssFeeder.terminate()
        self.db.die()
        super(Domar, self).__del__()

    def __del__(self):
        self.rssFeeder.terminate()
        super(Domar, self).__del__()