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)
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)
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)))
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)
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)