MCPcopy Create free account
hub / github.com/FloatTech/ZeroBot-Plugin-Playground / init

Function init

plugin/chatgpt/main.go:42–281  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

40)
41
42func init() {
43 engine.OnRegex(`^(?:chatgpt|//)([\s\S]*)$`, zero.OnlyToMe, getdb).SetBlock(false).
44 Handle(func(ctx *zero.Ctx) {
45 var messages []chatMessage
46 args := ctx.State["regex_matched"].([]string)[1]
47 key := sessionKey{
48 group: ctx.Event.GroupID,
49 user: ctx.Event.UserID,
50 }
51 if args == "reset" || args == "重置记忆" {
52 cache.Delete(key)
53 ctx.SendChain(message.Text("已清除上下文!"))
54 return
55 }
56 // 添加预设
57 apiKey, err := getkey(ctx)
58 if err != nil {
59 ctx.SendChain(message.Text("ERROR:", err))
60 return
61 }
62 gid := ctx.Event.GroupID
63 if gid == 0 {
64 gid = -ctx.Event.UserID
65 }
66 content, err := db.findgroupmode(gid)
67 if err == nil {
68 messages = append(messages, chatMessage{
69 Role: "system",
70 Content: content,
71 })
72 if len(cache.Get(key)) > 1 {
73 messages = append(messages, cache.Get(key)[1:]...)
74 }
75 } else {
76 c, err := db.findgroupmode(-1)
77 if err != nil {
78 messages = append(messages, cache.Get(key)...)
79 } else {
80 messages = append(messages, chatMessage{
81 Role: "system",
82 Content: c,
83 })
84 if len(cache.Get(key)) > 1 {
85 messages = append(messages, cache.Get(key)[1:]...)
86 }
87 }
88 }
89 messages = append(messages, chatMessage{
90 Role: "user",
91 Content: args,
92 })
93 resp, err := completions(messages, apiKey)
94 if err != nil {
95 ctx.SendChain(message.Text("请求ChatGPT失败: ", err))
96 return
97 }
98 reply := resp.Choices[0].Message
99 reply.Content = strings.TrimSpace(reply.Content)

Callers

nothing calls this directly

Calls 13

getkeyFunction · 0.85
completionsFunction · 0.85
findgroupmodeMethod · 0.80
insertkeyMethod · 0.80
delkeyMethod · 0.80
insertmodeMethod · 0.80
changemodeMethod · 0.80
delgroupmodeMethod · 0.80
findformodeMethod · 0.80
findmodeMethod · 0.80
insertgkeyMethod · 0.80
delgkeyMethod · 0.80

Tested by

no test coverage detected