def task_sysrefresh(bot): try: refresh_database( bot, background=True, callback=lambda: print("Starting background EDSM refresh.")) except ConcurrentOperationError: pass
def cmd_sysrefresh(bot, trigger, db=None): """ Refreshes the starsystem database if you have halfop or better. Reports the last refresh time otherwise. -f: Force refresh even if data is stale. Requires op. """ access = ratlib.sopel.best_channel_mode(bot, trigger.nick) privileged = access & (HALFOP | OP) msg = "" if privileged: try: refreshed = refresh_database( bot, force=access & OP and trigger.group(2) and trigger.group(2) == '-f', callback=lambda: bot.say("Starting starsystem refresh...") ) if refreshed: bot.say(refresh_time_stats(bot)) return msg = "Not yet. " except ConcurrentOperationError: bot.say("A starsystem refresh operation is already in progress.") return when = get_status(db).starsystem_refreshed if not when: msg += "The starsystem database appears to have never been initialized." else: when = when.astimezone(datetime.timezone.utc) msg += "The starsystem database was refreshed at {} ({}) or an update is still in progress. It is only allowed every {} seconds.".format( ratlib.format_timestamp(when), ratlib.format_timedelta(when), bot.config.ratbot.edsm_maxage or '<unknown>' ) bot.say(msg)
def cmd_sysrefresh(bot, trigger, db=None): """ Refreshes the starsystem database if you have halfop or better. Reports the last refresh time otherwise. -f: Force refresh even if data is stale. Requires op. """ access = ratlib.sopel.best_channel_mode(bot, trigger.nick) privileged = access & (HALFOP | OP) msg = "" if privileged: options = "" if not trigger.group( 2) or trigger.group(2)[0] != '-' else trigger.group(2)[1:] force = 'f' in options and (access & OP) prune = not ('p' in options and (access & OP)) try: refreshed = refresh_database( bot, force=force, prune=prune, callback=lambda: bot.say("Starting starsystem refresh...")) if refreshed: bot.say(refresh_time_stats(bot)) return msg = "Not yet. " except ConcurrentOperationError: bot.say("A starsystem refresh operation is already in progress.") return when = get_status(db).starsystem_refreshed if not when: msg += "The starsystem database appears to have never been initialized." else: when = when.astimezone(datetime.timezone.utc) msg += "The starsystem database was refreshed at {} ({}) or an update is still in progress. It is only allowed every {} seconds.".format( timeutil.format_timestamp(when), timeutil.format_timedelta(when), bot.config.ratbot.edsm_maxage or '<unknown>') bot.say(msg)
def task_sysrefresh(bot): try: refresh_database(bot, background=True, callback=lambda: print("Starting background EDSM refresh.")) except ConcurrentOperationError: pass