Originally they only made money by selling a service called Discord Nitro. It allows you to upload larger files/share your screen in a higher resolution, use servers' emojis in any other server, use an animated avatar, and further customize your username. Since they added the store, they've also started giving games to Nitro members, doubled the price of Nitro, and offered an option without the free games at the original price.
Matrix is really nice. I hope that some of the TUI clients improve a bit, though. I absolutely loved the weechat plugin made in lua, but it'd often take several tries to connect. One day I couldn't connect at all, and there hasn't been github activity lately. It was the only client I found that let me actually reorder rooms and people manually. I really hate the constantly changing order that I can't seem to configure in Riot. Gomuks lacks a lot of good keybinds and stuff that weechat did right by default for being weechat. The emacs package matrix-client.el is alright but tricky to get going due to using quelpa, which none of my other stuff uses. I also have only used it graphically in emacs, so not sure how it is in non-graphical emacs. These little disappointments in the clients make me still prefer irc for a lot of things, but easily sharing images and such on matrix is pretty nice.
<tinfoil>
I always assumed they were selling user data.
People talk about a lot of sensitive/private stuff on there for some reason, and they self-select into communities they're interested in.
Also it looks like they're hiring a lot of data scientists[0], though that could be for other reasons.
</tinfoil>
[0] https://discordapp.com/jobs
I like Matrix, I run a homeserver, but they still have a long way to go until their feature set becomes as attractive as Discord's, and I feel like in certain areas they're not even trying.
https://discordapp.com/nitro