Competitive programming is a hard hobby to get into for some, especially with finding the right resources. We aimed to make an easily accessible bot on a popular social platform (Discord) that could help people out in competitive programming very conveniently, hopefully making programming a more popular and more enjoyed activity.

What it does

  The Discode Bot centralizes competitive programming resources, and also makes it easy to search for CodeForces problems of the right level using the CodeForces API. This, along with the fact that its commands are easily performed through interaction over Discord means it should make competitive programming an easier interest to pursue.

How we built it

 We used the Java-Discord-API to program the bot using Java. We then used the CodeForces API and the json.simple library to get information about the problems hosted on the website. We also pooled helpful links to resources in one place to make finding help easier to do.

Challenges we ran into

  To make the bot feel responsive and convenient, it had to respond to user commands quickly. Grabbing information from the CodeForces API took several seconds, which in this day and age is too much. Instead, we opted to store the CodeForces problems in RAM and refresh the information every 30 minutes to stay up-to-date.

Accomplishments that we're proud of

   The bot is functional and user-friendly - something that we see ourselves using and improving in the future. As a Discord bot it is also easy to give other people access to it on their own servers. 

What we learned

  We learned to use the Java-Discord-API, the json.simple API, and the CodeForces API. We dealt with multithreading problems, and more generally the steps to completing an application.

What's next for Discode (Competitive Programming Helper)

 We plan to have users input their own hints/tips/resources (instead of just us) to perpetually improve the bot and help foster a larger community.

Built With

  • codeforces-api
  • java
  • java-discord-api
  • json
  • json.simple
Share this project: