Giveaway Bot is a fully featured Discord bot designed for managing customizable giveaways with advanced role-based access control and a companion web dashboard for real-time management.
🔧 Features
Role Requirements:
Restrict giveaway entry to users with specific server roles.
Bonus Roles:
Grant additional entries to users with designated roles, increasing their chances of winning.
Bypass Roles:
Allow certain roles (e.g., moderators, VIPs) to bypass standard entry requirements.
Dashboard Interface:
A modern web dashboard built with Next.js enables server admins to:
View all active and past giveaways
Edit giveaway details (prize, duration, roles, etc.)
End giveaways early
Monitor participation stats in real time
Real-Time Embed Updates:
Giveaway messages update dynamically to reflect entry counts and time remaining.
MongoDB Integration:
Persistent storage using Mongoose for giveaways and server configuration.
API-Driven:
A secure Express.js-based REST API powers the dashboard and bot communication.
🛠️ Tech Stack
Discord.js v14 – Bot framework
Next.js – Dashboard front-end
Express.js – API backend
MongoDB + Mongoose – Data storage
Vercel / Render – Deployment
To Use the Bot
/set_giveaway_roles -- to initially set up the giveaway role (GIVEAWAY ROLE NEEDS TO BE SETUP BEFORE BEING ABLE TO CREATE GIVEAWAYS)
/create - create giveaways (GIVEAWAY ROLE MUST BE SETUP BEFORE USING THIS COMMAND)
/set_giveaway_log - to set up the giveaway event logs
/view_settings - view the configurations of the giveaway event logs and giveaway role.
/delete, /reroll, /end - delete giveaway , reroll giveaway winner, and end a giveaway
No followers yet
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
added a docummentation page for the giveaway discord bot's dashboard. This will make it easier for people to setup the bot, as well as understand the commands for the bot.
Uploaded the discord bot, api, and dashboard to the web.
Fixed any website bugs that allowed the user to see certain pages without the right permission.
Project is finally done.
Completed the status page, and the ability to edit the status page incidents.
Todo: Command documentation, and ensure no loopholes in the dashboard
Finished the edit and end giveaway buttons on dashboard, linked to discord bot api.
The view entries and details of giveaway are done.
ToDo: Status page, and maybe a command documentation left.
Added light and dark mode
Finished config giveaway logs and roles page
redirect user when signing in + display user's discord servers.
Todo:
status page for discord bot
edit and end giveaways on the dasboard
Finished setup the dashboard home page
Finished setting up the discord auth and discord api.
ToDo:
display the discord servers the user is in,
redirect when user signs in
display the giveaway info and log configs per each server
having the ability to end and edit giveaways on the dashboard.
status page for discord bot
Created a cleanup command to delete old giveaway MongoDB schemas.
Created a function that runs every day to delete old giveaway MongoDB schemas.
Created slash commands to edit the giveaway logs MongoDB schemas.
The Discord Bot is done from scratch (15+ hours)
ToDo:
Add a dashboard to the bot.
Finished the reroll function and slash command.
Giveaways will end on their own.
Finished the logging for starting, ending, rerolling giveaways.
ToDo:
have a way to delete old giveaway mongo schemas
have a way to setup the logs and giveaway/giveaway manager roles
Completed the create commands with all its parameters, ensured that all the users are checked for requirements before joining and before giveaway ended.
Completed the end giveaway function, and ensure that giveaways end on their own.
ToDo
- Ensure that the giveaways end on time, and not delayed for a couple of minutes or hours.
- Make that reroll command send the discord embeds and logs when an user uses that slash command
ToDos:
- Slash commands to edit the configuration of the giveaway logs
- add bypass role
- make sure that the giveaways end on their own
- make the embeds from the slash commands display on discord
ToDos:
- Create the end giveaway function + picking a winner
- ensuring that when ending the giveaway, the winner follows the requirements of the giveaway, when joining giveaway.
- users should be checked if they meet the requirements of the giveaway.
- Add a bypass role
Started developing the giveaway functions for the bot.
- Manager that handles the creating the giveaway, ending the giveaway, checking giveaway join and leave events, bonus roles, server and role requirements.
- Created the MongoDB schemas for giveaway models and created a schema for giveaway logs.
TODOs:
- add the slash commands to run the functions inside the giveaway manager.
- add the giveaway logs to each function/event
Finished the framework for the discord bot.
-Event's handler
-Slash Command Handler
-MongoDB Support