Inspiration
Taking inspiration from the COVID-19 pandemic, it was a great opportunity to try new interests with excess time on our hands. Likewise, during that time, social interactions depended on online communities such as Discord. Taking the best of both entertainment and communication, in the great tech-extinction, we want to take it to the next level…
We present: **GENOVA**. The genesis of nova, a new star symbolizing your new beginning. As Genova plants the seed of interest, your commitment and passion will feed its growth discovering your new self in bloom.
What it does
This discord bot will motivate you to try new activities as a method of entertainment and self discovery during the lockdown. Invite it to your server with friends, encourage each other, and observe how each one of you grows!
Every day, from 6 categories including: Creativity, Skill-building, Physical/Well-being, Leisure, Reading/Learning, and Social, users can choose an area of focus where Genova will recommend two randomly generated activities in that category. The user will then choose one they will commit to. Each activity is considered “unlocked” once selected by the user for the first time and is rewarded 25 EXP. In each activity, there are ten tasks of increasing difficulty to help the user excel in each interest. Only one task can be done per day. Only the three closest levels are presented each time, as the user progresses to the next task, they will unlock the next level. Each increasing level will increase in EXP rewarded. As a certain milestone is reached in EXP or if all activities in each category are unlocked, users are rewarded with badges. The badges used are custom emojis to our server that we incorporated. Multiple users in the server can register their profile at the same time to keep track of each other’s progress to stay connected.
Commands: $profile: creates a new profile or displays current progress in GENOVA including total EXP, EXP in each category, and badge display. $activity: generates two random activities of chosen category to user $[activity]: (e.g. $baking) displays total activity EXP and next tasks $[activity 1]: (e.g. $baking 1) completes first task on the activity task list $help: displays commands and their uses
How we built it
- Built using Python with discord.py library.
- Set up the bot at Discord Developer Portal to receive the bot TOKEN and run the bot.
- Environment variables (dotenv) used to securely load the bot token.
- Basic bot framework using VSCode and GitHub for version control. From there, we expanded the bot’s functionality step-by-step.
- User messages parsed inside on_message().
- Commands start with $, split into activity and optional task choice.
- Separate command handlers for $profile, $activity, $unlocked, and dynamic activity names.
- $profile creates a JSON entry with default fields
- All user data managed through a local user_data.json file.
- Data loaded and saved using Python’s json module with safe checks.
- User profiles using Discord Embeds
Challenges we ran into
This hackathon was the first hackathon for both of us on the team, therefore we are less familiar with what was possible to be accomplished during this time. LIkewise it was our first time using GitHub and VSCode, therefore we ran into some difficulties at the start with how to collaborate together etc.
Although we both had experience in coding, we still had to learn a lot of new things to make this project work as we have never done anything similar.
Some technical difficulties we ran into included some unexpected hurdles like preventing Discord API errors when attempting to send empty or improperly formatted messages, which required additional safety checks throughout the bot. Finally, integrating dynamic EXP tracking, badge unlocking, and task progression across dozens of activities introduced complexity in keeping all progress synchronized in real-time without breaking user profiles.
Another challenge is probably how we are at a disadvantage in terms of the number of people on the team. We are a team of two which compared to most that have four people will have to be more well-rounded. At the same time, with less people, it is less likely we can make something as sophisticated as the other teams with more people
Accomplishments that we're proud of
- Meaningful impact of our bot in terms of encouraging users to be more proactive in their life when time is abundant, while making this process fun and collaborative
- The symbolism in our logo and icon to amplify its significance
- Taking inspiration from a major event that has impacted many people worldwide and our personal experiences
- Mapping out key functionality and objectives before starting to code.
- Creating a functional project :joy:
What we learned
- How to direct output from terminal to discord messages
- How GitHub and VSCode worked especially for collaborative work using extensions like LiveShare. Ex. how to use gitignore for sensitive information like bot tokens.
- How to use and update local json file as a database
- How to use discord, dotenv, random, json, and asyncio libraries
What's next for GENOVA
- Custom activities challenged/suggested by friends or by your own interest
- Tutorial links to help user get started on an activity
- Bingo system either individual or collective with finished tasks
- Collectibles/blind bag reward system to further motivate users
- Sharing progress with your own media uploads and written reflections
Log in or sign up for Devpost to join the conversation.