Skip to content

Commit 034d591

Browse files
committed
tts
1 parent 6c2d231 commit 034d591

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

service/bot/api_handler.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func preProcessGroupSendingMessage(cli *client.QQClient, groupCode int64, m *mes
9898
}
9999

100100
func HandleSendPrivateMsg(cli *client.QQClient, req *onebot.SendPrivateMsgReq) *onebot.SendPrivateMsgResp {
101-
miraiMsg := ProtoMsgToMiraiMsg(req.Message, req.AutoEscape)
101+
miraiMsg := ProtoMsgToMiraiMsg(cli, req.Message, req.AutoEscape)
102102
sendingMessage := &message.SendingMessage{Elements: miraiMsg}
103103
log.Infof("Bot(%d) Private(%d) <- %s", cli.Uin, req.UserId, MiraiMsgToRawMsg(miraiMsg))
104104
preProcessPrivateSendingMessage(cli, req.UserId, sendingMessage)
@@ -110,7 +110,7 @@ func HandleSendPrivateMsg(cli *client.QQClient, req *onebot.SendPrivateMsgReq) *
110110
}
111111

112112
func HandleSendGroupMsg(cli *client.QQClient, req *onebot.SendGroupMsgReq) *onebot.SendGroupMsgResp {
113-
miraiMsg := ProtoMsgToMiraiMsg(req.Message, req.AutoEscape)
113+
miraiMsg := ProtoMsgToMiraiMsg(cli, req.Message, req.AutoEscape)
114114
sendingMessage := &message.SendingMessage{Elements: miraiMsg}
115115
log.Infof("Bot(%d) Group(%d) <- %s", cli.Uin, req.GroupId, MiraiMsgToRawMsg(miraiMsg))
116116
preProcessGroupSendingMessage(cli, req.GroupId, sendingMessage)
@@ -126,7 +126,7 @@ func HandleSendGroupMsg(cli *client.QQClient, req *onebot.SendGroupMsgReq) *oneb
126126
}
127127

128128
func HandleSendMsg(cli *client.QQClient, req *onebot.SendMsgReq) *onebot.SendMsgResp {
129-
miraiMsg := ProtoMsgToMiraiMsg(req.Message, req.AutoEscape)
129+
miraiMsg := ProtoMsgToMiraiMsg(cli, req.Message, req.AutoEscape)
130130
sendingMessage := &message.SendingMessage{Elements: miraiMsg}
131131
if req.GroupId != 0 {
132132
preProcessGroupSendingMessage(cli, req.GroupId, sendingMessage)

service/bot/proto2mirai.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"strings"
66
"time"
77

8+
"github.com/Mrs4s/MiraiGo/client"
89
"github.com/Mrs4s/MiraiGo/message"
910
"github.com/ProtobufBot/Go-Mirai-Client/pkg/util"
1011
"github.com/ProtobufBot/Go-Mirai-Client/proto_gen/onebot"
@@ -17,7 +18,7 @@ func EmptyText() *message.TextElement {
1718
}
1819

1920
// 消息列表,不自动把code变成msg
20-
func ProtoMsgToMiraiMsg(msgList []*onebot.Message, notConvertText bool) []message.IMessageElement {
21+
func ProtoMsgToMiraiMsg(cli *client.QQClient, msgList []*onebot.Message, notConvertText bool) []message.IMessageElement {
2122
containReply := false // 每条消息只能包含一个reply
2223
messageChain := make([]message.IMessageElement, 0)
2324
for _, protoMsg := range msgList {
@@ -31,7 +32,7 @@ func ProtoMsgToMiraiMsg(msgList []*onebot.Message, notConvertText bool) []messag
3132
log.Warnf("text不存在")
3233
continue
3334
}
34-
messageChain = append(messageChain, RawMsgToMiraiMsg(text)...) // 转换xml码
35+
messageChain = append(messageChain, RawMsgToMiraiMsg(cli, text)...) // 转换xml码
3536
}
3637
case "at":
3738
messageChain = append(messageChain, ProtoAtToMiraiAt(protoMsg.Data))
@@ -56,6 +57,8 @@ func ProtoMsgToMiraiMsg(msgList []*onebot.Message, notConvertText bool) []messag
5657
}
5758
case "sleep":
5859
ProtoSleep(protoMsg.Data)
60+
case "tts":
61+
messageChain = append(messageChain, ProtoTtsToMiraiTts(cli, protoMsg.Data))
5962
default:
6063
log.Errorf("不支持的消息类型 %+v", protoMsg)
6164
}
@@ -274,3 +277,23 @@ func ProtoSleep(data map[string]string) {
274277
}
275278
time.Sleep(time.Duration(ms) * time.Millisecond)
276279
}
280+
281+
func ProtoTtsToMiraiTts(cli *client.QQClient, data map[string]string) (m message.IMessageElement) {
282+
defer func() {
283+
if r := recover(); r != nil {
284+
log.Warnf("tts 转换失败")
285+
m = EmptyText()
286+
}
287+
}()
288+
text, ok := data["text"]
289+
if !ok {
290+
log.Warnf("text不存在")
291+
return EmptyText()
292+
}
293+
b, err := cli.GetTts(text)
294+
if err != nil {
295+
log.Warnf("failed to get tts")
296+
return EmptyText()
297+
}
298+
return &message.VoiceElement{Data: b}
299+
}

service/bot/raw2mirai.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package bot
22

33
import (
4+
"encoding/xml"
45
"html"
56
"regexp"
67
"strings"
78

8-
"encoding/xml"
9+
"github.com/Mrs4s/MiraiGo/client"
910
"github.com/Mrs4s/MiraiGo/message"
1011
log "github.com/sirupsen/logrus"
1112
)
@@ -17,7 +18,7 @@ type Node struct {
1718

1819
var re = regexp.MustCompile("<[\\s\\S]+?/>")
1920

20-
func RawMsgToMiraiMsg(str string) []message.IMessageElement {
21+
func RawMsgToMiraiMsg(cli *client.QQClient, str string) []message.IMessageElement {
2122
containReply := false
2223
var node Node
2324
textList := re.Split(str, -1)
@@ -71,6 +72,8 @@ func RawMsgToMiraiMsg(str string) []message.IMessageElement {
7172
}
7273
case "sleep":
7374
ProtoSleep(attrMap)
75+
case "tts":
76+
elemList = append(elemList, ProtoTtsToMiraiTts(cli, attrMap))
7477
default:
7578
log.Warnf("不支持的类型 %s", code)
7679
elemList = append(elemList, message.NewText(code))

0 commit comments

Comments
 (0)