From 369e7fd5ba30e2571381173e9a8cba9ea4482f11 Mon Sep 17 00:00:00 2001 From: Ivan Office Date: Thu, 28 Mar 2024 02:04:54 +0800 Subject: [PATCH] =?UTF-8?q?prepare=20#I92TI8=20app=5Fchatgpt=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E5=88=B017.=E9=BB=98=E8=AE=A4=E4=B8=8D=E9=98=9F?= =?UTF-8?q?=E5=88=97=20=E7=BD=AE=E9=A1=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_chatgpt/__manifest__.py | 10 +- app_chatgpt/models/mail_message.py | 5 +- .../static/src/components/message/message.js | 25 + .../static/src/components/message/message.xml | 23 +- .../static/src/models/emoji_registry.js | 64 - .../models/{message.js => message_model.js} | 16 +- .../static/src/models_data/emoji_data.js | 21872 ---------------- 7 files changed, 60 insertions(+), 21955 deletions(-) create mode 100644 app_chatgpt/static/src/components/message/message.js delete mode 100644 app_chatgpt/static/src/models/emoji_registry.js rename app_chatgpt/static/src/models/{message.js => message_model.js} (72%) delete mode 100644 app_chatgpt/static/src/models_data/emoji_data.js diff --git a/app_chatgpt/__manifest__.py b/app_chatgpt/__manifest__.py index 77913e56..83e3090e 100644 --- a/app_chatgpt/__manifest__.py +++ b/app_chatgpt/__manifest__.py @@ -10,7 +10,7 @@ { 'name': 'ChatGPT4, China Ali,AiGC Center.Ai服务中心,聚合全网Ai', - 'version': '24.03.06', + 'version': '24.03.28', 'author': 'odooai.cn', 'company': 'odooai.cn', 'maintainer': 'odooai.cn', @@ -63,13 +63,9 @@ 'views/discuss_channel_views.xml', ], 'assets': { - 'mail.assets_messaging': [ - 'app_chatgpt/static/src/models/message.js', - ], - 'mail.assets_model_data': [ - 'app_chatgpt/static/src/models_data/*.js', - ], 'web.assets_backend': [ + 'app_chatgpt/static/src/models/message_model.js', + 'app_chatgpt/static/src/components/message/message.js', 'app_chatgpt/static/src/components/*/*.xml', ], }, diff --git a/app_chatgpt/models/mail_message.py b/app_chatgpt/models/mail_message.py index 7a37e0be..99d6ff72 100644 --- a/app_chatgpt/models/mail_message.py +++ b/app_chatgpt/models/mail_message.py @@ -21,9 +21,8 @@ class Message(models.Model): # 处理反馈 pass - def message_format(self, format_reply=True): - message_values = super(Message, self).message_format(format_reply=format_reply) - + def message_format(self, format_reply=True, msg_vals=None): + message_values = super(Message, self).message_format(format_reply=format_reply, msg_vals=msg_vals) for message in message_values: message_sudo = self.browse(message['id']).sudo().with_prefetch(self.ids) message['human_prompt_tokens'] = message_sudo.human_prompt_tokens diff --git a/app_chatgpt/static/src/components/message/message.js b/app_chatgpt/static/src/components/message/message.js new file mode 100644 index 00000000..45afda44 --- /dev/null +++ b/app_chatgpt/static/src/components/message/message.js @@ -0,0 +1,25 @@ +/** @odoo-module */ +import {Message} from "@mail/core/common/message"; +import {patch} from "@web/core/utils/patch"; + +patch(Message.prototype, { + async copy() { + const parser = new DOMParser(); + const htmlDoc = parser.parseFromString(this.message.body.replaceAll('
', '\n').replaceAll('
', '\n'), "text/html"); + const textInputContent = htmlDoc.body.textContent; + const tempInput = document.createElement("textarea"); + tempInput.value = textInputContent; + document.body.appendChild(tempInput); + tempInput.select(); + tempInput.setSelectionRange(0, tempInput.value.length); + document.execCommand("copy"); + document.body.removeChild(tempInput); + }, + async onClickMarkAsGood() { + this.messageService.react(this.message, '👍'); + }, + + async onClickMarkAsBad() { + this.messageService.react(this.message, '👎'); + }, +}); diff --git a/app_chatgpt/static/src/components/message/message.xml b/app_chatgpt/static/src/components/message/message.xml index c3944c6f..6f969f7e 100644 --- a/app_chatgpt/static/src/components/message/message.xml +++ b/app_chatgpt/static/src/components/message/message.xml @@ -1,8 +1,9 @@ - -
+ + +

@@ -14,6 +15,24 @@
+ +
+
+ +
+
+ +
+
+ +
+
diff --git a/app_chatgpt/static/src/models/emoji_registry.js b/app_chatgpt/static/src/models/emoji_registry.js deleted file mode 100644 index 25dc71c7..00000000 --- a/app_chatgpt/static/src/models/emoji_registry.js +++ /dev/null @@ -1,64 +0,0 @@ -/** @odoo-module **/ - -import { EmojiPicker } from "@web/core/emoji_picker/emoji_picker"; -import { loader } from "@web/core/emoji_picker/emoji_picker"; - - -patch(EmojiPicker.prototype, { - async loadEmoji() { - try { - await loader.loadEmoji(); - return odoo.loader.modules.get("@web/core/emoji_picker/emoji_data"); - } catch { - // Could be intentional (tour ended successfully while emoji still loading) - return {emojis: [], categories: []}; - } - }, -}); - -// import { insert } from '@mail/model/model_field_command'; -// import { getBundle, loadBundle} from '@web/core/assets'; -// import {registerPatch} from '@mail/model/model_core'; -// -// registerPatch({ -// name: 'EmojiRegistry', -// recordMethods: { -// async loadEmojiData() { -// this.update({isLoading: true}); -// await getBundle('mail.assets_model_data').then(loadBundle); -// //优化 data 文件 -// const {emojiCategoriesData, emojisData} = await odoo.runtimeImport("@app_chatgpt/models_data/emoji_data"); -// if (!this.exists()) { -// return; -// } -// this._populateFromEmojiData(emojiCategoriesData, emojisData); -// }, -// async _populateFromEmojiData(dataCategories, dataEmojis) { -// dataCategories.map(category => { -// const emojiCount = dataEmojis.reduce((acc, emoji) => emoji.category === category.name ? acc + 1 : acc, 0); -// this.update({ -// dataCategories: insert({ -// name: category.name, -// displayName: category.displayName, -// title: category.title, -// sortId: category.sortId, -// emojiCount, -// }), -// }); -// }); -// this.models['Emoji'].insert(dataEmojis.map(emojiData => ({ -// codepoints: emojiData.codepoints, -// shortcodes: emojiData.shortcodes, -// emoticons: emojiData.emoticons, -// name: emojiData.name, -// keywords: emojiData.keywords, -// emojiDataCategory: {name: emojiData.category}, -// }))); -// this.update({ -// isLoaded: true, -// isLoading: false, -// }); -// }, -// }, -// } -// ) diff --git a/app_chatgpt/static/src/models/message.js b/app_chatgpt/static/src/models/message_model.js similarity index 72% rename from app_chatgpt/static/src/models/message.js rename to app_chatgpt/static/src/models/message_model.js index e9de706d..f829cd7a 100644 --- a/app_chatgpt/static/src/models/message.js +++ b/app_chatgpt/static/src/models/message_model.js @@ -1,13 +1,15 @@ /** @odoo-module **/ import { Message } from "@mail/core/common/message_model"; +import { assignDefined } from "@mail/utils/common/misc"; +import { patch } from "@web/core/utils/patch"; -patch(Message, { - /** @type {number} */ - human_prompt_tokens, - /** @type {number} */ - ai_completion_tokens, - /** @type {boolean} */ - is_ai, +// 参考模块 whatsapp + +patch(Message.prototype, { + update(data) { + assignDefined(this, data, ["human_prompt_tokens", "ai_completion_tokens", "is_ai"]); + super.update(data); + }, }); // diff --git a/app_chatgpt/static/src/models_data/emoji_data.js b/app_chatgpt/static/src/models_data/emoji_data.js deleted file mode 100644 index 08288687..00000000 --- a/app_chatgpt/static/src/models_data/emoji_data.js +++ /dev/null @@ -1,21872 +0,0 @@ -/** @odoo-module **/ - -// Emoji data are generated from Unicode CLDR, falling under the following -// licence: - -/** - * UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE - * - * See Terms of Use - * for definitions of Unicode Inc.’s Data Files and Software. - * - * NOTICE TO USER: Carefully read the following legal agreement. - * BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S - * DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), - * YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE - * TERMS AND CONDITIONS OF THIS AGREEMENT. - * IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE - * THE DATA FILES OR SOFTWARE. - * - * COPYRIGHT AND PERMISSION NOTICE - * - * Copyright © 1991-2022 Unicode, Inc. All rights reserved. - * Distributed under the Terms of Use in https://www.unicode.org/copyright.html. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of the Unicode data files and any associated documentation - * (the "Data Files") or Unicode software and any associated documentation - * (the "Software") to deal in the Data Files or Software - * without restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, and/or sell copies of - * the Data Files or Software, and to permit persons to whom the Data Files - * or Software are furnished to do so, provided that either - * (a) this copyright and permission notice appear with all copies - * of the Data Files or Software, or - * (b) this copyright and permission notice appear in associated - * Documentation. - * - * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF - * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS - * NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL - * DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THE DATA FILES OR SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder - * shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in these Data Files or Software without prior - * written authorization of the copyright holder. - */ - -// Since JSON grammar is way simpler than JavaScript's grammar, it is actually -// faster to parse the data as a JSON object than as a JavaScript object. - -import { _lt as lazyTranslate } from "@web/core/l10n/translation"; -const _lt = str => JSON.stringify(lazyTranslate(str)).slice(1, -1); - -export const emojiCategoriesData = JSON.parse(`[ - { - "name": "ChatGpt Training", - "displayName": "`+ _lt("ChatGpt Training") + `", - "title": "💬", - "sortId": 0 - }, - { - "name": "Smileys & Emotion", - "displayName": "`+ _lt("Smileys & Emotion") + `", - "title": "🙂", - "sortId": 1 - }, - { - "name": "People & Body", - "displayName": "`+ _lt("People & Body") + `", - "title": "🤟", - "sortId": 2 - }, - { - "name": "Animals & Nature", - "displayName": "`+ _lt("Animals & Nature") + `", - "title": "🐢", - "sortId": 3 - }, - { - "name": "Food & Drink", - "displayName": "`+ _lt("Food & Drink") + `", - "title": "🍭", - "sortId": 4 - }, - { - "name": "Travel & Places", - "displayName": "`+ _lt("Travel & Places") + `", - "title": "🚗", - "sortId": 5 - }, - { - "name": "Activities", - "displayName": "`+ _lt("Activities") + `", - "title": "🏈", - "sortId": 6 - }, - { - "name": "Objects", - "displayName": "`+ _lt("Objects") + `", - "title": "📕", - "sortId": 7 - }, - { - "name": "Symbols", - "displayName": "`+ _lt("Symbols") + `", - "title": "🔠", - "sortId": 8 - } -]`); - -const emojisData1 = `{ - "category": "Smileys & Emotion", - "codepoints": "😀", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("grin") + `", - "` + _lt("grinning face") + `" - ], - "name": "` + _lt("grinning face") + `", - "shortcodes": [ - ":grinning:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😃", - "emoticons": [ - ":D", - ":-D", - "=D" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("grinning face with big eyes") + `", - "` + _lt("mouth") + `", - "` + _lt("open") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("grinning face with big eyes") + `", - "shortcodes": [ - ":smiley:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😄", - "emoticons": [], - "keywords": [ - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("grinning face with smiling eyes") + `", - "` + _lt("mouth") + `", - "` + _lt("open") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("grinning face with smiling eyes") + `", - "shortcodes": [ - ":smile:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😁", - "emoticons": [], - "keywords": [ - "` + _lt("beaming face with smiling eyes") + `", - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("grin") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("beaming face with smiling eyes") + `", - "shortcodes": [ - ":grin:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😆", - "emoticons": [ - "xD", - "XD" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("grinning squinting face") + `", - "` + _lt("laugh") + `", - "` + _lt("mouth") + `", - "` + _lt("satisfied") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("grinning squinting face") + `", - "shortcodes": [ - ":laughing:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😅", - "emoticons": [], - "keywords": [ - "` + _lt("cold") + `", - "` + _lt("face") + `", - "` + _lt("grinning face with sweat") + `", - "` + _lt("open") + `", - "` + _lt("smile") + `", - "` + _lt("sweat") + `" - ], - "name": "` + _lt("grinning face with sweat") + `", - "shortcodes": [ - ":sweat_smile:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤣", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("floor") + `", - "` + _lt("laugh") + `", - "` + _lt("rofl") + `", - "` + _lt("rolling") + `", - "` + _lt("rolling on the floor laughing") + `", - "` + _lt("rotfl") + `" - ], - "name": "` + _lt("rolling on the floor laughing") + `", - "shortcodes": [ - ":rofl:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😂", - "emoticons": [ - "x'D" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face with tears of joy") + `", - "` + _lt("joy") + `", - "` + _lt("laugh") + `", - "` + _lt("tear") + `" - ], - "name": "` + _lt("face with tears of joy") + `", - "shortcodes": [ - ":joy:", - ":jpp:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙂", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("slightly smiling face") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("slightly smiling face") + `", - "shortcodes": [ - ":slight_smile:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙃", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("upside-down") + `", - "` + _lt("upside down") + `", - "` + _lt("upside-down face") + `" - ], - "name": "` + _lt("upside-down face") + `", - "shortcodes": [ - ":upside_down:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😉", - "emoticons": [ - ";)", - ";-)" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("wink") + `", - "` + _lt("winking face") + `" - ], - "name": "` + _lt("winking face") + `", - "shortcodes": [ - ":wink:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😊", - "emoticons": [ - ":)", - ":-)", - "=)", - ":]" - ], - "keywords": [ - "` + _lt("blush") + `", - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("smile") + `", - "` + _lt("smiling face with smiling eyes") + `" - ], - "name": "` + _lt("smiling face with smiling eyes") + `", - "shortcodes": [ - ":smiling_face_with_smiling_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😇", - "emoticons": [ - "o:)" - ], - "keywords": [ - "` + _lt("angel") + `", - "` + _lt("face") + `", - "` + _lt("fantasy") + `", - "` + _lt("halo") + `", - "` + _lt("innocent") + `", - "` + _lt("smiling face with halo") + `" - ], - "name": "` + _lt("smiling face with halo") + `", - "shortcodes": [ - ":innocent:", - ":halo:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥰", - "emoticons": [], - "keywords": [ - "` + _lt("adore") + `", - "` + _lt("crush") + `", - "` + _lt("hearts") + `", - "` + _lt("in love") + `", - "` + _lt("smiling face with hearts") + `" - ], - "name": "` + _lt("smiling face with hearts") + `", - "shortcodes": [ - ":smiling_face_with_hearts:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😍", - "emoticons": [ - ":heart_eyes" - ], - "keywords": [ - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("love") + `", - "` + _lt("smile") + `", - "` + _lt("smiling face with heart-eyes") + `", - "` + _lt("smiling face with heart eyes") + `" - ], - "name": "` + _lt("smiling face with heart-eyes") + `", - "shortcodes": [ - ":heart_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤩", - "emoticons": [], - "keywords": [ - "` + _lt("eyes") + `", - "` + _lt("face") + `", - "` + _lt("grinning") + `", - "` + _lt("star") + `", - "` + _lt("star-struck") + `" - ], - "name": "` + _lt("star-struck") + `", - "shortcodes": [ - ":star_struck:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😘", - "emoticons": [ - ":*", - ":-*" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face blowing a kiss") + `", - "` + _lt("kiss") + `" - ], - "name": "` + _lt("face blowing a kiss") + `", - "shortcodes": [ - ":kissing_heart:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😗", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("kiss") + `", - "` + _lt("kissing face") + `" - ], - "name": "` + _lt("kissing face") + `", - "shortcodes": [ - ":kissing:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😚", - "emoticons": [], - "keywords": [ - "` + _lt("closed") + `", - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("kiss") + `", - "` + _lt("kissing face with closed eyes") + `" - ], - "name": "` + _lt("kissing face with closed eyes") + `", - "shortcodes": [ - ":kissing_closed_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😙", - "emoticons": [], - "keywords": [ - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("kiss") + `", - "` + _lt("kissing face with smiling eyes") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("kissing face with smiling eyes") + `", - "shortcodes": [ - ":kissing_smiling_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😋", - "emoticons": [ - ":p", - ":P", - ":-p", - ":-P", - "=P" - ], - "keywords": [ - "` + _lt("delicious") + `", - "` + _lt("face") + `", - "` + _lt("face savoring food") + `", - "` + _lt("savouring") + `", - "` + _lt("smile") + `", - "` + _lt("yum") + `", - "` + _lt("face savouring food") + `", - "` + _lt("savoring") + `" - ], - "name": "` + _lt("face savoring food") + `", - "shortcodes": [ - ":yum:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😛", - "emoticons": [ - ":P" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face with tongue") + `", - "` + _lt("tongue") + `" - ], - "name": "` + _lt("face with tongue") + `", - "shortcodes": [ - ":stuck_out_ltongue:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😜", - "emoticons": [ - ";p", - ";P" - ], - "keywords": [ - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("joke") + `", - "` + _lt("tongue") + `", - "` + _lt("wink") + `", - "` + _lt("winking face with tongue") + `" - ], - "name": "` + _lt("winking face with tongue") + `", - "shortcodes": [ - ":stuck_out_ltongue_winking_eye:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤪", - "emoticons": [], - "keywords": [ - "` + _lt("eye") + `", - "` + _lt("goofy") + `", - "` + _lt("large") + `", - "` + _lt("small") + `", - "` + _lt("zany face") + `" - ], - "name": "` + _lt("zany face") + `", - "shortcodes": [ - ":zany:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😝", - "emoticons": [ - "xp", - "xP" - ], - "keywords": [ - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("horrible") + `", - "` + _lt("squinting face with tongue") + `", - "` + _lt("taste") + `", - "` + _lt("tongue") + `" - ], - "name": "` + _lt("squinting face with tongue") + `", - "shortcodes": [ - ":stuck_out_ltongue_closed_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤑", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("money") + `", - "` + _lt("money-mouth face") + `", - "` + _lt("mouth") + `" - ], - "name": "` + _lt("money-mouth face") + `", - "shortcodes": [ - ":money_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤗", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("hug") + `", - "` + _lt("hugging") + `", - "` + _lt("open hands") + `", - "` + _lt("smiling face") + `", - "` + _lt("smiling face with open hands") + `" - ], - "name": "` + _lt("smiling face with open hands") + `", - "shortcodes": [ - ":hugging_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤭", - "emoticons": [], - "keywords": [ - "` + _lt("face with hand over mouth") + `", - "` + _lt("whoops") + `", - "` + _lt("oops") + `", - "` + _lt("embarrassed") + `" - ], - "name": "` + _lt("face with hand over mouth") + `", - "shortcodes": [ - ":hand_over_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤫", - "emoticons": [], - "keywords": [ - "` + _lt("quiet") + `", - "` + _lt("shooshing face") + `", - "` + _lt("shush") + `", - "` + _lt("shushing face") + `" - ], - "name": "` + _lt("shushing face") + `", - "shortcodes": [ - ":shush:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤔", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("thinking") + `" - ], - "name": "` + _lt("thinking face") + `", - "shortcodes": [ - ":thinking:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤐", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("mouth") + `", - "` + _lt("zipper") + `", - "` + _lt("zipper-mouth face") + `" - ], - "name": "` + _lt("zipper-mouth face") + `", - "shortcodes": [ - ":zipper_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤨", - "emoticons": [], - "keywords": [ - "` + _lt("distrust") + `", - "` + _lt("face with raised eyebrow") + `", - "` + _lt("skeptic") + `" - ], - "name": "` + _lt("face with raised eyebrow") + `", - "shortcodes": [ - ":raised_eyebrow:", - ":skeptic:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😐", - "emoticons": [ - ":|", - ":-|" - ], - "keywords": [ - "` + _lt("deadpan") + `", - "` + _lt("face") + `", - "` + _lt("meh") + `", - "` + _lt("neutral") + `" - ], - "name": "` + _lt("neutral face") + `", - "shortcodes": [ - ":neutral:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😑", - "emoticons": [], - "keywords": [ - "` + _lt("expressionless") + `", - "` + _lt("face") + `", - "` + _lt("inexpressive") + `", - "` + _lt("meh") + `", - "` + _lt("unexpressive") + `" - ], - "name": "` + _lt("expressionless face") + `", - "shortcodes": [ - ":expressionless:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😶", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face without mouth") + `", - "` + _lt("mouth") + `", - "` + _lt("quiet") + `", - "` + _lt("silent") + `" - ], - "name": "` + _lt("face without mouth") + `", - "shortcodes": [ - ":no_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😏", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("smirk") + `", - "` + _lt("smirking face") + `" - ], - "name": "` + _lt("smirking face") + `", - "shortcodes": [ - ":smirk:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😒", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("unamused") + `", - "` + _lt("unhappy") + `" - ], - "name": "` + _lt("unamused face") + `", - "shortcodes": [ - ":unamused_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙄", - "emoticons": [], - "keywords": [ - "` + _lt("eyeroll") + `", - "` + _lt("eyes") + `", - "` + _lt("face") + `", - "` + _lt("face with rolling eyes") + `", - "` + _lt("rolling") + `" - ], - "name": "` + _lt("face with rolling eyes") + `", - "shortcodes": [ - ":face_with_rolling_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😬", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("grimace") + `", - "` + _lt("grimacing face") + `" - ], - "name": "` + _lt("grimacing face") + `", - "shortcodes": [ - ":grimacing_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤥", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("lie") + `", - "` + _lt("lying face") + `", - "` + _lt("pinocchio") + `" - ], - "name": "` + _lt("lying face") + `", - "shortcodes": [ - ":lying_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😌", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("relieved") + `" - ], - "name": "` + _lt("relieved face") + `", - "shortcodes": [ - ":relieved_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😔", - "emoticons": [], - "keywords": [ - "` + _lt("dejected") + `", - "` + _lt("face") + `", - "` + _lt("pensive") + `" - ], - "name": "` + _lt("pensive face") + `", - "shortcodes": [ - ":pensive_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😪", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("good night") + `", - "` + _lt("sleep") + `", - "` + _lt("sleepy face") + `" - ], - "name": "` + _lt("sleepy face") + `", - "shortcodes": [ - ":sleepy_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤤", - "emoticons": [], - "keywords": [ - "` + _lt("drooling") + `", - "` + _lt("face") + `" - ], - "name": "` + _lt("drooling face") + `", - "shortcodes": [ - ":drooling_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😴", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("good night") + `", - "` + _lt("sleep") + `", - "` + _lt("sleeping face") + `", - "` + _lt("ZZZ") + `" - ], - "name": "` + _lt("sleeping face") + `", - "shortcodes": [ - ":sleeping_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😷", - "emoticons": [], - "keywords": [ - "` + _lt("cold") + `", - "` + _lt("doctor") + `", - "` + _lt("face") + `", - "` + _lt("face with medical mask") + `", - "` + _lt("mask") + `", - "` + _lt("sick") + `", - "` + _lt("ill") + `", - "` + _lt("medicine") + `", - "` + _lt("poorly") + `" - ], - "name": "` + _lt("face with medical mask") + `", - "shortcodes": [ - ":face_with_medical_mask:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤒", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face with thermometer") + `", - "` + _lt("ill") + `", - "` + _lt("sick") + `", - "` + _lt("thermometer") + `" - ], - "name": "` + _lt("face with thermometer") + `", - "shortcodes": [ - ":face_with_lthermometer:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤕", - "emoticons": [], - "keywords": [ - "` + _lt("bandage") + `", - "` + _lt("face") + `", - "` + _lt("face with head-bandage") + `", - "` + _lt("hurt") + `", - "` + _lt("injury") + `", - "` + _lt("face with head bandage") + `" - ], - "name": "` + _lt("face with head-bandage") + `", - "shortcodes": [ - ":face_with_head-bandage:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤢", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("nauseated") + `", - "` + _lt("vomit") + `" - ], - "name": "` + _lt("nauseated face") + `", - "shortcodes": [ - ":nauseated_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤮", - "emoticons": [], - "keywords": [ - "` + _lt("face vomiting") + `", - "` + _lt("puke") + `", - "` + _lt("sick") + `", - "` + _lt("vomit") + `" - ], - "name": "` + _lt("face vomiting") + `", - "shortcodes": [ - ":face_vomiting:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤧", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("gesundheit") + `", - "` + _lt("sneeze") + `", - "` + _lt("sneezing face") + `", - "` + _lt("bless you") + `" - ], - "name": "` + _lt("sneezing face") + `", - "shortcodes": [ - ":sneezing_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥵", - "emoticons": [], - "keywords": [ - "` + _lt("feverish") + `", - "` + _lt("flushed") + `", - "` + _lt("heat stroke") + `", - "` + _lt("hot") + `", - "` + _lt("hot face") + `", - "` + _lt("red-faced") + `", - "` + _lt("sweating") + `" - ], - "name": "` + _lt("hot face") + `", - "shortcodes": [ - ":hot_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥶", - "emoticons": [], - "keywords": [ - "` + _lt("blue-faced") + `", - "` + _lt("cold") + `", - "` + _lt("cold face") + `", - "` + _lt("freezing") + `", - "` + _lt("frostbite") + `", - "` + _lt("icicles") + `" - ], - "name": "` + _lt("cold face") + `", - "shortcodes": [ - ":cold_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥴", - "emoticons": [], - "keywords": [ - "` + _lt("dizzy") + `", - "` + _lt("intoxicated") + `", - "` + _lt("tipsy") + `", - "` + _lt("uneven eyes") + `", - "` + _lt("wavy mouth") + `", - "` + _lt("woozy face") + `" - ], - "name": "` + _lt("woozy face") + `", - "shortcodes": [ - ":woozy_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😵", - "emoticons": [], - "keywords": [ - "` + _lt("crossed-out eyes") + `", - "` + _lt("dead") + `", - "` + _lt("face") + `", - "` + _lt("face with crossed-out eyes") + `", - "` + _lt("knocked out") + `" - ], - "name": "` + _lt("face with crossed-out eyes") + `", - "shortcodes": [ - ":face_with_crossed-out_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤯", - "emoticons": [], - "keywords": [ - "` + _lt("exploding head") + `", - "` + _lt("mind blown") + `", - "` + _lt("shocked") + `" - ], - "name": "` + _lt("exploding head") + `", - "shortcodes": [ - ":exploding_head:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤠", - "emoticons": [], - "keywords": [ - "` + _lt("cowboy") + `", - "` + _lt("cowgirl") + `", - "` + _lt("face") + `", - "` + _lt("hat") + `" - ], - "name": "` + _lt("cowboy hat face") + `", - "shortcodes": [ - ":cowboy_hat_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥳", - "emoticons": [], - "keywords": [ - "` + _lt("celebration") + `", - "` + _lt("hat") + `", - "` + _lt("horn") + `", - "` + _lt("party") + `", - "` + _lt("partying face") + `" - ], - "name": "` + _lt("partying face") + `", - "shortcodes": [ - ":partying_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😎", - "emoticons": [ - "B)", - "8)", - "B-)", - "8-)" - ], - "keywords": [ - "` + _lt("bright") + `", - "` + _lt("cool") + `", - "` + _lt("face") + `", - "` + _lt("smiling face with sunglasses") + `", - "` + _lt("sun") + `", - "` + _lt("sunglasses") + `" - ], - "name": "` + _lt("smiling face with sunglasses") + `", - "shortcodes": [ - ":smiling_face_with_sunglasses:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤓", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("geek") + `", - "` + _lt("nerd") + `" - ], - "name": "` + _lt("nerd face") + `", - "shortcodes": [ - ":nerd_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🧐", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face with monocle") + `", - "` + _lt("monocle") + `", - "` + _lt("stuffy") + `" - ], - "name": "` + _lt("face with monocle") + `", - "shortcodes": [ - ":face_with_monocle:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😕", - "emoticons": [ - ":/", - ":-/" - ], - "keywords": [ - "` + _lt("confused") + `", - "` + _lt("face") + `", - "` + _lt("meh") + `" - ], - "name": "` + _lt("confused face") + `", - "shortcodes": [ - ":confused_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😟", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("worried") + `" - ], - "name": "` + _lt("worried face") + `", - "shortcodes": [ - ":worried_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙁", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("frown") + `", - "` + _lt("slightly frowning face") + `" - ], - "name": "` + _lt("slightly frowning face") + `", - "shortcodes": [ - ":slightly_frowning_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😮", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face with open mouth") + `", - "` + _lt("mouth") + `", - "` + _lt("open") + `", - "` + _lt("sympathy") + `" - ], - "name": "` + _lt("face with open mouth") + `", - "shortcodes": [ - ":face_with_open_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😯", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("hushed") + `", - "` + _lt("stunned") + `", - "` + _lt("surprised") + `" - ], - "name": "` + _lt("hushed face") + `", - "shortcodes": [ - ":hushed_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😲", - "emoticons": [ - ":O", - ":-O", - ":o", - ":-o" - ], - "keywords": [ - "` + _lt("astonished") + `", - "` + _lt("face") + `", - "` + _lt("shocked") + `", - "` + _lt("totally") + `" - ], - "name": "` + _lt("astonished face") + `", - "shortcodes": [ - ":astonished_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😳", - "emoticons": [ - "o_o" - ], - "keywords": [ - "` + _lt("dazed") + `", - "` + _lt("face") + `", - "` + _lt("flushed") + `" - ], - "name": "` + _lt("flushed face") + `", - "shortcodes": [ - ":flushed_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥺", - "emoticons": [], - "keywords": [ - "` + _lt("begging") + `", - "` + _lt("mercy") + `", - "` + _lt("pleading face") + `", - "` + _lt("puppy eyes") + `" - ], - "name": "` + _lt("pleading face") + `", - "shortcodes": [ - ":pleading_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😦", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("frown") + `", - "` + _lt("frowning face with open mouth") + `", - "` + _lt("mouth") + `", - "` + _lt("open") + `" - ], - "name": "` + _lt("frowning face with open mouth") + `", - "shortcodes": [ - ":frowning_face_with_open_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😧", - "emoticons": [], - "keywords": [ - "` + _lt("anguished") + `", - "` + _lt("face") + `" - ], - "name": "` + _lt("anguished face") + `", - "shortcodes": [ - ":anguished_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😨", - "emoticons": [ - ":'o" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("fear") + `", - "` + _lt("fearful") + `", - "` + _lt("scared") + `" - ], - "name": "` + _lt("fearful face") + `", - "shortcodes": [ - ":fearful_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😰", - "emoticons": [], - "keywords": [ - "` + _lt("anxious face with sweat") + `", - "` + _lt("blue") + `", - "` + _lt("cold") + `", - "` + _lt("face") + `", - "` + _lt("rushed") + `", - "` + _lt("sweat") + `" - ], - "name": "` + _lt("anxious face with sweat") + `", - "shortcodes": [ - ":anxious_face_with_sweat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😥", - "emoticons": [], - "keywords": [ - "` + _lt("disappointed") + `", - "` + _lt("face") + `", - "` + _lt("relieved") + `", - "` + _lt("sad but relieved face") + `", - "` + _lt("whew") + `" - ], - "name": "` + _lt("sad but relieved face") + `", - "shortcodes": [ - ":sad_but_relieved_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😢", - "emoticons": [ - ":'(" - ], - "keywords": [ - "` + _lt("cry") + `", - "` + _lt("crying face") + `", - "` + _lt("face") + `", - "` + _lt("sad") + `", - "` + _lt("tear") + `" - ], - "name": "` + _lt("crying face") + `", - "shortcodes": [ - ":crying_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😭", - "emoticons": [ - ":'-(", - ":\\"(" - ], - "keywords": [ - "` + _lt("cry") + `", - "` + _lt("face") + `", - "` + _lt("loudly crying face") + `", - "` + _lt("sad") + `", - "` + _lt("sob") + `", - "` + _lt("tear") + `" - ], - "name": "` + _lt("loudly crying face") + `", - "shortcodes": [ - ":loudly_crying_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😱", - "emoticons": [ - ":@" - ], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face screaming in fear") + `", - "` + _lt("fear") + `", - "` + _lt("Munch") + `", - "` + _lt("scared") + `", - "` + _lt("scream") + `", - "` + _lt("munch") + `" - ], - "name": "` + _lt("face screaming in fear") + `", - "shortcodes": [ - ":face_screaming_in_fear:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😖", - "emoticons": [], - "keywords": [ - "` + _lt("confounded") + `", - "` + _lt("face") + `" - ], - "name": "` + _lt("confounded face") + `", - "shortcodes": [ - ":confounded_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😣", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("persevere") + `", - "` + _lt("persevering face") + `" - ], - "name": "` + _lt("persevering face") + `", - "shortcodes": [ - ":persevering_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😞", - "emoticons": [ - ":(" - ], - "keywords": [ - "` + _lt("disappointed") + `", - "` + _lt("face") + `" - ], - "name": "` + _lt("disappointed face") + `", - "shortcodes": [ - ":disappointed_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😓", - "emoticons": [], - "keywords": [ - "` + _lt("cold") + `", - "` + _lt("downcast face with sweat") + `", - "` + _lt("face") + `", - "` + _lt("sweat") + `" - ], - "name": "` + _lt("downcast face with sweat") + `", - "shortcodes": [ - ":downcast_face_with_sweat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😩", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("tired") + `", - "` + _lt("weary") + `" - ], - "name": "` + _lt("weary face") + `", - "shortcodes": [ - ":weary_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😫", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("tired") + `" - ], - "name": "` + _lt("tired face") + `", - "shortcodes": [ - ":tired_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🥱", - "emoticons": [], - "keywords": [ - "` + _lt("bored") + `", - "` + _lt("tired") + `", - "` + _lt("yawn") + `", - "` + _lt("yawning face") + `" - ], - "name": "` + _lt("yawning face") + `", - "shortcodes": [ - ":yawning_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😤", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("face with steam from nose") + `", - "` + _lt("triumph") + `", - "` + _lt("won") + `", - "` + _lt("angry") + `", - "` + _lt("frustration") + `" - ], - "name": "` + _lt("face with steam from nose") + `", - "shortcodes": [ - ":face_with_steam_from_nose:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😡", - "emoticons": [], - "keywords": [ - "` + _lt("angry") + `", - "` + _lt("enraged") + `", - "` + _lt("face") + `", - "` + _lt("mad") + `", - "` + _lt("pouting") + `", - "` + _lt("rage") + `", - "` + _lt("red") + `" - ], - "name": "` + _lt("enraged face") + `", - "shortcodes": [ - ":enraged_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😠", - "emoticons": [ - "3:(", - ">:(" - ], - "keywords": [ - "` + _lt("anger") + `", - "` + _lt("angry") + `", - "` + _lt("face") + `", - "` + _lt("mad") + `" - ], - "name": "` + _lt("angry face") + `", - "shortcodes": [ - ":angry_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤬", - "emoticons": [], - "keywords": [ - "` + _lt("face with symbols on mouth") + `", - "` + _lt("swearing") + `" - ], - "name": "` + _lt("face with symbols on mouth") + `", - "shortcodes": [ - ":face_with_symbols_on_mouth:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😈", - "emoticons": [ - "3:)", - ">:)" - ], - "keywords": [ - "` + _lt("devil") + `", - "` + _lt("face") + `", - "` + _lt("fantasy") + `", - "` + _lt("horns") + `", - "` + _lt("smile") + `", - "` + _lt("smiling face with horns") + `", - "` + _lt("fairy tale") + `" - ], - "name": "` + _lt("smiling face with horns") + `", - "shortcodes": [ - ":smiling_face_with_horns:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "👿", - "emoticons": [], - "keywords": [ - "` + _lt("angry face with horns") + `", - "` + _lt("demon") + `", - "` + _lt("devil") + `", - "` + _lt("face") + `", - "` + _lt("fantasy") + `", - "` + _lt("imp") + `" - ], - "name": "` + _lt("angry face with horns") + `", - "shortcodes": [ - ":angry_face_with_horns:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💀", - "emoticons": [ - ":skull" - ], - "keywords": [ - "` + _lt("death") + `", - "` + _lt("face") + `", - "` + _lt("fairy tale") + `", - "` + _lt("monster") + `", - "` + _lt("skull") + `" - ], - "name": "` + _lt("skull") + `", - "shortcodes": [ - ":skull:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "☠️", - "emoticons": [], - "keywords": [ - "` + _lt("crossbones") + `", - "` + _lt("death") + `", - "` + _lt("face") + `", - "` + _lt("monster") + `", - "` + _lt("skull") + `", - "` + _lt("skull and crossbones") + `" - ], - "name": "` + _lt("skull and crossbones") + `", - "shortcodes": [ - ":skull_and_crossbones:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💩", - "emoticons": [ - ":poop" - ], - "keywords": [ - "` + _lt("dung") + `", - "` + _lt("face") + `", - "` + _lt("monster") + `", - "` + _lt("pile of poo") + `", - "` + _lt("poo") + `", - "` + _lt("poop") + `" - ], - "name": "` + _lt("pile of poo") + `", - "shortcodes": [ - ":pile_of_poo:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤡", - "emoticons": [], - "keywords": [ - "` + _lt("clown") + `", - "` + _lt("face") + `" - ], - "name": "` + _lt("clown face") + `", - "shortcodes": [ - ":clown_face:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "👹", - "emoticons": [], - "keywords": [ - "` + _lt("creature") + `", - "` + _lt("face") + `", - "` + _lt("fairy tale") + `", - "` + _lt("fantasy") + `", - "` + _lt("monster") + `", - "` + _lt("ogre") + `" - ], - "name": "` + _lt("ogre") + `", - "shortcodes": [ - ":ogre:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "👺", - "emoticons": [], - "keywords": [ - "` + _lt("creature") + `", - "` + _lt("face") + `", - "` + _lt("fairy tale") + `", - "` + _lt("fantasy") + `", - "` + _lt("goblin") + `", - "` + _lt("monster") + `" - ], - "name": "` + _lt("goblin") + `", - "shortcodes": [ - ":goblin:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "👻", - "emoticons": [ - ":ghost" - ], - "keywords": [ - "` + _lt("creature") + `", - "` + _lt("face") + `", - "` + _lt("fairy tale") + `", - "` + _lt("fantasy") + `", - "` + _lt("ghost") + `", - "` + _lt("monster") + `" - ], - "name": "` + _lt("ghost") + `", - "shortcodes": [ - ":ghost:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "👽", - "emoticons": [ - ":et", - ":alien" - ], - "keywords": [ - "` + _lt("alien") + `", - "` + _lt("creature") + `", - "` + _lt("extraterrestrial") + `", - "` + _lt("face") + `", - "` + _lt("fantasy") + `", - "` + _lt("ufo") + `" - ], - "name": "` + _lt("alien") + `", - "shortcodes": [ - ":alien:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "👾", - "emoticons": [], - "keywords": [ - "` + _lt("alien") + `", - "` + _lt("creature") + `", - "` + _lt("extraterrestrial") + `", - "` + _lt("face") + `", - "` + _lt("monster") + `", - "` + _lt("ufo") + `" - ], - "name": "` + _lt("alien monster") + `", - "shortcodes": [ - ":alien_monster:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🤖", - "emoticons": [], - "keywords": [ - "` + _lt("face") + `", - "` + _lt("monster") + `", - "` + _lt("robot") + `" - ], - "name": "` + _lt("robot") + `", - "shortcodes": [ - ":robot:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😺", - "emoticons": [ - ":kitten" - ], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("face") + `", - "` + _lt("grinning") + `", - "` + _lt("mouth") + `", - "` + _lt("open") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("grinning cat") + `", - "shortcodes": [ - ":grinning_cat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😸", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("grin") + `", - "` + _lt("grinning cat with smiling eyes") + `", - "` + _lt("smile") + `" - ], - "name": "` + _lt("grinning cat with smiling eyes") + `", - "shortcodes": [ - ":grinning_cat_with_smiling_eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😹", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("cat with tears of joy") + `", - "` + _lt("face") + `", - "` + _lt("joy") + `", - "` + _lt("tear") + `" - ], - "name": "` + _lt("cat with tears of joy") + `", - "shortcodes": [ - ":cat_with_ltears_of_joy:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😻", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("heart") + `", - "` + _lt("love") + `", - "` + _lt("smile") + `", - "` + _lt("smiling cat with heart-eyes") + `", - "` + _lt("smiling cat face with heart eyes") + `", - "` + _lt("smiling cat face with heart-eyes") + `" - ], - "name": "` + _lt("smiling cat with heart-eyes") + `", - "shortcodes": [ - ":smiling_cat_with_heart-eyes:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😼", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("cat with wry smile") + `", - "` + _lt("face") + `", - "` + _lt("ironic") + `", - "` + _lt("smile") + `", - "` + _lt("wry") + `" - ], - "name": "` + _lt("cat with wry smile") + `", - "shortcodes": [ - ":cat_with_wry_smile:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😽", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("eye") + `", - "` + _lt("face") + `", - "` + _lt("kiss") + `", - "` + _lt("kissing cat") + `" - ], - "name": "` + _lt("kissing cat") + `", - "shortcodes": [ - ":kissing_cat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙀", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("face") + `", - "` + _lt("oh") + `", - "` + _lt("surprised") + `", - "` + _lt("weary") + `" - ], - "name": "` + _lt("weary cat") + `", - "shortcodes": [ - ":weary_cat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😿", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("cry") + `", - "` + _lt("crying cat") + `", - "` + _lt("face") + `", - "` + _lt("sad") + `", - "` + _lt("tear") + `" - ], - "name": "` + _lt("crying cat") + `", - "shortcodes": [ - ":crying_cat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "😾", - "emoticons": [], - "keywords": [ - "` + _lt("cat") + `", - "` + _lt("face") + `", - "` + _lt("pouting") + `" - ], - "name": "` + _lt("pouting cat") + `", - "shortcodes": [ - ":pouting_cat:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙈", - "emoticons": [ - ":no_see" - ], - "keywords": [ - "` + _lt("evil") + `", - "` + _lt("face") + `", - "` + _lt("forbidden") + `", - "` + _lt("monkey") + `", - "` + _lt("see") + `", - "` + _lt("see-no-evil monkey") + `" - ], - "name": "` + _lt("see-no-evil monkey") + `", - "shortcodes": [ - ":see-no-evil_monkey:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙉", - "emoticons": [ - ":no_hear" - ], - "keywords": [ - "` + _lt("evil") + `", - "` + _lt("face") + `", - "` + _lt("forbidden") + `", - "` + _lt("hear") + `", - "` + _lt("hear-no-evil monkey") + `", - "` + _lt("monkey") + `" - ], - "name": "` + _lt("hear-no-evil monkey") + `", - "shortcodes": [ - ":hear-no-evil_monkey:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "🙊", - "emoticons": [ - ":no_speak" - ], - "keywords": [ - "` + _lt("evil") + `", - "` + _lt("face") + `", - "` + _lt("forbidden") + `", - "` + _lt("monkey") + `", - "` + _lt("speak") + `", - "` + _lt("speak-no-evil monkey") + `" - ], - "name": "` + _lt("speak-no-evil monkey") + `", - "shortcodes": [ - ":speak-no-evil_monkey:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💋", - "emoticons": [], - "keywords": [ - "` + _lt("kiss") + `", - "` + _lt("kiss mark") + `", - "` + _lt("lips") + `" - ], - "name": "` + _lt("kiss mark") + `", - "shortcodes": [ - ":kiss_mark:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💌", - "emoticons": [], - "keywords": [ - "` + _lt("heart") + `", - "` + _lt("letter") + `", - "` + _lt("love") + `", - "` + _lt("mail") + `" - ], - "name": "` + _lt("love letter") + `", - "shortcodes": [ - ":love_letter:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💘", - "emoticons": [], - "keywords": [ - "` + _lt("arrow") + `", - "` + _lt("cupid") + `", - "` + _lt("heart with arrow") + `" - ], - "name": "` + _lt("heart with arrow") + `", - "shortcodes": [ - ":heart_with_arrow:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💝", - "emoticons": [], - "keywords": [ - "` + _lt("heart with ribbon") + `", - "` + _lt("ribbon") + `", - "` + _lt("valentine") + `" - ], - "name": "` + _lt("heart with ribbon") + `", - "shortcodes": [ - ":heart_with_ribbon:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💖", - "emoticons": [], - "keywords": [ - "` + _lt("excited") + `", - "` + _lt("sparkle") + `", - "` + _lt("sparkling heart") + `" - ], - "name": "` + _lt("sparkling heart") + `", - "shortcodes": [ - ":sparkling_heart:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💗", - "emoticons": [], - "keywords": [ - "` + _lt("excited") + `", - "` + _lt("growing") + `", - "` + _lt("growing heart") + `", - "` + _lt("nervous") + `", - "` + _lt("pulse") + `" - ], - "name": "` + _lt("growing heart") + `", - "shortcodes": [ - ":growing_heart:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💓", - "emoticons": [], - "keywords": [ - "` + _lt("beating") + `", - "` + _lt("beating heart") + `", - "` + _lt("heartbeat") + `", - "` + _lt("pulsating") + `" - ], - "name": "` + _lt("beating heart") + `", - "shortcodes": [ - ":beating_heart:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💞", - "emoticons": [], - "keywords": [ - "` + _lt("revolving") + `", - "` + _lt("revolving hearts") + `" - ], - "name": "` + _lt("revolving hearts") + `", - "shortcodes": [ - ":revolving_hearts:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💕", - "emoticons": [], - "keywords": [ - "` + _lt("love") + `", - "` + _lt("two hearts") + `" - ], - "name": "` + _lt("two hearts") + `", - "shortcodes": [ - ":two_hearts:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💟", - "emoticons": [], - "keywords": [ - "` + _lt("heart") + `", - "` + _lt("heart decoration") + `" - ], - "name": "` + _lt("heart decoration") + `", - "shortcodes": [ - ":heart_decoration:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "❣️", - "emoticons": [], - "keywords": [ - "` + _lt("exclamation") + `", - "` + _lt("heart exclamation") + `", - "` + _lt("mark") + `", - "` + _lt("punctuation") + `" - ], - "name": "` + _lt("heart exclamation") + `", - "shortcodes": [ - ":heart_exclamation:" - ] -}, -{ - "category": "Smileys & Emotion", - "codepoints": "💔", - "emoticons": [ - "