Slack Bot Framework
Built on top of the Slack API github.com/slack-go/slack, Slacker is a low-friction framework for creating Slack Bots.
help
commandslog.Logger
context.Context
go get github.com/slack-io/slacker
We wrote extensive examples to help you familiarize yourself with Slacker!
To use Slacker you'll need to create a Slack App, either manually or with an app manifest. The app manifest feature is easier, but is a beta feature from Slack and thus may break/change without much notice.
Slacker works by communicating with the Slack Events API using the Socket Mode connection protocol.
To get started, you must have or create a Slack App and enable Socket Mode
, which will generate your app token (SLACK_APP_TOKEN
in the examples) that will be needed to authenticate.
Additionally, you need to subscribe to events for your bot to respond to under the Event Subscriptions
section. Common event subscriptions for bots include app_mention
or message.im
.
After setting up your subscriptions, add scopes necessary to your bot in the OAuth & Permissions
. The following scopes are recommended for getting started, though you may need to add/remove scopes depending on your bots purpose:
app_mentions:read
channels:history
chat:write
groups:history
im:history
mpim:history
Once you've selected your scopes install your app to the workspace and navigate back to the OAuth & Permissions
section. Here you can retrieve yor bot's OAuth token (SLACK_BOT_TOKEN
in the examples) from the top of the page.
With both tokens in hand, you can now proceed with the examples below.
Slack App Manifests make it easy to share a app configurations. We provide a simple manifest that should work with all the examples provided below.
The manifest provided will send all messages in channels your bot is in to the bot (including DMs) and not just ones that actually mention them in the message.
If you wish to only have your bot respond to messages they are directly messaged in, you will need to add the app_mentions:read
scope, and remove:
im:history
# single-person dmmpim:history
# multi-person dmchannels:history
# public channelsgroups:history
# private channelsYou'll also need to adjust the event subscriptions, adding app_mention
and removing:
message.channels
message.groups
message.im
message.mpim
Please review our Contribution Guidelines if you have found an issue with Slacker or wish to contribute to the project.
There are a few common issues that can cause this: