Beispiel #1
0
    def monitor(self, monitorTables, session, bot):
        self.table('buddy')
        self.table('group')
        self.table('discuss')

        for tname in monitorTables[:]:
            if tname in ('buddy', 'group', 'discuss'):
                tl = [tname]
            elif tname.startswith('group-member-'):
                tl = self._table('group').List(tname[13:])
            elif tname.startswith('discuss-member-'):
                tl = self._table('discuss').List(tname[15:])
            else:
                tl = []

            if not tl:
                WARN(('特别监视列表中的 "%s" 不存在,'
                      '因此将其从特别监视列表中删除'), tname)
                monitorTables.remove(tname)
            else:
                PutTo('monitor-fetch', self.monitorFetch, session, tl, bot)
        
        if monitorTables:
            PutTo('monior-fetch',
                  Put, self.monitor, monitorTables, session, bot)
Beispiel #2
0
    def autoUpdate(self, tinfoQueue, bot):
        tinfo = tinfoQueue.popleft()

        if tinfo == 'buddy':
            tinfoQueue.append('group')
        elif tinfo == 'group':
            tinfoQueue.append('discuss')
        elif tinfo == 'discuss':
            tinfoQueue.append('member')
        elif tinfo == 'member':
            tinfoQueue.extend(self.ctables['group'].clist)
            tinfoQueue.extend(self.ctables['discuss'].clist)
            tinfoQueue.append('end')
        elif tinfo == 'end':
            self.Dump()
            Put(bot.onFetchComplete)
            tinfoQueue.append('buddy')
        else:
            pass

        needFetch = (tinfo not in ('end', 'member')) and \
                    (not self.getTable(tinfo).IsFresh())

        PutTo('auto-fetch', self.fetchUpdate, tinfo, needFetch, tinfoQueue,
              bot)
Beispiel #3
0
 def MonitorForever(self, bot):
     if bot.conf.monitorTables:
         session = self.session.Copy()
         monitorTables = bot.conf.monitorTables[:]
         PutTo(
             'monitor-fetch', lambda:
             (INFO('特别监视将在 30 秒后启动'), time.sleep(30), INFO('特别监视已启动'),
              Put(self.monitor, monitorTables, session, bot)))
Beispiel #4
0
    def autoUpdate(self, tinfoQueue, bot):
        tinfo = tinfoQueue.popleft()

        if tinfo == 'member':
            tinfoQueue.extend(self.ctables['group'].clist)
            tinfoQueue.extend(self.ctables['discuss'].clist)
            tinfoQueue.extend(['end', 'buddy','group','discuss','member'])
            needFetch = False
        elif tinfo == 'end':
            self.Dump()
            bot.onFetchComplete()
            needFetch = False
        else:
            needFetch = not self._table(tinfo).IsFresh()
            
        PutTo('auto-fetch', self.fetchUpdate,tinfo,needFetch,tinfoQueue,bot)
Beispiel #5
0
    def autoUpdate(self, args):
        tinfoQueue = args[0]
        tinfo = tinfoQueue.popleft()

        if tinfo == 'buddy':
            tinfoQueue.append('group')
        elif tinfo == 'group':
            tinfoQueue.append('discuss')
        elif tinfo == 'discuss':
            tinfoQueue.append('member')
        elif tinfo == 'member':
            tinfoQueue.extend(self.List('group'))
            tinfoQueue.extend(self.List('discuss'))
            tinfoQueue.append('end')
        elif tinfo == 'end':
            self.Dump()
            tinfoQueue.append('buddy')
        else:
            pass

        needFetch = (tinfo not in ('end', 'member')) and \
                    (not self.getTable(tinfo).IsFresh())

        PutTo('fetch', self.fetchUpdate, tinfo, needFetch, args)