BlueMoonBot commited on
Commit
8fa0bef
·
verified ·
1 Parent(s): 353b046

Update config.yml

Browse files
Files changed (1) hide show
  1. config.yml +248 -249
config.yml CHANGED
@@ -1,277 +1,276 @@
1
- bot:
2
- token: "lip_e8LJRBzHFN4TbaTqnHLs" # Lichess OAuth2 Token.
3
- url: "https://lichess.org/" # Lichess base URL.
4
 
5
- engine: # Engine settings.
6
- dir: "./fairy" # Directory containing the engine. This can be an absolute path or one relative to lichess-bot/.
7
- name: "stockfish" # Binary name of the engine to use.
8
- debug: False # When enabled, log all startup communication with the engine.
9
  # interpreter: "java"
10
  # interpreter_options:
11
- # - "-jar"
12
- working_dir: "" # Directory where the chess engine will read and write files. If blank or missing, the current directory is used.
13
- # 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.
14
- protocol: "uci" # "uci", "xboard" or "homemade"
15
- ponder: true # TURNED ON: Allows background thinking on the opponent's time.
16
 
17
  polyglot:
18
- enabled: true # Activate polyglot book.
19
- book:
20
- standard: # List of book file paths for variant standard.
21
- - engines/book1.bin
22
- - engines/book2.bin
23
- atomic: # List of book file paths for variant atomic.
24
- - engines/atomicbook1.bin
25
- - engines/atomicbook2.bin
26
- chess960: # List of book file paths for variant chess960.
27
- - engines/chess960book1.bin
28
- - engines/chess960book2.bin
29
- giveaway: # List of book file paths for variant giveaway (antichess).
30
- - engines/giveawaybook1.bin
31
- - engines/giveawaybook2.bin
32
- crazyhouse: # List of book file paths for variant crazyhouse.
33
- - engines/crazyhousebook1.bin
34
- - engines/crazyhousebook2.bin
35
- horde: # List of book file paths for variant horde.
36
- - engines/hordebook1.bin
37
- - engines/hordebook2.bin
38
- kingofthehill: # List of book file paths for variant kingofthehill.
39
- - engines/kingofthehillbook1.bin
40
- - engines/kingofthehillbook2.bin
41
- racingkings: # List of book file paths for variant racingkings.
42
- - engines/racingkingsbook1.bin
43
- - engines/racingkingsbook2.bin
44
- "3check": # List of book file paths for variant 3check.
45
- - engines/threecheckbook1.bin
46
- - engines/threecheckbook2.bin
47
 
48
- min_weight: 1
49
- selection: "weighted_random"
50
- max_depth: 20
51
- normalization: "none"
52
 
53
- draw_or_resign:
54
- resign_enabled: false
55
- resign_score: -1000 # If the score is less than or equal to this value, the bot resigns (in cp).
56
- resign_for_egtb_minus_two: true # If true the bot will resign in positions where the online_egtb returns a wdl of -2.
57
- resign_moves: 3 # How many moves in a row the score has to be below the resign value.
58
- offer_draw_enabled: true # Whether or not the bot should offer/accept draw.
59
- 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).
60
- 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.
61
- offer_draw_moves: 10 # How many moves in a row the absolute value of the score has to be below the draw value.
62
- offer_draw_pieces: 10 # Only if the pieces on board are less than or equal to this value, the bot offers/accepts draw.
63
 
64
- online_moves:
65
- 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.
66
- max_retries: 2 # The maximum amount of retries when getting an online move.
67
- # max_depth: 10 # How many moves from the start to take from online books. Default is no limit.
68
- chessdb_book:
69
- enabled: true # TURNED ON: Massive cloud book access.
70
- min_time: 20 # Minimum time (in seconds) to use chessdb book.
71
- max_time: 10800 # Maximum starting game time (in seconds) to use chessdb book.
72
- move_quality: "good" # One of "all", "good", "best".
73
- min_depth: 20 # Only for move_quality: "best".
74
- lichess_cloud_analysis:
75
- enabled: true # TURNED ON: Grabs grandmaster server depth analyses.
76
- min_time: 20 # Minimum time (in seconds) the bot must have to use cloud analysis.
77
- max_time: 10800 # Maximum starting game time (in seconds) the bot must have to use cloud analysis.
78
- move_quality: "best" # One of "good", "best".
79
- max_score_difference: 50 # Only for move_quality: "good". The maximum score difference (in cp) between the best move and the other moves.
80
- min_depth: 20
81
- min_knodes: 0
82
- lichess_opening_explorer:
83
- enabled: true
84
- min_time: 20
85
- max_time: 10800 # Maximum starting game time (in seconds) the bot must have to use the lichess opening explorer.
86
- source: "lichess" # Switched to "lichess" to properly fetch community openings for variants
87
- player_name: "" # The lichess username. Leave empty for the bot's username to be used. Used only when source is "player".
88
- sort: "winrate" # One of "winrate", "games_played"
89
- min_games: 10 # Minimum number of times a move must have been played to be chosen.
90
- online_egtb:
91
- enabled: true # TURNED ON: Instant online endgame lookups.
92
- min_time: 20 # Minimum time (in seconds) the bot must have to use online EGTBs.
93
- max_time: 10800 # Maximum starting game time (in seconds) the bot must have to use online EGTBs.
94
- max_pieces: 8 # Maximum number of pieces on the board to use endgame tablebases.
95
- source: "lichess" # One of "lichess", "chessdb".
96
- move_quality: "best" # One of "best" or "suggest" (it takes all the moves with the same WDL and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
97
 
98
- lichess_bot_tbs: # The tablebases list here will be read by lichess-bot, not the engine.
99
- syzygy:
100
- enabled: false # Whether or not to use local syzygy endgame tablebases.
101
- paths: # Paths to Syzygy endgame tablebases.
102
- - "engines/syzygy"
103
- max_pieces: 7 # Maximum number of pieces in the endgame tablebase.
104
- move_quality: "best" # One of "best" or "suggest" (it takes all the moves with the same WDL and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
105
- gaviota:
106
- enabled: false # Whether or not to use local gaviota endgame tablebases.
107
- paths:
108
- - "engines/gaviota"
109
- max_pieces: 5
110
- min_dtm_to_consider_as_wdl_1: 120 # The minimum DTM to consider as syzygy WDL=1/-1. Set to 100 to disable.
111
- move_quality: "best" # One of "best" or "suggest" (it takes all the moves with the same WDL and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
112
 
113
- # engine_options: # Any custom command line params to pass to the engine.
114
- # cpuct: 3.1
115
 
116
- homemade_options:
117
- # Hash: 256
118
 
119
- uci_options:
120
- Use NNUE: true
121
- UCI_VariantPath: "./fairy/variants.ini" # Dynamically loads rules/NNUE parameters for all supported variants
122
- Move Overhead: 100 # Increase if your bot flags games too often.
123
- Threads: 4 # Max CPU threads the engine can use.
124
- Hash: 256 # FIXED: Reduced to 256MB to fit Hugging Face free tier smoothly without freezing.
125
- SyzygyPath: "./syzygy/" # Paths to Syzygy endgame tablebases that the engine reads.
126
- UCI_ShowWDL: true # Show the chance of the engine winning.
127
- go_commands: # Additional options to pass to the UCI go command.
128
- # nodes: 150000 # Search so many nodes only.
129
- # depth: 22 # Search depth ply only.
130
- # movetime: 3000 # COMMENTED OUT: Allows engine to manage time organically.
131
- ponder: true # TURNED ON: Complements the main background engine thinking.
132
- # xboard_options: # Arbitrary XBoard options passed to the engine.
133
- # cores: "4"
134
- # memory: "4096"
135
- # egtpath: # Directory containing egtb (endgame tablabases), relative to this project. For 'xboard' engines.
136
- # gaviota: "Gaviota path"
137
- # nalimov: "Nalimov Path"
138
- # scorpio: "Scorpio Path"
139
- # syzygy: "Syzygy Path"
140
- # go_commands: # Additional options to pass to the XBoard go command.
141
- # depth: 5 # Search depth ply only.
142
- # Do note that the go commands 'movetime' and 'nodes' are invalid and may cause bad time management for XBoard engines.
143
 
144
- silence_stderr: false # Some engines (yes you, Leela) are very noisy.
145
 
146
- abort_time: 30 # Time to abort a game in seconds when there is no activity.
147
- fake_think_time: false # Artificially slow down the bot to pretend like it's thinking.
148
- rate_limiting_delay: 0 # Time (in ms) to delay after sending a move to prevent "Too Many Requests" errors.
149
- move_overhead: 2000 # Increase if your bot flags games too often.
150
- max_takebacks_accepted: 0 # The number of times to allow an opponent to take back a move in a game.
151
  quit_after_all_games_finish: false # If set to true, then pressing Ctrl-C to quit will only stop lichess-bot after all current games have finished.
152
 
153
  correspondence:
154
- move_time: 60 # Time in seconds to search in correspondence games.
155
- checkin_period: 300 # How often to check for opponent moves in correspondence games after disconnecting.
156
- disconnect_time: 150 # Time before disconnecting from a correspondence game.
157
- ponder: true # TURNED ON: Ponder in correspondence games.
158
 
159
- challenge: # Incoming challenges.
160
- concurrency: 1 # Number of games to play simultaneously.
161
- sort_by: "best" # Possible values: "best" and "first".
162
- preference: "none" # Possible values: "none", "human", "bot".
163
- accept_bot: true # Accepts challenges coming from other bots.
164
- accept_human: true
165
- only_bot: false # Accept challenges by bots only.
166
- max_increment: 20 # Maximum amount of increment to accept a challenge in seconds. The max is 180. Set to 0 for no increment.
167
- min_increment: 0 # Minimum amount of increment to accept a challenge in seconds.
168
- max_base: 1800 # Maximum amount of base time to accept a challenge in seconds. The max is 10800 (3 hours).
169
- min_base: 0 # Minimum amount of base time to accept a challenge in seconds.
170
- max_days: 14 # Maximum number of days per move to accept a challenge for a correspondence game.
171
- # Unlimited games can be accepted by removing this field or specifying .inf
172
- min_days: 1 # Minimum number of days per move to accept a challenge for a correspondence game.
173
- variants: # Chess variants to accept (https://lichess.org/variant).
174
- - standard
175
- - fromPosition
176
- - antichess
177
- - atomic
178
- - chess960
179
- - crazyhouse
180
- - horde
181
- - kingOfTheHill
182
- - racingKings
183
- - threeCheck
184
- time_controls: # Time controls to accept (bots are not allowed to play ultraBullet).
185
- - bullet
186
- - blitz
187
- - rapid
188
- - classical
189
- - correspondence
190
- modes: # Game modes to accept.
191
- - casual # Unrated games.
192
- - rated # Rated games - must comment if the engine doesn't try to win.
193
- # block_list: # List of users from which the challenges are always declined.
194
- # - user1
195
- # - user2
196
- # online_block_list: # The urls from which to retrieve a list of bot names that will not be challenged. The list should be a text file where each line contains the name of a blocked bot
197
- # - example.com/blocklist
198
- # allow_list: # List of users from which challenges are exclusively accepted, all others being declined. If empty, challenges from all users may be accepted.
199
- # - user3
200
- # - user4
201
- # recent_bot_challenge_age: 60 # Maximum age of a bot challenge to be considered recent in seconds
202
- # max_recent_bot_challenges: 2 # Maximum number of recent challenges that can be accepted from the same bot
203
- # min_rating: 0 # Minimum rating of the challenger to accept a challenge.
204
- # max_rating: 4000 # Maximum rating of the challenger to accept a challenge. The maximum rating in lichess is 4000.
205
- # rating_difference: 300 # Maximum rating difference between the bot and the challenger. Overrides min_rating and max_rating if set.
206
- bullet_requires_increment: true # Require that bullet game challenges from bots have a non-zero increment
207
- max_simultaneous_games_per_user: 5 # Maximum number of simultaneous games with the same user
208
 
209
  greeting:
210
- # Optional substitution keywords (include curly braces):
211
- # {opponent} to insert opponent's name
212
- # {me} to insert bot's name
213
- # Any other words in curly braces will be removed.
214
- hello: "Hi! I'm {me}. I am a very excited chess engine, though it can take some time to move." # Message to send to opponent chat at the start of a game
215
- goodbye: "Good game! See you next time!" # Message to send to opponent chat at the end of a game
216
- hello_spectators: "Hi! I'm {me}. Hi spectators! Type !help for a list of commands I can respond to." # Message to send to spectator chat at the start of a game
217
- goodbye_spectators: "Thanks for watching!" # Message to send to spectator chat at the end of a game
218
 
219
- # pgn_directory: "game_records" # A directory where PGN-format records of the bot's games are kept
220
- # pgn_file_grouping: "game" # How to group games into files. Options are "game", "opponent", and "all"
221
- # "game" (default) - every game is written to a different file named "{White name} vs. {Black name} - {lichess game ID}.pgn"
222
- # "opponent" - every game with a given opponent is written to a file named "{Bot name} games vs. {Opponent name}.pgn"
223
- # "all" - every game is written to a single file named "{Bot name} games.pgn"
224
 
225
  matchmaking:
226
- allow_matchmaking: false # Set it to 'true' to challenge other bots.
227
- allow_during_games: false # Set it to 'true' to create challenges during long games.
228
- challenge_variant: "random" # If set to 'random', the bot will choose one variant from the variants enabled in 'challenge.variants'.
229
- challenge_timeout: 30 # Create a challenge after being idle for 'challenge_timeout' minutes. The minimum is 1 minute.
230
- challenge_initial_time: # Initial time in seconds of the challenge (to be chosen at random).
231
- - 60
232
- - 180
233
- challenge_increment: # Increment in seconds of the challenge (to be chosen at random).
234
- - 1
235
- - 2
236
- # challenge_days: # Days for correspondence challenge (to be chosen at random).
237
- # - 1
238
- # - 2
239
- # opponent_min_rating: 600 # Opponents rating should be above this value (600 is the minimum rating in lichess).
240
- # opponent_max_rating: 4000 # Opponents rating should be below this value (4000 is the maximum rating in lichess).
241
- opponent_rating_difference: 300 # The maximum difference in rating between the bot's rating and opponent's rating.
242
- rating_preference: "none" # One of "none", "high", "low".
243
- challenge_mode: "random" # Set it to the mode in which challenges are sent. Possible options are 'casual', 'rated' and 'random'.
244
- 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'.
245
- # block_list: # The list of bots that will not be challenged
246
- # - user1
247
- # - user2
248
- # online_block_list: # The urls from which to retrieve a list of bot names that will not be challenged. The list should be a text file where each line contains the name of a blocked bot
249
- # - example.com/blocklist
250
- include_challenge_block_list: false # Do not challenge bots in the challenge: block_list in addition to the matchmaking block list.
251
 
252
- # overrides: # List of overrides for the matchmaking specifications above. When a challenge is created, either the default specification above or one of the overrides will be randomly chosen.
253
- # bullet_only_horde: # Name of the override. Can be anything as long as each override has a unique name ("bullet_only_horde" and "easy_chess960" in these examples).
254
- # challenge_variant: "horde" # List of options to override. Only the options mentioned will change when making the challenge. The rest will follow the default matchmaking options above.
255
- # challenge_initial_time:
256
- # - 1
257
- # - 2
258
- # challenge_increment:
259
- # - 0
260
- # - 1
261
  #
262
- # easy_chess960:
263
- # challenge_variant: "chess960"
264
- # opponent_min_rating: 400
265
- # opponent_max_rating: 1200
266
- # opponent_rating_difference:
267
- # challenge_mode: casual
268
  #
269
- # no_pressure_correspondence:
270
- # challenge_initial_time:
271
- # challenge_increment:
272
- # challenge_days:
273
- # - 2
274
- # - 3
275
- # challenge_mode: casual
276
  #
277
  # The following configurations cannot be overridden: allow_matchmaking, challenge_timeout, challenge_filter and block_list.
 
1
+ token: "lip_e8LJRBzHFN4TbaTqnHLs"    # Lichess OAuth2 Token.
2
+ url: "https://lichess.org/"        # Lichess base URL.
 
3
 
4
+ engine:                            # Engine settings.
5
+   dir: "./fairy"                # Directory containing the engine. This can be an absolute path or one relative to lichess-bot/.
6
+   name: "stockfish"              # Binary name of the engine to use.
7
+   debug: False                     # When enabled, log all startup communication with the engine.
8
  # interpreter: "java"
9
  # interpreter_options:
10
+ #   - "-jar"
11
+   working_dir: ""                  # Directory where the chess engine will read and write files. If blank or missing, the current directory is used.
12
+                                    # NOTE: If working_dir isset, the engine will look for files and directories relative to this directory, not where lichess-bot was launched. Absolute paths are unaffected.
13
+   protocol: "uci"                  # "uci", "xboard" or "homemade"
14
+   ponder: false                    # TURNED OFF: Stops background thinking to keep move times strictly consistent.
15
 
16
  polyglot:
17
+   enabled: true                 # Activate polyglot book.
18
+   book:
19
+     standard:                    # List of book file paths for variant standard.
20
+       - engines/book1.bin
21
+       - engines/book2.bin
22
+     atomic:                      # List of book file paths for variant atomic.
23
+       - engines/atomicbook1.bin
24
+       - engines/atomicbook2.bin
25
+     chess960:                    # List of book file paths for variant chess960.
26
+       - engines/chess960book1.bin
27
+       - engines/chess960book2.bin
28
+     giveaway:                    # List of book file paths for variant giveaway (antichess).
29
+       - engines/giveawaybook1.bin
30
+       - engines/giveawaybook2.bin
31
+     crazyhouse:                  # List of book file paths for variant crazyhouse.
32
+       - engines/crazyhousebook1.bin
33
+       - engines/crazyhousebook2.bin
34
+     horde:                       # List of book file paths for variant horde.
35
+       - engines/hordebook1.bin
36
+       - engines/hordebook2.bin
37
+     kingofthehill:               # List of book file paths for variant kingofthehill.
38
+       - engines/kingofthehillbook1.bin
39
+       - engines/kingofthehillbook2.bin
40
+     racingkings:                 # List of book file paths for variant racingkings.
41
+       - engines/racingkingsbook1.bin
42
+       - engines/racingkingsbook2.bin
43
+     "3check":                    # List of book file paths for variant 3check.
44
+       - engines/threecheckbook1.bin
45
+       - engines/threecheckbook2.bin
46
 
47
+   min_weight: 1                  
48
+   selection: "weighted_random"   
49
+   max_depth: 20                  
50
+   normalization: "none"          
51
 
52
+   draw_or_resign:                  
53
+     resign_enabled: false
54
+     resign_score: -1000            # If the score is less than or equal to this value, the bot resigns (in cp).
55
+     resign_for_egtb_minus_two: true # If true the bot will resign in positions where the online_egtb returns a wdl of -2.
56
+     resign_moves: 3                # How many moves in a row the score has to be below the resign value.
57
+     offer_draw_enabled: true       # Whether or not the bot should offer/accept draw.
58
+     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).
59
+     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.
60
+     offer_draw_moves: 10           # How many moves in a row the absolute value of the score has to be below the draw value.
61
+     offer_draw_pieces: 10          # Only if the pieces on board are less than or equal to this value, the bot offers/accepts draw.
62
 
63
+   online_moves:
64
+     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.
65
+     max_retries: 2                 # The maximum amount of retries when getting an online move.
66
+     # max_depth: 10                # How many moves from the start to take from online books. Default is no limit.
67
+     chessdb_book:
68
+       enabled: true               # Whether or not to use chessdb book.
69
+       min_time: 20                 # Minimum time (in seconds) to use chessdb book.
70
+       max_time: 10800              # Maximum starting game time (in seconds) to use chessdb book.
71
+       move_quality: "good"         # One of "all", "good", "best".
72
+       min_depth: 20                # Only for move_quality: "best".
73
+     lichess_cloud_analysis:
74
+       enabled: true               # Whether or not to use lichess cloud analysis.
75
+       min_time: 20                 # Minimum time (in seconds) the bot must have to use cloud analysis.
76
+       max_time: 10800              # Maximum starting game time (in seconds) the bot must have to use cloud analysis.
77
+       move_quality: "best"         # One of "good", "best".
78
+       max_score_difference: 50     # Only for move_quality: "good". The maximum score difference (in cp) between the best move and the other moves.
79
+       min_depth: 20
80
+       min_knodes: 0
81
+     lichess_opening_explorer:
82
+       enabled: true
83
+       min_time: 20
84
+       max_time: 10800              # Maximum starting game time (in seconds) the bot must have to use the lichess opening explorer.
85
+       source: "lichess"            # Switched to "lichess" to properly fetch community openings for variants
86
+       player_name: ""              # The lichess username. Leave empty for the bot's username to be used. Used only when source is "player".
87
+       sort: "winrate"              # One of "winrate", "games_played"
88
+       min_games: 10                # Minimum number of times a move must have been played to be chosen.
89
+     online_egtb:
90
+       enabled: true               # Whether or not to enable online endgame tablebases.
91
+       min_time: 20                 # Minimum time (in seconds) the bot must have to use online EGTBs.
92
+       max_time: 10800              # Maximum starting game time (in seconds) the bot must have to use online EGTBs.
93
+       max_pieces: 8                # Maximum number of pieces on the board to use endgame tablebases.
94
+       source: "lichess"            # One of "lichess", "chessdb".
95
+       move_quality: "best"         # One of "best" or "suggest" (it takes all the moves with the same WDL and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
96
 
97
+   lichess_bot_tbs:                 # The tablebases list here will be read by lichess-bot, not the engine.
98
+     syzygy:
99
+       enabled: false               # Whether or not to use local syzygy endgame tablebases.
100
+       paths:                       # Paths to Syzygy endgame tablebases.
101
+         - "engines/syzygy"
102
+       max_pieces: 7                # Maximum number of pieces in the endgame tablebase.
103
+       move_quality: "best"         # One of "best" or "suggest" (it takes all the moves with the same WDL and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
104
+     gaviota:
105
+       enabled: false               # Whether or not to use local gaviota endgame tablebases.
106
+       paths:
107
+         - "engines/gaviota"
108
+       max_pieces: 5
109
+       min_dtm_to_consider_as_wdl_1: 120 # The minimum DTM to consider as syzygy WDL=1/-1. Set to 100 to disable.
110
+       move_quality: "best"         # One of "best" or "suggest" (it takes all the moves with the same WDL and tells the engine to only consider these; will move instantly if there is only 1 "good" move).
111
 
112
+ # engine_options:                  # Any custom command line params to pass to the engine.
113
+ #   cpuct: 3.1
114
 
115
+   homemade_options:
116
+ #   Hash: 256
117
 
118
+   uci_options:
119
+     Use NNUE: true
120
+     UCI_VariantPath: "./fairy/variants.ini"  # Dynamically loads rules/NNUE parameters for all supported variants
121
+     Move Overhead: 100             # Increase if your bot flags games too often.
122
+     Threads: 4                     # Max CPU threads the engine can use.
123
+     Hash: 256                      # FIXED: Reduced to 256MB to fit Hugging Face free tier smoothly without freezing.
124
+     SyzygyPath: "./syzygy/"        # Paths to Syzygy endgame tablebases that the engine reads.
125
+     UCI_ShowWDL: true              # Show the chance of the engine winning.
126
+     go_commands:                   # Additional options to pass to the UCI go command.
127
+ #     nodes: 150000                     # Search so many nodes only.
128
+ #     depth: 22                  # Search depth ply only.
129
+       movetime: 3000             # Integer. Search exactly movetime milliseconds.
130
+       ponder: true              # TURNED OFF: Forces engine to start fresh and respect the 3-second limit every single turn.
131
+ # xboard_options:                  # Arbitrary XBoard options passed to the engine.
132
+ #   cores: "4"
133
+ #   memory: "4096"
134
+ #   egtpath:                       # Directory containing egtb (endgame tablabases), relative to this project. For 'xboard' engines.
135
+ #     gaviota: "Gaviota path"
136
+ #     nalimov: "Nalimov Path"
137
+ #     scorpio: "Scorpio Path"
138
+ #     syzygy: "Syzygy Path"
139
+ #   go_commands:                   # Additional options to pass to the XBoard go command.
140
+ #     depth: 5                     # Search depth ply only.
141
+ #     Do note that the go commands 'movetime' and 'nodes' are invalid and may cause bad time management for XBoard engines.
142
 
143
+   silence_stderr: false            # Some engines (yes you, Leela) are very noisy.
144
 
145
+ abort_time: 30                     # Time to abort a game in seconds when there is no activity.
146
+ fake_think_time: false             # Artificially slow down the bot to pretend like it's thinking.
147
+ rate_limiting_delay: 0             # Time (in ms) to delay after sending a move to prevent "Too Many Requests" errors.
148
+ move_overhead: 2000                # Increase if your bot flags games too often.
149
+ max_takebacks_accepted: 0          # The number of times to allow an opponent to take back a move in a game.
150
  quit_after_all_games_finish: false # If set to true, then pressing Ctrl-C to quit will only stop lichess-bot after all current games have finished.
151
 
152
  correspondence:
153
+   move_time: 60                    # Time in seconds to search in correspondence games.
154
+   checkin_period: 300              # How often to check for opponent moves in correspondence games after disconnecting.
155
+   disconnect_time: 150             # Time before disconnecting from a correspondence game.
156
+   ponder: false                    # Ponder in correspondence games the bot is connected to.
157
 
158
+ challenge:                         # Incoming challenges.
159
+   concurrency: 1                   # Number of games to play simultaneously.
160
+   sort_by: "best"                  # Possible values: "best" and "first".
161
+   preference: "none"               # Possible values: "none", "human", "bot".
162
+   accept_bot: true                 # Accepts challenges coming from other bots.
163
+   accept_human: true
164
+   only_bot: false                  # Accept challenges by bots only.
165
+   max_increment: 20                # Maximum amount of increment to accept a challenge in seconds. The max is 180. Set to 0 for no increment.
166
+   min_increment: 0                 # Minimum amount of increment to accept a challenge in seconds.
167
+   max_base: 1800                   # Maximum amount of base time to accept a challenge in seconds. The max is 10800 (3 hours).
168
+   min_base: 0                      # Minimum amount of base time to accept a challenge in seconds.
169
+   max_days: 14                     # Maximum number of days per move to accept a challenge for a correspondence game.
170
+                                    # Unlimited games can be accepted by removing this field or specifying .inf
171
+   min_days: 1                      # Minimum number of days per move to accept a challenge for a correspondence game.
172
+   variants:                        # Chess variants to accept (https://lichess.org/variant).
173
+     - standard
174
+     - fromPosition
175
+     - antichess
176
+     - atomic
177
+     - chess960
178
+     - crazyhouse
179
+     - horde
180
+     - kingOfTheHill
181
+     - racingKings
182
+     - threeCheck
183
+   time_controls:                   # Time controls to accept (bots are not allowed to play ultraBullet).
184
+     - bullet
185
+     - blitz
186
+     - rapid
187
+     - classical
188
+     - correspondence
189
+   modes:                           # Game modes to accept.
190
+     - casual                       # Unrated games.
191
+     - rated                        # Rated games - must comment if the engine doesn't try to win.
192
+ # block_list:                      # List of users from which the challenges are always declined.
193
+ #   - user1
194
+ #   - user2
195
+ # online_block_list:               # The urls from which to retrieve a list of bot names that will not be challenged. The list should be a text file where each line contains the name of a blocked bot
196
+ #   - example.com/blocklist
197
+ # allow_list:                      # List of users from which challenges are exclusively accepted, all others being declined. If empty, challenges from all users may be accepted.
198
+ #   - user3
199
+ #   - user4
200
+ # recent_bot_challenge_age: 60     # Maximum age of a bot challenge to be considered recent in seconds
201
+ # max_recent_bot_challenges: 2     # Maximum number of recent challenges that can be accepted from the same bot
202
+ # min_rating: 0                   # Minimum rating of the challenger to accept a challenge.
203
+ # max_rating: 4000                # Maximum rating of the challenger to accept a challenge. The maximum rating in lichess is 4000.
204
+ # rating_difference: 300          # Maximum rating difference between the bot and the challenger. Overrides min_rating and max_rating if set.
205
+   bullet_requires_increment: true # Require that bullet game challenges from bots have a non-zero increment
206
+   max_simultaneous_games_per_user: 5  # Maximum number of simultaneous games with the same user
207
 
208
  greeting:
209
+   # Optional substitution keywords (include curly braces):
210
+   #   {opponent} to insert opponent's name
211
+   #   {me} to insert bot's name
212
+   # Any other words in curly braces will be removed.
213
+   hello: "Hi! I'm {me}. I am a very excited chess engine, though it can take some time to move." # Message to send to opponent chat at the start of a game
214
+   goodbye: "Good game! See you next time!" # Message to send to opponent chat at the end of a game
215
+   hello_spectators: "Hi! I'm {me}. Hi spectators! Type !help for a list of commands I can respond to." # Message to send to spectator chat at the start of a game
216
+   goodbye_spectators: "Thanks for watching!" # Message to send to spectator chat at the end of a game
217
 
218
+ # pgn_directory: "game_records"    # A directory where PGN-format records of the bot's games are kept
219
+ # pgn_file_grouping: "game"        # How to group games into files. Options are "game", "opponent", and "all"
220
+                                    # "game" (default) - every game is written to a different file named "{White name} vs. {Black name} - {lichess game ID}.pgn"
221
+                                    # "opponent" - every game with a given opponent is written to a file named "{Bot name} games vs. {Opponent name}.pgn"
222
+                                    # "all" - every game is written to a single file named "{Bot name} games.pgn"
223
 
224
  matchmaking:
225
+   allow_matchmaking: false         # Set it to 'true' to challenge other bots.
226
+   allow_during_games: false        # Set it to 'true' to create challenges during long games.
227
+   challenge_variant: "random"      # If set to 'random', the bot will choose one variant from the variants enabled in 'challenge.variants'.
228
+   challenge_timeout: 30            # Create a challenge after being idle for 'challenge_timeout' minutes. The minimum is 1 minute.
229
+   challenge_initial_time:          # Initial time in seconds of the challenge (to be chosen at random).
230
+     - 60
231
+     - 180
232
+   challenge_increment:             # Increment in seconds of the challenge (to be chosen at random).
233
+     - 1
234
+     - 2
235
+ # challenge_days:                 # Days for correspondence challenge (to be chosen at random).
236
+ #   - 1
237
+ #   - 2
238
+ # opponent_min_rating: 600         # Opponents rating should be above this value (600 is the minimum rating in lichess).
239
+ # opponent_max_rating: 4000        # Opponents rating should be below this value (4000 is the maximum rating in lichess).
240
+   opponent_rating_difference: 300  # The maximum difference in rating between the bot's rating and opponent's rating.
241
+   rating_preference: "none"        # One of "none", "high", "low".
242
+   challenge_mode: "random"         # Set it to the mode in which challenges are sent. Possible options are 'casual', 'rated' and 'random'.
243
+   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'.
244
+ # block_list:                      # The list of bots that will not be challenged
245
+ #   - user1
246
+ #   - user2
247
+ # online_block_list:               # The urls from which to retrieve a list of bot names that will not be challenged. The list should be a text file where each line contains the name of a blocked bot
248
+ #   - example.com/blocklist
249
+   include_challenge_block_list: false  # Do not challenge bots in the challenge: block_list in addition to the matchmaking block list.
250
 
251
+ # overrides:                       # List of overrides for the matchmaking specifications above. When a challenge is created, either the default specification above or one of the overrides will be randomly chosen.
252
+ #   bullet_only_horde:             # Name of the override. Can be anything as long as each override has a unique name ("bullet_only_horde" and "easy_chess960" in these examples).
253
+ #     challenge_variant: "horde"   # List of options to override. Only the options mentioned will change when making the challenge. The rest will follow the default matchmaking options above.
254
+ #     challenge_initial_time:
255
+ #       - 1
256
+ #       - 2
257
+ #     challenge_increment:
258
+ #       - 0
259
+ #       - 1
260
  #
261
+ #   easy_chess960:
262
+ #     challenge_variant: "chess960"
263
+ #     opponent_min_rating: 400
264
+ #     opponent_max_rating: 1200
265
+ #     opponent_rating_difference:
266
+ #     challenge_mode: casual
267
  #
268
+ #   no_pressure_correspondence:
269
+ #     challenge_initial_time:
270
+ #     challenge_increment:
271
+ #     challenge_days:
272
+ #       - 2
273
+ #       - 3
274
+ #     challenge_mode: casual
275
  #
276
  # The following configurations cannot be overridden: allow_matchmaking, challenge_timeout, challenge_filter and block_list.