diff --git a/modules/official-bots/src/main/scala/de/nowchess/bot/service/TournamentBotGamePlayer.scala b/modules/official-bots/src/main/scala/de/nowchess/bot/service/TournamentBotGamePlayer.scala index 0f83627..9f94733 100644 --- a/modules/official-bots/src/main/scala/de/nowchess/bot/service/TournamentBotGamePlayer.scala +++ b/modules/official-bots/src/main/scala/de/nowchess/bot/service/TournamentBotGamePlayer.scala @@ -62,9 +62,7 @@ class TournamentBotGamePlayer: private def resolveToken(difficulty: String): Option[String] = val name = botName(difficulty) val redisKey = s"${redisConfig.prefix}:tournament-bot:token:$name" - Try(accountServiceClient.getBotToken(name).token) - .toOption - .filter(_.nonEmpty) + fetchTokenFromAccountService(name) .map { token => redis.value(classOf[String]).set(redisKey, token) log.infof("Fetched fresh bot token for %s from account service", name) @@ -83,6 +81,16 @@ class TournamentBotGamePlayer: } } + private def fetchTokenFromAccountService(name: String): Option[String] = + Try(accountServiceClient.getBotToken(name).token).toOption.filter(_.nonEmpty) + .orElse { + Try { + val allNames = BotController.listBots.map(botName) + accountServiceClient.syncBots(de.nowchess.bot.client.SyncOfficialBotsRequest(allNames)) + accountServiceClient.getBotToken(name).token + }.toOption.filter(_.nonEmpty) + } + private def parkOnStartup(token: Option[String]): Unit = token match case None => log.warn("No bot token resolved — skipping park")