Inspiration
We are members of our high school's Science Olympiad team, competing in regional and state tournaments of the national competition. In our club's years of growth, it's expanded and utilizes a Discord server for member communication, announcement, and competition preparation. Inspired by bots like Bird-ID and Fossil-ID for practicing certain SciOly events, we brought to life the idea of a bot with expanded features that helps students like us study conceptual science Olympiad events and their topics in general.
Often it can be hard to find practice tests that have questions with a variety of difficulties. Some are too easy and underprepare teams, while others are too hard and make teams focus on topics that may not be necessary. Finding reliable resources for questions teams are stumped on can also prove to be a challenge, as it is easy to dismiss wrong answers along the way.
We created QuizOly as a tool to assist fellow olympiad competitors in their studying, giving questions that are pulled from old actual tests at regional SciOly meets, invitationals, and States, and any others that are designed to be similar. Thus, these questions cover a wide range of difficulty, as well as offering tips to study and reputable resources for further help. We find that practice questions and tools presented in this easily accessible format from a Discord bot will help us better prepare for contests through regular and convenient practice.
What it does
To use QuizOly, users in Discord simply have to invite the bot to their server, and type "!q" which will generate a question, as well as the ID of it as stored in a Google Spreadsheet database. When many topics, covering all areas of study events in Scioly, are implemented, a user will be able to specify a topic, as well as a major theme within that topic.
Once the question is provided, a user can answer it through "!a [question ID] [answer]". For short answers, multiple choice, and true/false questions, the bot will tell the user whether their answer was correct.
For all questions, our bot will post resources to problems of that theme, as well as linking a user to a study guide.
How we built it
We built QuizOly by creating a Discord developer application as a bot user, and a Google Developer Console project. We coded the bot through Repl.it in Python 3, and it is hosted on a web server through Flask and UptimeRobot. It uses the discord.py library for event- and user-command-based functions, and the package gspread, which uses the Google Drive and Google Spreadsheets APIs.
We used a Google Sheet to assemble data from tests for the Scioly event centered around genetics and biotechnology called Designer Genes, and inputted other data regarding the questions, including topic tested, type of question (long answer, short answer, or multiple choice), the answer, and links to helpful study resources.
We invited the bot to a server, then linked it to this spreadsheet, generating random questions to give a user, as well as providing answers, resources, and whether the user was correct when they respond.
Challenges we ran into
After first creating our Google Sheet, we made several attempts to use different Python packages that would allow us to link with and read entries from the spreadsheet. We met some difficulties importing the package we wanted through Repl.it, but we were able to reach solutions after learning about gspread and its more suitable functionalities for our bot's basic purposes, and figuring out how to make a Google Developer Console project that would allow the bot to interact with a spreadsheet through Google's Sheets API.
Accomplishments that we're proud of
We're proud to have created something that can benefit a community our team is a part of! It can also support people in their science classes, as once our questions are expanded, they will cover a wider range of topics.
Especially in a time where many students are learning on their own due to remote learning in the ongoing pandemic, a program that offers resources, as well as a variety of quiz questions, can help prepare students better.
What we learned
Skill-wise, we all learned from scratch how to work with Discord bots, in particular writing commands for Discord bots in Python. We also became much more familiar with the Google Drive and Google Sheets APIs as used with Python.
What's next for QuizOly
Our most immediate goal is to implement more themes, more subjects, and more resources. Currently, we only have questions related to genetics via one exam for Designer Genes authored by Brown Science Olympiad. However, through the implementation of many more tests across subjects, we plan to cover a much wider range of topics.
We do have many features that may potentially be created, including a system to show a user's progress over time, individualized feedback, leaderboards in or across servers, Direct Message chatting with the bot, and custom spreadsheet linking.
Slides featured in demo video: https://docs.google.com/presentation/d/1b0MI4xWE_fhTUWIQ0C5OGeMtoTTaRquh4vJp8MNHYtM/edit?usp=sharing Data Compilation Spreadsheet https://docs.google.com/spreadsheets/d/1sc3aShcm2SF5jYuiGpTyJw-MVAPbkCbcuO6EaYoouwA/edit?usp=sharing


Log in or sign up for Devpost to join the conversation.