async def show_faction_cache(self, message):
cursor = self.query('select faction_id, name from faction_names')
lines = []
+ faction_ids = []
for row in cursor.fetchall():
+ faction_ids.append(row['faction_id'])
lines.append('Faction **{}** #{}'.format(row['name'], row['faction_id']))
cursor = self.query('select eddb_id, name from faction_systems')
for row in cursor.fetchall():
self.close_db()
if len(lines):
await bot.say_many(message.channel, lines)
+ for tracked in self.tracked_factions:
+ await self.report_stale_influence(message.channel, name = tracked.name)
async def list_tracked_factions(self, message):
results = []
self.update_tracked_faction(tracked.id, **update)
await self.report_faction_influence(channel, name = tracked.name, yelp_if_no_data = False)
+ await self.report_stale_influence(channel, name = tracked.name)
async def get_faction(self, destination, name):
factions = eddb.find_faction(name)
self.close_db()
return ret
+ async def report_stale_influence(self, destination, *, id = None, name = None):
+ if id is None:
+ id = self.get_faction_id(name)
+ if id is None:
+ log.error("Can't report stale influence of unknown faction {}".format(name))
+ return False
+
+ cutoff = 86400 * 2
+ cursor = self.query('select s.name as system_name, max(timestamp) as latest from faction_influence i left join faction_systems s using(eddb_id) where faction_id=? group by eddb_id, faction_id having latest < ?', [id, self.now() - cutoff])
+ lines = []
+ for row in cursor.fetchall():
+ if not len(lines):
+ lines = ['__Stale influence data in__']
+ lines.append('**{}** last updated at *{}*'.format(row['system_name'], bot.iso8601(row['latest'])))
+ if len(lines):
+ await bot.say_many(destination, lines)
+ else:
+ log.info('No stale influence for {}'.format(name if name is not None else id))
+ self.close_db()
+ return True
+
async def show_influence_report(self, message, args):
name = args[0]
if name == 'in':