Torom / BotLi

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

Problem with Data Classes #78

Closed OhMGod-Dude closed 1 year ago

OhMGod-Dude commented 1 year ago

C:\Users\pererach\Downloads\BotLi-main\BotLi-main>python user_interface.py Traceback (most recent call last): File "user_interface.py", line 6, in from api import API File "C:\Users\pererach\Downloads\BotLi-main\BotLi-main\api.py", line 11, in from botli_dataclasses import API_Challenge_Reponse, Challenge_Request File "C:\Users\pererach\Downloads\BotLi-main\BotLi-main\botli_dataclasses.py", line 7, in @dataclass File "C:\Users\pererach\Downloads\BotLi-main\BotLi-main\botli_dataclasses.py", line 9, in API_Challenge_Reponse challenge_id: Challenge_ID | None = None TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'

Information:

Config:

 engine:                                   # Engine settings.
  dir: "./engines"                        # Directory containing the engine.
  name: "stockfish.exe"                       # Binary name of the engine to use.
  ponder: true                            # Think on opponent's time.
  silence_stderr: false                   # Suppresses stderr output.
  syzygy:
    enabled: false                        # Activate local syzygy endgame tablebases.
    paths:                                # Paths to local syzygy endgame tablebases.
      - "/path/to/syzygy"
    max_pieces: 6                         # 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: 100                    # Increase if your bot flags games too often.
    Threads: 8                            # Max CPU threads the engine can use.
    Hash: 256                             # Max memory (in megabytes) the engine can allocate.
    Ponder: True
  variants:
    enabled: false                        # Activate seperate engine for other chess variants than standard and chess960.
    dir: "./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: 100                  # Increase if your bot flags games too often.
      Threads: 4                          # Max CPU threads the engine can use.
      Hash: 256                           # Max memory (in megabytes) the engine can allocate.
  opening_books:
    enabled: false                        # Activate opening books.
    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.
        - "DefaultBook"
#     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: true                      # Activate online moves from Lichess opening explorer. The move that has performed best for this bot is played.
      use_for_variants: true             # 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".
#     max_depth: 16                       # Half move max depth. (Comment this line for max depth)
    chessdb:
      enabled: false                      # Activate online moves from https://chessdb.cn/queryc_en/
      min_eval_depth: 10                  # Minimum evaluation depth. Only for selection: "best".
      min_time: 20                        # Time the bot must have at least to use the online move.
      timeout: 5                          # Time the server has to respond.
      selection: "best"                   # Move selection is one of "best", "good" or "all".
#     max_depth: 16                       # Half move max depth. (Comment this line for max depth)
    lichess_cloud:
      enabled: true                      # Activate online moves from Lichess cloud eval.
      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)
    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: 3                          # 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.0             # 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: false       # Whether bullet games against BOTs should only be accepted with increment.
# min_increment: 0                        # Minimum amount of increment to accept a challenge.
# max_increment: 180                      # Maximum amount of increment to accept a challenge.
# min_initial: 0                          # Minimum amount of initial time to accept a challenge.
# max_initial: 315360000                  # 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: 10                               # Time in seconds the bot must be idle before a new challenge is started.

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}. Good luck! Type !help for a list of commands." # Message sent to the opponent at the beginning of a game.
  goodbye: "Good game, see you next time."                                             # Message sent to the opponent after the end of a game.
  greeting_spectators: "Hey, I'm running {engine}. 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.

books:                                    # Names of the opening books (to be used above in the opening_books section) and paths to the opening books.
  DefaultBook: "/path/to/DefaultBook.bin"
Torom commented 1 year ago

Python version: python 3.11

This doesn't seem to be correct. You seem to use a Python version < 3.10. Run python --version to check this.