Skip to content

Commit

Permalink
群消息不再全部使用回复
Browse files Browse the repository at this point in the history
  • Loading branch information
CuteReimu committed May 27, 2024
1 parent cdd497a commit e0a4b73
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 85 deletions.
8 changes: 4 additions & 4 deletions fengsheng/bots.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func cmdHandleFunc(message *GroupMessage) bool {
if h.CheckAuth(message.GroupId, message.Sender.UserId) {
groupMsg := h.Execute(message, content)
if len(groupMsg) > 0 {
replyGroupMessage(message, groupMsg...)
sendGroupMessage(message, groupMsg...)
}
return true
}
Expand Down Expand Up @@ -92,7 +92,7 @@ func searchAt(message *GroupMessage) bool {
data := permData.GetStringMapString("playerMap")
name := data[at.QQ]
if len(name) == 0 {
replyGroupMessage(message, &Text{Text: "该玩家还未绑定"})
sendGroupMessage(message, &Text{Text: "该玩家还未绑定"})
} else {
go func() {
defer func() {
Expand All @@ -103,10 +103,10 @@ func searchAt(message *GroupMessage) bool {
result, returnError := httpGetString("/getscore", map[string]string{"name": name})
if returnError != nil {
slog.Error("请求失败", "error", returnError.error)
replyGroupMessage(message, returnError.message...)
sendGroupMessage(message, returnError.message...)
return
}
replyGroupMessage(message, &Text{Text: result})
sendGroupMessage(message, &Text{Text: result})
}()
}
}
Expand Down
4 changes: 2 additions & 2 deletions fengsheng/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ func (r *roll) CheckAuth(int64, int64) bool {
return true
}

func (r *roll) Execute(_ *GroupMessage, content string) MessageChain {
func (r *roll) Execute(message *GroupMessage, content string) MessageChain {
if len(content) == 0 {
return MessageChain{&Text{Text: "roll: " + strconv.Itoa(rand.IntN(100))}} //nolint:gosec
replyGroupMessage(true, message, &Text{Text: "roll: " + strconv.Itoa(rand.IntN(100))}) //nolint:gosec
}
return nil
}
45 changes: 21 additions & 24 deletions fengsheng/dictionary.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fengsheng

import (
//nolint:gosec
"encoding/json"
"errors"
"fmt"
Expand Down Expand Up @@ -30,19 +29,19 @@ func handleDictionary(message *GroupMessage) bool {
if perm && strings.HasPrefix(text.Text, "添加词条 ") {
key := dealKey(text.Text[len("添加词条"):])
if strings.Contains(key, ".") {
replyGroupMessage(message, &Text{Text: "词条名称中不能包含 . 符号"})
sendGroupMessage(message, &Text{Text: "词条名称中不能包含 . 符号"})
return true
}
if _, ok = cmdMap[key]; ok {
replyGroupMessage(message, &Text{Text: "不能用" + key + "作为词条"})
sendGroupMessage(message, &Text{Text: "不能用" + key + "作为词条"})
return true
}
if len(key) > 0 {
m := qunDb.GetStringMapString("data")
if _, ok = m[key]; ok {
replyGroupMessage(message, &Text{Text: "词条已存在"})
sendGroupMessage(message, &Text{Text: "词条已存在"})
} else {
replyGroupMessage(message, &Text{Text: "请输入要添加的内容"})
sendGroupMessage(message, &Text{Text: "请输入要添加的内容"})
addDbQQList[message.Sender.UserId] = key
}
}
Expand All @@ -52,9 +51,9 @@ func handleDictionary(message *GroupMessage) bool {
if len(key) > 0 {
m := qunDb.GetStringMapString("data")
if _, ok = m[key]; !ok {
replyGroupMessage(message, &Text{Text: "词条不存在"})
sendGroupMessage(message, &Text{Text: "词条不存在"})
} else {
replyGroupMessage(message, &Text{Text: "请输入要修改的内容"})
sendGroupMessage(message, &Text{Text: "请输入要修改的内容"})
addDbQQList[message.Sender.UserId] = key
}
}
Expand All @@ -64,14 +63,14 @@ func handleDictionary(message *GroupMessage) bool {
if len(key) > 0 {
m := qunDb.GetStringMapString("data")
if _, ok = m[key]; !ok {
replyGroupMessage(message, &Text{Text: "词条不存在"})
sendGroupMessage(message, &Text{Text: "词条不存在"})
} else {
delete(m, key)
qunDb.Set("data", m)
if err := qunDb.WriteConfig(); err != nil {
slog.Error("write data failed", "error", err)
}
replyGroupMessage(message, &Text{Text: "删除词条成功"})
sendGroupMessage(message, &Text{Text: "删除词条成功"})
}
}
return true
Expand All @@ -95,9 +94,9 @@ func handleDictionary(message *GroupMessage) bool {
for i := range res {
res[i] = fmt.Sprintf("%d. %s", i+1, res[i])
}
replyGroupMessage(message, &Text{Text: "搜索到以下词条:\n" + strings.Join(res, "\n")})
sendGroupMessage(message, &Text{Text: "搜索到以下词条:\n" + strings.Join(res, "\n")})
} else {
replyGroupMessage(message, &Text{Text: "搜索不到词条(" + key + ")"})
sendGroupMessage(message, &Text{Text: "搜索不到词条(" + key + ")"})
}
}
return true
Expand All @@ -107,13 +106,13 @@ func handleDictionary(message *GroupMessage) bool {
if key, ok := addDbQQList[message.Sender.UserId]; ok { // 添加词条
delete(addDbQQList, message.Sender.UserId)
if err := saveImage(message.Message); err != nil {
replyGroupMessage(message, &Text{Text: "编辑词条失败," + err.Error()})
sendGroupMessage(message, &Text{Text: "编辑词条失败," + err.Error()})
return true
}
buf, err := json.Marshal(&message.Message)
if err != nil {
slog.Error("json marshal failed", "error", err)
replyGroupMessage(message, &Text{Text: "编辑词条失败"})
sendGroupMessage(message, &Text{Text: "编辑词条失败"})
return true
}
m := qunDb.GetStringMapString("data")
Expand All @@ -122,7 +121,7 @@ func handleDictionary(message *GroupMessage) bool {
if err = qunDb.WriteConfig(); err != nil {
slog.Error("write data failed", "error", err)
}
replyGroupMessage(message, &Text{Text: "编辑词条成功"})
sendGroupMessage(message, &Text{Text: "编辑词条成功"})
} else { // 调用词条
if len(message.Message) == 1 {
if text, ok := message.Message[0].(*Text); ok {
Expand All @@ -132,10 +131,10 @@ func handleDictionary(message *GroupMessage) bool {
var ms MessageChain
if err := json.Unmarshal([]byte(s), &ms); err != nil {
slog.Error("json unmarshal failed", "error", err, "s", s)
replyGroupMessage(message, &Text{Text: "调用词条失败"})
sendGroupMessage(message, &Text{Text: "调用词条失败"})
return true
}
replyGroupMessage(message, ms...)
sendGroupMessage(message, ms...)
}
}
}
Expand Down Expand Up @@ -176,18 +175,16 @@ func saveImage(message MessageChain) error {
return nil
}

func replyGroupMessage(context *GroupMessage, messages ...SingleMessage) {
func sendGroupMessage(context *GroupMessage, messages ...SingleMessage) {
replyGroupMessage(false, context, messages...)
}

func replyGroupMessage(reply bool, context *GroupMessage, messages ...SingleMessage) {
if len(messages) == 0 {
return
}
f := func(messages []SingleMessage) error {
if slices.ContainsFunc(messages, func(message SingleMessage) bool {
switch message.(type) {
case *Text, *Image, *Face:
return false
}
return true
}) {
if !reply {
_, err := B.SendGroupMessage(context.GroupId, messages)
return err
}
Expand Down
Loading

0 comments on commit e0a4b73

Please sign in to comment.