fix out of channel mentions for mentioned word with valid punctuations (#8585)
Этот коммит содержится в:
коммит произвёл
Derrick Anderson
родитель
f7dd715052
Коммит
e16217166d
@@ -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{},
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user