forked from AttackingOrDefending/lichess-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.yml.default
188 lines (171 loc) · 10.7 KB
/
config.yml.default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
token: "xxxxxxxxxxxxxxxx" # Lichess OAuth2 Token.
url: "https://lichess.org/" # Lichess base URL.
engine: # Engine settings.
dir: "./engines/" # Directory containing the engine. This can be an absolute path or one relative to lichess-bot/.
name: "engine_name" # Binary name of the engine to use.
working_dir: "" # Directory where the chess engine will read and write files. If blank or missing, the current directory is used.
# NOTE: If working_dir is set, the engine will look for files and directories relative to this directory, not where lichess-bot was launched. Absolute paths are unaffected.
protocol: "uci" # "uci", "xboard" or "homemade"
ponder: true # Think on opponent's time.
polyglot:
enabled: false # Activate polyglot book.
book:
standard: # List of book file paths for variant standard.
- engines/book1.bin
- engines/book2.bin
# atomic: # List of book file paths for variant atomic.
# - engines/atomicbook1.bin
# - engines/atomicbook2.bin
# etc.
# Use the same pattern for 'giveaway' (antichess), 'crazyhouse', 'horde', 'kingofthehill', 'racingkings' and '3check' as well.
min_weight: 1 # Does not select moves with weight below min_weight (min 0, max: 65535).
selection: "weighted_random" # Move selection is one of "weighted_random", "uniform_random" or "best_move" (but not below the min_weight in the 2nd and 3rd case).
max_depth: 8 # How many moves from the start to take from the book.
draw_or_resign:
resign_enabled: false
resign_score: -1000 # If the score is less than or equal to this value, the bot resigns (in cp).
resign_for_egtb_minus_two: true # If true the bot will resign in positions where the online_egtb returns a wdl of -2.
resign_moves: 3 # How many moves in a row the score has to be below the resign value.
offer_draw_enabled: false
offer_draw_score: 0 # If the absolute value of the score is less than or equal to this value, the bot offers/accepts draw (in cp).
offer_draw_for_egtb_zero: true # If true the bot will offer/accept draw in positions where the online_egtb returns a wdl of 0.
offer_draw_moves: 5 # How many moves in a row the absolute value of the score has to be below the draw value.
offer_draw_pieces: 10 # Only if the pieces on board are less than or equal to this value, the bot offers/accepts draw.
online_moves:
max_out_of_book_moves: 10 # Stop using online opening books after they don't have a move for 'max_out_of_book_moves' positions. Doesn't apply to the online endgame tablebases.
max_retries: 2 # The maximum amount of retries when getting an online move.
chessdb_book:
enabled: false
min_time: 20
move_quality: "good" # One of "all", "good", "best".
min_depth: 20 # Only for move_quality: "best".
lichess_cloud_analysis:
enabled: false
min_time: 20
move_quality: "good" # One of "good", "best".
max_score_difference: 50 # Only for move_quality: "good". The maximum score difference (in cp) between the best move and the other moves.
min_depth: 20
min_knodes: 0
online_egtb:
enabled: false
min_time: 20
max_pieces: 7
source: "lichess" # One of "lichess", "chessdb".
move_quality: "best" # One of "good", "best", "suggest" (it takes all the "good" moves and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
lichess_bot_tbs: # The tablebases list here will be read by lichess-bot, not the engine.
syzygy:
enabled: false
paths:
- "engines/syzygy"
max_pieces: 7
move_quality: "best" # One of "good", "best", "suggest" (it takes all the "good" moves and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
gaviota:
enabled: false
paths:
- "engines/gaviota"
max_pieces: 5
min_dtm_to_consider_as_wdl_1: 120 # The minimum dtm to consider as syzygy wdl=1/-1. Set to 100 to disable.
move_quality: "best" # One of "good", "best", "suggest" (it takes all the "good" moves and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
# engine_options: # Any custom command line params to pass to the engine.
# cpuct: 3.1
homemade_options:
# Hash: 256
uci_options: # Arbitrary UCI options passed to the engine.
Move Overhead: 100 # Increase if your bot flags games too often.
Threads: 2 # Max CPU threads the engine can use.
Hash: 256 # Max memory (in megabytes) the engine can allocate.
SyzygyPath: "./syzygy/" # Paths to Syzygy endgame tablebases
# go_commands: # Additional options to pass to the UCI go command.
# nodes: 1 # Search so many nodes only.
# depth: 5 # Search depth ply only.
# movetime: 1000 # Integer. Search exactly movetime milliseconds.
# xboard_options: # Arbitrary XBoard options passed to the engine.
# cores: "4"
# memory: "4096"
# egtpath: # Directory containing egtb (endgame tablabases), relative to this project. For 'xboard' engines.
# gaviota: "Gaviota path"
# nalimov: "Nalimov Path"
# scorpio: "Scorpio Path"
# syzygy: "Syzygy Path"
# go_commands: # Additional options to pass to the XBoard go command.
# depth: 5 # Search depth ply only.
# Do note that the go commands 'movetime' and 'nodes' are invalid and may cause bad time management for XBoard engines.
silence_stderr: false # Some engines (yes you, Leela) are very noisy.
abort_time: 20 # Time to abort a game in seconds when there is no activity.
fake_think_time: false # Artificially slow down the bot to pretend like it's thinking.
rate_limiting_delay: 0 # Time (in ms) to delay after sending a move to prevent "Too Many Requests" errors.
move_overhead: 2000 # Increase if your bot flags games too often.
correspondence:
move_time: 60 # Time in seconds to search in correspondence games.
checkin_period: 600 # How often to check for opponent moves in correspondence games after disconnecting.
disconnect_time: 300 # Time before disconnecting from a correspondence game.
ponder: false # Ponder in correspondence games the bot is connected to.
challenge: # Incoming challenges.
concurrency: 1 # Number of games to play simultaneously.
sort_by: "best" # Possible values: "best" and "first".
accept_bot: false # Accepts challenges coming from other bots.
only_bot: false # Accept challenges by bots only.
max_increment: 180 # Maximum amount of increment to accept a challenge. The max is 180. Set to 0 for no increment.
min_increment: 0 # Minimum amount of increment to accept a challenge.
max_base: 315360000 # Maximum amount of base time to accept a challenge. The max is 315360000 (10 years).
min_base: 0 # Minimum amount of base time to accept a challenge.
max_days: 14 # Maximum number of days per move to accept a challenge for a correspondence game.
# Unlimited games can be accepted by removing this field or specifying .inf
min_days: 1 # Minimum number of days per move to accept a challenge for a correspondence game.
variants: # Chess variants to accept (https://lichess.org/variant).
- standard
# - fromPosition
# - antichess
# - atomic
# - chess960
# - crazyhouse
# - horde
# - kingOfTheHill
# - racingKings
# - threeCheck
time_controls: # Time controls to accept.
- bullet
- blitz
- rapid
# - classical
# - correspondence
modes: # Game modes to accept.
- casual # Unrated games.
- rated # Rated games - must comment if the engine doesn't try to win.
# block_list: # List of users from which the challenges are always declined.
# - user1
# - user2
# recent_bot_challenge_age: 60 # Maximum age of a bot challenge to be considered recent in seconds
# max_recent_bot_challenges: 2 # Maximum number of recent challenges that can be accepted from the same bot
greeting:
# Optional substitution keywords (include curly braces):
# {opponent} to insert opponent's name
# {me} to insert bot's name
# Any other words in curly braces will be removed.
hello: "Hi! I'm {me}. Good luck! Type !help for a list of commands I can respond to." # Message to send to opponent chat at the start of a game
goodbye: "Good game!" # Message to send to opponent chat at the end of a game
hello_spectators: "Hi! I'm {me}. Type !help for a list of commands I can respond to." # Message to send to spectator chat at the start of a game
goodbye_spectators: "Thanks for watching!" # Message to send to spectator chat at the end of a game
# pgn_directory: "game_records" # A directory where PGN-format records of the bot's games are kept
matchmaking:
allow_matchmaking: false # Set it to 'true' to challenge other bots.
challenge_variant: "random" # If set to 'random', the bot will choose one variant from the variants enabled in 'challenge.variants'.
challenge_timeout: 30 # Create a challenge after being idle for 'challenge_timeout' minutes. The minimum is 1 minute.
challenge_initial_time: # Initial time in seconds of the challenge (to be chosen at random).
- 60
- 120
challenge_increment: # Increment in seconds of the challenge (to be chosen at random).
- 1
- 2
# challenge_days: # Days for correspondence challenge (to be chosen at random).
# - 1
# - 2
# opponent_min_rating: 600 # Opponents rating should be above this value (600 is the minimum rating in lichess).
# opponent_max_rating: 4000 # Opponents rating should be below this value (4000 is the maximum rating in lichess).
opponent_rating_difference: 100 # The maximum difference in rating between the bot's rating and opponent's rating.
opponent_allow_tos_violation: true # Set to 'false' to prevent challenging bots that violated Lichess Terms of Service.
challenge_mode: "random" # Set it to the mode in which challenges are sent. Possible options are 'casual', 'rated' and 'random'.
challenge_filter: none # If a bot declines a challenge, do not issue a similar challenge to that bot. Possible options are 'none', 'coarse', and 'fine'.
# block_list: # The list of bots that will not be challenged
# - user1
# - user2