Skip to main content

Discord Giveaway Bot: Free Self-Hosted Bot Setup (2026)

Elena Ristovska
Elena RistovskaUpdated May 4, 2026
Discord Giveaway Bot: Free Self-Hosted Bot Setup cover image

Running a giveaway in Discord used to mean inviting a third-party bot, accepting whatever rate limits and data policies came with it, and hoping the company behind the bot kept it online next year. The modern alternative is a self-hosted Discord giveaway bot you control end-to-end. Uplup’s open-source Wheel of Names Discord bot is one of those: free forever, MIT-licensed, and built around the same wheel-spinning technology that powers uplup.com/random-name-picker.

This guide walks through how to deploy a Discord giveaway bot in 2026, run real giveaways with it (reaction-based entry, voice channel pickers, custom lists, role filters), and pair it with Uplup’s API for saved wheels and winner history. The setup is technical but straightforward; expect about 20 minutes from “git clone” to live bot in your server.

The bot itself is on GitHub at github.com/Uplup/discord-wheel-of-names. Anyone can fork it, run it on their own infrastructure, and keep full ownership of giveaway entry data. That last part matters more than it sounds. Most third-party Discord giveaway bots route every entrant through their servers, which means any data your community shares passes through someone else’s pipeline.

What Is a Discord Giveaway Bot?

A Discord giveaway bot is a bot account that runs random-winner selection inside a Discord server. Members enter a giveaway by reacting to a message, joining a voice channel, or posting in a designated channel. When the timer ends, the bot picks one or more winners at random and announces them in chat. Most Discord communities use a giveaway bot for verified-fair winner selection, since manually picking a winner from hundreds of entries is both tedious and easy to fudge.

The two main categories of Discord giveaway bot are third-party hosted bots (you invite an existing bot account to your server, the operator runs the infrastructure) and self-hosted bots (you run the bot code yourself on your own machine or cloud server). Hosted bots are easier to set up but lock you into the operator’s feature set, rate limits, pricing changes, and uptime. Self-hosted bots take more initial work but give you complete control: every line of code, every feature, every entrant’s data.

Uplup’s Wheel of Names Discord bot is in the second category. The bot is open source, runs anywhere Node.js runs, and integrates optionally with the Uplup API for saved wheel configurations and winner history that persist across deploys. The animated GIF wheel result is generated server-side and delivered into the Discord channel as a real spinning wheel image.

That wheel is the same engine that runs the public Uplup Random Name Picker. The Discord bot is essentially a Discord-native interface over the same wheel-of-names logic, which means a giveaway run in Discord produces the same fair, animated, audited result a giveaway run on the website would.

Why Self-Host Your Discord Giveaway Bot?

The trade-off between a hosted Discord giveaway bot and a self-hosted one comes down to four questions: control, cost, data ownership, and longevity.

Control

A hosted Discord giveaway bot ships the features the operator decides to ship. If the operator never adds voice-channel pickers, you never get them. A self-hosted bot is open source: fork it, modify it, add features specific to your community. Uplup’s bot is MIT-licensed, so commercial use, modification, and redistribution are all allowed without restriction.

Cost

Hosted Discord giveaway bots have steadily moved toward subscription models. The popular options now charge $5 to $20 per month for features that used to be free. Self-hosting on a small VPS costs $5/month total (Hetzner, DigitalOcean droplet) and runs an unlimited number of giveaways. Larger Discord communities save real money over a year by self-hosting.

Data Ownership

Every entrant who reacts to a giveaway message generates a Discord user ID, timestamp, and (sometimes) channel context. With a hosted bot, that data flows through the operator’s database. With a self-hosted Discord giveaway bot, all of it stays on your infrastructure. For brands running compliance-sensitive giveaways or communities handling minor data, that distinction is non-negotiable.

Longevity

Hosted Discord giveaway bots come and go. The most popular options from three years ago have either been acquired, shut down, or pivoted away from the giveaway use case. A self-hosted bot keeps running as long as Node.js and the Discord API exist, regardless of what happens to any single company. Source code in your repo is yours forever.

The trade-off: self-hosting requires basic technical setup. If running a Node.js application and editing an environment file are unfamiliar, the hosted-bot path is faster. If they are not, the self-hosted Discord giveaway bot delivers more value in less time.

How to Set Up Uplup’s Discord Wheel of Names Bot

The full setup runs in five steps and takes about 20 minutes. Prerequisites: a Discord account with admin permissions on the target server, a free Uplup account, and Node.js 18+ installed locally or on a cloud host (Railway, Render, DigitalOcean, Hetzner, or any VPS).

Step 1: Create a Discord Application

Open the Discord Developer Portal and click “New Application.” Name it whatever the bot should be called in your server (for example, “Wheel Bot”). Inside the application:

  1. Go to the Bot section and click “Add Bot.”
  2. Click “Reset Token” and copy the bot token. Keep it secret. Anyone with this token can act as your bot.
  3. Enable two privileged intents: Server Members Intent (so the bot can pick from server members) and Message Content Intent (so the bot can read commands).
  4. Open the General Information page and copy the Application ID. Both this and the bot token go into the bot’s environment file in Step 3.

Step 2: Get a Free Uplup API Key

The bot can run without an API key for basic operation, but the API enables saved wheel configurations and winner history that persist across restarts. The free tier includes 100 API requests per hour, 100 names per wheel, and 3 saved wheels, which is enough for most community giveaway use cases.

  1. Sign up for a free account at uplup.com/random-name-picker.
  2. Inside the dashboard, navigate to API Integrations from the sidebar.
  3. Click Manage Keys on the API Keys card.
  4. Click Create API Key, name it “Discord Bot,” and copy the key immediately. The key is shown once and never again.

The API key looks like uplup_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx and acts as the Bearer token for every request the Discord bot makes back to Uplup. Keep it in your environment file, never in committed code.

Step 3: Configure the Bot

Clone the repository and configure the environment file:

git clone https://github.com/Uplup/discord-wheel-of-names
cd discord-wheel-of-names
cp .env.example .env

Open .env and paste in the values from Steps 1 and 2:

  • DISCORD_TOKEN is the bot token from the Discord Developer Portal.
  • DISCORD_CLIENT_ID is the Application ID from the Discord Developer Portal.
  • UPLUP_API_KEY is the API key from the Uplup dashboard (optional but recommended).

Run npm install to install dependencies, then npm run deploy-commands to register the bot’s slash commands with Discord. This last step makes commands like /spin, /giveaway, and /voice-pick visible in your server.

Step 4: Deploy on Railway, DigitalOcean, or Your VPS

A Discord giveaway bot needs to run continuously to respond to commands. Three deployment options cover most use cases.

Railway (easiest): connect the GitHub repo, set the environment variables in the Railway dashboard, deploy. Auto-restart on crash, easy log access. Free tier covers low-volume bots.

DigitalOcean App Platform or Render: similar to Railway, slightly more configuration. Both give you HTTPS and auto-deploy on push for around $5/month.

Self-hosted VPS: run on Hetzner, Vultr, or any cheap VPS. Use pm2 or systemd to keep the process alive. Maximum control, lowest cost, requires basic Linux comfort.

The repository includes a Railway deploy button in the README that handles steps 4 in roughly 90 seconds.

Step 5: Invite the Bot to Your Discord Server

Back in the Discord Developer Portal, go to the OAuth2 URL Generator. Select the bot and applications.commands scopes, then check the permissions the bot needs (Send Messages, Embed Links, Add Reactions, View Channels, Read Message History). Copy the generated URL, open it in a browser, and authorize the bot to join your server.

Once joined, the bot will respond to slash commands in any channel it has permission to read. Type /spin to test, and the wheel of names should appear with whatever names you configure.

How to Run a Discord Giveaway With the Bot

The bot supports four giveaway flows. Each fits a different community pattern, and most servers eventually use more than one.

Reaction-Based Giveaways (the classic)

This is the giveaway pattern most Discord users recognize. Post an announcement message describing the prize, react to it with a designated emoji (often a party popper), and members react with the same emoji to enter. When the timer ends, the bot picks a winner from the reactor list.

Run /giveaway prize:"Steam Gift Card" duration:24h in the channel where you want the giveaway to live. The bot posts the announcement and tracks reactions until the duration ends, then drops the winner reveal in the same channel, animated wheel GIF included.

Voice Channel Giveaways

A voice channel giveaway picks a random winner from members currently in a voice channel. Useful for live events: tournaments, gaming sessions, study calls. Run /voice-pick channel:#tournament-room and the bot returns one or more random members from the channel as the wheel result.

Voice giveaways feel more event-native than reaction giveaways because the prerequisite is showing up live, not just clicking a reaction. Communities running scheduled events get higher quality engagement from voice picks.

Custom Entry Giveaways

When the entries do not live inside Discord (for example, a giveaway list collected through a website signup, an email campaign, or a Google Form), the custom entry mode accepts a flat list of names or IDs. Paste the list into the bot command (or upload via the saved-wheels API), spin, and the wheel picks from those entries.

This mode is the one most marketing teams use because it bridges off-Discord lead generation with on-Discord winner reveal. The community gets to watch the wheel spin live; the marketer keeps the lead list intact.

Server Member Picks (with Role Filtering)

Pick a random member from the entire server, or filter to a specific role first. /spin members role:@VIP picks from members with the VIP role. Useful for “pick a random subscriber” raffles, monthly winner draws across paying members, or random-mod-shoutouts.

Role filtering keeps the giveaway honest in tiered communities. A “members only” giveaway should not accidentally pick someone who is not actually a member.

Bot Features and Customization

Beyond the four giveaway flows, the bot ships several customization features that make the wheel feel native to your community.

  • 5 color themes: Uplup (warm orange/coral), Vibrant, Pastel, Sunset, and Ocean. Set the default in the env file or change per spin with theme:.
  • Animated wheel GIFs: the result is generated as a real spinning wheel animation, not a static text reply. Discord renders the GIF inline so the reveal feels like a live spin.
  • Saved wheels: recurring giveaways (weekly raffles, monthly winners) can save the configuration once and reuse it. Saved wheels persist across bot restarts when the Uplup API key is configured.
  • Winner history tracking: the bot logs every winner so you can audit past giveaways or run “no repeat winners” logic across multiple draws.
  • Multi-winner picks: draw 1, 3, 5, or any N winners at once. The wheel spins once and announces all N in a single message, or runs sequential spins with the option to remove previous winners.
  • Slash command UI: Discord’s slash commands handle the parameter validation. Run /giveaway and Discord prompts for prize, duration, and channel, with no command syntax to memorize.

Free vs. Boost: Uplup Pricing for the Discord Bot

The bot itself is free forever. The Uplup API tier determines how many saved wheels and how many API requests per hour the bot can use.

Free plan ($0): 100 API requests per hour, up to 100 names per wheel, 3 saved wheels. Sufficient for most community giveaway use cases, since a Discord server running one weekly giveaway uses fewer than 10 API requests per week.

Boost plan ($29/month): unlimited API requests, unlimited names per wheel, unlimited saved wheels. Worth it for large communities running multiple concurrent giveaways, marketing teams managing several brands, or any setup where the 3-saved-wheel limit becomes a real constraint.

Both tiers ship the same Discord giveaway bot code; the Boost plan removes API ceilings, not features. A community can start on the free plan and upgrade later without changing any bot configuration; the same API key works for both tiers.

Discord Giveaway Bot FAQs

What is the best Discord giveaway bot in 2026?

The best Discord giveaway bot depends on the use case. For communities that want full control, free hosting, and code-level customization, a self-hosted bot like Uplup’s Wheel of Names is the strongest option: open source, integrates with the Uplup API, and ships voice channel + reaction + custom-list giveaway flows. For very small communities running one giveaway a year, any third-party bot will work; for any community running more than monthly giveaways, self-hosting saves money and adds control quickly.

How do I add a Discord giveaway bot to my server?

For Uplup’s self-hosted Discord giveaway bot, the path is: create a Discord application in the Developer Portal, deploy the bot code on Railway or a VPS with your Discord token in the environment file, and use the OAuth2 URL Generator to invite the bot to your server with the bot and applications.commands scopes. The bot’s README walks through the full sequence.

Are Discord giveaway bots free?

Most third-party Discord giveaway bots have moved to subscription pricing in the last two years, charging $5 to $20 per month. Self-hosted bots like Uplup’s Wheel of Names are free to run; the only cost is the small VPS or Railway hosting (about $5 a month total) and the optional Uplup API tier ($0 for free, $29 for unlimited).

Can a Discord giveaway bot pick winners from voice channels?

The Uplup Wheel of Names Discord bot supports voice channel picks via the /voice-pick command. The bot reads who is currently in a specified voice channel and picks a random winner from that list. This pattern is common for live event giveaways: tournaments, study sessions, scheduled gaming nights.

How does a Discord giveaway bot prevent cheating?

Reaction-based and voice-channel Discord giveaway bots prevent cheating by reading the entry list directly from Discord’s API rather than from a user-supplied source. Anyone trying to “fake” entries would have to actually react with the giveaway emoji or join the voice channel from a real Discord account. For custom-entry giveaways (where the entry list comes from outside Discord), the entries are deduplicated by user ID before the wheel spins.

What is a Discord wheel of names?

A Discord wheel of names is a wheel-spinning bot that picks a random name (or Discord member) from a list and displays the result as an animated wheel inside the Discord channel. It is the visual format most communities prefer for giveaways because watching the wheel spin and slow to a stop on a winner feels more transparent than a one-line “winner is X” announcement. Uplup’s Discord giveaway bot generates the wheel as an animated GIF rendered server-side.

Can I customize the look of the wheel?

Yes. The bot ships five color themes (Uplup, Vibrant, Pastel, Sunset, Ocean) and accepts a theme parameter on every spin. For deeper customization (custom colors, fonts, backgrounds), fork the repository and edit wheel-generator.js. The MIT license allows any modifications, including commercial use and redistribution.

How many giveaways can the bot run at once?

The Discord giveaway bot supports unlimited concurrent giveaways across different channels. Each /giveaway command creates an independent timer; the bot tracks all of them in parallel and announces each winner separately when its timer ends. The free Uplup API tier (100 requests per hour) supports about 50 concurrent giveaways before hitting any limit; the Boost plan removes the ceiling entirely.

Final Thoughts

A self-hosted Discord giveaway bot is one of the highest-leverage upgrades a community can make: less expense over time, total data ownership, and feature control that hosted bots cannot match. The setup is technical but bounded; most teams have the bot running in a Discord server within an hour of starting.

The full source code lives at github.com/Uplup/discord-wheel-of-names. The README has the deployment quick-start, the Railway one-click deploy button, and the slash command reference. To pair the bot with the Uplup API for saved wheels and winner history, sign up for a free account at uplup.com/random-name-picker and create an API key from the Integrations dashboard.

A Discord giveaway bot you control is a small piece of community infrastructure that pays back every month it runs.