diff --git a/Docker/Dockerfile b/Dockerfile similarity index 100% rename from Docker/Dockerfile rename to Dockerfile diff --git a/README.md b/README.md index 1dcaa24..967858a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,19 @@ Discord bot that allows you to set reminders. Theme is [DiscordNight by KillYoy](https://github.com/KillYoy/DiscordNight) +## Usage + +!remind + +message_date can be anything that is time or date. For example: + +* `in 2 days` +* `August 14, 2021 EST`, +* `tomorrow` +* `1 เดือนตุลาคม 2025, 1:00 AM` + +message_reason is the message the bot will send time + ## Environment Variables * `BOT_TOKEN` - Discord bot token ([Where to get one](https://discord.com/developers/applications)) @@ -15,13 +28,9 @@ Discord bot that allows you to set reminders. ## Installation -You have two choices, install directly on your computer or using [Docker](https://registry.hub.docker.com/r/thelovinator/discord-reminder-bot). +You have two choices, [install directly on your computer](#Install-directly-on-your-computer) or using [Docker](#docker-compose-with-env-file). -[hub.docker.com/r//thelovinator/discord-reminder-bot](https://registry.hub.docker.com/r/thelovinator/discord-reminder-bot) - -[docker-compose.yml](docker-compose.yml) - -[Dockerfile](Dockerfile) +[Docker Hub](https://registry.hub.docker.com/r/thelovinator/discord-reminder-bot) | [docker-compose.yml](docker-compose.yml) | [Dockerfile](Dockerfile) ### Install directly on your computer @@ -63,6 +72,104 @@ You have two choices, install directly on your computer or using [Docker](https: * Reading the journal * `journalctl --user-unit discord-reminder-bot` +## Docker + +### docker-compose with .env file + +More information on [Docker Hub](https://hub.docker.com/repository/docker/thelovinator/discord-reminder-bot) + +```yaml +version: "3" +services: + discord-reminder-bot: + image: thelovinator/discord-reminder-bot + env_file: + - .env + container_name: discord-reminder-bot + environment: + - BOT_TOKEN=${BOT_TOKEN} + - TIMEZONE=${TIMEZONE} + - LOG_LEVEL=${LOG_LEVEL} + - SQLITE_LOCATION=/data/jobs.sqlite + restart: unless-stopped + volumes: + - data_folder:/home/botuser/data/ +volumes: + data_folder: +``` + +### docker cli + +```console +docker run -d \ + --name=discord-reminder-bot \ + -e BOT_TOKEN=JFIiasfjioFIAOJFOIJIOSAF.AFo-7A.akwFakeopfaWPOKawPOFKOAKFPA \ + -e TIMEZONE=Europe/Stockholm \ + -e LOG_LEVEL=INFO \ + -e SQLITE_LOCATION=/data/jobs.sqlite \ + -v /path/to/data:/home/botuser/data/ \ + --restart unless-stopped \ + thelovinator/discord-reminder-bot +``` + +> **_NOTE:_** SQLITE_LOCATION must be on a volume to keep the reminders if you restart the Docker container! + +## Docker Environment Variables + +| Parameter | Function | +| :------------------------------------------------------------------------: | ----------------------------------------------------------------------------------- | +| `-e BOT_TOKEN=JFIiasfjioFIAOJFOIJIOSAF.AFo-7A.akwFakeopfaWPOKawPOFKOAKFPA` | Discord bot token ([Where to get one](https://discord.com/developers/applications)) | +| `-e TZ=Europe/London` | Specify a time zone to use, this is used by the time zone converter and APScheduler | +| `-e SQLITE_LOCATION=/home/botuser/data/` | Where to store the database file. It should be stored on a volume | +| `-e LOG_LEVEL=INFO` | Log severity. Can be CRITICAL, ERROR, WARNING, INFO or DEBUG | +| `-v /path/to/data:/home/botuser/data/` | Folder to store the database | + +## Application Setup + +Add reminders with the `![remind|reminder|remindme|at] ` command. + +## Support Info + +* Shell access whilst the container is running: `docker exec -it discord-reminder-bot /bin/bash` +* To monitor the logs of the container in real-time: `docker logs -f discord-reminder-bot` + +## Updating + +### Via Docker Compose + +* Update all images: `docker-compose pull` + * or update a single image: `docker-compose pull discord-reminder-bot` +* Let compose update all containers as necessary: `docker-compose up -d` + * or update a single container: `docker-compose up -d discord-reminder-bot` +* You can also remove the old dangling images: `docker image prune` + +### Via Docker Run + +* Update the image: `docker pull thelovinator/discord-reminder-bot` +* Stop the running container: `docker stop discord-reminder-bot` +* Delete the container: `docker rm discord-reminder-bot` +* Recreate a new container with the same docker run parameters as instructed above (if you mapped `/home/botuser/data/` to your computer your `jobs.sqlite` file and reminders will be preserved) +* You can also remove the old dangling images: `docker image prune` + +## Building locally + +If you want to make local modifications to these images for development purposes or just to customize the logic: + +```console +git clone https://github.com/TheLovinator1/discord-reminder-bot.git + +cd discord-reminder-bot + +docker build \ + --no-cache \ + --pull \ + -t thelovinator/discord-reminder-bot:latest . +``` + +### Acknowledgments + +The Docker part of this README is based on the READMEs from [LinuxServer.io](https://github.com/linuxserver) + ## Help * Email: tlovinator@gmail.com diff --git a/Docker/docker-compose.yml b/docker-compose.yml similarity index 100% rename from Docker/docker-compose.yml rename to docker-compose.yml