Skip to content

Commit 6f21d81

Browse files
committed
flashImg showImg
1 parent 43b421c commit 6f21d81

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

pkg/clz/clz.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ type MyVideoElement struct {
1717

1818
type LocalImageElement struct {
1919
message.ImageElement
20-
Stream io.ReadSeeker
20+
Stream io.ReadSeeker
21+
Tp string // 类型 flash/show
22+
EffectId int32 // show的特效id,范围40000-40005
2123
}
2224

2325
type GiftElement struct {

service/bot/api_handler.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,16 @@ func preProcessPrivateSendingMessage(cli *client.QQClient, target int64, m *mess
4242
newElements := make([]message.IMessageElement, 0, len(m.Elements))
4343
for _, element := range m.Elements {
4444
if i, ok := element.(*clz.LocalImageElement); ok {
45-
gm, err := cli.UploadPrivateImage(target, i.Stream)
45+
img, err := cli.UploadPrivateImage(target, i.Stream)
4646
if err != nil {
4747
log.Errorf("failed to upload private image, %+v", err)
4848
continue
4949
}
50-
newElements = append(newElements, gm)
50+
if i.Tp == "flash" {
51+
newElements = append(newElements, &message.FriendFlashPicElement{FriendImageElement: *img})
52+
} else {
53+
newElements = append(newElements, img)
54+
}
5155
continue
5256
}
5357
if i, ok := element.(*message.VoiceElement); ok {
@@ -77,12 +81,18 @@ func preProcessGroupSendingMessage(cli *client.QQClient, groupCode int64, m *mes
7781
continue
7882
}
7983
if i, ok := element.(*clz.LocalImageElement); ok {
80-
gm, err := cli.UploadGroupImage(groupCode, i.Stream)
84+
img, err := cli.UploadGroupImage(groupCode, i.Stream)
8185
if err != nil {
8286
log.Errorf("failed to upload group image, %+v", err)
8387
continue
8488
}
85-
newElements = append(newElements, gm)
89+
if i.Tp == "flash" {
90+
newElements = append(newElements, &message.GroupFlashPicElement{GroupImageElement: *img})
91+
} else if i.Tp == "show" {
92+
newElements = append(newElements, &message.GroupShowPicElement{GroupImageElement: *img, EffectId: i.EffectId})
93+
} else {
94+
newElements = append(newElements, img)
95+
}
8696
continue
8797
}
8898
if i, ok := element.(*message.VoiceElement); ok {

service/bot/mirai2raw.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ func MiraiMsgToRawMsg(messageChain []message.IMessageElement) string {
1818
result += fmt.Sprintf(`<at qq="%d"/>`, elem.Target)
1919
case *message.ImageElement:
2020
result += fmt.Sprintf(`<image url="%s"/>`, html.EscapeString(elem.Url))
21+
case *clz.LocalImageElement:
22+
result += fmt.Sprintf(`<image sending/>`)
2123
case *message.FaceElement:
2224
result += fmt.Sprintf(`<face id="%d" name="%s"/>`, elem.Index, html.EscapeString(elem.Name))
2325
case *message.VoiceElement:

service/bot/proto2mirai.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,26 @@ func ProtoImageToMiraiImage(data map[string]string) message.IMessageElement {
104104
return EmptyText()
105105
}
106106
elem.Stream = bytes.NewReader(b)
107-
return elem
108107
} else {
109108
imageFile, err := os.Open(url)
110109
if err != nil {
111110
log.Errorf("failed to open local image")
112111
return EmptyText()
113112
}
114113
elem.Stream = imageFile
115-
return elem
116114
}
115+
116+
elem.Tp = data["type"] // show或flash
117+
if elem.Tp == "show" {
118+
effectIdStr := data["effect_id"]
119+
effectId, err := strconv.Atoi(effectIdStr)
120+
if err != nil || effectId < 40000 || effectId > 40005 {
121+
effectId = 40000
122+
}
123+
elem.EffectId = int32(effectId)
124+
}
125+
126+
return elem
117127
}
118128

119129
func ProtoVoiceToMiraiVoice(data map[string]string) message.IMessageElement {

0 commit comments

Comments
 (0)