In Overwatch, the ability to flame the enemy team in chat has been made nearly impossible. They have programmed the game to recognize toxic statements and to replace them with uplifting compliments, turning things like, "You're trash," to, "I really enjoy playing with you," etc. Instead of the toxic player attempting to hurt another player, the game trolls the toxicity from the start and shuts it down before its even an issue. League should emulate this.
So here's the thought. League copies this idea, and in game keeps track of how many statements were changed. Maybe even create a "strike" system in an overlay on the screen. 3 strikes, and you lose the ability to chat in that specific game. At the end of the game you get a warning stating that you lost your ability to chat in that game, and continued attempts at toxicity will result in stricter punishments. Toxic players get punished without others even realizing they're toxic and the community silently gets better.