Bot Discord open source · auto-hébergé Open-source Discord bot · self-hosted

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.

Gratuit (MIT)Free (MIT) Français & anglaisFrench & English amd64 & arm64
#votes
🗳️
ReminderVoteBotAPPAujourd’hui à 08:00Today at 8:00 AM
@Alice
🗳️ Rappel de vote : Serveur Survie🗳️ Vote reminder: Survival Server

C’est l’heure de voter pour Serveur Survie !

Time to vote for Survival Server!

Le bouton Voter maintenant enregistre votre vote automatiquement.

The Vote now button records your vote automatically.

Sans vote, prochain rappel dans 2 heures.

Without a vote, next reminder in 2 hours.

🗳️ Voter maintenantVote now ✅ J’ai votéI voted ⏰ Dans 30 minIn 30 min
Alice a utiliséused 🗳️ Voter maintenantVote now
🗳️
ReminderVoteBotAPPAujourd’hui à 08:02Today at 8:02 AM
Voici votre lien de vote personnel :Here is your personal vote link:
Voter maintenantVote now ↗
👁 Vous seul·e pouvez voir ceci · Ignorer le messageOnly you can see this · Dismiss message

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.