From 7b481f68467fe250c1711b20ec8e9252dbac3e29 Mon Sep 17 00:00:00 2001 From: Mark Harrison Date: Thu, 13 Feb 2020 03:35:04 -0800 Subject: [PATCH] Send bots information about their opponents --- engine_wrapper.py | 16 ++++++++++++++++ lichess-bot.py | 1 + 2 files changed, 17 insertions(+) diff --git a/engine_wrapper.py b/engine_wrapper.py index 16f0f5c5c..c8a974d09 100644 --- a/engine_wrapper.py +++ b/engine_wrapper.py @@ -41,6 +41,9 @@ def search(self, board, wtime, btime, winc, binc): def print_stats(self): pass + def opponent_info(self, game): + pass + def name(self): return self.engine.name @@ -125,6 +128,12 @@ def print_stats(self): def get_stats(self): return self.get_handler_stats(self.engine.info_handlers[0].info, ["depth", "nps", "nodes", "score"]) + def opponent_info(self, game): + name = game.opponent.name + rating = game.opponent.rating + title = game.opponent.title if game.opponent.title else "none" + player_type = "computer" if title == "BOT" else "human" + self.engine.setoption({"UCI_Opponent": "{} {} {} {}".format(title, rating, player_type, name)}) class XBoardEngine(EngineWrapper): @@ -214,3 +223,10 @@ def name(self): return self.engine.features.get("myname") except: return None + + def opponent_info(self, game): + title = game.opponent.title + " " if game.opponent.title else "" + self.engine.opponent_name(title + game.opponent.name) + self.engine.rating(game.me.rating, game.opponent.rating) + if game.opponent.title == "BOT": + self.engine.computer() diff --git a/lichess-bot.py b/lichess-bot.py index b90114762..6799d3365 100644 --- a/lichess-bot.py +++ b/lichess-bot.py @@ -136,6 +136,7 @@ def play_game(li, game_id, control_queue, engine_factory, user_profile, config, game = model.Game(initial_state, user_profile["username"], li.baseUrl, config.get("abort_time", 20)) board = setup_board(game) engine = engine_factory(board) + engine.opponent_info(game) conversation = Conversation(game, engine, li, __version__, challenge_queue) logger.info("+++ {}".format(game))