DaisyVotes — Voting & Anti-Fraud
This page explains what happens from the moment a player votes to the moment they get rewarded — and the protections that keep forged votes out.
The vote lifecycle
Section titled “The vote lifecycle”- A player votes on a server list (e.g. Planet Minecraft).
- The list sends the vote to DaisyVotes’ built-in receiver (Votifier v1/v2) on the port you opened — no NuVotifier needed.
- DaisyVotes reads the service name, player, and timestamp, and matches it to a configured site.
- The vote is checked against the duplicate window and dropped if it’s a replay.
- Processing continues asynchronously: the player’s daily/weekly/monthly/lifetime counts, streak, points, and the server vote-party progress are updated.
- Rewards are granted (or queued if the player is offline), the daily wheel set is checked, Discord embeds fire, effects play, and messages broadcast.
Matching a vote to a site
Section titled “Matching a vote to a site”DaisyVotes compares the service name the list sends to Votifier against each site’s id and service-aliases in menus.yml. The first match wins, and the vote is credited to that site.
Anti-fraud
Section titled “Anti-fraud”The built-in receiver guards the front door: every vote must present a valid token (or be signed with your RSA key), and connections are rate-limited per IP. Beyond that, two vote-flow protections are configured under sites to stop forged votes from a leaked token.
Strict vs. lenient mode
Section titled “Strict vs. lenient mode”sites: require-configured-site: true # strict (default, recommended)| Mode | require-configured-site | Behavior |
|---|---|---|
| Strict (default) | true | Only votes whose service name matches a configured site are accepted. Forged votes from an unknown service are rejected — they can’t farm rewards or the vote party. |
| Lenient | false | Votes from any service are accepted. An unmatched vote fills the player’s next open wheel slot for the day. |
Duplicate detection
Section titled “Duplicate detection”sites: duplicate-window-seconds: 10Identical votes (same player + same site) arriving within duplicate-window-seconds are treated as duplicates and dropped before any data is written. Set to 0 to disable.
Cooldowns
Section titled “Cooldowns”sites.default-cooldown-hours (default 24) drives the “already voted” candle state in the dashboard — a voted site shows its voted-item with the remaining {cooldown} until the player can vote there again.
Offline votes
Section titled “Offline votes”If a player votes while offline, their rewards are queued and claimed later with /vote claim. See Reminders & Offline Rewards.
Testing the flow
Section titled “Testing the flow”/daisyvotes testvote <player> # simulate a vote on every configured site/daisyvotes testvote <player> topg # simulate a vote on one site