Torom / BotLi

Lichess Bot
GNU Affero General Public License v3.0
44 stars 82 forks source link

Issue on Raspberry Pi 4 #127

Closed EmptikBest closed 1 year ago

EmptikBest commented 1 year ago

Please read, understand and follow: https://lichess.org/@/thibault/blog/how-to-ask-technical-questions/1HSthDSX

Describe the bug I keep getting the following whenever I start a game:

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
    self.run()
  File "/home/emptikbest/RaspberryIsFishy/game.py", line 34, in run
    self.lichess_game = Lichess_Game(self.api, self.game_info, self.config)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/emptikbest/RaspberryIsFishy/lichess_game.py", line 44, in __init__
    self.engine = self._get_engine()
                  ^^^^^^^^^^^^^^^^^^
  File "/home/emptikbest/RaspberryIsFishy/lichess_game.py", line 711, in _get_engine
    engine.send_opponent_information(opponent=chess.engine.Opponent(self.game_info.opponent_username,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'SimpleEngine' object has no attribute 'send_opponent_information'

To Reproduce Steps to reproduce the behavior: I do not have a idea if this can be reproduced, I think this is similar to a error message I got before

  1. Open BotLi
  2. challenge someone
  3. I got the error mentioned above

Expected behavior To BotLi to play the game?

Information:

Config: Paste your config.yml here REMOVE YOUR TOKEN:

token: "removed"         # Lichess OAuth2 Token.

engine:                                   # Engine settings.
  dir: "/home/emptikbest/RaspberryIsFishy/engines"                 # Directory containing the engine.
  name: "./stockfish"                     # Binary name of the engine to use.
  ponder: true                            # Think on opponent's time.
  silence_stderr: false                   # Suppresses stderr output.
  syzygy:
    enabled: true                         # Activate local syzygy endgame tablebases.
    paths:                                # Paths to local syzygy endgame tablebases.
      - "/home/emptikbest/Syzygy"
    max_pieces: 5                         # Count of max pieces in the local syzygy endgame tablebases.
    instant_play: true                    # Whether the bot should play directly from syzygy without engine if possible.
  gaviota:
    enabled: false                        # Activate local gaviota endgame tablebases.
    paths:                                # Paths to local gaviota endgame tablebases.
      - "/path/to/gaviota"
    max_pieces: 5                         # Count of max pieces in the local gaviota endgame tablebases.
  uci_options:                            # Arbitrary UCI options passed to the engine. (Commenting allowed)
    Move Overhead: 500                    # Increase if your bot flags games too often.
    Threads: 4                            # Max CPU threads the engine can use.
    Hash: 2048                            # Max memory (in megabytes) the engine can allocate.
  variants:
    enabled: true                         # Activate seperate engine for other chess variants than standard and chess960.
    dir: "/home/emptikbest/EmptikBot247/BotLi1/engines"                      # Directory containing the engine.
    name: "./fairy-stockfish"             # Binary name of the engine to use.
    ponder: true                          # Think on opponent's time.
    silence_stderr: false                 # Suppresses stderr output.
    uci_options:                          # Arbitrary UCI options passed to the engine. (Commenting allowed)
      Move Overhead: 500                  # Increase if your bot flags games too often.
      Threads: 4                          # Max CPU threads the engine can use.
      Hash: 2048                          # Max memory (in megabytes) the engine can allocate.
      EvalFile: "3check.nnue:antichess.nnue:atomic.nnue:crazyhouse.nnue:horde.nnue:kingofthehill.nnue:racingkings.nnue" # NNUE for fairy-stockfish (need to be downloaded seperately). Only compatible with Fairy Stockfish 14.0.1 or newer. If on windows, replace : with ; to seperate the file names.
  opening_books:
    enabled: true                         # Activate opening books.
    priority: 400                         # Priority with which this move source is used. Higher priority is used first.
    books:
#     white:                              # List of names of books to use as white.
#       - "WhiteBook"
#     black:                              # List of names of books to use as black.
#       - "BlackBook"
      standard:                           # List of names of books to use if there is no specific book for white, black or chess960.
        - "HCanFree-Upd"
        - "OlisFish030823"
        - "Chucaro4upd2"
        - "Solista-260822"
        - "perfect1"
        - "cumulated"
        - "MANTIS-DH2"
        - "LesChats070923"
        - "Mustafacanseven"
        - "Cevdet-X"
        - "SolistaAttackv3"
        - "SENTINEL"
        - "Perfect2023"
        - "callmeX"
        - "Raid-TR"
        - "best"
        - "Hero-8-6-2023"
        - "fruit"
        - "Cerebellum3Merge"
        - "OPTIMUS32"
        - "Mini_Mighty"
        - "SCCT-10.1"
        - "BRAIN"
        - "MANTIS-X5"
        - "HannibalBookSmall"
        - "NebulaRing178"
        - "NebulaBlue110"
        - "Titans"
        - "xXx"
        - "stockfish-211-book"
        - "book"
        - "SF-SE"
        - "SF15f"
        - "Book1"
        - "book-mb3m5"
        - "Book2"
        - "Cacho"
        - "komodo"
        - "DarkGalactus"
        - "Bigfoot"
        - "BNX_3741_44"
        - "Anand"
        - "Botvinnik"
        - "Carlsen"
        - "Fischer"
        - "Karpov"
        - "Kasparov"
        - "chiron15"
        - "Deuterium"
        - "Spassky"
        - "Tal"
        - "Hubble33"
        - "StudentChess"
        - "cute"
        - "Ranomi_170527"
        - "SF14h"
        - "cani"
        - "Thunderwizard"
        - "HeroV1.15c"
        - "emptikbot-09-07-23"
        - "ST_Mix"
#     chess960:                           # List of names of books to use for chess960.
#       - "Chess960Book"
#     Use the same pattern for 'antichess', 'atomic', 'crazyhouse', 'horde', 'kingofthehill', 'racingkings' and '3check' as well.
    selection: "weighted_random"          # Move selection is one of "weighted_random", "uniform_random" or "best_move".
#   max_depth: 16                         # Half move max depth. (Comment this line for max depth)
  online_moves:
    opening_explorer:
      enabled: false                      # Activate online moves from Lichess opening explorer. The move that has performed best for this bot is played.
      priority: 300                       # Priority with which this move source is used. Higher priority is used first.
      use_for_variants: false             # Whether the Lichess opening explorer should be used for other variants than standard and chess960.
      min_time: 20                        # Time the bot must have at least to use the online move.
      timeout: 5                          # Time the server has to respond.
      min_games: 5                        # Minimum number of games in which the position must have occurred.
      only_with_wins: false               # Whether to play only moves that have won before.
      selection: "performance"            # Move selection is "performance" or "win_rate".
      anti: false                         # Whether to play the moves in which the opponent performs the worst.
#     max_depth: 16                       # Half move max depth. (Comment this line for max depth)
#     max_moves: 1                        # Max number of moves played from Lichess opening explorer. (Comment this line for max moves)
    lichess_cloud:
      enabled: false                      # Activate online moves from Lichess cloud eval.
      priority: 200                       # Priority with which this move source is used. Higher priority is used first.
      only_without_book: false            # Whether the cloud should only be used if there is no matching book.
      min_eval_depth: 10                  # Minimum evaluation depth.
      min_time: 20                        # Time the bot must have at least to use the online move.
      timeout: 5                          # Time the server has to respond.
#     max_depth: 16                       # Half move max depth. (Comment this line for max depth)
#     max_moves: 1                        # Max number of moves played from Lichess cloud eval. (Comment this line for max moves)
    chessdb:
      enabled: false                      # Activate online moves from https://chessdb.cn/queryc_en/
      priority: 100                       # Priority with which this move source is used. Higher priority is used first.
      min_eval_depth: 10                  # Minimum evaluation depth.
      min_time: 20                        # Time the bot must have at least to use the online move.
      timeout: 5                          # Time the server has to respond.
#     max_depth: 16                       # Half move max depth. (Comment this line for max depth)
#     max_moves: 1                        # Max number of moves played from chessdb. (Comment this line for max moves)
    online_egtb:
      enabled: true                       # Activate online endgame tablebases from Lichess.
      min_time: 10                        # Time the bot must have at least to use the online move.
      timeout: 2                          # Time the server has to respond.
  offer_draw:
    enabled: true                         # Activate whether the bot should offer draw.
    score: 10                             # If the absolute value of the score is less than or equal to this value, the bot offers/accepts draw (in cp)
    consecutive_moves: 10                 # How many moves in a row the absolute value of the score has to be below the draw value
    min_game_length: 35                   # Earliest move in which draw is offered.
  resign:
    enabled: false                        # Activate whether the bot should resign games.
    score: -1000                          # If the score is less than or equal to this value, the bot resigns (in cp).
    consecutive_moves: 5                  # How many moves in a row the score has to be below the resign value.

move_overhead_multiplier: 1.1             # Increase if your bot flags games too often. Default move overhead is 1 second per 1 minute initital time.

challenge:                                # Incoming challenges. (Commenting allowed)
  concurrency: 1                          # Number of games to play simultaneously.
  bullet_with_increment_only: true        # Whether bullet games against BOTs should only be accepted with increment.
  min_increment: 1                        # Minimum amount of increment to accept a challenge.
  max_increment: 1                        # Maximum amount of increment to accept a challenge.
  min_initial: 60                         # Minimum amount of initial time to accept a challenge.
  max_initial: 60                         # Maximum amount of initial time to accept a challenge.
  variants:                               # Chess variants to accept (https://lichess.org/variant).
    - standard
#   - chess960
#   - fromPosition
#   - antichess
#   - atomic
#   - crazyhouse
#   - horde
#   - kingOfTheHill
#   - racingKings
#   - threeCheck
  time_controls:                          # Time controls to accept.
    - bullet
#   - blitz
#   - rapid
#   - classical
  bot_modes:                              # Game modes to accept against BOTs.
#   - casual                              # Unrated games.
    - rated                               # Rated games
  human_modes:                            # Game modes to accept against humans.
#   - casual                              # Unrated games.
#   - rated                               # Rated games

matchmaking:
  initial_time: 60                        # Initial time for matchmaking mode.
  increment: 1                            # Increment time for matchmaking mode.
  rated: true                             # Activate rated games in matchmaking mode.
  timeout: 30                             # Time until a challenge is canceled.
  variants:                               # Chess variants (https://lichess.org/variant) to challenge.
    - standard
#   - chess960
#   - antichess
#   - atomic
#   - crazyhouse
#   - horde
#   - kingOfTheHill
#   - racingKings
#   - threeCheck
# min_rating_diff: 0                      # Minimum rating distance to opponent. (Commenting allowed)
# max_rating_diff: 300                    # Maximum rating distance to opponent. (Commenting allowed)
  delay: 70                               # Time in seconds the bot must be idle before a new challenge is started.
  multiplier: 10                          # Multiplier for calculating timeouts in matchmaking. Higher values lead to a wider range of opponents.

messages:
  # Optional substitution keywords (include curly braces):
  #   {opponent} to insert the opponent's name
  #   {me} to insert our name
  #   {engine} to insert engine name
  #   {cpu} to insert CPU information
  #   {ram} to insert RAM size
  # Any other words in curly braces will be removed.
  greeting: "Hey, I'm running {engine} on a Raspberry Pi 4 Model B and 2GiB of RAM. Good luck! Type !help for a list of commands." # Message sent to the opponent at the beginning of a game.
  goodbye: "Good game, well played. See you next time!"                                             # Message sent to the opponent after the end of a game.
  greeting_spectators: "Hey, I'm running {engine} on a Raspberry Pi 4 Model B and 2GiB of RAM. Type !help for a list of commands." # Message sent to the spectators at the beginning of a game.
  goodbye_spectators: "Thanks for watching!"                                           # Message sent to the spectators after the end of a game.

whitelist:                              # List of users whose challenges are always accepted.
    - EmptikGod

blacklist:                              # List of users who are not challenged and whose challenges are declined.
    - Elmichess
    - Annie_Archy
    - chessfyBOT
    - actual_magnus
    - ProteusSF
    - ProteusSF-Open
    - ProteusSF-Lite
    - ProteusSF-Turbo
    - ResoluteBot
    - VariantsBot
    - AshNostromo
    - chat_bot
    - Zagreus_engine
    - caissa-test
    - caissa-ai
    - StreamerVSChat
    - zulu_bot
    - HistoryExplorer
    - bekbot
    - OldStockfish
    - dark_angel_777

books:                                    # Names of the opening books (to be used above in the opening_books section) and paths to the opening books.
  OlisFish030823: "/home/emptikbest/books/OlisFish030823.bin"
  Perfect2023: "/home/emptikbest/books/Perfect2023.bin"
  Book1: "/home/emptikbest/books/Book1.bin"
  Book2: "/home/emptikbest/books/Book2.bin"
  Solista-260822: "/home/emptikbest/books/Solista-260822.bin"
  perfect1: "/home/emptikbest/books/perfect1.bin"
  Mustafacanseven: "/home/emptikbest/books/Mustafacanseven.bin"
  komodo: "/home/emptikbest/books/komodo.bin"
  HCanFree-Upd: "/home/emptikbest/books/HCanFree-Upd.bin"
  cute: "/home/emptikbest/books/cute.bin"
  Cevdet-X: "/home/emptikbest/books/Cevdet-X.bin"
  cani: "/home/emptikbest/books/cani.bin"
  BRAIN: "/home/emptikbest/books/BRAIN.bin"
  book: "/home/emptikbest/books/book.bin"
  StudentChess: "/home/emptikbest/books/StudentChess.bin"
  Titans: "/home/emptikbest/books/Titans.bin"
  Cerebellum3Merge: "/home/emptikbest/books/Cerebellum3Merge.bin"
  book-mb3m45: "/home/emptikbest/books/book-mb3m45.bin"
  fruit: "/home/emptikbest/books/fruit.bin"
  OPTIMUS32: "/home/emptikbest/books/OPTIMUS32.bin"
  stockfish-211-book: "/home/emptikbest/books/stockfish-211-book.bin"
  Ranomi_170527: "/home/emptikbest/books/Ranomi_170527.bin"
  HannibalBookSmall: "/home/emptikbest/books/HannibalBookSmall.bin"
  Deuterium: "/home/emptikbest/books/Deuterium.bin"
  chiron15: "/home/emptikbest/books/chiron15.bin"
  ST_Mix: "/home/emptikbest/books/ST_Mix.bin"
  xXx: "/home/emptikbest/books/xXx.bin"
  SCCT-10.1: "/home/emptikbest/books/SCCT-10.1.bin"
  SENTINEL: "/home/emptikbest/books/SENTINEL.bin"
  SF-SE: "/home/emptikbest/books/SF-SE.bin"
  SF15f: "/home/emptikbest/books/SF15f.bin"
  LesChats070923: "/home/emptikbest/books/LesChats070923.bin"
  Mini_Mighty: "/home/emptikbest/books/Mini_Mighty.bin"
  Chucaro4upd2: "/home/emptikbest/books/Chucaro4upd2.bin"
  Cacho: "/home/emptikbest/books/Cacho.bin"
  cumulated: "/home/emptikbest/books/cumulated.bin"
  DarkGalactus: "/home/emptikbest/books/DarkGalactus.bin"
  Bigfoot: "/home/emptikbest/books/Bigfoot.bin"
  BNX_3741_44: "/home/emptikbest/books/BNX_3741_44.bin"
  Anand: "/home/emptikbest/books/Anand.bin"
  Botvinnik: "/home/emptikbest/books/Botvinnik.bin"  Carlsen: "/home/emptikbest/books/Carlsen.bin"
  Fischer: "/home/emptikbest/books/Fischer.bin"
  Karpov: "/home/emptikbest/books/Karpov.bin"
  Kasparov: "/home/emptikbest/books/Kasparov.bin"
  NebulaBlue110: "/home/emptikbest/books/NebulaBlue110.bin"
  NebulaRing178: "/home/emptikbest/books/NebulaRing178.bin"
  Spassky: "/home/emptikbest/books/Spassky.bin"
  Tal: "/home/emptikbest/books/Tal.bin"
  Hubble33: "/home/emptikbest/books/Hubble33.bin"
  callmeX: "/home/emptikbest/books/callmeX.bin"
  MANTIS-DH2: "/home/emptikbest/books/MANTIS-DH2.bin"
  MANTIS-X5: "/home/emptikbest/books/MANTIS-X5.bin"
  SF14h: "/home/emptikbest/books/SF14h.bin"
  SolistaAttackv3: "/home/emptikbest/books/SolistaAttackv3.bin"
  Thunderwizard: "/home/emptikbest/books/Thunderwizard.bin"
  HeroV1.15c: "/home/emptikbest/books/HeroV1.15c.bin"
  emptikbot-09-07-23: "/home/emptikbest/books/emptikbot-09-07-23.bin"
  best: "/home/emptikbest/books/best.bin"
  Hero-8-6-2023: "/home/emptikbest/books/Hero-8-6-2023.bin"
  Raid-TR: "/home/emptikbest/books/Raid-TR.bin"

Additional context None, using Stockfish armv8 binary compiled from source

Torom commented 1 year ago

Your python-chess version is not up to date. Run pip install -r requirements.txt again.

EmptikBest commented 1 year ago

Thanks a lot, fixed! :D