forked from lug/matterbridge
		
	Improve Slack attachments formatting (slack) (#1807)
* Improve Slack attachments formatting (slack) * Add TitleLink * Add Footer * Fix linter issues
This commit is contained in:
		@@ -282,6 +282,13 @@ func (b *Bslack) handleStatusEvent(ev *slack.MessageEvent, rmsg *config.Message)
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getMessageTitle(attach *slack.Attachment) string {
 | 
			
		||||
	if attach.TitleLink != "" {
 | 
			
		||||
		return fmt.Sprintf("[%s](%s)\n", attach.Title, attach.TitleLink)
 | 
			
		||||
	}
 | 
			
		||||
	return attach.Title
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (b *Bslack) handleAttachments(ev *slack.MessageEvent, rmsg *config.Message) {
 | 
			
		||||
	// File comments are set by the system (because there is no username given).
 | 
			
		||||
	if ev.SubType == sFileComment {
 | 
			
		||||
@@ -290,12 +297,15 @@ func (b *Bslack) handleAttachments(ev *slack.MessageEvent, rmsg *config.Message)
 | 
			
		||||
 | 
			
		||||
	// See if we have some text in the attachments.
 | 
			
		||||
	if rmsg.Text == "" {
 | 
			
		||||
		for _, attach := range ev.Attachments {
 | 
			
		||||
		for i, attach := range ev.Attachments {
 | 
			
		||||
			if attach.Text != "" {
 | 
			
		||||
				if attach.Title != "" {
 | 
			
		||||
					rmsg.Text = attach.Title + "\n"
 | 
			
		||||
					rmsg.Text = getMessageTitle(&ev.Attachments[i])
 | 
			
		||||
				}
 | 
			
		||||
				rmsg.Text += attach.Text
 | 
			
		||||
				if attach.Footer != "" {
 | 
			
		||||
					rmsg.Text += "\n\n" + attach.Footer
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				rmsg.Text = attach.Fallback
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -127,7 +127,7 @@ var (
 | 
			
		||||
	mentionRE        = regexp.MustCompile(`<@([a-zA-Z0-9]+)>`)
 | 
			
		||||
	channelRE        = regexp.MustCompile(`<#[a-zA-Z0-9]+\|(.+?)>`)
 | 
			
		||||
	variableRE       = regexp.MustCompile(`<!((?:subteam\^)?[a-zA-Z0-9]+)(?:\|@?(.+?))?>`)
 | 
			
		||||
	urlRE            = regexp.MustCompile(`<(.*?)(\|.*?)?>`)
 | 
			
		||||
	urlRE            = regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`)
 | 
			
		||||
	codeFenceRE      = regexp.MustCompile(`(?m)^` + "```" + `\w+$`)
 | 
			
		||||
	topicOrPurposeRE = regexp.MustCompile(`(?s)(@.+) (cleared|set)(?: the)? channel (topic|purpose)(?:: (.*))?`)
 | 
			
		||||
)
 | 
			
		||||
@@ -181,14 +181,7 @@ func (b *Bslack) replaceVariable(text string) string {
 | 
			
		||||
 | 
			
		||||
// @see https://api.slack.com/docs/message-formatting#linking_to_urls
 | 
			
		||||
func (b *Bslack) replaceURL(text string) string {
 | 
			
		||||
	for _, r := range urlRE.FindAllStringSubmatch(text, -1) {
 | 
			
		||||
		if len(strings.TrimSpace(r[2])) == 1 { // A display text separator was found, but the text was blank
 | 
			
		||||
			text = strings.Replace(text, r[0], "", 1)
 | 
			
		||||
		} else {
 | 
			
		||||
			text = strings.Replace(text, r[0], r[1], 1)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return text
 | 
			
		||||
	return urlRE.ReplaceAllString(text, "[${2}](${1})")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (b *Bslack) replaceb0rkedMarkDown(text string) string {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user