Riot Games was founded in 2006 to develop, publish, and support the most player-focused games in the world. In 2009, they released their debut title, League of Legends, to worldwide acclaim. League has gone on to be the most-played PC game in the world and a key driver of the explosive growth of esports.
As League enters its second decade, they’re continuing to evolve the game while delivering new experiences to players with Teamfight Tactics, Legends of Runeterra, VALORANT, League of Legends: Wild Rift, and multiple work-in-progress titles. They’re also expanding the world of Runeterra through multimedia projects across music, comic books, board games, and the upcoming animated series Arcane.
Riot Games faced a problem that some slack channels get unproductive at times. From hot takes during live shows to leading questions that don't have a satisfying answer, sometimes these places get a little bit toxic.
They tried to solve this problem by using guidelines on Riotnet. Those have helped, but unproductive conversations were still around, and our client decided to come up with something new. Suggested guidance has proven helpful, but perhaps making it easier to follow that guidance would be helpful.
There is also another problem - some people don't like asking questions in the channel because they don't want to get criticized by other people. Many of these folks are wary of attaching their name publicly to their questions.
In order to fulfill the initially requested solution, we decided to include two applications created with Node.js. One - for the Slack bot and the other - for gathering information and analytics (let's call it the analysis app). For the Slack bot, we used Bolt Slack SDK because it's built on node-slack-sdk and has good support of both Node.js and Typescript. As the client's request was to put all collected information into a spreadsheet, we used Node.js in association with Google Spreadsheets API for the analysis app. Of course, both applications - the bot and the analysis app were created using Typescript to provide scalability and code clearness. To make the final solution easy to setup-and-deploy we decided to implement a serverless architecture. Suchwise, we used Firebase Functions for deployment and hosting. When everything was almost finished up and ready to use, 2 problems revealed:
By taking control over the channel Bot brought structure and order to conversations flow. All questions were now detached from each other allowing users to have discussions in threads. In other words, a Slack channel with the Bot app became a simple version of a web forum. Allowing to post a question with its context and stay anonymous if willed. Every hot discussion now has a separate discussion thread, which does not let multiple questions interfere with each other. At the same time, the Bot app helped to automate reports and statistic gathering. Thus, it is collecting: