fix out of channel mentions for mentioned word with valid punctuations (#8585)

Этот коммит содержится в:
Saturnino Abril
2018-04-06 21:41:45 +08:00
коммит произвёл Derrick Anderson
родитель f7dd715052
Коммит e16217166d
2 изменённых файлов: 10 добавлений и 8 удалений

Просмотреть файл

@@ -897,7 +897,9 @@ func GetExplicitMentions(message string, keywords map[string][]string) *Explicit
continue continue
} }
if strings.ContainsAny(word, ".-:") { if _, ok := systemMentions[word]; !ok && strings.HasPrefix(word, "@") {
ret.OtherPotentialMentions = append(ret.OtherPotentialMentions, word[1:])
} else if strings.ContainsAny(word, ".-:") {
// This word contains a character that may be the end of a sentence, so split further // This word contains a character that may be the end of a sentence, so split further
splitWords := strings.FieldsFunc(word, func(c rune) bool { splitWords := strings.FieldsFunc(word, func(c rune) bool {
return c == '.' || c == '-' || c == ':' return c == '.' || c == '-' || c == ':'
@@ -908,16 +910,10 @@ func GetExplicitMentions(message string, keywords map[string][]string) *Explicit
continue continue
} }
if _, ok := systemMentions[splitWord]; !ok && strings.HasPrefix(splitWord, "@") { if _, ok := systemMentions[splitWord]; !ok && strings.HasPrefix(splitWord, "@") {
username := splitWord[1:] ret.OtherPotentialMentions = append(ret.OtherPotentialMentions, splitWord[1:])
ret.OtherPotentialMentions = append(ret.OtherPotentialMentions, username)
} }
} }
} }
if _, ok := systemMentions[word]; !ok && strings.HasPrefix(word, "@") {
username := word[1:]
ret.OtherPotentialMentions = append(ret.OtherPotentialMentions, username)
}
} }
} }

Просмотреть файл

@@ -234,6 +234,12 @@ func TestGetExplicitMentions(t *testing.T) {
OtherPotentialMentions: []string{"potential"}, OtherPotentialMentions: []string{"potential"},
}, },
}, },
"PotentialOutOfChannelUserWithPeriod": {
Message: "this is an message for @potential.user",
Expected: &ExplicitMentions{
OtherPotentialMentions: []string{"potential.user"},
},
},
"InlineCode": { "InlineCode": {
Message: "`this shouldn't mention @channel at all`", Message: "`this shouldn't mention @channel at all`",
Keywords: map[string][]string{}, Keywords: map[string][]string{},