Files
houston-be/cmd/app/slack.go
2023-11-02 13:11:52 +05:30

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
}