testsAndMisc/python_pkg/lichess_bot
2026-02-22 22:00:50 +01:00
..
tests Optimize tests and simplify coverage config 2025-12-02 22:12:50 +01:00
tools fix: address all pylint warnings 2025-12-01 16:11:15 +01:00
__init__.py refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
.bot_version refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
engine.py fix: address all pylint warnings 2025-12-01 16:11:15 +01:00
lichess_api.py feat(tests): add comprehensive tests for lichess_bot engine and API 2025-12-01 20:41:51 +01:00
main.py Achieve 100% test coverage for lichess_bot/main.py 2025-12-02 22:03:16 +01:00
README.md refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
requirements.txt refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
run_tests.sh refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
run.sh feat: added run sh and makefile scripts 2026-02-22 22:00:50 +01:00
utils.py fix: remove all pylint disable comments and enable all meta checks 2025-12-01 16:22:03 +01:00

Lichess Bot (minimal)

A small Lichess BOT that accepts standard challenges and plays quick random legal moves using python-chess. It demonstrates the Lichess Board API basics with a simple, readable implementation.

Features

  • Connects to Lichess Board API via streaming NDJSON
  • Accepts only standard chess challenges (bullet/blitz/rapid/classical)
  • Spawns a thread per active game
  • Plays random legal moves (swap in a stronger engine later)
  • Simple logging and basic retries on transient network errors

Requirements

  • Python 3.9+
  • A Lichess account that is activated as a BOT
  • A Lichess API access token with at least the scopes:
    • bot:play
    • challenge:read
    • challenge:write

Install dependencies:

pip install -r PYTHON/lichess_bot/requirements.txt

Activate BOT and get a token

  1. Create or use an existing Lichess account for your bot.
  2. Activate it as a BOT (one-time): https://lichess.org/api#tag/Bot
    • If not already BOT, you need to convert the account; follow Lichess docs.
  3. Create a personal API token: https://lichess.org/account/oauth/token/create
    • Grant scopes: bot:play, challenge:read, challenge:write

Export the token in your shell (recommended):

export LICHESS_TOKEN="your_bot_token_here"

Run

From the repo root:

python -m PYTHON.lichess_bot.main

Optional flags:

  • --log-level INFO|DEBUG|WARNING|ERROR (default: INFO)
  • --decline-correspondence (declines correspondence challenges)

You can also use the helper script:

bash PYTHON/lichess_bot/run.sh

Notes

  • The engine is intentionally weak (random moves). Swap it with a UCI engine or implement a better search in engine.py.
  • Network calls hit real Lichess endpoints. Keep the bot polite; respect rate limits.

Development

  • Small unit tests are in tests/ and only cover local helpers (no network). Run:
python -m pytest PYTHON/lichess_bot/tests -q

If you add tests requiring third-party packages, install them in your environment first.