From d0b3993934747148709ed5450d856d1ea0145b20 Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Tue, 9 Mar 2021 21:59:51 +0800 Subject: [PATCH] feat: face map generate --- message/elements.go | 269 +------------------------------------------- message/face.go | 244 ++++++++++++++++++++++++++++++++++++++++ message/generate.go | 60 ++++++++++ message/pack.go | 2 +- 4 files changed, 308 insertions(+), 267 deletions(-) create mode 100644 message/face.go create mode 100644 message/generate.go diff --git a/message/elements.go b/message/elements.go index 04647d03..8d3471ef 100644 --- a/message/elements.go +++ b/message/elements.go @@ -9,6 +9,9 @@ import ( "github.com/Mrs4s/MiraiGo/client/pb/msg" ) +//todo: github actions +//go:generate go run generate.go + type TextElement struct { Content string } @@ -62,7 +65,6 @@ type FriendImageElement struct { type FaceElement struct { Index int32 - NewSysFace bool Name string } @@ -208,14 +210,6 @@ func NewGroupImage(id string, md5 []byte, fid int64, size, width, height, imageT func NewFace(index int32) *FaceElement { name := faceMap[int(index)] if name == "" { - name = newSysFaceMap[int(index)] - if name != "" { - return &FaceElement{ - Index: index, - NewSysFace: true, - Name: name, - } - } name = "未知表情" } return &FaceElement{ @@ -367,260 +361,3 @@ func (e *MusicShareElement) Type() ElementType { func (e *RedBagElement) Type() ElementType { return RedBag } - -var faceMap = map[int]string{ - 14: "微笑", - 1: "撇嘴", - 2: "色", - 3: "发呆", - 4: "得意", - 5: "流泪", - 6: "害羞", - 7: "闭嘴", - 8: "睡", - 9: "大哭", - 10: "尴尬", - 11: "发怒", - 12: "调皮", - 13: "呲牙", - 0: "惊讶", - 15: "难过", - 16: "酷", - 96: "冷汗", - 18: "抓狂", - 19: "吐", - 20: "偷笑", - 21: "可爱", - 22: "白眼", - 23: "傲慢", - 24: "饥饿", - 25: "困", - 26: "惊恐", - 27: "流汗", - 28: "憨笑", - 29: "大兵", - 30: "奋斗", - 31: "咒骂", - 32: "疑问", - 33: "嘘", - 34: "晕", - 35: "折磨", - 36: "衰", - 37: "骷髅", - 38: "敲打", - 39: "再见", - 97: "擦汗", - 98: "抠鼻", - 99: "鼓掌", - 100: "糗大了", - 101: "坏笑", - 102: "左哼哼", - 103: "右哼哼", - 104: "哈欠", - 105: "鄙视", - 106: "委屈", - 107: "快哭了", - 108: "阴险", - 305: "右亲亲", - 109: "左亲亲", - 110: "吓", - 111: "可怜", - 172: "眨眼睛", - 182: "笑哭", - 179: "doge", - 173: "泪奔", - 174: "无奈", - 212: "托腮", - 175: "卖萌", - 178: "斜眼笑", - 177: "喷血", - 180: "惊喜", - 181: "骚扰", - 176: "小纠结", - 183: "我最美", - - // newSysFaceMap - - 192: "红包", - 137: "嗨皮牛耶", - 138: "灯笼", - 136: "双喜", - - // newSysFaceMap - - 112: "菜刀", - 89: "西瓜", - 113: "啤酒", - 114: "篮球", - 115: "乒乓", - 171: "茶", - 60: "咖啡", - 61: "饭", - 46: "猪头", - 63: "玫瑰", - 64: "凋谢", - 116: "示爱", - 66: "爱心", - 67: "心碎", - 53: "蛋糕", - 54: "闪电", - 55: "炸弹", - 56: "刀", - - 145: "祈祷", - 57: "足球", - 117: "瓢虫", - 59: "便便", - 75: "月亮", - 74: "太阳", - 69: "礼物", - 49: "拥抱", - 76: "强", - 77: "弱", - 78: "握手", - 79: "胜利", - 118: "抱拳", - 119: "勾引", - 120: "拳头", - 121: "差劲", - 122: "爱你", - 123: "NO", - 124: "OK", - 42: "爱情", - 85: "飞吻", - 43: "跳跳", - 41: "发抖", - 86: "怄火", - 125: "转圈", - 126: "磕头", - 127: "回头", - 128: "跳绳", - 129: "挥手", - 130: "激动", - 131: "街舞", - 132: "献吻", - 133: "左太极", - 134: "右太极", - 140: "K歌", - 144: "喝彩", - 146: "爆筋", - 147: "棒棒糖", - 148: "喝奶", - 151: "飞机", - 158: "钞票", - 168: "药", - 169: "手枪", - 188: "蛋", - 184: "河蟹", - 185: "羊驼", - 190: "菊花", - 187: "幽灵", - 193: "大笑", - 194: "不开心", - 197: "冷漠", - 198: "呃", - 199: "好棒", - 200: "拜托", - 201: "点赞", - 202: "无聊", - 203: "托脸", - 204: "吃", - 205: "送花", - 206: "害怕", - 207: "花痴", - 208: "小样儿", - 210: "飙泪", - 211: "我不看", - - // newSysFaceMap -} - -var newSysFaceMap = map[int]string{ - - 245: "加油必胜", - 246: "加油抱抱", - 247: "口罩护体", - 260: "搬砖中", - 261: "忙到飞起", - 262: "脑阔疼", - 263: "沧桑", - 264: "捂脸", - 265: "辣眼睛", - 266: "哦呦", - 267: "头秃", - 268: "问号脸", - 269: "暗中观察", - 270: "emm", - 271: "吃瓜", - 272: "呵呵哒", - 277: "汪汪", - 307: "牛转钱坤", - 306: "牛气冲天", - 281: "无眼笑", - 282: "敬礼", - 283: "狂笑", - 284: "面无表情", - 285: "摸鱼", - 293: "摸锦鲤", - 286: "魔鬼笑", - 287: "哦", - 288: "请", - 289: "睁眼", - 294: "期待", - 295: "拿到红包", - 296: "真好", - 297: "拜谢", - 298: "元宝", - 299: "牛啊", - 300: "胖三斤", - 301: "好闪", - 303: "右拜年", - 302: "左拜年", - 304: "红包包", - - 273: "我酸了", - 274: "太南了", - - 308: "求红包", - 309: "谢红包", - 310: "新年烟花", - 290: "敲开心", - 291: "震惊", - 292: "让我康康", - 278: "汗", - 279: "打脸", - 280: "击掌", - 242: "头撞击", - 243: "甩头", - 244: "扔狗", - 215: "糊脸", - 237: "偷看", - 226: "拍桌", - 214: "啵啵", - 217: "扯一扯", - 240: "喷脸", - 216: "拍头", - 218: "舔一舔", - 229: "干杯", - 238: "扇脸", - 219: "蹭一蹭", - 225: "撩一撩", - 231: "哼", - 233: "掐一掐", - 221: "顶呱呱", - 222: "抱抱", - 239: "原谅", - 232: "佛系", - 220: "拽炸天", - 235: "颤抖", - 241: "生日快乐", - 230: "嘲讽", - 224: "开枪", - 236: "啃头", - 228: "恭喜", - 234: "惊呆", - 223: "暴击", - 227: "拍手", - - 276: "辣椒酱", // 疑似删除 -} diff --git a/message/face.go b/message/face.go new file mode 100644 index 00000000..7fbe8a92 --- /dev/null +++ b/message/face.go @@ -0,0 +1,244 @@ +// Code generated by message/generate.go DO NOT EDIT. + +package message + +var faceMap = map[int]string{ + 14: "微笑", + 1: "撇嘴", + 2: "色", + 3: "发呆", + 4: "得意", + 5: "流泪", + 6: "害羞", + 7: "闭嘴", + 8: "睡", + 9: "大哭", + 10: "尴尬", + 11: "发怒", + 12: "调皮", + 13: "呲牙", + 0: "惊讶", + 15: "难过", + 16: "酷", + 96: "冷汗", + 18: "抓狂", + 19: "吐", + 20: "偷笑", + 21: "可爱", + 22: "白眼", + 23: "傲慢", + 24: "饥饿", + 25: "困", + 26: "惊恐", + 27: "流汗", + 28: "憨笑", + 29: "悠闲", + 30: "奋斗", + 31: "咒骂", + 32: "疑问", + 33: "嘘", + 34: "晕", + 35: "折磨", + 36: "衰", + 37: "骷髅", + 38: "敲打", + 39: "再见", + 97: "擦汗", + 98: "抠鼻", + 99: "鼓掌", + 100: "糗大了", + 101: "坏笑", + 102: "左哼哼", + 103: "右哼哼", + 104: "哈欠", + 105: "鄙视", + 106: "委屈", + 107: "快哭了", + 108: "阴险", + 305: "右亲亲", + 109: "左亲亲", + 110: "吓", + 111: "可怜", + 172: "眨眼睛", + 182: "笑哭", + 179: "doge", + 173: "泪奔", + 174: "无奈", + 212: "托腮", + 175: "卖萌", + 178: "斜眼笑", + 177: "喷血", + 180: "惊喜", + 181: "骚扰", + 176: "小纠结", + 183: "我最美", + 245: "加油必胜", + 246: "加油抱抱", + 247: "口罩护体", + 260: "搬砖中", + 261: "忙到飞起", + 262: "脑阔疼", + 263: "沧桑", + 264: "捂脸", + 265: "辣眼睛", + 266: "哦哟", + 267: "头秃", + 268: "问号脸", + 269: "暗中观察", + 270: "emm", + 271: "吃瓜", + 272: "呵呵哒", + 277: "汪汪", + 307: "喵喵", + 306: "牛气冲天", + 281: "无眼笑", + 282: "敬礼", + 283: "狂笑", + 284: "面无表情", + 285: "摸鱼", + 293: "摸锦鲤", + 286: "魔鬼笑", + 287: "哦", + 288: "请", + 289: "睁眼", + 294: "期待", + 295: "拿到红包", + 296: "真好", + 297: "拜谢", + 298: "元宝", + 299: "牛啊", + 300: "胖三斤", + 301: "好闪", + 303: "右拜年", + 302: "左拜年", + 304: "红包包", + 49: "拥抱", + 66: "爱心", + 63: "玫瑰", + 64: "凋谢", + 187: "幽灵", + 146: "爆筋", + 116: "示爱", + 67: "心碎", + 60: "咖啡", + 185: "羊驼", + 192: "红包", + 137: "鞭炮", + 138: "灯笼", + 136: "双喜", + 76: "赞", + 124: "OK", + 118: "抱拳", + 78: "握手", + 119: "勾引", + 79: "胜利", + 120: "拳头", + 121: "差劲", + 77: "踩", + 122: "爱你", + 123: "NO", + 201: "点赞", + 203: "托脸", + 204: "吃", + 202: "无聊", + 200: "拜托", + 194: "不开心", + 193: "大笑", + 197: "冷漠", + 211: "我不看", + 210: "飙泪", + 198: "呃", + 199: "好棒", + 207: "花痴", + 205: "送花", + 206: "害怕", + 208: "小样儿", + 308: "求红包", + 309: "谢红包", + 310: "新年烟花", + 290: "敲开心", + 291: "震惊", + 292: "让我康康", + 226: "拍桌", + 215: "糊脸", + 237: "偷看", + 214: "啵啵", + 235: "颤抖", + 222: "抱抱", + 217: "扯一扯", + 221: "顶呱呱", + 225: "撩一撩", + 241: "生日快乐", + 227: "拍手", + 238: "扇脸", + 240: "喷脸", + 229: "干杯", + 216: "拍头", + 218: "舔一舔", + 233: "掐一掐", + 219: "蹭一蹭", + 244: "扔狗", + 232: "佛系", + 243: "甩头", + 223: "暴击", + 279: "打脸", + 280: "击掌", + 231: "哼", + 224: "开枪", + 278: "汗", + 236: "啃头", + 228: "恭喜", + 220: "拽炸天", + 239: "原谅", + 242: "头撞击", + 230: "嘲讽", + 234: "惊呆", + 273: "我酸了", + 75: "月亮", + 74: "太阳", + 46: "猪头", + 112: "菜刀", + 56: "刀", + 169: "手枪", + 171: "茶", + 59: "便便", + 144: "喝彩", + 147: "棒棒糖", + 89: "西瓜", + 61: "饭", + 148: "喝奶", + 274: "太南了", + 113: "啤酒", + 140: "K歌", + 53: "蛋糕", + 188: "蛋", + 55: "炸弹", + 184: "河蟹", + 158: "钞票", + 54: "闪电", + 69: "礼物", + 190: "菊花", + 151: "飞机", + 145: "祈祷", + 117: "瓢虫", + 168: "药", + 114: "篮球", + 115: "乒乓", + 57: "足球", + 41: "发抖", + 125: "转圈", + 42: "爱情", + 43: "跳跳", + 86: "怄火", + 129: "挥手", + 85: "飞吻", + 126: "磕头", + 128: "跳绳", + 130: "激动", + 127: "回头", + 132: "献吻", + 134: "右太极", + 133: "左太极", + 131: "街舞", + 276: "辣椒酱", +} diff --git a/message/generate.go b/message/generate.go new file mode 100644 index 00000000..279eb1e6 --- /dev/null +++ b/message/generate.go @@ -0,0 +1,60 @@ +// +build ignore + +package main + +import ( + "archive/zip" + "bytes" + "encoding/json" + "go/format" + "html/template" + "io" + "net/http" + "os" + "strings" +) + +const faceDownloadUrl = `https://downv6.qq.com/qqface/config/face_config_8.5.0.15.zip?mType=Other` //? 好像是会自动更新的 + +type config struct { + SystemFace []face `json:"sysface"` +} + +type face struct { + QSid string `json:"QSid"` + QDes string `json:"QDes"` +} + +const codeTemplate = `// Code generated by message/generate.go DO NOT EDIT. + +package message + +var faceMap = map[int]string{ +{{range .SystemFace}} {{.QSid}}: "{{.QDes}}", +{{end}} +} +` + +func main() { + f, _ := os.OpenFile("face.go", os.O_WRONLY|os.O_CREATE|os.O_SYNC|os.O_TRUNC, 0755) + defer func() { _ = f.Close() }() + resp, err := http.Get(faceDownloadUrl) + if err != nil { + panic(err) + } + defer resp.Body.Close() + rsp, _ := io.ReadAll(resp.Body) + reader, _ := zip.NewReader(bytes.NewReader(rsp), resp.ContentLength) + file, _ := reader.Open("face_config.json") + data, _ := io.ReadAll(file) + faceConfig := config{} + _ = json.Unmarshal(data, &faceConfig) + for i := range faceConfig.SystemFace { + faceConfig.SystemFace[i].QDes = strings.TrimPrefix(faceConfig.SystemFace[i].QDes, "/") + } + tmpl, _ := template.New("template").Parse(codeTemplate) + buffer := &bytes.Buffer{} + _ = tmpl.Execute(buffer, &faceConfig) + source, _ := format.Source(buffer.Bytes()) + f.Write(source) +} diff --git a/message/pack.go b/message/pack.go index b8a79232..f686a693 100644 --- a/message/pack.go +++ b/message/pack.go @@ -23,7 +23,7 @@ func (e *TextElement) Pack() (r []*msg.Elem) { func (e *FaceElement) Pack() (r []*msg.Elem) { r = []*msg.Elem{} - if e.NewSysFace { + if e.Index >= 260 { elem := &msg.MsgElemInfoServtype33{ Index: proto.Uint32(uint32(e.Index)), Text: []byte("/" + e.Name),