Vos joueurs n’oublient plus jamais de voter. Your players never forget to vote again.
ReminderVoteBot envoie un rappel au bon moment, en message privé ou par mention dans un salon, pour chaque site de vote de votre serveur. Un clic pour voter, un clic pour relancer le délai. ReminderVoteBot sends a reminder at the right time, by direct message or channel mention, for each voting site of your server. One click to vote, one click to restart the timer.
Tout ce qu’il faut pour ne rater aucun voteEverything you need to never miss a vote
Chaque joueur règle ses rappels lui-même, depuis Discord, sans quitter le serveur.Each player sets up their own reminders from Discord, without leaving the server.
MP ou mentionDM or mention
Rappel en message privé, ou mention dans le salon choisi par l’admin. Repli automatique en MP si le salon échoue.Reminder by direct message, or a mention in the channel picked by the admin. Falls back to DM if the channel fails.
Plages horairesTime windows
Toute la journée, matin, soirée… ou des heures précises. Les plages de nuit (22:00–06:00) sont gérées.All day, morning, evening… or exact hours. Overnight windows (22:00–06:00) are supported.
Fuseau par joueurPer-player timezone
France, Québec, Antilles, Réunion, Afrique… chacun reçoit ses rappels à son heure.Europe, Americas, Africa, Asia… everyone gets reminders on their own clock.
Plusieurs sites de voteSeveral voting sites
Jusqu’à 25 sites, chacun avec son délai (1 h à 24 h) et son salon. Le pseudo est inséré dans l’URL.Up to 25 sites, each with its own cooldown (1 h to 24 h) and channel. The username is inserted in the URL.
Vote en un clicOne-click voting
Avec un domaine public, « Voter maintenant » enregistre le vote tout seul via un lien signé, personnel et temporaire.With a public domain, “Vote now” records the vote by itself through a signed, personal, short-lived link.
Fiable et sécuriséReliable and secure
Données sauvegardées avec copie de secours, conteneur non-root, commandes admin réservées à « Gérer le serveur ».Data saved with a backup copy, non-root container, admin commands restricted to “Manage Server”.
Aperçu dans DiscordWhat it looks like in Discord
Tout se passe avec des commandes slash, des menus et des boutons. Les réponses de gestion ne sont visibles que par la personne concernée.Everything happens with slash commands, menus and buttons. Management replies are only visible to the person concerned.
Comment ça marcheHow it works
L’admin ajoute un siteThe admin adds a site
/addvote : nom, URL de vote (avec {pseudo}), délai et salon./addvote: name, vote URL (with {pseudo}), cooldown and channel.
Le joueur s’abonneThe player subscribes
/subscribe : il choisit ses horaires, son fuseau et MP ou mention./subscribe: they pick their hours, timezone, and DM or mention.
Le bot rappelleThe bot reminds
Dès que le délai est écoulé et qu’il est dans sa plage horaire, puis à chaque délai tant qu’il n’a pas voté.As soon as the cooldown is over and they are in their time window, then every cooldown until they vote.
Le joueur voteThe player votes
« Voter maintenant » ouvre le site, « J’ai voté » relance le délai. Avec un domaine public, c’est automatique.“Vote now” opens the site, “I voted” restarts the timer. With a public domain, it is automatic.
Installation
Une image Docker prête à l’emploi (amd64 et arm64) : pas de Node.js à installer, rien à compiler.A ready-to-use Docker image (amd64 and arm64): no Node.js to install, nothing to build.
1. Créer le bot Discord1. Create the Discord bot
Sur le Discord Developer Portal, créez une application, récupérez son token (onglet Bot) et son Application ID, puis invitez-la sur votre serveur avec les scopes bot et applications.commands.On the Discord Developer Portal, create an application, copy its token (Bot tab) and its Application ID, then invite it to your server with the bot and applications.commands scopes.
2. Créer le fichier docker-compose.yml2. Create the docker-compose.yml file
Dans un dossier dédié (par exemple remindervotebot/), créez ce fichier et remplacez les trois premières valeurs.In 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
# Enregistre les commandes slash sur votre serveur, puis lance le bot
command: sh -c "node src/deploy-commands.js && exec node src/index.js"
environment:
DISCORD_TOKEN: "token_du_bot"
CLIENT_ID: "application_id"
GUILD_ID: "id_de_votre_serveur_discord"
BOT_LANG: "fr"
DEFAULT_TZ: "Europe/Paris"
# Optionnel : vote en un clic, décommentez les deux lignes
# (le bot doit être joignable en HTTPS sur ce domaine)
# PUBLIC_BASE_URL: "https://vote.example.com"
# MARK_SECRET: "32 caractères minimum, ex. : openssl rand -hex 32"
volumes:
- bot_data:/app/data
# Utile uniquement pour le vote en un clic
ports:
- "3000:3000"
volumes:
bot_data: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, uncomment both lines
# (the bot must be reachable over HTTPS on this domain)
# 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:3. Démarrer3. Start
docker compose up -d
🔄 Mise à jour : docker compose pull && docker compose up -d. Les données (abonnements, sites de vote) sont conservées dans le volume bot_data. Toute la configuration est détaillée dans le README.
🔄 Update: docker compose pull && docker compose up -d. Data (subscriptions, voting sites) is kept in the bot_data volume. The full configuration is described in the README.