Skip to content

Commit 8a88877

Browse files
committed
add dice
1 parent 714d087 commit 8a88877

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

pkg/bot/mirai2proto.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ func MiraiMsgToProtoMsg(cli *client.QQClient, messageChain []message.IMessageEle
1818
msgList = append(msgList, MiraiTextToProtoText(elem))
1919
case *message.AtElement:
2020
msgList = append(msgList, MiraiAtToProtoAt(elem))
21+
case *message.DiceElement:
22+
msgList = append(msgList, MiraiDiceToProtoDice(elem))
2123
case *message.FriendImageElement:
2224
msgList = append(msgList, MiraiFriendImageToProtoImage(elem))
2325
case *message.GroupImageElement:
@@ -108,6 +110,15 @@ func MiraiAtToProtoAt(elem *message.AtElement) *onebot.Message {
108110
}
109111
}
110112

113+
func MiraiDiceToProtoDice(elem *message.DiceElement) *onebot.Message {
114+
return &onebot.Message{
115+
Type: "dice",
116+
Data: map[string]string{
117+
"value": strconv.FormatInt(int64(elem.Value), 10),
118+
},
119+
}
120+
}
121+
111122
func MiraiFaceToProtoFace(elem *message.FaceElement) *onebot.Message {
112123
return &onebot.Message{
113124
Type: "face",

pkg/bot/mirai2raw.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ func MiraiMsgToRawMsg(cli *client.QQClient, messageChain []message.IMessageEleme
1818
result += elem.Content
1919
case *message.AtElement:
2020
result += fmt.Sprintf(`<at qq="%d"/>`, elem.Target)
21+
case *message.DiceElement:
22+
result += fmt.Sprintf(`<dice value="%d"/>`, elem.Value)
2123
case *message.FriendImageElement:
2224
result += fmt.Sprintf(`<image image_id="%s" url="%s"/>`, html.EscapeString(elem.ImageId), html.EscapeString(elem.Url))
2325
case *message.GroupImageElement:

pkg/bot/proto2mirai.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package bot
33
import (
44
"bytes"
55
"io/ioutil"
6+
"math/rand"
67
"os"
78
"path"
89
"strconv"
@@ -42,6 +43,8 @@ func ProtoMsgToMiraiMsg(cli *client.QQClient, msgList []*onebot.Message, notConv
4243
}
4344
case "at":
4445
messageChain = append(messageChain, ProtoAtToMiraiAt(protoMsg.Data))
46+
case "dice":
47+
messageChain = append(messageChain, ProtoDiceToMiraiDice(protoMsg.Data))
4548
case "poke":
4649
messageChain = append(messageChain, ProtoPokeToMiraiPoke(protoMsg.Data))
4750
case "image":
@@ -168,6 +171,18 @@ func ProtoAtToMiraiAt(data map[string]string) message.IMessageElement {
168171
return message.NewAt(userId)
169172
}
170173

174+
func ProtoDiceToMiraiDice(data map[string]string) message.IMessageElement {
175+
value := int32(rand.Intn(6) + 1)
176+
valueStr, ok := data["value"]
177+
if ok {
178+
v, err := strconv.ParseInt(valueStr, 10, 64)
179+
if err == nil && v >= 1 && v <= 6 {
180+
value = int32(v)
181+
}
182+
}
183+
return message.NewDice(value)
184+
}
185+
171186
func ProtoPokeToMiraiPoke(data map[string]string) message.IMessageElement {
172187
qq, ok := data["qq"]
173188
if !ok {

pkg/bot/raw2mirai.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ func RawMsgToMiraiMsg(cli *client.QQClient, str string) []message.IMessageElemen
4747
switch node.XMLName.Local {
4848
case "at":
4949
elemList = append(elemList, ProtoAtToMiraiAt(attrMap))
50+
case "dice":
51+
elemList = append(elemList, ProtoDiceToMiraiDice(attrMap))
5052
case "poke":
5153
elemList = append(elemList, ProtoPokeToMiraiPoke(attrMap))
5254
case "img":

0 commit comments

Comments
 (0)