A little while ago I took a look at Rocketchat's documentation on webhooks for a little something that should be coming out soon™. While I ended up not using it, I found some pretty awesome stuff with it and thought I'd like to share it with you guys. If you have no interaction with rocketchat, it's basically a chat application that you can self host. Hive has one running at http://openhive.chat/ thanks to @gtg. I didn't really use it(other than EARLY ~~steem~~ days, 2016 when it was still steem.chat) but honestly, seeing some of its capabilities, I might run an instance of my own for some of my chats and mostly playing around. This is the documentation that I was reading: https://docs.rocket.chat/guides/administrator-guides/administration/integrations-1. I did give it a go and it didn't end up working for my purposes, but I know it can work great for lots of other use cases. What I love most about it is that you can have scripts on both incoming and outgoing webhooks(YES 2 WAY WEBHOOKS) run right on the server hosting the chat. This can be used to save a lot of processing or network calls elsewhere.
Let's take a look at an example with outgoing. A lot of bots have a help menu. That's something static and doesn't change at all between users who use it, and as such, it's something that can be saved right on the server and sent as a response form there. Here's how a bot on discord would handle a help command(because discord doesn't have 2 way webhooks, only incoming, you'd have to setup a bot account there): ``` User Sends Message -> Discord Server -> Bot Server -> Discord Server -> User's UI ``` We had 4 hops on that one to go from start to finish. Now lets see how we can do it with outgoing scripts on rocketchat: ``` User Sends Message -> Rocketchat Server -> User's UI ``` Look at that, only 2 hops. This really is a benefit of the self hosted aspect of rocketchat, as this wouldn't be something that discord would want to bring(who wants to let anyone run arbitrary code on their server?). All those little jumps will save a little bit of network time, and while a user probably won't see the difference(unless your bot's server is far far away from everything else) don't we all just love to optimize? Save that tiny bit of milliseconds wherever we can? While this only works for static content(if you want to access a database or something you'd still want to allow the request onto its final destination for processing), it's still a major benefit. The best part is that these scripts are just written in JS so you don't even have to learn a new language. Outgoing webhooks are awesome in so many ways. It's so much easier to just listen for an incoming request than setup an entire discord bot to look for incoming commands to do certain actions. Plus you can use scripts to handle stuff like routing right when its being sent so you don't even need to worry about that on your backend. What I think the best part about rocketchat is the fact that it is open source and so you can customize it how you want. https://github.com/RocketChat/Rocket.Chat Just look at openhive.chat. It uses your hive account to sign in. That's not something that you can get on Discord(which isn't a bad platform, discord still has MANY MANY benefits over rocketchat) and never will be.

See: RocketChat Webhooks Are Powerful by @rishi556