(c) 2025 ViraUp (viraup.com) – All rights reserved.
A Discord giveaway bot for Nox RP written in Python. It manages countdown-based reply giveaways with quiet hours, admin exemptions, and automatic locking on winner selection. Countdown progress is stored in a local SQLite database so the giveaway can recover after unexpected restarts. The countdown message also shows the active participant's invite- and role-bonus stats (applied only).
pip install -r requirements.txt
cp .env.example .env
python main.py| Variable | Description |
|---|---|
DISCORD_BOT_TOKEN |
Bot token (required). |
CHANNEL_ID |
Giveaway text channel ID (required). |
TARGET_MESSAGE_ID |
ID of the message users must reply to (required). |
ADMIN_ROLE_IDS |
Comma-separated role IDs treated as admins. |
QUIET_ROLE_IDS |
Roles muted during quiet hours. |
PARTICIPANT_ROLE_IDS |
Comma-separated role IDs allowed to participate; others receive a registration DM. Leave empty to allow everyone. |
COUNTDOWN_SECONDS |
Countdown duration for each participant. |
INVITE_BONUS_SECONDS |
Seconds removed from the countdown per successful invite (default 10). |
REGISTRATION_DM_MESSAGE |
(Deprecated alias of EN) DM text for users without the participant role. If set, used as English content. |
REGISTRATION_DM_MESSAGE_EN |
English DM text for users without the participant role. |
REGISTRATION_DM_MESSAGE_FA |
Persian (Farsi) DM text for users without the participant role. |
QUIET_HOURS_MESSAGE_EN |
English DM text shown during quiet hours. |
QUIET_HOURS_MESSAGE_FA |
Persian (Farsi) DM text shown during quiet hours. |
EMBED_THUMB_URL |
URL of thumbnail displayed in embeds (default Nox RP icon). |
STATE_DB_PATH |
Path to the local SQLite database used to persist giveaway progress (default giveaway_state.db). |
INVITE_ROLE_BONUS_SECONDS |
Extra seconds removed when an invited user later gains a participant role. |
INVITE_MIN_ACCOUNT_AGE_DAYS |
Minimum account age (days) for an invited user to be eligible for any bonus. |
- Enable
Message Content IntentandServer Members Intentfor the bot in the Developer Portal. - Grant the bot permission to view the giveaway channel, manage messages, and fetch invites (
Manage Guildor appropriate invite permissions) so invite bonuses work. - The role-bonus feature relies on
on_member_updateto detect when an invited user later receives a participant role.