62 lines
1.1 KiB
Go
62 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"houston/logger"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
"github.com/slack-go/slack"
|
|
"github.com/slack-go/slack/socketmode"
|
|
)
|
|
|
|
type HoustonSlack struct {
|
|
socketModeClient *socketmode.Client
|
|
}
|
|
|
|
func NewHoustonClient() *HoustonSlack {
|
|
socketModeClient := slackConnect()
|
|
|
|
return &HoustonSlack{
|
|
socketModeClient: socketModeClient,
|
|
}
|
|
}
|
|
|
|
func slackConnect() *socketmode.Client {
|
|
appToken := viper.GetString("houston.slack.app.token")
|
|
if appToken == "" {
|
|
logger.Error("HOUSTON_SLACK_APP_TOKEN must be set.")
|
|
os.Exit(1)
|
|
}
|
|
|
|
if !strings.HasPrefix(appToken, "xapp-") {
|
|
logger.Error("HOUSTON_SLACK_APP_TOKEN must have the prefix \"xapp-\".")
|
|
os.Exit(1)
|
|
}
|
|
|
|
botToken := viper.GetString("houston.slack.bot.token")
|
|
if botToken == "" {
|
|
logger.Error("HOUSTON_SLACK_BOT_TOKEN must be set.")
|
|
os.Exit(1)
|
|
}
|
|
|
|
if !strings.HasPrefix(botToken, "xoxb-") {
|
|
logger.Error("HOUSTON_SLACK_BOT_TOKEN must have the prefix \"xoxb-\".")
|
|
os.Exit(1)
|
|
}
|
|
|
|
api := slack.New(
|
|
botToken,
|
|
slack.OptionDebug(false),
|
|
slack.OptionAppLevelToken(appToken),
|
|
)
|
|
|
|
client := socketmode.New(
|
|
api,
|
|
socketmode.OptionDebug(false),
|
|
)
|
|
|
|
return client
|
|
}
|