Difference of Discord Webhook vs. Bots and Apps

Webhook Is One-Way and the Others Could Be Two-Way

What Are They?

They are all a type of external plugin that provides more information to your discord channel.

What Are Their Difference?

Webhook is one-way information notification a.k.a. push. Since the information flow is so simple, the setting is simple. You do not really provide your credential to services that provide the information going to your discord server. Instead, the only thing you need to tell the service is the webhook url to push the information to (by the service), and how to interpret the data (by the discord instance).

For example, in this github-discord setting example, you need to tell github to push the information by <webhook url>/github in application/json format.

Bots and Apps are more complicated. They could be implemented to not only push the information, but also consume inputs and then give responses by being on behalf of some roles in the discord server. Thus, they are expected to run a service to do the forementioned features, and the token to be on behalf of someone. That is to say, using Bots and Apps is more risky if you don't fully trust the service provider. You need to be more careful when integrating them into your discord instance.