func (c *Core) handlePassiveCatchAll(b core.Bot, m *slack.Message) error { message := util.TrimWhitespace(core.LessMentions(m.Text)) if optionValue, hasOption := b.Configuration()[ConfigOptionPassiveCatchAll]; hasOption && optionValue == "true" { if core.IsAngry(message) { user := b.FindUser(m.User) response := []string{"slow down %s", "maybe calm down %s", "%s you should really relax", "chill %s", "it's ok %s, let it out"} return b.Sayf(m.Channel, core.Random(response), strings.ToLower(user.Profile.FirstName)) } } return nil }
func (u Util) handleUserID(b core.Bot, m *slack.Message) error { messageText := core.LessSpecificMention(m.Text, b.ID()) mentionedUserIDs := core.Mentions(messageText) outputText := "I looked up the following users:\n" for _, userID := range mentionedUserIDs { user := b.FindUser(userID) outputText = outputText + fmt.Sprintf("> %s : %s %s", userID, user.Profile.FirstName, user.Profile.LastName) } return b.Say(m.Channel, outputText) }
func (j *Jira) handleJira(b core.Bot, m *slack.Message) error { text := core.LessMentions(m.Text) issueIds := j.extractJiraIssues(text) if len(issueIds) == 0 { return nil } issues, err := j.fetchJiraIssues(b, issueIds) if err != nil { return err } if len(issues) == 0 { return nil } user := b.FindUser(m.User) leadText := fmt.Sprintf("*%s* has mentioned the following jira issues (%d): ", user.Profile.FirstName, len(issues)) message := slack.NewChatMessage(m.Channel, leadText) message.AsUser = slack.OptionalBool(true) message.UnfurlLinks = slack.OptionalBool(false) for _, issue := range issues { if !util.IsEmpty(issue.Key) { var itemText string if issue.Fields != nil { assignee := "Unassigned" if issue.Fields.Assignee != nil { assignee = issue.Fields.Assignee.DisplayName } itemText = fmt.Sprintf("%s %s\nAssigned To: %s", fmt.Sprintf("https://%s/browse/%s", b.Configuration()[ConfigJiraHost], issue.Key), issue.Fields.Summary, assignee, ) } else { itemText = fmt.Sprintf("%s\n%s", issue.Key, fmt.Sprintf("https://%s/browse/%s", b.Configuration()[ConfigJiraHost], issue.Key)) } item := slack.ChatMessageAttachment{ Color: slack.OptionalString("#3572b0"), Text: slack.OptionalString(itemText), } message.Attachments = append(message.Attachments, item) } } _, err = b.Client().ChatPostMessage(message) if err != nil { fmt.Printf("issue posting message: %v\n", err) } return err }
func (c *Core) handleSalutation(b core.Bot, m *slack.Message) error { user := b.FindUser(m.User) salutation := []string{"hey %s", "hi %s", "hello %s", "ohayo gozaimasu %s", "salut %s", "bonjour %s", "yo %s", "sup %s"} return b.Sayf(m.Channel, core.Random(salutation), strings.ToLower(user.Profile.FirstName)) }