About the Project
The discord game statistics bot project (or game stats bot for short) is a discord bot developed by 5 university students within 4 weeks. The bot has various features that have been implemented such as getting the most trending games on YouTube, getting the statistics of YouTubers, being able to keep track of your wins and losses within various games, recommending games, creating temporary game lobbies inside of discord, and various other features. You can also have a very basic conversation with the bot which is one of the ways you can access some features of the bot.
The History of the Project
The game stats bot was created for a university assignment. Before the development of the bot could be started, it needed to be extensively planned out first. After each separating and spending 15 minutes coming up with our own ideas, all of us than joined back together and started talking about our ideas. Overall, there were 2 main ideas that the team and I had come up with. A weather bot to get the current weather status about a location and a game statistics bot to keep track of statistics of games. I started creating a single page slideshow with my team for each of our 2 ideas so they could be showcased. In the end, the team and I voted for the game statistics bot as each of us were heavy video gamers and it felt like it had more potential. I also personally felt like this was something that was missing from the bot community. Now that the team and I had our idea, it was time to plan it accordingly.
The Planning of the Project
Now that the project idea had been decided, it was time to start planning of project. As each of us were university students and had gained knowledge from a previous module about software design, this was used to plan our project effectively. Me, along with my team, made use of creating stuff like user stories, documentation, a task list (which was later converted to a scrum board), and planning poker (to judge the level of effort and complexity for each task). I made sure to attend the daily stand-up meetings that had been setup so I could always keep up to date on the project with my team. Our schedule for the project was 4 weeks, with 2 weeks for each scrum cycle. The first 2 weeks was all about getting the foundations built and implementing the must have features. The last 2 weeks was about implementing the should have and would like to have features as well as polishing the overall project
The First 2 Weeks
Although extensive planning had been done, the first 2 weeks didn’t go exactly the way I would have preferred it. Each team member had an exam coming up, which effected the planned schedule slightly. Each team member was also having its own problems. These included not being able to install the correct libraries, as well as some team members using different operating systems making it harder to troubleshoot. Since I had the majority of my problems fixed, I ended up spending about a week getting the initial foundations of the project setup to help my team. I also helped by offering my knowledge I had gained from developing for several years. The 2nd week went much better. Each team member had worked together and now all of our initial problems were fixed. A daily stand-up meeting was called and the project was spilt into tasks. I had setup a scrum board which all the tasks were put on. This meant the team and me could keep track of the whole progress and assign tasks accordingly. At the end of 2nd week, all of our code was combined and it was time for the last 2 weeks.
The Last 2 Weeks
After the issues from the first 2 weeks, I wanted to make sure this didn’t happen again. Each team member made sure to test each person’s code during our stand-up meeting and report any issues to each other. The new tasks were also put into the scrum board and assigned to each team member. My first task was the YouTube trending feature. I wanted this to be as simple a user entering a command and it returns a list of the most trending games on YouTube. This took a little while to implement and was a bit of a challenge but after reading a lot of YouTube API documentation, I got it working. My next major task was the game lobbies feature which was a big challenge. The feature would work as such that when the user enters a command, it creates a temporary voice channel and when the channel is empty, it is deleted. While this took quite a while to implement, I was extremely happy and proud once I got it working. The last couple of days were spent polishing the project and it was now finished.
The Challenges I Faced
During the project I faced many challenges. At the start of development, it took a lot long than expected to get mine and my team members IDEs working including installing the correct libraries. This was made a lot harder by the fact that some team members had different operating systems, making it much harder to troubleshoot. Half way through development, another challenge I faced was when the UK announced a 2nd national lockdown, which meant some of our team members ended up returning home because of it. This cause a little issue with the planned schedule but nothing too severe. The last few challenges was to do with the YouTube Data API which was new to me and required a lot of reading and debugging. The game lobby system was my biggest challenge as it required extensive error handling and even required me to write a special function to deal with a problem with the file system. Towards the end, I experienced an issue where the code just didn’t work but it was fixed by using a command prefix.
Overall, I am very happy with the final result. In future projects, the code can be heavily refined and redone to be a lot more efficient. I would also make sure that all the commands and features are accessed the same way. Although, the project was extensively planned, one thing that was never fully decided was whether the bot would use a prefix to access commands or you talk to it. This project was a big challenge for me as well as my team. I had never planned or coded something as extensive as this. I believe the project was successful because of how extensive the planning was as well as our combined teamwork. It also helped that I was a more experienced programmer so I could help out the less experienced programmers on my team. Overall, because of our planning, teamwork, collaboration, enjoyment and hard work, a project was created that me and my team can be proud of.