UNPKG

mirai-js

Version:

QQ robot development framework based on Mirai-api-http.

314 lines (278 loc) 10.6 kB
// 用于与 Bot.sendMessage 耦合的接口 const { MessageChainGetable } = require('./interface'); /** * @description http 接口需要的消息类型 */ class MessageType { constructor({ type }) { this.type = type; } } class Plain extends MessageType { constructor({ text }) { super({ type: 'Plain' }); this.text = text; } } class Text extends MessageType { constructor({ text }) { super({ type: 'Plain' }); this.text = text; } } class At extends MessageType { constructor({ target, display }) { super({ type: 'At' }); this.target = target; // ? 不太清楚这个字段是干啥的 this.display = display; } } class AtAll extends MessageType { constructor() { super({ type: 'AtAll' }); } } class Image extends MessageType { constructor({ imageId, url, path }) { super({ type: 'Image' }); this.imageId = imageId; this.url = url; // 图片路径相对于 mirai-console // 的 plugins/MiraiAPIHTTP/images this.path = path; } } class FlashImage extends MessageType { constructor({ imageId, url, path }) { super({ type: 'FlashImage' }); this.imageId = imageId; this.url = url; // 图片路径相对于 mirai-console // 的 plugins/MiraiAPIHTTP/images this.path = path; } } class Voice extends MessageType { constructor({ voiceId, url, path }) { super({ type: 'Voice' }); this.voiceId = voiceId; this.url = url; // 语音路径相对于 mirai-console // 的 plugins/MiraiAPIHTTP/voices this.path = path; } } class Xml extends MessageType { constructor({ xml }) { super({ type: 'Xml' }); this.xml = xml; } } class Json extends MessageType { constructor({ json }) { super({ type: 'Json' }); this.json = json; } } class App extends MessageType { constructor({ content }) { super({ type: 'App' }); this.content = content; } } class ForwardNodeList extends MessageType { constructor({ nodeList }) { super({ type: 'Forward' }); this.nodeList = nodeList; } } const faceMap = new Map([ ['惊讶', 0], ['撇嘴', 1], ['色', 2], ['发呆', 3], ['得意', 4], ['流泪', 5], ['害羞', 6], ['闭嘴', 7], ['睡', 8], ['大哭', 9], ['尴尬', 10], ['发怒', 11], ['调皮', 12], ['呲牙', 13], ['微笑', 14], ['难过', 15], ['酷', 16], ['抓狂', 18], ['吐', 19], ['偷笑', 20], ['可爱', 21], ['白眼', 22], ['傲慢', 23], ['饥饿', 24], ['困', 25], ['惊恐', 26], ['流汗', 27], ['憨笑', 28], ['悠闲', 29], ['奋斗', 30], ['咒骂', 31], ['疑问', 32], ['嘘', 33], ['晕', 34], ['折磨', 35], ['衰', 36], ['骷髅', 37], ['敲打', 38], ['再见', 39], ['发抖', 41], ['爱情', 42], ['跳跳', 43], ['猪头', 46], ['拥抱', 49], ['蛋糕', 53], ['闪电', 54], ['炸弹', 55], ['刀', 56], ['足球', 57], ['便便', 59], ['咖啡', 60], ['饭', 61], ['玫瑰', 63], ['凋谢', 64], ['爱心', 66], ['心碎', 67], ['礼物', 69], ['太阳', 74], ['月亮', 75], ['赞', 76], ['踩', 77], ['握手', 78], ['胜利', 79], ['飞吻', 85], ['怄火', 86], ['西瓜', 89], ['冷汗', 96], ['擦汗', 97], ['抠鼻', 98], ['鼓掌', 99], ['糗大了', 100], ['坏笑', 101], ['左哼哼', 102], ['右哼哼', 103], ['哈欠', 104], ['鄙视', 105], ['委屈', 106], ['快哭了', 107], ['阴险', 108], ['左亲亲', 109], ['吓', 110], ['可怜', 111], ['菜刀', 112], ['啤酒', 113], ['篮球', 114], ['乒乓', 115], ['示爱', 116], ['瓢虫', 117], ['抱拳', 118], ['勾引', 119], ['拳头', 120], ['差劲', 121], ['爱你', 122], ['不', 123], ['好', 124], ['转圈', 125], ['磕头', 126], ['回头', 127], ['跳绳', 128], ['挥手', 129], ['激动', 130], ['街舞', 131], ['献吻', 132], ['左太极', 133], ['右太极', 134], ['双喜', 136], ['鞭炮', 137], ['灯笼', 138], ['K歌', 140], ['喝彩', 144], ['祈祷', 145], ['爆筋', 146], ['棒棒糖', 147], ['喝奶', 148], ['飞机', 151], ['钞票', 158], ['药', 168], ['手枪', 169], ['茶', 171], ['眨眼睛', 172], ['泪奔', 173], ['无奈', 174], ['卖萌', 175], ['小纠结', 176], ['喷血', 177], ['斜眼笑', 178], ['doge', 179], ['惊喜', 180], ['骚扰', 181], ['笑哭', 182], ['我最美', 183], ['河蟹', 184], ['羊驼', 185], ['幽灵', 187], ['蛋', 188], ['菊花', 190], ['红包', 192], ['大笑', 193], ['不开心', 194], ['冷漠', 197], ['呃', 198], ['好棒', 199], ['拜托', 200], ['点赞', 201], ['无聊', 202], ['托脸', 203], ['吃', 204], ['送花', 205], ['害怕', 206], ['花痴', 207], ['小样儿', 208], ['飙泪', 210], ['我不看', 211], ['托腮', 212], ['啵啵', 214], ['糊脸', 215], ['拍头', 216], ['扯一扯', 217], ['舔一舔', 218], ['蹭一蹭', 219], ['拽炸天', 220], ['顶呱呱', 221], ['抱抱', 222], ['暴击', 223], ['开枪', 224], ['撩一撩', 225], ['拍桌', 226], ['拍手', 227], ['恭喜', 228], ['干杯', 229], ['嘲讽', 230], ['哼', 231], ['佛系', 232], ['掐一掐', 233], ['惊呆', 234], ['颤抖', 235], ['啃头', 236], ['偷看', 237], ['扇脸', 238], ['原谅', 239], ['喷脸', 240], ['生日快乐', 241], ['头撞击', 242], ['甩头', 243], ['扔狗', 244], ['加油必胜', 245], ['加油抱抱', 246], ['口罩护体', 247], ['搬砖中', 260], ['忙到飞起', 261], ['脑阔疼', 262], ['沧桑', 263], ['捂脸', 264], ['辣眼睛', 265], ['哦哟', 266], ['头秃', 267], ['问号脸', 268], ['暗中观察', 269], ['emm', 270], ['吃瓜', 271], ['呵呵哒', 272], ['我酸了', 273], ['太南了', 274], ['辣椒酱', 276], ['汪汪', 277], ['汗', 278], ['打脸', 279], ['击掌', 280], ['无眼笑', 281], ['敬礼', 282], ['狂笑', 283], ['面无表情', 284], ['摸鱼', 285], ['魔鬼笑', 286], ['哦', 287], ['请', 288], ['睁眼', 289], ['敲开心', 290], ['震惊', 291], ['让我康康', 292], ['摸锦鲤', 293], ['期待', 294], ['拿到红包', 295], ['真好', 296], ['拜谢', 297], ['元宝', 298], ['牛啊', 299], ['胖三斤', 300], ['好闪', 301], ['左拜年', 302], ['右拜年', 303], ['红包包', 304], ['右亲亲', 305], ['牛气冲天', 306], ['喵喵', 307], ['求红包', 308], ['谢红包', 309], ['新年烟花', 310], ['打call', 311], ['变形', 312], ['嗑到了', 313], ['仔细分析', 314], ['加油', 315], ['我没事', 316], ['菜狗', 317], ['崇拜', 318], ['比心', 319], ['庆祝', 320], ['老色痞', 321], ['拒绝', 322], ['嫌弃', 323], ['吃糖', 324] ]); class Face extends MessageType { constructor({ faceId, name }) { super({ type: 'Face' }); this.faceId = faceId; this.name = name; } } /** * @description 本框架抽象的消息类型 */ class Message extends MessageChainGetable { constructor() { super(); this.messageChain = []; } // 文本 addText(text) { this.messageChain.push(new Text({ text })); return this; } addPlain(text) { this.messageChain.push(new Plain({ text })); return this; } // At@ addAt(target) { this.messageChain.push(new At({ target })); return this; } addAtAll() { this.messageChain.push(new AtAll()); return this; } // 图片 addImageId(imageId) { this.messageChain.push(new Image({ imageId })); return this; } addImageUrl(url) { this.messageChain.push(new Image({ url })); return this; } addImagePath(path) { this.messageChain.push(new Image({ path })); return this; } // 闪照 addFlashImageId(imageId) { this.messageChain.push(new FlashImage({ imageId })); return this; } addFlashImageUrl(url) { this.messageChain.push(new FlashImage({ url })); return this; } addFlashImagePath(path) { this.messageChain.push(new FlashImage({ path })); return this; } // 语音 addVoiceId(voiceId) { this.messageChain.push(new Voice({ voiceId })); return this; } addVoiceUrl(url) { this.messageChain.push(new Voice({ url })); return this; } addVoicePath(path) { this.messageChain.push(new Voice({ path })); return this; } // xml addXml(xml) { this.messageChain.push(new Xml({ xml })); return this; } // json addJson(json) { this.messageChain.push(new Json({ json })); return this; } // app addApp(content) { this.messageChain.push(new App({ content })); return this; } // face addFace(name) { const idx = faceMap.get(name); if (idx) { this.messageChain.push(new Face( { faceId: idx, name } )); } return this; } // get 原接口格式的信息链 getMessageChain() { return this.messageChain; } static createForwardMessage() { return new ForwardMessage(); } } class ForwardMessage extends MessageChainGetable { constructor() { super(); this.messageChain = []; this.nodeList = []; } addForwardNode(nodeOrId) { if (typeof nodeOrId === 'number') { this.nodeList.push({ messageId: nodeOrId }); } else if (typeof nodeOrId == 'object') { if (nodeOrId.messageChain instanceof MessageChainGetable) { nodeOrId.messageChain = nodeOrId.messageChain.getMessageChain(); } this.nodeList.push(nodeOrId); } /* else ignore */ return this; } // implements MessageChainGetable getMessageChain() { this.messageChain.push(new ForwardNodeList({ nodeList: this.nodeList })); return this.messageChain; } } module.exports = { Message };