π Discord Giveaway Bot
A multilingual, per-guild configurable Discord giveaway bot built on Discord.js v14, persisted via MariaDB (Prisma). Restart-safe poll scheduler, entry via button, weighted winner draw with eligibility checks, and reroll. Developed and maintained by MSK Scripts.
License: AGPL-3.0 Β· Node.js 22+ Β· Discord.js v14 Β· Docs: docu.msk-scripts.de
β Add to Your Serverβ
The easiest way to use the bot is to invite the official public instance β no hosting, no database, no setup required.
You can also retrieve this link at any time inside Discord with the /ginvite command.
Once the bot has joined, a server manager runs /gcreate to open a giveaway. Members join with a single button click, and the bot draws the winners automatically when the timer ends.
β¨ Featuresβ
| Feature | Description |
|---|---|
| π Button Entry | Members join with a single click β customisable emoji, label and button style |
| π Restart-Safe | A poll-based scheduler means no giveaway is lost or orphaned, even after a reboot |
| π₯ Weighted Bonus Entries | Grant specific roles extra entries (up to 100) for a fairer or reward-driven draw |
| π‘οΈ Eligibility Rules | Whitelist / blacklist roles β server-wide or scoped to a single giveaway β plus minimum account age and server membership |
| βΈοΈ Pause & Resume | Freeze the timer mid-giveaway and resume seamlessly where you left off |
| ποΈ Templates | Save and reuse giveaway configurations for recurring events |
| β¨ Reroll | Draw fresh winners for any ended giveaway, respecting the blacklist |
| π₯οΈ Web Dashboard | Create and fully manage giveaways and settings from the browser β Discord login, no commands required |
| π Public Results Pages | Every finished giveaway gets a shareable results page with the winners and participant count |
| π Multilingual | English, German, French and Spanish β selectable per server |
| π¨ Per-Guild Branding | Custom embed colour, button emoji and style |
| π Audit Logging | Optional log channel records every giveaway event |
| π§ββοΈ Manager Role | Delegate giveaway control without handing out Manage Server |
| π Least-Privilege | Only the Guilds intent and minimal permissions β no message-content access |
π Required Permissionsβ
When invited via the link above, the bot requests exactly the permissions it needs (permission integer 478208):
| Permission | Why it is needed |
|---|---|
| View Channel | See the channel the giveaway runs in |
| Send Messages | Post the giveaway message |
| Embed Links | Render the giveaway embed |
| Read Message History | Locate and edit its own giveaway message |
| Use External Emojis | Allow a custom button emoji |
| Mention Everyone | Ping the configured notify role on creation |
At runtime, allowedMentions restricts pings specifically to the configured notify role β the bot never mass-pings @everyone.
The bot uses only the Guilds gateway intent. It requires no privileged intents and opens no inbound port.
π Live Statisticsβ
Anonymous, server-wide statistics of the official instance are available at msk-scripts.de/giveaway/stats β total servers, giveaways, entries and winners, plus language and status distribution. No server IDs, user IDs or other personal data are shown.
π₯ Web Dashboardβ
Prefer a browser over slash commands? Server admins can manage everything at msk-scripts.de/giveaway/dashboard:
- Log in with Discord (you'll only see servers where you have Manage Server and the bot is present).
- Pick a server.
- Create, edit, extend, pause/resume, end, cancel and reroll giveaways β and change every per-server setting.
Behind the scenes the dashboard forwards each action to the running bot over a private, server-internal channel, so the Discord message, button, winner DMs and audit log stay perfectly in sync β exactly as if you had used the slash commands. Everything you do on the dashboard is still recorded in your log channel.
π Public Results Pagesβ
When a giveaway ends, the bot publishes a clean, shareable results page at
msk-scripts.de/giveaway/g/<token> β linked automatically in the results message and in the winner DMs. It shows the giveaway title and prize, the winners and the number of participants. For privacy, the full participant list is never published. The page is removed automatically if the bot is removed from your server.
π Self-Hostingβ
Running your own copy of this bot is neither supported nor encouraged. The source code is published for transparency β so users can see exactly how the bot behaves and fellow developers can learn from it β not as a ready-made product to redeploy. There is no support for installing, modifying, or building your own instance.
Just invite the official instance instead.
π Licenseβ
AGPL-3.0 β source code must remain open and be published under the same license when distributed or hosted.