A Discord bot that creates an engaging community experience with shooting star events, coin economy, and photo sharing features.
- Automated Events: The bot generates 6 random shooting star events per day across specified channels
- Time-based Schedule: Events occur at random times throughout the day (UTC)
- Interactive Gameplay: Users must type the correct word to "catch" the shooting star
- Rewards: Successful catches award 100 coins
- Visual Appeal: Each event includes an embedded image and attractive Discord embeds
- Daily Rewards:
- 200 coins for first message of the day (UTC)
- 200 coins for daily check-in command
- Starting Balance: New users begin with 1000 coins
- Commands:
/coins- Check your coin balance/coins @user- Check another user's balance/leaderboard- View top 10 users by coins/daily- Claim daily check-in reward
- Random Photos: Spend 1000 coins to get a random photo from a curated collection
- Location Data: Photos include GPS location information extracted from EXIF data
- Progress Tracking: Shows how many photos have been revealed vs. total available
- Channel Restrictions: Can be limited to specific channels
- Automatic Management: Revealed photos are moved to a separate directory
- Python 3.8 or higher
- Discord Bot Token
- Discord Server with appropriate permissions
-
Clone the repository
git clone <repository-url> cd shooting-star
-
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Environment Configuration Create a
.envfile in the project root:DISCORD_TOKEN=your_discord_bot_token_here SHOOTING_STAR_CHANNEL=channel_id_1,channel_id_2,channel_id_3 PHOTO_CHANNEL=photo_channel_id PHOTO_MENTION_USER=user_id_to_mention_in_photos
-
Prepare Photos Directory
- Add photos to the
photos/directory
- Add photos to the
-
Run the Bot
python bot.py
The bot requires the following Discord permissions:
- Send Messages
- Embed Links
- Attach Files
- Read Message History
- Use Slash Commands
- The bot generates a daily schedule with 6 random events
- Each event has a predetermined time, channel, and catch word
- Events are scheduled throughout the day (UTC)
- When an event triggers, users have 60 seconds to type the correct word
- Successful catches award 100 coins
- Users earn coins through various activities
- All coin transactions are stored in SQLite database
- Leaderboard shows top earners
- Photos are stored in the
photos/directory - EXIF data is extracted to show location information
- Photos are moved to
revealed/after being shown - GPS coordinates are reverse-geocoded to show city/country
discord.py- Discord API wrapperpython-dotenv- Environment variable managementPillow- Image processing and EXIF data extractiongeopy- GPS coordinate reverse geocoding