Skip to main content

easterobot

CI : Docs CI : Lint CI : Tests PyPI : easterobot Python : versions License : MIT

Description

Discord bot for Easter.

Documentation

Documentation is available on https://dashstrom.github.io/easterobot

Prerequisite

For using easterobot you will need a token, you can follow the discord.py Guide for get one.

Usage as CLI

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

Usage with Docker

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

Configuration directory

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

Development

Contributing

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.

Setup

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

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.

Skip commit verification

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'

Commit with commitizen

To respect commit conventions, this repository uses Commitizen.

cz c

How to add dependency

uv add 'PACKAGE'

Ignore illegitimate warnings

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.

Uninstall

pipx uninstall easterobot

License

This work is licensed under MIT.

Metadata

Release files for easterobot 1.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for easterobot 1.5.2
File Size Uploaded
easterobot-1.5.2.tar.gz 2.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for easterobot 1.5.2
File Interpreter ABI Platform
easterobot-1.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 4.9 MB

Release files / easterobot-1.5.2.tar.gz

Download URL easterobot-1.5.2.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
5724cd675f788f5a806bb41abfc5e6834def9f18d3cbddce2a224b9c3eea62d0
BLAKE2b-256 checksum
How to use checksums
f2287b3a0688f6a4cd9833d92d4a2ade4cd28f556276ff2f824b680d2358bd13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 11, 2025.

Transparency log

Release files / easterobot-1.5.2-py3-none-any.whl

Download URL easterobot-1.5.2-py3-none-any.whl
Size 2.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
868243ecc115189f743d6fcf9603cf91498d41531ae48df7cfbc8984056a6bcf
BLAKE2b-256 checksum
How to use checksums
0126639b4d57638e3c81ee5548004b00b2e313bbb26a86c6e7620b4fadec3711
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 11, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.5.2 This release

2 release files

1.5.1

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page