package util import ( "strings" "github.com/lbryio/lbry.go/errors" "github.com/nlopes/slack" log "github.com/sirupsen/logrus" ) var defaultChannel string var defaultUsername string var slackApi *slack.Client // InitSlack Initializes a slack client with the given token and sets the default channel. func InitSlack(token string, channel string, username string) { slackApi = slack.New(token) defaultChannel = channel defaultUsername = username } func SendToSlackInfo(format string, a ...interface{}) { message := fmt.Sprintf(format, a...) if slackApi != nil { sendToSlack(":information_source: " + message) } log.Debugln(message) } func SendToSlackError(format string, a ...interface{}) { message := fmt.Sprintf(format, a...) if slackApi != nil { sendToSlack(":sos: " + message) } log.Errorln(message) } // SendToSlackUser Sends message to a specific user. func SendToSlackUser(user, username, message string) error { if !strings.HasPrefix(user, "@") { user = "@" + user } return sendToSlack(user, username, message) } // SendToSlackChannel Sends message to a specific channel. func SendToSlackChannel(channel, username, message string) error { if !strings.HasPrefix(channel, "#") { channel = "#" + channel } return sendToSlack(channel, username, message) } // SendToSlack Sends message to the default channel. func SendToSlack(message string) error { if defaultChannel == "" { return errors.Err("no default slack channel set") } return sendToSlack(defaultChannel, defaultUsername, message) } func sendToSlack(channel, username, message string) error { var err error if slackApi == nil { err = errors.Err("no slack token provided") } else { log.Debugln("slack: " + channel + ": " + message) _, _, err = slackApi.PostMessage(channel, message, slack.PostMessageParameters{Username: username}) } if err != nil { log.Errorln("error sending to slack: " + err.Error()) return err } return nil }