mirror of
https://github.com/fumiama/go-onebot-agent.git
synced 2026-06-05 02:00:23 +08:00
46 lines
832 B
Go
46 lines
832 B
Go
package goba
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
|
|
zero "github.com/wdvxdr1123/ZeroBot"
|
|
)
|
|
|
|
var (
|
|
errEmptyMemory = errors.New("empty memory")
|
|
errMemoryHasReturn = errors.New("memory has \\r|\\n")
|
|
)
|
|
|
|
// MemoryStorage can be a db or just some files
|
|
type MemoryStorage interface {
|
|
Save(grp int64, text string) error
|
|
Load(grp int64) []string
|
|
}
|
|
|
|
func extractMemory(r *zero.APIRequest) (string, error) {
|
|
txt, ok := r.Params["text"].(string)
|
|
if !ok || txt == "" {
|
|
return "", errEmptyMemory
|
|
}
|
|
for _, c := range txt {
|
|
if c == '\r' || c == '\n' {
|
|
return "", errMemoryHasReturn
|
|
}
|
|
}
|
|
return txt, nil
|
|
}
|
|
|
|
func (ag *Agent) memoryof(grp int64) string {
|
|
mems := ag.mem.Load(grp)
|
|
if len(mems) == 0 {
|
|
return ""
|
|
}
|
|
sb := strings.Builder{}
|
|
for _, m := range mems {
|
|
sb.WriteByte('\n')
|
|
sb.WriteString(m)
|
|
}
|
|
return sb.String()
|
|
}
|