Skip to content

Commit

Permalink
flashImg showImg
Browse files Browse the repository at this point in the history
  • Loading branch information
lz1998 committed Mar 25, 2021
1 parent 43b421c commit 6f21d81
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 7 deletions.
4 changes: 3 additions & 1 deletion pkg/clz/clz.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ type MyVideoElement struct {

type LocalImageElement struct {
message.ImageElement
Stream io.ReadSeeker
Stream io.ReadSeeker
Tp string // 类型 flash/show
EffectId int32 // show的特效id,范围40000-40005
}

type GiftElement struct {
Expand Down
18 changes: 14 additions & 4 deletions service/bot/api_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,16 @@ func preProcessPrivateSendingMessage(cli *client.QQClient, target int64, m *mess
newElements := make([]message.IMessageElement, 0, len(m.Elements))
for _, element := range m.Elements {
if i, ok := element.(*clz.LocalImageElement); ok {
gm, err := cli.UploadPrivateImage(target, i.Stream)
img, err := cli.UploadPrivateImage(target, i.Stream)
if err != nil {
log.Errorf("failed to upload private image, %+v", err)
continue
}
newElements = append(newElements, gm)
if i.Tp == "flash" {
newElements = append(newElements, &message.FriendFlashPicElement{FriendImageElement: *img})
} else {
newElements = append(newElements, img)
}
continue
}
if i, ok := element.(*message.VoiceElement); ok {
Expand Down Expand Up @@ -77,12 +81,18 @@ func preProcessGroupSendingMessage(cli *client.QQClient, groupCode int64, m *mes
continue
}
if i, ok := element.(*clz.LocalImageElement); ok {
gm, err := cli.UploadGroupImage(groupCode, i.Stream)
img, err := cli.UploadGroupImage(groupCode, i.Stream)
if err != nil {
log.Errorf("failed to upload group image, %+v", err)
continue
}
newElements = append(newElements, gm)
if i.Tp == "flash" {
newElements = append(newElements, &message.GroupFlashPicElement{GroupImageElement: *img})
} else if i.Tp == "show" {
newElements = append(newElements, &message.GroupShowPicElement{GroupImageElement: *img, EffectId: i.EffectId})
} else {
newElements = append(newElements, img)
}
continue
}
if i, ok := element.(*message.VoiceElement); ok {
Expand Down
2 changes: 2 additions & 0 deletions service/bot/mirai2raw.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ func MiraiMsgToRawMsg(messageChain []message.IMessageElement) string {
result += fmt.Sprintf(`<at qq="%d"/>`, elem.Target)
case *message.ImageElement:
result += fmt.Sprintf(`<image url="%s"/>`, html.EscapeString(elem.Url))
case *clz.LocalImageElement:
result += fmt.Sprintf(`<image sending/>`)
case *message.FaceElement:
result += fmt.Sprintf(`<face id="%d" name="%s"/>`, elem.Index, html.EscapeString(elem.Name))
case *message.VoiceElement:
Expand Down
14 changes: 12 additions & 2 deletions service/bot/proto2mirai.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,26 @@ func ProtoImageToMiraiImage(data map[string]string) message.IMessageElement {
return EmptyText()
}
elem.Stream = bytes.NewReader(b)
return elem
} else {
imageFile, err := os.Open(url)
if err != nil {
log.Errorf("failed to open local image")
return EmptyText()
}
elem.Stream = imageFile
return elem
}

elem.Tp = data["type"] // show或flash
if elem.Tp == "show" {
effectIdStr := data["effect_id"]
effectId, err := strconv.Atoi(effectIdStr)
if err != nil || effectId < 40000 || effectId > 40005 {
effectId = 40000
}
elem.EffectId = int32(effectId)
}

return elem
}

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

0 comments on commit 6f21d81

Please sign in to comment.