Discord bot that reminds players to vote for your server: DM or channel ping, time windows, per-player timezones, several voting sites, one-click voting. Docker image (amd64/arm64).
翻訳待ち
Loading the full README.
Read the full README ↗English · Français · Project website
A Discord bot that reminds your players to vote for your server at the right time: by direct message or channel mention, for each voting site, following their own hours and timezone.
/status: last vote and next reminder, edit or delete in one clickThe bot ships as a ready-to-use Docker image (linux/amd64 and linux/arm64): all you need is Docker with Docker Compose.
APPLICATION_ID:
https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot%20applications.commands&permissions=19456
(permissions: view channels, send messages, embed links)docker-compose.yml fileIn a dedicated folder (for example remindervotebot/), create this file and replace the first three values:
services:
bot:
image: ghcr.io/mrddream/remindervotebot:latest
container_name: ReminderVoteBot
restart: unless-stopped
init: true
# Registers the slash commands on your server, then starts the bot
command: sh -c "node src/deploy-commands.js && exec node src/index.js"
environment:
DISCORD_TOKEN: "bot_token"
CLIENT_ID: "application_id"
GUILD_ID: "your_discord_server_id"
BOT_LANG: "en"
DEFAULT_TZ: "Europe/London"
# Optional: one-click voting (see below), uncomment both lines
# PUBLIC_BASE_URL: "https://vote.example.com"
# MARK_SECRET: "32+ characters, e.g. openssl rand -hex 32"
volumes:
- bot_data:/app/data
# Only needed for one-click voting
ports:
- "3000:3000"
volumes:
bot_data:
docker compose up -d
docker compose logs -f # to follow the startup
On startup, the bot registers its slash commands on your server. An administrator then adds the voting sites with /addvote, and players subscribe with /subscribe.
docker compose pull && docker compose up -d
Subscriptions and voting sites are kept in the bot_data Docker volume.
Updating from an image older than October 27, 2026: the container no longer runs as root. If the bot refuses to start and reports data it cannot write, run once:
docker compose run --rm --user root bot chown -R node:node /app/data
By default, Vote now opens the voting site directly, and the player clicks I voted to restart their timer. To record the vote automatically:
3000 of the container.docker-compose.yml, uncomment PUBLIC_BASE_URL with that domain and MARK_SECRET with a key of at least 32 characters (openssl rand -hex 32).docker compose up -d.The button then goes through a personal link, signed and valid for 7 days, that records the vote and redirects to the site. In channel mention mode, this link is sent to the player privately, so other members cannot vote in their place.
| Variable | Required | Description | Default |
|---|---|---|---|
DISCORD_TOKEN | Yes | Bot token | - |
CLIENT_ID | Yes | Bot Application ID | - |
GUILD_ID | Yes | ID of the bot's Discord server: commands only exist there, and admin commands only work there | - |
BOT_LANG | No | Bot language: en or fr | fr |
DEFAULT_TZ | No | Timezone offered to players by default (e.g. Europe/London, America/New_York) | Europe/Paris |
PUBLIC_BASE_URL | No | Public domain of the bot, for one-click voting | - |
MARK_SECRET | With PUBLIC_BASE_URL | Signing key for vote links, 32 characters minimum | - |
PORT | No | Port of the bot's HTTP server | 3000 |
The bot checks its configuration on startup and stops with an explicit message if something is missing or invalid.
This is the beginning of the README. Read the rest at the original. Read the full README ↗