18 lines
307 B
Go
18 lines
307 B
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"maps"
|
||
|
|
"regexp"
|
||
|
|
"slices"
|
||
|
|
)
|
||
|
|
|
||
|
|
var mentionRegex = regexp.MustCompile(`@([a-z0-9_]+)`)
|
||
|
|
|
||
|
|
func mentions(t string) []string {
|
||
|
|
seen := make(map[string]bool)
|
||
|
|
for _, m := range mentionRegex.FindAllStringSubmatch(t, -1) {
|
||
|
|
seen[m[1]] = true
|
||
|
|
}
|
||
|
|
return slices.Collect(maps.Keys(seen))
|
||
|
|
}
|