Building a basic chatbot
Go has a few clients that can interact with popular chat services such as Slack, either as a general Slack client or as a ChatOps-focused bot.
We have found that it is best to have an architecture that separates the bot from the operations that you want to perform. This allows other tooling in other languages to access the capabilities.
By keeping the chatbot separate, you can focus on a single type of chat service and use all its features, instead of only features shared by each chat service client.
For this reason, we will use the slack-go
package to interact with Slack.
Our bot will be basic, simply listening to when someone mentions our bot in a message. This is called an AppMention
event. Slack supports other events and has events specifically for commands that you can install. In our case, we just want to answer whenever we are mentioned, but slack-go
has many other capabilities we will not explore.
Let's create a package called bot...