Community

Discord elections bot: nominations, secret ballot and a role for the winners

Elections let your members choose who leads them. Candidates nominate themselves or each other and post a statement, members cast a secret ballot (single choice or ranked choice), and the winners get the role you picked, for good or for a fixed term. No spreadsheets, no public reactions anyone can count.

  • Works on the Free plan
  • 1 slash command
  • Set up in the web console
electionsDiscord preview

BotGGBOTToday at 20:14

🗳️ Moderator election
Voting is open — it closes in 2 days. Ballots are secret.
Method
Ranked choice (instant runoff)
Seats
2 seats · role @Moderator
Turnout
87 ballots
Candidates (4)
1. @Maya
2. @Leo
3. @Sam
4. @Nika
Who can vote
in the server 14+ days
VoteCandidates
An election panel while voting is open

What you get

A truly secret ballot

BotGG records that you voted and, separately, what was voted, with no link between the two. Nobody can see a member’s choice: not staff, not the console, not the API.

Single or ranked choice

Pick one candidate, or rank them. Ranked ballots are counted by instant runoff, round by round, and multi-seat elections fill every seat from the same ballots.

Nominations with statements

Members run for office themselves, nominate someone who then accepts or declines, or are added by staff. Each candidate writes a statement voters can read before they vote.

Eligibility rules

Decide who may vote and who may run: minimum account age, days in the server, a minimum level or specific roles. Ineligible members can’t vote or stand.

The role, for a term

Winners get the role automatically, permanently or for a term through Temporary roles. Optionally, members who held the role but didn’t win lose it.

Results everyone can trust

Results post in the channel with vote totals or every runoff round. You can require a quorum, so an election with too few ballots elects nobody.

How it works

  1. Turn on Elections

    Open https://console.botgg.app, choose your server and switch on Elections in the Community section. Pick the panel channel, election managers and your default rules.

  2. Create an election

    Use /election create or the console: title, role, single or ranked choice, seats, how long nominations and voting last, the term and who may vote or run.

  3. Nominations open

    Members press Run for office or use /election nominate, write a statement and wait for the vote. Peer nominees accept or decline from a prompt.

  4. Vote and count

    Voting opens on schedule. Members press Vote and pick or rank candidates in a private menu. When it closes, BotGG counts, posts the results and hands out the role.

Secret by design, deleted on schedule

Each member can vote once, and a ballot is final. Who voted and what was voted are stored in two separate places, written in the same step, and the ballot carries no member ID and no time. Anyone with access to the console or API sees turnout and totals, never a person’s choice. Ballots and the list of who voted are deleted 90 days after the election ends; only the totals stay.

Every phase moves on its own: nominations close, voting opens and the count runs on time. An election without candidates is cancelled; one with no more candidates than seats is won unopposed without a vote. Running elections at a time: 1 on Free, 10 on Pro.

  • /election create, /election advance, /election cancel: for election managers
  • /election nominate, /election withdraw, /election statement: for candidates
  • /election vote and /election candidates: for voters

Slash commands

Generated from the bot’s real command definitions. Full list on the commands page.

/electionElections: run for a role, vote by secret ballot, see the results8 subcommands
  • /election createtitlerole?method?seats?nomination_hours?voting_hours?term_days?channel?Start an election (staff)
  • /election nominatemember?election?Run for office, or nominate another member
  • /election withdrawelection?Withdraw your candidacy
  • /election statementelection?Write or edit your candidate statement
  • /election voteelection?Cast your secret ballot
  • /election candidateselection?See the candidates and their statements
  • /election advanceelection?Close the current phase now (staff)
  • /election cancelelection?Cancel an election (staff)

Commands

Free vs Pro

Every feature works on the Free plan. Pro raises the limits and unlocks extras.

LimitFreePro
Running elections110

What Pro adds See pricing

Frequently asked questions

How do I hold an election on Discord?

Turn on Elections in the BotGG console and run /election create with the role, the method and the dates. Members nominate themselves, vote with a button, and BotGG counts and gives the winners the role.

Is voting really anonymous?

Yes. Ballots are stored without any member ID or timestamp, separately from the list of who voted. Staff, the console and the API only ever see turnout and totals. Ballots are deleted 90 days after the election.

What is ranked-choice voting?

Voters rank the candidates in order. If nobody has a majority, the last candidate is eliminated and their ballots move to each voter’s next choice, until someone wins. It avoids splitting the vote between similar candidates.

Can winners hold the role for a limited term?

Yes. Set a term in days and the role is given through Temporary roles, so it is removed automatically when the term ends. Set 0 for a permanent role.

Can I stop alts from voting?

Set a minimum account age and minimum days in the server for voters, or require a level or a role. Each member can vote once per election.

Ready to level up your server?

Add BotGG for free, then switch features on in the web console.