Go to file
2021-07-25 13:57:42 +02:00
2021-07-25 13:57:42 +02:00
2021-07-23 21:26:46 +02:00
2021-04-15 23:40:57 +02:00
2020-12-29 09:08:50 +01:00
2020-12-29 15:28:31 +01:00
2021-02-26 09:44:56 +01:00
2021-07-25 13:57:42 +02:00
2021-07-25 13:57:42 +02:00
2021-02-26 09:44:28 +01:00

Discord-reminder-bot

Discord bot that allows you to set reminders.

Bot

Theme is DiscordNight by KillYoy

Usage

!remind <message_date> <message_reason>

message_date can be anything that is a date or time. For example:

  • in 2 days
  • August 14, 2021 EST,
  • tomorrow
  • 1 เดือนตุลาคม 2025, 1:00 AM

message_reason is the message the bot will send at that time.

Environment Variables

  • BOT_TOKEN - Discord bot token (Where to get one)
  • TIMEZONE - Your time zone (List of time zones)
  • SQLITE_LOCATION - (Optional) Where to store the database. Docker users need to change this to "/data/jobs.sqlite"
  • LOG_LEVEL - Can be CRITICAL, ERROR, WARNING, INFO or DEBUG

Installation

You have two choices, install directly on your computer or using Docker.

Docker Hub | docker-compose.yml | Dockerfile

Install directly on your computer

  • Install latest version of Python 3 for your operating system
  • (Optional) Create a virtual environment:
    • python -m venv .venv
      • Activate virtual environment:
        • Windows: .\.venv\Scripts\activate
        • Not windows: source .venv/bin/activate
  • Install requirements
    • pip install -r requirements.txt
  • Rename .env.example to .env and fill it out.
  • Start the bot (inside the virtual environment if you made one):
    • python main.py

Start the bot when your Linux server boots

  • Keep services running after logout
    • loginctl enable-linger
  • Move service file to correct location (You may have to modify WorkingDirectory and/or ExecStart)
    • cp discord-reminder-bot.service ~/.config/systemd/user/discord-reminder-bot.service
  • Start bot now and at boot
    • systemctl --user enable --now discord-reminder-bot

systemd examples

  • Start bot automatically at boot
    • systemctl --user enable discord-reminder-bot
  • Don't start automatically
    • systemctl --user disable discord-reminder-bot
  • Restart
    • systemctl --user restart discord-reminder-bot
  • Stop
    • systemctl --user stop discord-reminder-bot
  • Start
    • systemctl --user start discord-reminder-bot
  • Check status
    • systemctl --user status discord-reminder-bot
  • Reading the journal
    • journalctl --user-unit discord-reminder-bot

Docker

docker-compose with .env file

More information on Docker Hub

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

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)
-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] <message_date> <message_reason> 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:

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

Help

License

This project is licensed under the MIT License - see the LICENSE file for details

Description
Discord reminder bot
Readme GPL-3.0 1 MiB
Languages
Python 99.1%
Dockerfile 0.9%