When I want to learn a new champion in League I often like to watch the play of high elo players known for that champion. An issue I ran into is that I would either miss their stream, or I would tune in but they wouldn't actually be playing the champion I'm interested in. I figured that other people, especially people that do League of Legends related stuff for work, might run into similar issues. If I was a TL analyst who wanted to see gameplay of a certain player playing a certain champion, I wouldn't want to have to constantly monitor the stream or dig through hours of vods to find the gameplay that I actually want to see.
What it does
To solve this problem I decided I would build a service that would keep track of this. Blue Bot lets the user subscribe to a streamer and a set of champions. When that champion is played on stream, Blue Bot sends out notifications to the people that have subscribed to this streamer/champion combo. This way, the user doesn't have to monitor the stream to find content they are interested in. In addition, even if the user can't tune into the stream at that time, getting these notifications allows the user to easily go back in the vods and find the times where the champion was played.
How I built it
The service is built using Python/Flask. It utilizes the Twitch API in order to get notified when the streamers we are interested in are live, and then it monitors the Riot API so that it knows what champion the streamer is playing. It stores the user subscriptions in a SQL database so that it knows when and to who to send notifications to. The interface with users is also built in Python as a Discord bot. This user facing side of the app could definitely be transferred to other mediums like a website for fans, or a Slack bot if that is something used internally, but I used a Discord Bot because I was interested in learning.
Challenges I ran into
The main challenge I ran into is lack of time/teammates. I decided to do this one solo because I had some things pop up this weekend and I ended up needing to do a little bit of traveling, so I wasn't sure when I would be available to work together with teammates. Hackathons are already pretty fast paced, so the extra loss of time meant that I didn't get to dedicate as much time to this project as I would have liked. Learning new things like how Discord bots function was definitely a time consumer as well. I didn't get to finish out all of the functionality that I envisioned, and the code definitely needs more testing and better, more elegant error handling.
Accomplishments that I'm proud of
I'm proud that I was able to build out at least the core basics of what I wanted the project to do, and I thought it was a pretty good idea that with some extra time spent on it could actually be a useful and practical application.
What I learned
Some of the technical things I worked on were knew to me, such as Discord bots. It was a lot of fun to learn about how they are built, and to see mine start working.
What's next for Blue Bot
While I was able to build out some of the basics of Blue Bot, he still has a ways to go. Some of the additional functionality still needs to be built, and there needs to be much better ways to handle errors and to make sure that the results are consistent and don't just break.