mirror of
https://github.com/fumiama/go-onebot-agent.git
synced 2026-06-05 02:00:23 +08:00
feat: add memory
This commit is contained in:
44
memory.go
Normal file
44
memory.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package goba
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
zero "github.com/wdvxdr1123/ZeroBot"
|
||||
)
|
||||
|
||||
var (
|
||||
errEmptyMempry = errors.New("empty memory")
|
||||
errMemoryHasReturn = errors.New("memory has \\r|\\n")
|
||||
)
|
||||
|
||||
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 "", errEmptyMempry
|
||||
}
|
||||
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()
|
||||
}
|
||||
Reference in New Issue
Block a user