No arguments about the crappiness of Teams.
My thing is that while better IM systems exist, none is what I would call "Good" or even "Acceptable". Being better than Teams is not really saying much :-)
I haven't used Slack in years, so I can't speak to it, but it sucked when I used it. Back when our team was all colocated in one building, I intentionally had my IM app turned off and disconnected. Interruptions in person suck, but with Slack et al interruptions were multiplied significantly. Kind of: "If you can't be bothered to get up and walk to my cube, it probably wasn't that important."
What I want from Teams and similar SW:
A way to, with a keystroke, mark all messages as "Read" (even when focus is not on the window).
A way to, with a keystroke, print out all unread messages on my console (or in a popup window, or whatever).
In other words, just give me a damn API I can program these things with. Teams' API lets me get messages, but will not let me see if a message is read or unread.
Any app that forces me to open up the window, click on a dozen channels to read all the latest messages, sucks. Period. I should be able to read it all with one click/keystroke, and have them marked as "Read" when I do it.