def run(): ctl = Rcon( SERVER_INFO ) config = AutoBroadcasts() while True: msgs = config.get_messages() if not config.get_enabled() or not msgs: logger.debug("Auto broadcasts are disabled. Sleeping %s seconds", CHECK_INTERVAL) time.sleep(CHECK_INTERVAL) continue if config.get_randomize(): logger.debug("Auto broadcasts. Radomizing") random.shuffle(msgs) for time_sec, msg in msgs: subs = { 'nextmap': safe(ctl.get_next_map, "")(), 'maprotation': ' -> '.join(safe(ctl.get_map_rotation, [])()), 'servername': safe(ctl.get_name, "")(), 'onlineadmins': ', '.join(safe(ctl.get_online_admins, [])()) } formatted = msg.format(**subs) logger.debug("Broadcasting for %s seconds: %s", time_sec, formatted) ctl.set_broadcast(formatted) time.sleep(int(time_sec)) # Clear state in case next next iteration disables ctl.set_broadcast('')
def run(): # avoid circular import from rcon.extended_commands import Rcon ctl = Rcon( SERVER_INFO ) config = AutoBroadcasts() while True: msgs = config.get_messages() if not config.get_enabled() or not msgs: logger.debug("Auto broadcasts are disabled. Sleeping %s seconds", CHECK_INTERVAL) time.sleep(CHECK_INTERVAL) continue if config.get_randomize(): logger.debug("Auto broadcasts. Radomizing") random.shuffle(msgs) for time_sec, msg in msgs: if not config.get_enabled(): break formatted = format_message(ctl, msg) logger.debug("Broadcasting for %s seconds: %s", time_sec, formatted) try: ctl.set_broadcast(formatted) except CommandFailedError: logger.exception("Unable to broadcast %s", msg) time.sleep(int(time_sec))
def get_auto_broadcasts_config(request): failed = False config = None try: broadcasts = AutoBroadcasts() config = { 'messages': ["{} {}".format(m[0], m[1]) for m in broadcasts.get_messages()], 'randomized': broadcasts.get_randomize(), 'enabled': broadcasts.get_enabled() } except: logger.exception("Error fetch broadcasts config") failed = True return JsonResponse({ "result": config, "command": "get_auto_broadcasts_config", "arguments": None, "failed": failed })
if __name__ == '__main__': ctl = Rcon(SERVER_INFO) config = AutoBroadcasts() while True: msgs = config.get_messages() if not config.get_enabled() or not msgs: logger.debug("Auto broadcasts are disabled. Sleeping %s seconds", CHECK_INTERVAL) time.sleep(CHECK_INTERVAL) continue if config.get_randomize(): logger.debug("Auto broadcasts. Radomizing") random.shuffle(msgs) for time_sec, msg in msgs: subs = { 'nextmap': safe(ctl.get_next_map, "")(), 'maprotation': ' -> '.join(safe(ctl.get_map_rotation, [])()), 'servername': safe(ctl.get_name, "")(), 'onlineadmins': ', '.join(safe(ctl.get_online_admins, [])()) } formatted = msg.format(**subs) logger.debug("Broadcasting for %s seconds: %s", time_sec, formatted) ctl.set_broadcast(formatted) time.sleep(int(time_sec))