Discord bot for Easter.
Documentation is available on https://dashstrom.github.io/easterobot
For using easterobot you will need a token, you can follow the discord.py Guide for get one.
You can install easterobot
using uv
from PyPI.
pip install uv
uv tool install easterobot
# or uv tool install git+https://github.com/Dashstrom/easterobot
Once installed, you can use it directly.
easterobot run -t YOU_MUST_PUT_YOUR_TOKEN_HERE
Or you can generate a custom configuration for your own needs !
easterobot generate -i data
easterobot run -c data/config.yml
You can install easterobot
using uv
from PyPI
git clone https://github.com/Dashstrom/easterobot
cd easterobot
echo "DISCORD_TOKEN=YOU_MUST_PUT_YOUR_TOKEN_HERE" > .env
# Can be unsafe (and for each update)
chmod -R 700 . && mkdir data -p && chmod 777 data
# Run the docker container
docker compose up -d
# Stop it
docker compose stop
# Remove the container (not the data)
docker compose down --rmi all
# Update
git reset --hard HEAD && git pull
# One-line update
docker compose down --rmi all && git reset --hard HEAD && git pull && chmod -R 700 . && mkdir data -p && chmod 777 data && docker compose up -d
data Root directory
├── .gitignore Avoid pushing sensitive data
├── config.yml Configuration file
├── easterobot.db Database
├── logs Logging directory
│ ├── easterobot.log Latest log file
│ └── easterobot.log.1 Rotating log file
└── resources Resource directory
├── config.example.yml An example of config
├── credits.txt Credits of emotes
├── emotes Directory loaded as application emotes
│ ├── eggs Directory for eggs
│ | └── egg_01.png Emoji to use for egg
│ ├── icons Misc emotes to load
│ │ └── arrow.png Emoji used in messages
│ ├── placements Directory for emoji used in grid
│ │ └── s1.png Single blue emoji with one on it
│ └── skyjo Skyjo cards
│ └── skyjo_m1.png Card with minus -1 with deep blue
├── logging.conf Logging configuration
├── alembic.ini Configure for alembic
└── logo.png Logo used by the bot
Contributions are very welcome. Tests can be run with poe check
, please
ensure the coverage at least stays the same before you submit a pull request.
You need to install uv and Git for work with this project.
git clone https://github.com/Dashstrom/easterobot
cd easterobot
uv sync
uv run poe setup
Poe is available for help you to run tasks.
test Run test suite.
lint Run linters: ruff checker and ruff formatter and mypy.
format Run linters in fix mode.
check Run all checks: lint, test and docs.
check-tag Check if the current tag match the version.
cov Run coverage for generate report and html.
open-cov Open html coverage report in webbrowser.
docs Build documentation.
open-docs Open documentation in webbrowser.
setup Setup pre-commit.
pre-commit Run pre-commit.
commit Test, commit and push.
clean Clean cache files.
If the linting is not successful, you can't commit. For forcing the commit you can use the next command :
git commit --no-verify -m 'MESSAGE'
To respect commit conventions, this repository uses Commitizen.
cz c
uv add 'PACKAGE'
To ignore illegitimate warnings you can add :
- # noqa: ERROR_CODE on the same line for ruff.
- # type: ignore[ERROR_CODE] on the same line for mypy.
- # pragma: no cover on the same line to ignore line for coverage.
- # doctest: +SKIP on the same line for doctest.
pipx uninstall easterobot
This work is licensed under MIT.