42 lines
945 B
Go
42 lines
945 B
Go
package main
|
||
|
||
import (
|
||
"context"
|
||
"regexp"
|
||
"strings"
|
||
|
||
neco "git.nefrace.ru/nefrace/nechotron"
|
||
)
|
||
|
||
func karmaTriggers(u *neco.Update) bool {
|
||
triggers := GetTriggers()
|
||
|
||
text := u.Text()
|
||
for t, v := range triggers {
|
||
if strings.HasPrefix(text, t) {
|
||
u.Ctx = context.WithValue(u.Ctx, neco.FilteredValue("karmaTrigger"), t)
|
||
u.Ctx = context.WithValue(u.Ctx, neco.FilteredValue("karmaValue"), v)
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
var docRegex = regexp.MustCompile(`док(ументац[а-я]+|[а-я])? ((п)?о )?(?P<topic>@?[\w\d\s]{1,32})`)
|
||
|
||
func docRequest(u *neco.Update) bool {
|
||
text := u.Text()
|
||
matches := docRegex.FindStringSubmatch(text)
|
||
if len(matches) == 0 {
|
||
return false
|
||
}
|
||
result := make(map[string]string)
|
||
for i, name := range docRegex.SubexpNames() {
|
||
if i != 0 && name != "" {
|
||
result[name] = matches[i]
|
||
}
|
||
}
|
||
u.Ctx = context.WithValue(u.Ctx, neco.FilteredValue("docTopic"), result["topic"])
|
||
return true
|
||
}
|