diff --git a/Makefile b/Makefile index 953f6ee..621ad4a 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ SRCS=slack.c \ slack-channel.c \ slack-config.c \ slack-command.c \ + slack-emoji.c \ slack-input.c \ slack-message.c \ slack-oauth.c \ @@ -46,6 +47,9 @@ all: libwebsockets/lib/libwebsockets.a json-c/libjson-c.a weechat-slack weechat-slack: $(OBJS) $(CXX) $(LDFLAGS) -o slack.so $(OBJS) $(LDLIBS) +slack-emoji.inc: slack-emoji.py + env python3 slack-emoji.py > slack-emoji.inc + libwebsockets/lib/libwebsockets.a: cd libwebsockets && env CFLAGS= LDFLAGS= cmake -DLWS_STATIC_PIC=ON -DLWS_WITH_SHARED=OFF -DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITH_LIBEV=OFF -DLWS_WITH_LIBUV=OFF -DLWS_WITH_LIBEVENT=OFF -DCMAKE_BUILD_TYPE=DEBUG . $(MAKE) -C libwebsockets diff --git a/README.org b/README.org index a43ce62..b7842af 100644 --- a/README.org +++ b/README.org @@ -74,10 +74,15 @@ - [ ] Implement handling api message =message.message_changed= - [ ] Implement handling api message =message.message_deleted= - [ ] Implement handling api message =message.message_replied= + - [ ] Implement sending websocket =typing= message ** TODO [#B] Implement completion engine (milestone v0.3) - [ ] Tab completion for slack emoji (see [[http://github.com/bqv/weechat-slack/issues/3][#3]]) + - [ ] Support Slack Emoji + - [ ] Support Custom Emoji - [ ] Tab completion for display/user names (see [[http://github.com/bqv/weechat-slack/issues/1][#1]]) - [ ] Sort nick-completion by recent (see [[http://github.com/bqv/weechat-slack/issues/4][#4]]) +** TODO [#B] Implement websocket ping and pong (milestone v0.4) + - [ ] Add ping timer and pong handler (see [[http://github.com/bqv/weechat-slack/issues/9][#9]]) ** TODO [#C] Implement remaining api endpoints and events (milestone v0.5) - [ ] Complete api endpoint set - [ ] Complete api event set diff --git a/slack-emoji.c b/slack-emoji.c new file mode 100644 index 0000000..21983cf --- /dev/null +++ b/slack-emoji.c @@ -0,0 +1,12 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, version 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include + +#include "weechat-plugin.h" +#include "slack.h" +#include "slack-emoji.h" + +#include "slack-emoji.inc" + diff --git a/slack-emoji.h b/slack-emoji.h new file mode 100644 index 0000000..26ae2c4 --- /dev/null +++ b/slack-emoji.h @@ -0,0 +1,10 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, version 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef _SLACK_EMOJI_H_ +#define _SLACK_EMOJI_H_ + + + +#endif /*SLACK_EMOJI_H*/ diff --git a/slack-emoji.inc b/slack-emoji.inc new file mode 100644 index 0000000..743c407 --- /dev/null +++ b/slack-emoji.inc @@ -0,0 +1,1698 @@ + +#include + +#define MAX_TEXTS 7 +#define MAX_NAMES 4 + +struct t_slack_emoji_by_name { + const char *name; + const char *unicode; + const char *text_to; + const char *text_from[MAX_TEXTS]; +}; + +struct t_slack_emoji_by_text { + const char *text; + const char *unicode; + const char *name_to; + const char *name_from[MAX_NAMES]; +}; + +static struct t_slack_emoji_by_name slack_emoji_by_name[] = +{ { "+1", "\u1f44D", NULL, {NULL} } +, { "-1", "\u1f44E", NULL, {NULL} } +, { "100", "\u1f4aF", NULL, {NULL} } +, { "1234", "\u1f522", NULL, {NULL} } +, { "8ball", "\u1f3b1", NULL, {NULL} } +, { "a", "\u1f170\ufe0f", NULL, {NULL} } +, { "ab", "\u1f18E", NULL, {NULL} } +, { "abc", "\u1f524", NULL, {NULL} } +, { "abcd", "\u1f521", NULL, {NULL} } +, { "accept", "\u1f251", NULL, {NULL} } +, { "admission_tickets", "\u1f39F\ufe0f", NULL, {NULL} } +, { "adult", "\u1f9d1", NULL, {NULL} } +, { "aerial_tramway", "\u1f6a1", NULL, {NULL} } +, { "airplane", "\u2708\ufe0f", NULL, {NULL} } +, { "airplane_arriving", "\u1f6eC", NULL, {NULL} } +, { "airplane_departure", "\u1f6eB", NULL, {NULL} } +, { "alarm_clock", "\u23f0", NULL, {NULL} } +, { "alembic", "\u2697\ufe0f", NULL, {NULL} } +, { "alien", "\u1f47D", NULL, {NULL} } +, { "ambulance", "\u1f691", NULL, {NULL} } +, { "amphora", "\u1f3fA", NULL, {NULL} } +, { "anchor", "\u2693", NULL, {NULL} } +, { "angel", "\u1f47C", NULL, {NULL} } +, { "anger", "\u1f4a2", NULL, {NULL} } +, { "angry", "\u1f620", NULL, {">:(", ">:-(", NULL} } +, { "anguished", "\u1f627", NULL, {"D:", NULL} } +, { "ant", "\u1f41C", NULL, {NULL} } +, { "apple", "\u1f34E", NULL, {NULL} } +, { "aquarius", "\u2652", NULL, {NULL} } +, { "aries", "\u2648", NULL, {NULL} } +, { "arrow_backward", "\u25c0\ufe0f", NULL, {NULL} } +, { "arrow_double_down", "\u23ec", NULL, {NULL} } +, { "arrow_double_up", "\u23eb", NULL, {NULL} } +, { "arrow_down", "\u2b07\ufe0f", NULL, {NULL} } +, { "arrow_down_small", "\u1f53D", NULL, {NULL} } +, { "arrow_forward", "\u25b6\ufe0f", NULL, {NULL} } +, { "arrow_heading_down", "\u2935\ufe0f", NULL, {NULL} } +, { "arrow_heading_up", "\u2934\ufe0f", NULL, {NULL} } +, { "arrow_left", "\u2b05\ufe0f", NULL, {NULL} } +, { "arrow_lower_left", "\u2199\ufe0f", NULL, {NULL} } +, { "arrow_lower_right", "\u2198\ufe0f", NULL, {NULL} } +, { "arrow_right", "\u27a1\ufe0f", NULL, {NULL} } +, { "arrow_right_hook", "\u21aa\ufe0f", NULL, {NULL} } +, { "arrow_up", "\u2b06\ufe0f", NULL, {NULL} } +, { "arrow_up_down", "\u2195\ufe0f", NULL, {NULL} } +, { "arrow_up_small", "\u1f53C", NULL, {NULL} } +, { "arrow_upper_left", "\u2196\ufe0f", NULL, {NULL} } +, { "arrow_upper_right", "\u2197\ufe0f", NULL, {NULL} } +, { "arrows_clockwise", "\u1f503", NULL, {NULL} } +, { "arrows_counterclockwise", "\u1f504", NULL, {NULL} } +, { "art", "\u1f3a8", NULL, {NULL} } +, { "articulated_lorry", "\u1f69B", NULL, {NULL} } +, { "astonished", "\u1f632", NULL, {NULL} } +, { "athletic_shoe", "\u1f45F", NULL, {NULL} } +, { "atm", "\u1f3e7", NULL, {NULL} } +, { "atom_symbol", "\u269b\ufe0f", NULL, {NULL} } +, { "avocado", "\u1f951", NULL, {NULL} } +, { "b", "\u1f171\ufe0f", NULL, {NULL} } +, { "baby", "\u1f476", NULL, {NULL} } +, { "baby_bottle", "\u1f37C", NULL, {NULL} } +, { "baby_chick", "\u1f424", NULL, {NULL} } +, { "baby_symbol", "\u1f6bC", NULL, {NULL} } +, { "back", "\u1f519", NULL, {NULL} } +, { "bacon", "\u1f953", NULL, {NULL} } +, { "badminton_racquet_and_shuttlecock", "\u1f3f8", NULL, {NULL} } +, { "baggage_claim", "\u1f6c4", NULL, {NULL} } +, { "baguette_bread", "\u1f956", NULL, {NULL} } +, { "balloon", "\u1f388", NULL, {NULL} } +, { "ballot_box_with_ballot", "\u1f5f3\ufe0f", NULL, {NULL} } +, { "ballot_box_with_check", "\u2611\ufe0f", NULL, {NULL} } +, { "bamboo", "\u1f38D", NULL, {NULL} } +, { "banana", "\u1f34C", NULL, {NULL} } +, { "bangbang", "\u203c\ufe0f", NULL, {NULL} } +, { "bank", "\u1f3e6", NULL, {NULL} } +, { "bar_chart", "\u1f4cA", NULL, {NULL} } +, { "barber", "\u1f488", NULL, {NULL} } +, { "barely_sunny", "\u1f325\ufe0f", NULL, {NULL} } +, { "baseball", "\u26be", NULL, {NULL} } +, { "basketball", "\u1f3c0", NULL, {NULL} } +, { "bat", "\u1f987", NULL, {NULL} } +, { "bath", "\u1f6c0", NULL, {NULL} } +, { "bathtub", "\u1f6c1", NULL, {NULL} } +, { "battery", "\u1f50B", NULL, {NULL} } +, { "beach_with_umbrella", "\u1f3d6\ufe0f", NULL, {NULL} } +, { "bear", "\u1f43B", NULL, {NULL} } +, { "bearded_person", "\u1f9d4", NULL, {NULL} } +, { "bed", "\u1f6cF\ufe0f", NULL, {NULL} } +, { "bee", "\u1f41D", NULL, {NULL} } +, { "beer", "\u1f37A", NULL, {NULL} } +, { "beers", "\u1f37B", NULL, {NULL} } +, { "beetle", "\u1f41E", NULL, {NULL} } +, { "beginner", "\u1f530", NULL, {NULL} } +, { "bell", "\u1f514", NULL, {NULL} } +, { "bellhop_bell", "\u1f6cE\ufe0f", NULL, {NULL} } +, { "bento", "\u1f371", NULL, {NULL} } +, { "bicyclist", "\u1f6b4", NULL, {NULL} } +, { "bike", "\u1f6b2", NULL, {NULL} } +, { "bikini", "\u1f459", NULL, {NULL} } +, { "billed_cap", "\u1f9e2", NULL, {NULL} } +, { "biohazard_sign", "\u2623\ufe0f", NULL, {NULL} } +, { "bird", "\u1f426", NULL, {NULL} } +, { "birthday", "\u1f382", NULL, {NULL} } +, { "black_circle", "\u26ab", NULL, {NULL} } +, { "black_circle_for_record", "\u23fa\ufe0f", NULL, {NULL} } +, { "black_heart", "\u1f5a4", NULL, {NULL} } +, { "black_joker", "\u1f0cF", NULL, {NULL} } +, { "black_large_square", "\u2b1b", NULL, {NULL} } +, { "black_left_pointing_double_triangle_with_vertical_bar", "\u23ee\ufe0f", NULL, {NULL} } +, { "black_medium_small_square", "\u25fe", NULL, {NULL} } +, { "black_medium_square", "\u25fc\ufe0f", NULL, {NULL} } +, { "black_nib", "\u2712\ufe0f", NULL, {NULL} } +, { "black_right_pointing_double_triangle_with_vertical_bar", "\u23ed\ufe0f", NULL, {NULL} } +, { "black_right_pointing_triangle_with_double_vertical_bar", "\u23ef\ufe0f", NULL, {NULL} } +, { "black_small_square", "\u25aa\ufe0f", NULL, {NULL} } +, { "black_square_button", "\u1f532", NULL, {NULL} } +, { "black_square_for_stop", "\u23f9\ufe0f", NULL, {NULL} } +, { "blond-haired-man", "\u1f471\u200d\u2642\ufe0f", NULL, {NULL} } +, { "blond-haired-woman", "\u1f471\u200d\u2640\ufe0f", NULL, {NULL} } +, { "blossom", "\u1f33C", NULL, {NULL} } +, { "blowfish", "\u1f421", NULL, {NULL} } +, { "blue_book", "\u1f4d8", NULL, {NULL} } +, { "blue_car", "\u1f699", NULL, {NULL} } +, { "blue_heart", "\u1f499", "<3", {NULL} } +, { "blush", "\u1f60A", ":)", {NULL} } +, { "boar", "\u1f417", NULL, {NULL} } +, { "boat", "\u26f5", NULL, {NULL} } +, { "bomb", "\u1f4a3", NULL, {NULL} } +, { "book", "\u1f4d6", NULL, {NULL} } +, { "bookmark", "\u1f516", NULL, {NULL} } +, { "bookmark_tabs", "\u1f4d1", NULL, {NULL} } +, { "books", "\u1f4dA", NULL, {NULL} } +, { "boom", "\u1f4a5", NULL, {NULL} } +, { "boot", "\u1f462", NULL, {NULL} } +, { "bouquet", "\u1f490", NULL, {NULL} } +, { "bow", "\u1f647", NULL, {NULL} } +, { "bow_and_arrow", "\u1f3f9", NULL, {NULL} } +, { "bowl_with_spoon", "\u1f963", NULL, {NULL} } +, { "bowling", "\u1f3b3", NULL, {NULL} } +, { "boxing_glove", "\u1f94A", NULL, {NULL} } +, { "boy", "\u1f466", NULL, {NULL} } +, { "brain", "\u1f9e0", NULL, {NULL} } +, { "bread", "\u1f35E", NULL, {NULL} } +, { "breast-feeding", "\u1f931", NULL, {NULL} } +, { "bride_with_veil", "\u1f470", NULL, {NULL} } +, { "bridge_at_night", "\u1f309", NULL, {NULL} } +, { "briefcase", "\u1f4bC", NULL, {NULL} } +, { "broccoli", "\u1f966", NULL, {NULL} } +, { "broken_heart", "\u1f494", "", ":->", NULL} } +, { "leaves", "\u1f343", NULL, {NULL} } +, { "ledger", "\u1f4d2", NULL, {NULL} } +, { "left-facing_fist", "\u1f91B", NULL, {NULL} } +, { "left_luggage", "\u1f6c5", NULL, {NULL} } +, { "left_right_arrow", "\u2194\ufe0f", NULL, {NULL} } +, { "left_speech_bubble", "\u1f5e8\ufe0f", NULL, {NULL} } +, { "leftwards_arrow_with_hook", "\u21a9\ufe0f", NULL, {NULL} } +, { "lemon", "\u1f34B", NULL, {NULL} } +, { "leo", "\u264c", NULL, {NULL} } +, { "leopard", "\u1f406", NULL, {NULL} } +, { "level_slider", "\u1f39A\ufe0f", NULL, {NULL} } +, { "libra", "\u264e", NULL, {NULL} } +, { "light_rail", "\u1f688", NULL, {NULL} } +, { "lightning", "\u1f329\ufe0f", NULL, {NULL} } +, { "lightning_cloud", "\u1f329\ufe0f", NULL, {NULL} } +, { "link", "\u1f517", NULL, {NULL} } +, { "linked_paperclips", "\u1f587\ufe0f", NULL, {NULL} } +, { "lion_face", "\u1f981", NULL, {NULL} } +, { "lips", "\u1f444", NULL, {NULL} } +, { "lipstick", "\u1f484", NULL, {NULL} } +, { "lizard", "\u1f98E", NULL, {NULL} } +, { "lock", "\u1f512", NULL, {NULL} } +, { "lock_with_ink_pen", "\u1f50F", NULL, {NULL} } +, { "lollipop", "\u1f36D", NULL, {NULL} } +, { "loop", "\u27bf", NULL, {NULL} } +, { "loud_sound", "\u1f50A", NULL, {NULL} } +, { "loudspeaker", "\u1f4e2", NULL, {NULL} } +, { "love_hotel", "\u1f3e9", NULL, {NULL} } +, { "love_letter", "\u1f48C", NULL, {NULL} } +, { "low_brightness", "\u1f505", NULL, {NULL} } +, { "lower_left_ballpoint_pen", "\u1f58A\ufe0f", NULL, {NULL} } +, { "lower_left_crayon", "\u1f58D\ufe0f", NULL, {NULL} } +, { "lower_left_fountain_pen", "\u1f58B\ufe0f", NULL, {NULL} } +, { "lower_left_paintbrush", "\u1f58C\ufe0f", NULL, {NULL} } +, { "lying_face", "\u1f925", NULL, {NULL} } +, { "m", "\u24c2\ufe0f", NULL, {NULL} } +, { "mag", "\u1f50D", NULL, {NULL} } +, { "mag_right", "\u1f50E", NULL, {NULL} } +, { "mage", "\u1f9d9", NULL, {NULL} } +, { "mahjong", "\u1f004", NULL, {NULL} } +, { "mailbox", "\u1f4eB", NULL, {NULL} } +, { "mailbox_closed", "\u1f4eA", NULL, {NULL} } +, { "mailbox_with_mail", "\u1f4eC", NULL, {NULL} } +, { "mailbox_with_no_mail", "\u1f4eD", NULL, {NULL} } +, { "male-artist", "\u1f468\u200d\u1f3a8", NULL, {NULL} } +, { "male-astronaut", "\u1f468\u200d\u1f680", NULL, {NULL} } +, { "male-construction-worker", "\u1f477\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male-cook", "\u1f468\u200d\u1f373", NULL, {NULL} } +, { "male-detective", "\u1f575\ufe0f\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male-doctor", "\u1f468\u200d\u2695\ufe0f", NULL, {NULL} } +, { "male-factory-worker", "\u1f468\u200d\u1f3eD", NULL, {NULL} } +, { "male-farmer", "\u1f468\u200d\u1f33E", NULL, {NULL} } +, { "male-firefighter", "\u1f468\u200d\u1f692", NULL, {NULL} } +, { "male-guard", "\u1f482\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male-judge", "\u1f468\u200d\u2696\ufe0f", NULL, {NULL} } +, { "male-mechanic", "\u1f468\u200d\u1f527", NULL, {NULL} } +, { "male-office-worker", "\u1f468\u200d\u1f4bC", NULL, {NULL} } +, { "male-pilot", "\u1f468\u200d\u2708\ufe0f", NULL, {NULL} } +, { "male-police-officer", "\u1f46E\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male-scientist", "\u1f468\u200d\u1f52C", NULL, {NULL} } +, { "male-singer", "\u1f468\u200d\u1f3a4", NULL, {NULL} } +, { "male-student", "\u1f468\u200d\u1f393", NULL, {NULL} } +, { "male-teacher", "\u1f468\u200d\u1f3eB", NULL, {NULL} } +, { "male-technologist", "\u1f468\u200d\u1f4bB", NULL, {NULL} } +, { "male_elf", "\u1f9dD\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male_fairy", "\u1f9dA\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male_genie", "\u1f9dE\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male_mage", "\u1f9d9\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male_sign", "\u2642\ufe0f", NULL, {NULL} } +, { "male_vampire", "\u1f9dB\u200d\u2642\ufe0f", NULL, {NULL} } +, { "male_zombie", "\u1f9dF\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man", "\u1f468", NULL, {NULL} } +, { "man-biking", "\u1f6b4\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-bouncing-ball", "\u26f9\ufe0f\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-bowing", "\u1f647\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-boy", "\u1f468\u200d\u1f466", NULL, {NULL} } +, { "man-boy-boy", "\u1f468\u200d\u1f466\u200d\u1f466", NULL, {NULL} } +, { "man-cartwheeling", "\u1f938\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-facepalming", "\u1f926\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-frowning", "\u1f64D\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-gesturing-no", "\u1f645\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-gesturing-ok", "\u1f646\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-getting-haircut", "\u1f487\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-getting-massage", "\u1f486\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-girl", "\u1f468\u200d\u1f467", NULL, {NULL} } +, { "man-girl-boy", "\u1f468\u200d\u1f467\u200d\u1f466", NULL, {NULL} } +, { "man-girl-girl", "\u1f468\u200d\u1f467\u200d\u1f467", NULL, {NULL} } +, { "man-golfing", "\u1f3cC\ufe0f\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-heart-man", "\u1f468\u200d\u2764\ufe0f\u200d\u1f468", NULL, {NULL} } +, { "man-juggling", "\u1f939\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-kiss-man", "\u1f468\u200d\u2764\ufe0f\u200d\u1f48B\u200d\u1f468", NULL, {NULL} } +, { "man-lifting-weights", "\u1f3cB\ufe0f\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-man-boy", "\u1f468\u200d\u1f468\u200d\u1f466", NULL, {NULL} } +, { "man-man-boy-boy", "\u1f468\u200d\u1f468\u200d\u1f466\u200d\u1f466", NULL, {NULL} } +, { "man-man-girl", "\u1f468\u200d\u1f468\u200d\u1f467", NULL, {NULL} } +, { "man-man-girl-boy", "\u1f468\u200d\u1f468\u200d\u1f467\u200d\u1f466", NULL, {NULL} } +, { "man-man-girl-girl", "\u1f468\u200d\u1f468\u200d\u1f467\u200d\u1f467", NULL, {NULL} } +, { "man-mountain-biking", "\u1f6b5\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-playing-handball", "\u1f93E\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-playing-water-polo", "\u1f93D\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-pouting", "\u1f64E\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-raising-hand", "\u1f64B\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-rowing-boat", "\u1f6a3\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-running", "\u1f3c3\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-shrugging", "\u1f937\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-surfing", "\u1f3c4\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-swimming", "\u1f3cA\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-tipping-hand", "\u1f481\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-walking", "\u1f6b6\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-wearing-turban", "\u1f473\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-with-bunny-ears-partying", "\u1f46F\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man-woman-boy", "\u1f468\u200d\u1f469\u200d\u1f466", NULL, {NULL} } +, { "man-woman-boy", "\u1f46A", NULL, {NULL} } +, { "man-woman-boy-boy", "\u1f468\u200d\u1f469\u200d\u1f466\u200d\u1f466", NULL, {NULL} } +, { "man-woman-girl", "\u1f468\u200d\u1f469\u200d\u1f467", NULL, {NULL} } +, { "man-woman-girl-boy", "\u1f468\u200d\u1f469\u200d\u1f467\u200d\u1f466", NULL, {NULL} } +, { "man-woman-girl-girl", "\u1f468\u200d\u1f469\u200d\u1f467\u200d\u1f467", NULL, {NULL} } +, { "man-wrestling", "\u1f93C\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man_and_woman_holding_hands", "\u1f46B", NULL, {NULL} } +, { "man_climbing", "\u1f9d7\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man_dancing", "\u1f57A", NULL, {NULL} } +, { "man_in_business_suit_levitating", "\u1f574\ufe0f", NULL, {NULL} } +, { "man_in_lotus_position", "\u1f9d8\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man_in_steamy_room", "\u1f9d6\u200d\u2642\ufe0f", NULL, {NULL} } +, { "man_in_tuxedo", "\u1f935", NULL, {NULL} } +, { "man_with_gua_pi_mao", "\u1f472", NULL, {NULL} } +, { "man_with_turban", "\u1f473", NULL, {NULL} } +, { "mans_shoe", "\u1f45E", NULL, {NULL} } +, { "mantelpiece_clock", "\u1f570\ufe0f", NULL, {NULL} } +, { "maple_leaf", "\u1f341", NULL, {NULL} } +, { "martial_arts_uniform", "\u1f94B", NULL, {NULL} } +, { "mask", "\u1f637", NULL, {NULL} } +, { "massage", "\u1f486", NULL, {NULL} } +, { "meat_on_bone", "\u1f356", NULL, {NULL} } +, { "medal", "\u1f396\ufe0f", NULL, {NULL} } +, { "medical_symbol", "\u2695\ufe0f", NULL, {NULL} } +, { "mega", "\u1f4e3", NULL, {NULL} } +, { "melon", "\u1f348", NULL, {NULL} } +, { "memo", "\u1f4dD", NULL, {NULL} } +, { "menorah_with_nine_branches", "\u1f54E", NULL, {NULL} } +, { "mens", "\u1f6b9", NULL, {NULL} } +, { "mermaid", "\u1f9dC\u200d\u2640\ufe0f", NULL, {NULL} } +, { "merman", "\u1f9dC\u200d\u2642\ufe0f", NULL, {NULL} } +, { "merperson", "\u1f9dC", NULL, {NULL} } +, { "metro", "\u1f687", NULL, {NULL} } +, { "microphone", "\u1f3a4", NULL, {NULL} } +, { "microscope", "\u1f52C", NULL, {NULL} } +, { "middle_finger", "\u1f595", NULL, {NULL} } +, { "milky_way", "\u1f30C", NULL, {NULL} } +, { "minibus", "\u1f690", NULL, {NULL} } +, { "minidisc", "\u1f4bD", NULL, {NULL} } +, { "mobile_phone_off", "\u1f4f4", NULL, {NULL} } +, { "money_mouth_face", "\u1f911", NULL, {NULL} } +, { "money_with_wings", "\u1f4b8", NULL, {NULL} } +, { "moneybag", "\u1f4b0", NULL, {NULL} } +, { "monkey", "\u1f412", NULL, {NULL} } +, { "monkey_face", "\u1f435", NULL, {":o)", NULL} } +, { "monorail", "\u1f69D", NULL, {NULL} } +, { "moon", "\u1f314", NULL, {NULL} } +, { "mortar_board", "\u1f393", NULL, {NULL} } +, { "mosque", "\u1f54C", NULL, {NULL} } +, { "mostly_sunny", "\u1f324\ufe0f", NULL, {NULL} } +, { "mother_christmas", "\u1f936", NULL, {NULL} } +, { "motor_boat", "\u1f6e5\ufe0f", NULL, {NULL} } +, { "motor_scooter", "\u1f6f5", NULL, {NULL} } +, { "motorway", "\u1f6e3\ufe0f", NULL, {NULL} } +, { "mount_fuji", "\u1f5fB", NULL, {NULL} } +, { "mountain", "\u26f0\ufe0f", NULL, {NULL} } +, { "mountain_bicyclist", "\u1f6b5", NULL, {NULL} } +, { "mountain_cableway", "\u1f6a0", NULL, {NULL} } +, { "mountain_railway", "\u1f69E", NULL, {NULL} } +, { "mouse", "\u1f42D", NULL, {NULL} } +, { "mouse2", "\u1f401", NULL, {NULL} } +, { "movie_camera", "\u1f3a5", NULL, {NULL} } +, { "moyai", "\u1f5fF", NULL, {NULL} } +, { "mrs_claus", "\u1f936", NULL, {NULL} } +, { "muscle", "\u1f4aA", NULL, {NULL} } +, { "mushroom", "\u1f344", NULL, {NULL} } +, { "musical_keyboard", "\u1f3b9", NULL, {NULL} } +, { "musical_note", "\u1f3b5", NULL, {NULL} } +, { "musical_score", "\u1f3bC", NULL, {NULL} } +, { "mute", "\u1f507", NULL, {NULL} } +, { "nail_care", "\u1f485", NULL, {NULL} } +, { "name_badge", "\u1f4dB", NULL, {NULL} } +, { "national_park", "\u1f3dE\ufe0f", NULL, {NULL} } +, { "nauseated_face", "\u1f922", NULL, {NULL} } +, { "necktie", "\u1f454", NULL, {NULL} } +, { "negative_squared_cross_mark", "\u274e", NULL, {NULL} } +, { "nerd_face", "\u1f913", NULL, {NULL} } +, { "neutral_face", "\u1f610", NULL, {":|", ":-|", NULL} } +, { "new", "\u1f195", NULL, {NULL} } +, { "new_moon", "\u1f311", NULL, {NULL} } +, { "new_moon_with_face", "\u1f31A", NULL, {NULL} } +, { "newspaper", "\u1f4f0", NULL, {NULL} } +, { "ng", "\u1f196", NULL, {NULL} } +, { "night_with_stars", "\u1f303", NULL, {NULL} } +, { "nine", "9\ufe0f\u20e3", NULL, {NULL} } +, { "no_bell", "\u1f515", NULL, {NULL} } +, { "no_bicycles", "\u1f6b3", NULL, {NULL} } +, { "no_entry", "\u26d4", NULL, {NULL} } +, { "no_entry_sign", "\u1f6aB", NULL, {NULL} } +, { "no_good", "\u1f645", NULL, {NULL} } +, { "no_mobile_phones", "\u1f4f5", NULL, {NULL} } +, { "no_mouth", "\u1f636", NULL, {NULL} } +, { "no_pedestrians", "\u1f6b7", NULL, {NULL} } +, { "no_smoking", "\u1f6aD", NULL, {NULL} } +, { "non-potable_water", "\u1f6b1", NULL, {NULL} } +, { "nose", "\u1f443", NULL, {NULL} } +, { "notebook", "\u1f4d3", NULL, {NULL} } +, { "notebook_with_decorative_cover", "\u1f4d4", NULL, {NULL} } +, { "notes", "\u1f3b6", NULL, {NULL} } +, { "nut_and_bolt", "\u1f529", NULL, {NULL} } +, { "o", "\u2b55", NULL, {NULL} } +, { "o2", "\u1f17E\ufe0f", NULL, {NULL} } +, { "ocean", "\u1f30A", NULL, {NULL} } +, { "octagonal_sign", "\u1f6d1", NULL, {NULL} } +, { "octopus", "\u1f419", NULL, {NULL} } +, { "oden", "\u1f362", NULL, {NULL} } +, { "office", "\u1f3e2", NULL, {NULL} } +, { "oil_drum", "\u1f6e2\ufe0f", NULL, {NULL} } +, { "ok", "\u1f197", NULL, {NULL} } +, { "ok_hand", "\u1f44C", NULL, {NULL} } +, { "ok_woman", "\u1f646", NULL, {NULL} } +, { "old_key", "\u1f5dD\ufe0f", NULL, {NULL} } +, { "older_adult", "\u1f9d3", NULL, {NULL} } +, { "older_man", "\u1f474", NULL, {NULL} } +, { "older_woman", "\u1f475", NULL, {NULL} } +, { "om_symbol", "\u1f549\ufe0f", NULL, {NULL} } +, { "on", "\u1f51B", NULL, {NULL} } +, { "oncoming_automobile", "\u1f698", NULL, {NULL} } +, { "oncoming_bus", "\u1f68D", NULL, {NULL} } +, { "oncoming_police_car", "\u1f694", NULL, {NULL} } +, { "oncoming_taxi", "\u1f696", NULL, {NULL} } +, { "one", "1\ufe0f\u20e3", NULL, {NULL} } +, { "open_book", "\u1f4d6", NULL, {NULL} } +, { "open_file_folder", "\u1f4c2", NULL, {NULL} } +, { "open_hands", "\u1f450", NULL, {NULL} } +, { "open_mouth", "\u1f62E", NULL, {":o", ":-o", ":O", ":-O", NULL} } +, { "ophiuchus", "\u26ce", NULL, {NULL} } +, { "orange_book", "\u1f4d9", NULL, {NULL} } +, { "orange_heart", "\u1f9e1", NULL, {NULL} } +, { "orthodox_cross", "\u2626\ufe0f", NULL, {NULL} } +, { "outbox_tray", "\u1f4e4", NULL, {NULL} } +, { "owl", "\u1f989", NULL, {NULL} } +, { "ox", "\u1f402", NULL, {NULL} } +, { "package", "\u1f4e6", NULL, {NULL} } +, { "page_facing_up", "\u1f4c4", NULL, {NULL} } +, { "page_with_curl", "\u1f4c3", NULL, {NULL} } +, { "pager", "\u1f4dF", NULL, {NULL} } +, { "palm_tree", "\u1f334", NULL, {NULL} } +, { "palms_up_together", "\u1f932", NULL, {NULL} } +, { "pancakes", "\u1f95E", NULL, {NULL} } +, { "panda_face", "\u1f43C", NULL, {NULL} } +, { "paperclip", "\u1f4cE", NULL, {NULL} } +, { "parking", "\u1f17F\ufe0f", NULL, {NULL} } +, { "part_alternation_mark", "\u303d\ufe0f", NULL, {NULL} } +, { "partly_sunny", "\u26c5", NULL, {NULL} } +, { "partly_sunny_rain", "\u1f326\ufe0f", NULL, {NULL} } +, { "passenger_ship", "\u1f6f3\ufe0f", NULL, {NULL} } +, { "passport_control", "\u1f6c2", NULL, {NULL} } +, { "paw_prints", "\u1f43E", NULL, {NULL} } +, { "peace_symbol", "\u262e\ufe0f", NULL, {NULL} } +, { "peach", "\u1f351", NULL, {NULL} } +, { "peanuts", "\u1f95C", NULL, {NULL} } +, { "pear", "\u1f350", NULL, {NULL} } +, { "pencil", "\u1f4dD", NULL, {NULL} } +, { "pencil2", "\u270f\ufe0f", NULL, {NULL} } +, { "penguin", "\u1f427", NULL, {NULL} } +, { "pensive", "\u1f614", NULL, {NULL} } +, { "performing_arts", "\u1f3aD", NULL, {NULL} } +, { "persevere", "\u1f623", NULL, {NULL} } +, { "person_climbing", "\u1f9d7", NULL, {NULL} } +, { "person_doing_cartwheel", "\u1f938", NULL, {NULL} } +, { "person_frowning", "\u1f64D", NULL, {NULL} } +, { "person_in_lotus_position", "\u1f9d8", NULL, {NULL} } +, { "person_in_steamy_room", "\u1f9d6", NULL, {NULL} } +, { "person_with_ball", "\u26f9\ufe0f", NULL, {NULL} } +, { "person_with_blond_hair", "\u1f471", NULL, {NULL} } +, { "person_with_headscarf", "\u1f9d5", NULL, {NULL} } +, { "person_with_pouting_face", "\u1f64E", NULL, {NULL} } +, { "phone", "\u260e\ufe0f", NULL, {NULL} } +, { "pick", "\u26cf\ufe0f", NULL, {NULL} } +, { "pie", "\u1f967", NULL, {NULL} } +, { "pig", "\u1f437", NULL, {NULL} } +, { "pig2", "\u1f416", NULL, {NULL} } +, { "pig_nose", "\u1f43D", NULL, {NULL} } +, { "pill", "\u1f48A", NULL, {NULL} } +, { "pineapple", "\u1f34D", NULL, {NULL} } +, { "pisces", "\u2653", NULL, {NULL} } +, { "pizza", "\u1f355", NULL, {NULL} } +, { "place_of_worship", "\u1f6d0", NULL, {NULL} } +, { "point_down", "\u1f447", NULL, {NULL} } +, { "point_left", "\u1f448", NULL, {NULL} } +, { "point_right", "\u1f449", NULL, {NULL} } +, { "point_up", "\u261d\ufe0f", NULL, {NULL} } +, { "point_up_2", "\u1f446", NULL, {NULL} } +, { "police_car", "\u1f693", NULL, {NULL} } +, { "poodle", "\u1f429", NULL, {NULL} } +, { "poop", "\u1f4a9", NULL, {NULL} } +, { "popcorn", "\u1f37F", NULL, {NULL} } +, { "post_office", "\u1f3e3", NULL, {NULL} } +, { "postal_horn", "\u1f4eF", NULL, {NULL} } +, { "postbox", "\u1f4eE", NULL, {NULL} } +, { "potable_water", "\u1f6b0", NULL, {NULL} } +, { "potato", "\u1f954", NULL, {NULL} } +, { "pouch", "\u1f45D", NULL, {NULL} } +, { "poultry_leg", "\u1f357", NULL, {NULL} } +, { "pound", "\u1f4b7", NULL, {NULL} } +, { "pouting_cat", "\u1f63E", NULL, {NULL} } +, { "pray", "\u1f64F", NULL, {NULL} } +, { "prayer_beads", "\u1f4fF", NULL, {NULL} } +, { "pregnant_woman", "\u1f930", NULL, {NULL} } +, { "pretzel", "\u1f968", NULL, {NULL} } +, { "prince", "\u1f934", NULL, {NULL} } +, { "princess", "\u1f478", NULL, {NULL} } +, { "printer", "\u1f5a8\ufe0f", NULL, {NULL} } +, { "punch", "\u1f44A", NULL, {NULL} } +, { "purple_heart", "\u1f49C", "<3", {NULL} } +, { "purse", "\u1f45B", NULL, {NULL} } +, { "pushpin", "\u1f4cC", NULL, {NULL} } +, { "put_litter_in_its_place", "\u1f6aE", NULL, {NULL} } +, { "question", "\u2753", NULL, {NULL} } +, { "rabbit", "\u1f430", NULL, {NULL} } +, { "rabbit2", "\u1f407", NULL, {NULL} } +, { "racehorse", "\u1f40E", NULL, {NULL} } +, { "racing_car", "\u1f3cE\ufe0f", NULL, {NULL} } +, { "racing_motorcycle", "\u1f3cD\ufe0f", NULL, {NULL} } +, { "radio", "\u1f4fB", NULL, {NULL} } +, { "radio_button", "\u1f518", NULL, {NULL} } +, { "radioactive_sign", "\u2622\ufe0f", NULL, {NULL} } +, { "rage", "\u1f621", NULL, {NULL} } +, { "railway_car", "\u1f683", NULL, {NULL} } +, { "railway_track", "\u1f6e4\ufe0f", NULL, {NULL} } +, { "rain_cloud", "\u1f327\ufe0f", NULL, {NULL} } +, { "rainbow", "\u1f308", NULL, {NULL} } +, { "rainbow-flag", "\u1f3f3\ufe0f\u200d\u1f308", NULL, {NULL} } +, { "raised_back_of_hand", "\u1f91A", NULL, {NULL} } +, { "raised_hand", "\u270b", NULL, {NULL} } +, { "raised_hand_with_fingers_splayed", "\u1f590\ufe0f", NULL, {NULL} } +, { "raised_hands", "\u1f64C", NULL, {NULL} } +, { "raising_hand", "\u1f64B", NULL, {NULL} } +, { "ram", "\u1f40F", NULL, {NULL} } +, { "ramen", "\u1f35C", NULL, {NULL} } +, { "rat", "\u1f400", NULL, {NULL} } +, { "recycle", "\u267b\ufe0f", NULL, {NULL} } +, { "red_car", "\u1f697", NULL, {NULL} } +, { "red_circle", "\u1f534", NULL, {NULL} } +, { "registered", "\u00ae\ufe0f", NULL, {NULL} } +, { "relaxed", "\u263a\ufe0f", NULL, {NULL} } +, { "relieved", "\u1f60C", NULL, {NULL} } +, { "reminder_ribbon", "\u1f397\ufe0f", NULL, {NULL} } +, { "repeat", "\u1f501", NULL, {NULL} } +, { "repeat_one", "\u1f502", NULL, {NULL} } +, { "restroom", "\u1f6bB", NULL, {NULL} } +, { "reversed_hand_with_middle_finger_extended", "\u1f595", NULL, {NULL} } +, { "revolving_hearts", "\u1f49E", NULL, {NULL} } +, { "rewind", "\u23ea", NULL, {NULL} } +, { "rhinoceros", "\u1f98F", NULL, {NULL} } +, { "ribbon", "\u1f380", NULL, {NULL} } +, { "rice", "\u1f35A", NULL, {NULL} } +, { "rice_ball", "\u1f359", NULL, {NULL} } +, { "rice_cracker", "\u1f358", NULL, {NULL} } +, { "rice_scene", "\u1f391", NULL, {NULL} } +, { "right-facing_fist", "\u1f91C", NULL, {NULL} } +, { "right_anger_bubble", "\u1f5eF\ufe0f", NULL, {NULL} } +, { "ring", "\u1f48D", NULL, {NULL} } +, { "robot_face", "\u1f916", NULL, {NULL} } +, { "rocket", "\u1f680", NULL, {NULL} } +, { "rolled_up_newspaper", "\u1f5dE\ufe0f", NULL, {NULL} } +, { "roller_coaster", "\u1f3a2", NULL, {NULL} } +, { "rolling_on_the_floor_laughing", "\u1f923", NULL, {NULL} } +, { "rooster", "\u1f413", NULL, {NULL} } +, { "rose", "\u1f339", NULL, {NULL} } +, { "rosette", "\u1f3f5\ufe0f", NULL, {NULL} } +, { "rotating_light", "\u1f6a8", NULL, {NULL} } +, { "round_pushpin", "\u1f4cD", NULL, {NULL} } +, { "rowboat", "\u1f6a3", NULL, {NULL} } +, { "ru", "\u1f1f7\u1f1fA", NULL, {NULL} } +, { "rugby_football", "\u1f3c9", NULL, {NULL} } +, { "runner", "\u1f3c3", NULL, {NULL} } +, { "running", "\u1f3c3", NULL, {NULL} } +, { "running_shirt_with_sash", "\u1f3bD", NULL, {NULL} } +, { "sa", "\u1f202\ufe0f", NULL, {NULL} } +, { "sagittarius", "\u2650", NULL, {NULL} } +, { "sailboat", "\u26f5", NULL, {NULL} } +, { "sake", "\u1f376", NULL, {NULL} } +, { "sandal", "\u1f461", NULL, {NULL} } +, { "sandwich", "\u1f96A", NULL, {NULL} } +, { "santa", "\u1f385", NULL, {NULL} } +, { "satellite", "\u1f6f0\ufe0f", NULL, {NULL} } +, { "satellite_antenna", "\u1f4e1", NULL, {NULL} } +, { "satisfied", "\u1f606", NULL, {":>", ":->", NULL} } +, { "sauropod", "\u1f995", NULL, {NULL} } +, { "saxophone", "\u1f3b7", NULL, {NULL} } +, { "scales", "\u2696\ufe0f", NULL, {NULL} } +, { "scarf", "\u1f9e3", NULL, {NULL} } +, { "school", "\u1f3eB", NULL, {NULL} } +, { "school_satchel", "\u1f392", NULL, {NULL} } +, { "scissors", "\u2702\ufe0f", NULL, {NULL} } +, { "scooter", "\u1f6f4", NULL, {NULL} } +, { "scorpion", "\u1f982", NULL, {NULL} } +, { "scorpius", "\u264f", NULL, {NULL} } +, { "scream", "\u1f631", NULL, {NULL} } +, { "scream_cat", "\u1f640", NULL, {NULL} } +, { "scroll", "\u1f4dC", NULL, {NULL} } +, { "seat", "\u1f4bA", NULL, {NULL} } +, { "second_place_medal", "\u1f948", NULL, {NULL} } +, { "secret", "\u3299\ufe0f", NULL, {NULL} } +, { "see_no_evil", "\u1f648", NULL, {NULL} } +, { "seedling", "\u1f331", NULL, {NULL} } +, { "selfie", "\u1f933", NULL, {NULL} } +, { "serious_face_with_symbols_covering_mouth", "\u1f92C", NULL, {NULL} } +, { "seven", "7\ufe0f\u20e3", NULL, {NULL} } +, { "shallow_pan_of_food", "\u1f958", NULL, {NULL} } +, { "shamrock", "\u2618\ufe0f", NULL, {NULL} } +, { "shark", "\u1f988", NULL, {NULL} } +, { "shaved_ice", "\u1f367", NULL, {NULL} } +, { "sheep", "\u1f411", NULL, {NULL} } +, { "shell", "\u1f41A", NULL, {NULL} } +, { "shield", "\u1f6e1\ufe0f", NULL, {NULL} } +, { "shinto_shrine", "\u26e9\ufe0f", NULL, {NULL} } +, { "ship", "\u1f6a2", NULL, {NULL} } +, { "shirt", "\u1f455", NULL, {NULL} } +, { "shit", "\u1f4a9", NULL, {NULL} } +, { "shocked_face_with_exploding_head", "\u1f92F", NULL, {NULL} } +, { "shoe", "\u1f45E", NULL, {NULL} } +, { "shopping_bags", "\u1f6cD\ufe0f", NULL, {NULL} } +, { "shopping_trolley", "\u1f6d2", NULL, {NULL} } +, { "shower", "\u1f6bF", NULL, {NULL} } +, { "shrimp", "\u1f990", NULL, {NULL} } +, { "shrug", "\u1f937", NULL, {NULL} } +, { "shushing_face", "\u1f92B", NULL, {NULL} } +, { "sign_of_the_horns", "\u1f918", NULL, {NULL} } +, { "signal_strength", "\u1f4f6", NULL, {NULL} } +, { "six", "6\ufe0f\u20e3", NULL, {NULL} } +, { "six_pointed_star", "\u1f52F", NULL, {NULL} } +, { "ski", "\u1f3bF", NULL, {NULL} } +, { "skier", "\u26f7\ufe0f", NULL, {NULL} } +, { "skin-tone-2", "\u1f3fB", NULL, {NULL} } +, { "skin-tone-3", "\u1f3fC", NULL, {NULL} } +, { "skin-tone-4", "\u1f3fD", NULL, {NULL} } +, { "skin-tone-5", "\u1f3fE", NULL, {NULL} } +, { "skin-tone-6", "\u1f3fF", NULL, {NULL} } +, { "skull", "\u1f480", NULL, {NULL} } +, { "skull_and_crossbones", "\u2620\ufe0f", NULL, {NULL} } +, { "sled", "\u1f6f7", NULL, {NULL} } +, { "sleeping", "\u1f634", NULL, {NULL} } +, { "sleeping_accommodation", "\u1f6cC", NULL, {NULL} } +, { "sleepy", "\u1f62A", NULL, {NULL} } +, { "sleuth_or_spy", "\u1f575\ufe0f", NULL, {NULL} } +, { "slightly_frowning_face", "\u1f641", NULL, {NULL} } +, { "slightly_smiling_face", "\u1f642", NULL, {":)", "(:", ":-)", NULL} } +, { "slot_machine", "\u1f3b0", NULL, {NULL} } +, { "small_airplane", "\u1f6e9\ufe0f", NULL, {NULL} } +, { "small_blue_diamond", "\u1f539", NULL, {NULL} } +, { "small_orange_diamond", "\u1f538", NULL, {NULL} } +, { "small_red_triangle", "\u1f53A", NULL, {NULL} } +, { "small_red_triangle_down", "\u1f53B", NULL, {NULL} } +, { "smile", "\u1f604", ":)", {"C:", "c:", ":D", ":-D", NULL} } +, { "smile_cat", "\u1f638", NULL, {NULL} } +, { "smiley", "\u1f603", ":)", {"=)", "=-)", NULL} } +, { "smiley_cat", "\u1f63A", NULL, {NULL} } +, { "smiling_face_with_smiling_eyes_and_hand_covering_mouth", "\u1f92D", NULL, {NULL} } +, { "smiling_imp", "\u1f608", NULL, {NULL} } +, { "smirk", "\u1f60F", NULL, {NULL} } +, { "smirk_cat", "\u1f63C", NULL, {NULL} } +, { "smoking", "\u1f6aC", NULL, {NULL} } +, { "snail", "\u1f40C", NULL, {NULL} } +, { "snake", "\u1f40D", NULL, {NULL} } +, { "sneezing_face", "\u1f927", NULL, {NULL} } +, { "snow_capped_mountain", "\u1f3d4\ufe0f", NULL, {NULL} } +, { "snow_cloud", "\u1f328\ufe0f", NULL, {NULL} } +, { "snowboarder", "\u1f3c2", NULL, {NULL} } +, { "snowflake", "\u2744\ufe0f", NULL, {NULL} } +, { "snowman", "\u2603\ufe0f", NULL, {NULL} } +, { "snowman_without_snow", "\u26c4", NULL, {NULL} } +, { "sob", "\u1f62D", ":'(", {NULL} } +, { "soccer", "\u26bd", NULL, {NULL} } +, { "socks", "\u1f9e6", NULL, {NULL} } +, { "soon", "\u1f51C", NULL, {NULL} } +, { "sos", "\u1f198", NULL, {NULL} } +, { "sound", "\u1f509", NULL, {NULL} } +, { "space_invader", "\u1f47E", NULL, {NULL} } +, { "spades", "\u2660\ufe0f", NULL, {NULL} } +, { "spaghetti", "\u1f35D", NULL, {NULL} } +, { "sparkle", "\u2747\ufe0f", NULL, {NULL} } +, { "sparkler", "\u1f387", NULL, {NULL} } +, { "sparkles", "\u2728", NULL, {NULL} } +, { "sparkling_heart", "\u1f496", NULL, {NULL} } +, { "speak_no_evil", "\u1f64A", NULL, {NULL} } +, { "speaker", "\u1f508", NULL, {NULL} } +, { "speaking_head_in_silhouette", "\u1f5e3\ufe0f", NULL, {NULL} } +, { "speech_balloon", "\u1f4aC", NULL, {NULL} } +, { "speedboat", "\u1f6a4", NULL, {NULL} } +, { "spider", "\u1f577\ufe0f", NULL, {NULL} } +, { "spider_web", "\u1f578\ufe0f", NULL, {NULL} } +, { "spiral_calendar_pad", "\u1f5d3\ufe0f", NULL, {NULL} } +, { "spiral_note_pad", "\u1f5d2\ufe0f", NULL, {NULL} } +, { "spock-hand", "\u1f596", NULL, {NULL} } +, { "spoon", "\u1f944", NULL, {NULL} } +, { "sports_medal", "\u1f3c5", NULL, {NULL} } +, { "squid", "\u1f991", NULL, {NULL} } +, { "stadium", "\u1f3dF\ufe0f", NULL, {NULL} } +, { "staff_of_aesculapius", "\u2695\ufe0f", NULL, {NULL} } +, { "star", "\u2b50", NULL, {NULL} } +, { "star-struck", "\u1f929", NULL, {NULL} } +, { "star2", "\u1f31F", NULL, {NULL} } +, { "star_and_crescent", "\u262a\ufe0f", NULL, {NULL} } +, { "star_of_david", "\u2721\ufe0f", NULL, {NULL} } +, { "stars", "\u1f320", NULL, {NULL} } +, { "station", "\u1f689", NULL, {NULL} } +, { "statue_of_liberty", "\u1f5fD", NULL, {NULL} } +, { "steam_locomotive", "\u1f682", NULL, {NULL} } +, { "stew", "\u1f372", NULL, {NULL} } +, { "stopwatch", "\u23f1\ufe0f", NULL, {NULL} } +, { "straight_ruler", "\u1f4cF", NULL, {NULL} } +, { "strawberry", "\u1f353", NULL, {NULL} } +, { "stuck_out_tongue", "\u1f61B", ":p", {":p", ":-p", ":P", ":-P", ":b", ":-b", NULL} } +, { "stuck_out_tongue_closed_eyes", "\u1f61D", NULL, {NULL} } +, { "stuck_out_tongue_winking_eye", "\u1f61C", ";p", {";p", ";-p", ";b", ";-b", ";P", ";-P", NULL} } +, { "studio_microphone", "\u1f399\ufe0f", NULL, {NULL} } +, { "stuffed_flatbread", "\u1f959", NULL, {NULL} } +, { "sun_behind_cloud", "\u1f325\ufe0f", NULL, {NULL} } +, { "sun_behind_rain_cloud", "\u1f326\ufe0f", NULL, {NULL} } +, { "sun_small_cloud", "\u1f324\ufe0f", NULL, {NULL} } +, { "sun_with_face", "\u1f31E", NULL, {NULL} } +, { "sunflower", "\u1f33B", NULL, {NULL} } +, { "sunglasses", "\u1f60E", NULL, {"8)", NULL} } +, { "sunny", "\u2600\ufe0f", NULL, {NULL} } +, { "sunrise", "\u1f305", NULL, {NULL} } +, { "sunrise_over_mountains", "\u1f304", NULL, {NULL} } +, { "surfer", "\u1f3c4", NULL, {NULL} } +, { "sushi", "\u1f363", NULL, {NULL} } +, { "suspension_railway", "\u1f69F", NULL, {NULL} } +, { "sweat", "\u1f613", NULL, {NULL} } +, { "sweat_drops", "\u1f4a6", NULL, {NULL} } +, { "sweat_smile", "\u1f605", NULL, {NULL} } +, { "sweet_potato", "\u1f360", NULL, {NULL} } +, { "swimmer", "\u1f3cA", NULL, {NULL} } +, { "symbols", "\u1f523", NULL, {NULL} } +, { "synagogue", "\u1f54D", NULL, {NULL} } +, { "syringe", "\u1f489", NULL, {NULL} } +, { "t-rex", "\u1f996", NULL, {NULL} } +, { "table_tennis_paddle_and_ball", "\u1f3d3", NULL, {NULL} } +, { "taco", "\u1f32E", NULL, {NULL} } +, { "tada", "\u1f389", NULL, {NULL} } +, { "takeout_box", "\u1f961", NULL, {NULL} } +, { "tanabata_tree", "\u1f38B", NULL, {NULL} } +, { "tangerine", "\u1f34A", NULL, {NULL} } +, { "taurus", "\u2649", NULL, {NULL} } +, { "taxi", "\u1f695", NULL, {NULL} } +, { "tea", "\u1f375", NULL, {NULL} } +, { "telephone", "\u260e\ufe0f", NULL, {NULL} } +, { "telephone_receiver", "\u1f4dE", NULL, {NULL} } +, { "telescope", "\u1f52D", NULL, {NULL} } +, { "tennis", "\u1f3bE", NULL, {NULL} } +, { "tent", "\u26fa", NULL, {NULL} } +, { "the_horns", "\u1f918", NULL, {NULL} } +, { "thermometer", "\u1f321\ufe0f", NULL, {NULL} } +, { "thinking_face", "\u1f914", NULL, {NULL} } +, { "third_place_medal", "\u1f949", NULL, {NULL} } +, { "thought_balloon", "\u1f4aD", NULL, {NULL} } +, { "three", "3\ufe0f\u20e3", NULL, {NULL} } +, { "three_button_mouse", "\u1f5b1\ufe0f", NULL, {NULL} } +, { "thumbsdown", "\u1f44E", NULL, {NULL} } +, { "thumbsup", "\u1f44D", NULL, {NULL} } +, { "thunder_cloud_and_rain", "\u26c8\ufe0f", NULL, {NULL} } +, { "ticket", "\u1f3aB", NULL, {NULL} } +, { "tiger", "\u1f42F", NULL, {NULL} } +, { "tiger2", "\u1f405", NULL, {NULL} } +, { "timer_clock", "\u23f2\ufe0f", NULL, {NULL} } +, { "tired_face", "\u1f62B", NULL, {NULL} } +, { "tm", "\u2122\ufe0f", NULL, {NULL} } +, { "toilet", "\u1f6bD", NULL, {NULL} } +, { "tokyo_tower", "\u1f5fC", NULL, {NULL} } +, { "tomato", "\u1f345", NULL, {NULL} } +, { "tongue", "\u1f445", NULL, {NULL} } +, { "top", "\u1f51D", NULL, {NULL} } +, { "tophat", "\u1f3a9", NULL, {NULL} } +, { "tornado", "\u1f32A\ufe0f", NULL, {NULL} } +, { "tornado_cloud", "\u1f32A\ufe0f", NULL, {NULL} } +, { "trackball", "\u1f5b2\ufe0f", NULL, {NULL} } +, { "tractor", "\u1f69C", NULL, {NULL} } +, { "traffic_light", "\u1f6a5", NULL, {NULL} } +, { "train", "\u1f68B", NULL, {NULL} } +, { "train2", "\u1f686", NULL, {NULL} } +, { "tram", "\u1f68A", NULL, {NULL} } +, { "triangular_flag_on_post", "\u1f6a9", NULL, {NULL} } +, { "triangular_ruler", "\u1f4d0", NULL, {NULL} } +, { "trident", "\u1f531", NULL, {NULL} } +, { "triumph", "\u1f624", NULL, {NULL} } +, { "trolleybus", "\u1f68E", NULL, {NULL} } +, { "trophy", "\u1f3c6", NULL, {NULL} } +, { "tropical_drink", "\u1f379", NULL, {NULL} } +, { "tropical_fish", "\u1f420", NULL, {NULL} } +, { "truck", "\u1f69A", NULL, {NULL} } +, { "trumpet", "\u1f3bA", NULL, {NULL} } +, { "tshirt", "\u1f455", NULL, {NULL} } +, { "tulip", "\u1f337", NULL, {NULL} } +, { "tumbler_glass", "\u1f943", NULL, {NULL} } +, { "turkey", "\u1f983", NULL, {NULL} } +, { "turtle", "\u1f422", NULL, {NULL} } +, { "tv", "\u1f4fA", NULL, {NULL} } +, { "twisted_rightwards_arrows", "\u1f500", NULL, {NULL} } +, { "two", "2\ufe0f\u20e3", NULL, {NULL} } +, { "two_hearts", "\u1f495", NULL, {NULL} } +, { "two_men_holding_hands", "\u1f46C", NULL, {NULL} } +, { "two_women_holding_hands", "\u1f46D", NULL, {NULL} } +, { "u5272", "\u1f239", NULL, {NULL} } +, { "u5408", "\u1f234", NULL, {NULL} } +, { "u55b6", "\u1f23A", NULL, {NULL} } +, { "u6307", "\u1f22F", NULL, {NULL} } +, { "u6708", "\u1f237\ufe0f", NULL, {NULL} } +, { "u6709", "\u1f236", NULL, {NULL} } +, { "u6e80", "\u1f235", NULL, {NULL} } +, { "u7121", "\u1f21A", NULL, {NULL} } +, { "u7533", "\u1f238", NULL, {NULL} } +, { "u7981", "\u1f232", NULL, {NULL} } +, { "u7a7a", "\u1f233", NULL, {NULL} } +, { "uk", "\u1f1eC\u1f1e7", NULL, {NULL} } +, { "umbrella", "\u2602\ufe0f", NULL, {NULL} } +, { "umbrella_on_ground", "\u26f1\ufe0f", NULL, {NULL} } +, { "umbrella_with_rain_drops", "\u2614", NULL, {NULL} } +, { "unamused", "\u1f612", ":(", {NULL} } +, { "underage", "\u1f51E", NULL, {NULL} } +, { "unicorn_face", "\u1f984", NULL, {NULL} } +, { "unlock", "\u1f513", NULL, {NULL} } +, { "up", "\u1f199", NULL, {NULL} } +, { "upside_down_face", "\u1f643", NULL, {NULL} } +, { "us", "\u1f1fA\u1f1f8", NULL, {NULL} } +, { "v", "\u270c\ufe0f", NULL, {NULL} } +, { "vampire", "\u1f9dB", NULL, {NULL} } +, { "vertical_traffic_light", "\u1f6a6", NULL, {NULL} } +, { "vhs", "\u1f4fC", NULL, {NULL} } +, { "vibration_mode", "\u1f4f3", NULL, {NULL} } +, { "video_camera", "\u1f4f9", NULL, {NULL} } +, { "video_game", "\u1f3aE", NULL, {NULL} } +, { "violin", "\u1f3bB", NULL, {NULL} } +, { "virgo", "\u264d", NULL, {NULL} } +, { "volcano", "\u1f30B", NULL, {NULL} } +, { "volleyball", "\u1f3d0", NULL, {NULL} } +, { "vs", "\u1f19A", NULL, {NULL} } +, { "walking", "\u1f6b6", NULL, {NULL} } +, { "waning_crescent_moon", "\u1f318", NULL, {NULL} } +, { "waning_gibbous_moon", "\u1f316", NULL, {NULL} } +, { "warning", "\u26a0\ufe0f", NULL, {NULL} } +, { "wastebasket", "\u1f5d1\ufe0f", NULL, {NULL} } +, { "watch", "\u231a", NULL, {NULL} } +, { "water_buffalo", "\u1f403", NULL, {NULL} } +, { "water_polo", "\u1f93D", NULL, {NULL} } +, { "watermelon", "\u1f349", NULL, {NULL} } +, { "wave", "\u1f44B", NULL, {NULL} } +, { "waving_black_flag", "\u1f3f4", NULL, {NULL} } +, { "waving_white_flag", "\u1f3f3\ufe0f", NULL, {NULL} } +, { "wavy_dash", "\u3030\ufe0f", NULL, {NULL} } +, { "waxing_crescent_moon", "\u1f312", NULL, {NULL} } +, { "waxing_gibbous_moon", "\u1f314", NULL, {NULL} } +, { "wc", "\u1f6bE", NULL, {NULL} } +, { "weary", "\u1f629", NULL, {NULL} } +, { "wedding", "\u1f492", NULL, {NULL} } +, { "weight_lifter", "\u1f3cB\ufe0f", NULL, {NULL} } +, { "whale", "\u1f433", NULL, {NULL} } +, { "whale2", "\u1f40B", NULL, {NULL} } +, { "wheel_of_dharma", "\u2638\ufe0f", NULL, {NULL} } +, { "wheelchair", "\u267f", NULL, {NULL} } +, { "white_check_mark", "\u2705", NULL, {NULL} } +, { "white_circle", "\u26aa", NULL, {NULL} } +, { "white_flower", "\u1f4aE", NULL, {NULL} } +, { "white_frowning_face", "\u2639\ufe0f", NULL, {NULL} } +, { "white_large_square", "\u2b1c", NULL, {NULL} } +, { "white_medium_small_square", "\u25fd", NULL, {NULL} } +, { "white_medium_square", "\u25fb\ufe0f", NULL, {NULL} } +, { "white_small_square", "\u25ab\ufe0f", NULL, {NULL} } +, { "white_square_button", "\u1f533", NULL, {NULL} } +, { "wilted_flower", "\u1f940", NULL, {NULL} } +, { "wind_blowing_face", "\u1f32C\ufe0f", NULL, {NULL} } +, { "wind_chime", "\u1f390", NULL, {NULL} } +, { "wine_glass", "\u1f377", NULL, {NULL} } +, { "wink", "\u1f609", ";)", {";)", ";-)", NULL} } +, { "wolf", "\u1f43A", NULL, {NULL} } +, { "woman", "\u1f469", NULL, {NULL} } +, { "woman-biking", "\u1f6b4\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-bouncing-ball", "\u26f9\ufe0f\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-bowing", "\u1f647\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-boy", "\u1f469\u200d\u1f466", NULL, {NULL} } +, { "woman-boy-boy", "\u1f469\u200d\u1f466\u200d\u1f466", NULL, {NULL} } +, { "woman-cartwheeling", "\u1f938\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-facepalming", "\u1f926\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-frowning", "\u1f64D\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-gesturing-no", "\u1f645\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-gesturing-ok", "\u1f646\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-getting-haircut", "\u1f487\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-getting-massage", "\u1f486\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-girl", "\u1f469\u200d\u1f467", NULL, {NULL} } +, { "woman-girl-boy", "\u1f469\u200d\u1f467\u200d\u1f466", NULL, {NULL} } +, { "woman-girl-girl", "\u1f469\u200d\u1f467\u200d\u1f467", NULL, {NULL} } +, { "woman-golfing", "\u1f3cC\ufe0f\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-heart-man", "\u1f469\u200d\u2764\ufe0f\u200d\u1f468", NULL, {NULL} } +, { "woman-heart-woman", "\u1f469\u200d\u2764\ufe0f\u200d\u1f469", NULL, {NULL} } +, { "woman-juggling", "\u1f939\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-kiss-man", "\u1f469\u200d\u2764\ufe0f\u200d\u1f48B\u200d\u1f468", NULL, {NULL} } +, { "woman-kiss-woman", "\u1f469\u200d\u2764\ufe0f\u200d\u1f48B\u200d\u1f469", NULL, {NULL} } +, { "woman-lifting-weights", "\u1f3cB\ufe0f\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-mountain-biking", "\u1f6b5\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-playing-handball", "\u1f93E\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-playing-water-polo", "\u1f93D\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-pouting", "\u1f64E\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-raising-hand", "\u1f64B\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-rowing-boat", "\u1f6a3\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-running", "\u1f3c3\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-shrugging", "\u1f937\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-surfing", "\u1f3c4\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-swimming", "\u1f3cA\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-tipping-hand", "\u1f481\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-walking", "\u1f6b6\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-wearing-turban", "\u1f473\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-with-bunny-ears-partying", "\u1f46F\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman-woman-boy", "\u1f469\u200d\u1f469\u200d\u1f466", NULL, {NULL} } +, { "woman-woman-boy-boy", "\u1f469\u200d\u1f469\u200d\u1f466\u200d\u1f466", NULL, {NULL} } +, { "woman-woman-girl", "\u1f469\u200d\u1f469\u200d\u1f467", NULL, {NULL} } +, { "woman-woman-girl-boy", "\u1f469\u200d\u1f469\u200d\u1f467\u200d\u1f466", NULL, {NULL} } +, { "woman-woman-girl-girl", "\u1f469\u200d\u1f469\u200d\u1f467\u200d\u1f467", NULL, {NULL} } +, { "woman-wrestling", "\u1f93C\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman_climbing", "\u1f9d7\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman_in_lotus_position", "\u1f9d8\u200d\u2640\ufe0f", NULL, {NULL} } +, { "woman_in_steamy_room", "\u1f9d6\u200d\u2640\ufe0f", NULL, {NULL} } +, { "womans_clothes", "\u1f45A", NULL, {NULL} } +, { "womans_hat", "\u1f452", NULL, {NULL} } +, { "womens", "\u1f6bA", NULL, {NULL} } +, { "world_map", "\u1f5fA\ufe0f", NULL, {NULL} } +, { "worried", "\u1f61F", NULL, {NULL} } +, { "wrench", "\u1f527", NULL, {NULL} } +, { "wrestlers", "\u1f93C", NULL, {NULL} } +, { "writing_hand", "\u270d\ufe0f", NULL, {NULL} } +, { "x", "\u274c", NULL, {NULL} } +, { "yellow_heart", "\u1f49B", "<3", {NULL} } +, { "yen", "\u1f4b4", NULL, {NULL} } +, { "yin_yang", "\u262f\ufe0f", NULL, {NULL} } +, { "yum", "\u1f60B", NULL, {NULL} } +, { "zany_face", "\u1f92A", NULL, {NULL} } +, { "zap", "\u26a1", NULL, {NULL} } +, { "zebra_face", "\u1f993", NULL, {NULL} } +, { "zero", "0\ufe0f\u20e3", NULL, {NULL} } +, { "zipper_mouth_face", "\u1f910", NULL, {NULL} } +, { "zombie", "\u1f9dF", NULL, {NULL} } +, { "zzz", "\u1f4a4", NULL, {NULL} } +}; + +static struct t_slack_emoji_by_text slack_emoji_by_text[] = +{ { "(:", "\u1f642", "slightly_smiling_face", {"slightly_smiling_face", NULL} } +, { "):", "\u1f61E", "disappointed", {"disappointed", NULL} } +, { "8)", "\u1f60E", "sunglasses", {"sunglasses", NULL} } +, { ":'(", "\u1f622", "cry", {"cry", NULL} } +, { ":(", "\u1f61E", "disappointed", {"disappointed", NULL} } +, { ":)", "\u1f642", "slightly_smiling_face", {"slightly_smiling_face", NULL} } +, { ":*", "\u1f618", "kissing_heart", {"kissing_heart", NULL} } +, { ":-(", "\u1f61E", "disappointed", {"disappointed", NULL} } +, { ":-)", "\u1f642", "slightly_smiling_face", {"slightly_smiling_face", NULL} } +, { ":-*", "\u1f618", "kissing_heart", {"kissing_heart", NULL} } +, { ":-/", "\u1f615", "confused", {"confused", NULL} } +, { ":->", "\u1f606", "laughing", {"laughing", "satisfied", NULL} } +, { ":-D", "\u1f604", "smile", {"smile", NULL} } +, { ":-O", "\u1f62E", "open_mouth", {"open_mouth", NULL} } +, { ":-P", "\u1f61B", "stuck_out_tongue", {"stuck_out_tongue", NULL} } +, { ":-\\", "\u1f615", "confused", {"confused", NULL} } +, { ":-b", "\u1f61B", "stuck_out_tongue", {"stuck_out_tongue", NULL} } +, { ":-o", "\u1f62E", "open_mouth", {"open_mouth", NULL} } +, { ":-p", "\u1f61B", "stuck_out_tongue", {"stuck_out_tongue", NULL} } +, { ":-|", "\u1f610", "neutral_face", {"neutral_face", NULL} } +, { ":/", "\u1f615", "confused", {"confused", NULL} } +, { ":>", "\u1f606", "laughing", {"laughing", "satisfied", NULL} } +, { ":D", "\u1f604", "smile", {"smile", NULL} } +, { ":O", "\u1f62E", "open_mouth", {"open_mouth", NULL} } +, { ":P", "\u1f61B", "stuck_out_tongue", {"stuck_out_tongue", NULL} } +, { ":\\", "\u1f615", "confused", {"confused", NULL} } +, { ":b", "\u1f61B", "stuck_out_tongue", {"stuck_out_tongue", NULL} } +, { ":o", "\u1f62E", "open_mouth", {"open_mouth", NULL} } +, { ":o)", "\u1f435", "monkey_face", {"monkey_face", NULL} } +, { ":p", "\u1f61B", "stuck_out_tongue", {"stuck_out_tongue", NULL} } +, { ":|", "\u1f610", "neutral_face", {"neutral_face", NULL} } +, { ";)", "\u1f609", "wink", {"wink", NULL} } +, { ";-)", "\u1f609", "wink", {"wink", NULL} } +, { ";-P", "\u1f61C", "stuck_out_tongue_winking_eye", {"stuck_out_tongue_winking_eye", NULL} } +, { ";-b", "\u1f61C", "stuck_out_tongue_winking_eye", {"stuck_out_tongue_winking_eye", NULL} } +, { ";-p", "\u1f61C", "stuck_out_tongue_winking_eye", {"stuck_out_tongue_winking_eye", NULL} } +, { ";P", "\u1f61C", "stuck_out_tongue_winking_eye", {"stuck_out_tongue_winking_eye", NULL} } +, { ";b", "\u1f61C", "stuck_out_tongue_winking_eye", {"stuck_out_tongue_winking_eye", NULL} } +, { ";p", "\u1f61C", "stuck_out_tongue_winking_eye", {"stuck_out_tongue_winking_eye", NULL} } +, { ":(", "\u1f620", "angry", {"angry", NULL} } +, { ">:-(", "\u1f620", "angry", {"angry", NULL} } +, { "C:", "\u1f604", "smile", {"smile", NULL} } +, { "D:", "\u1f627", "anguished", {"anguished", NULL} } +, { "c:", "\u1f604", "smile", {"smile", NULL} } +}; diff --git a/slack-emoji.py b/slack-emoji.py new file mode 100755 index 0000000..f6fcbd9 --- /dev/null +++ b/slack-emoji.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +import requests +import json +import ast + +emoji = requests.get("https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json").json() + +print(""" +#include + +#define MAX_TEXTS %d +#define MAX_NAMES %d + +struct t_slack_emoji_by_name { + const char *name; + const char *unicode; + const char *text_to; + const char *text_from[MAX_TEXTS]; +}; + +struct t_slack_emoji_by_text { + const char *text; + const char *unicode; + const char *name_to; + const char *name_from[MAX_NAMES]; +}; +"""%(max(len(o['texts'] if o['texts'] else []) for o in emoji) + 1, + max(len(o['short_names'] if o['short_names'] else []) for o in emoji) + 1)) +print("static struct t_slack_emoji_by_name slack_emoji_by_name[] =") +print("{"+"\n".join(", {{ {0}, {1}, {2}, {3} }}".format( + json.dumps(name), + json.dumps(ast.parse("\"\\u"+"\\u".join(o['unified'].split('-'))+"\"", mode='eval').body.s), + json.dumps(o['text']), + "{"+json.dumps(o['texts']+[None] if o['texts'] else [None])[1:-1]+"}") + for o,name in sorted(((o,name) for o in emoji for name in o['short_names']), + key=lambda x: x[1]) +).replace("null", "NULL")[1:]) +print("};") +print("") +print("static struct t_slack_emoji_by_text slack_emoji_by_text[] =") +print("{"+"\n".join(", {{ {0}, {1}, {2}, {3} }}".format( + json.dumps(text), + json.dumps(ast.parse("\"\\u"+"\\u".join(o['unified'].split('-'))+"\"", mode='eval').body.s), + json.dumps(o['short_name']), + "{"+json.dumps(o['short_names']+[None] if o['short_names'] else [None])[1:-1]+"}") + for o,text in sorted(((o,text) for o in emoji if o['texts'] for text in o['texts']), + key=lambda x:x[1]) +).replace("null", "NULL")[1:]) +print("};")