rage_flip 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,22 +5,9 @@ require 'fileutils'
5
5
  module RageFlip
6
6
  class Emote
7
7
  EMOTES = {
8
+ # Custom ASCII Art and Text Emotes
8
9
  "disapproval" => "(ಠ_ಠ)",
9
- "bullshit" => "🐄💩",
10
- "catshit" => "🐱💩",
11
- "dogshit" => "🐶💩",
12
- "pandashit" => "🐼💩",
13
- "popcorn" => "🍿",
14
- "horseshit" => "🐴💩",
15
- "koalashit" => "🐨💩",
16
- "batshit" => "🦇💩",
17
- "shboatload" => "💩🚢",
18
10
  "bugeyes" => "(⊙_◎)",
19
- "cmd-" => "⌘-",
20
- "cmd" => "⌘",
21
- "command" => "⌘",
22
- "deer" => "🦌",
23
- "cntl" => "⌃",
24
11
  "dogshrug" => '¯\_🐶_/¯',
25
12
  "facepalm" => "(-‸ლ)",
26
13
  "flip" => "(╯°□°)╯︵ ┻━┻",
@@ -28,22 +15,1862 @@ module RageFlip
28
15
  "heresatable" => "┬─┬ ノ( ゜-゜ノ)",
29
16
  "javaflip" => "(╯°□°)╯︵ ┻ɐʌɐɾ┻",
30
17
  "kungfuhamster" => " ()__()\n / o o\\ ;\n |'=Y=';-/\n { \\ / }\n mmm mmm ",
31
- "middlefinger" => "🖕",
32
- "noevil" => "🙈🙉🙊",
33
- "omg" => "😱",
34
- "omgcat" => "🙀",
35
18
  "omw" => "On my way!",
36
- "optn" => "⌥",
37
- "option" => "⌥",
38
19
  "rage" => "ಠ益ಠ",
39
20
  "rageflip" => "(ノಠ益ಠ)ノ彡┻━┻",
40
- "rock" => '\m/ (>_<) \m/',
41
- "shft" => "⇧",
42
- "shift" => "⇧",
21
+ "rockhand" => '\m/ (>_<) \m/',
43
22
  "shrug" => '¯\_(ツ)_/¯',
44
23
  "shrugtable" => '┻━┻ ︵ ¯\(ツ)/¯ ︵ ┻━┻',
45
24
  "unsee" => "♨_♨",
46
- "yuno" => "ლ(ಠ益ಠლ)"
25
+ "yuno" => "ლ(ಠ益ಠლ)",
26
+
27
+ # Keyboard Shortcuts
28
+ "cmd-" => "⌘-",
29
+ "cmd" => "⌘",
30
+ "command" => "⌘",
31
+ "cntl" => "⌃",
32
+ "optn" => "⌥",
33
+ "option" => "⌥",
34
+ "shft" => "⇧",
35
+ "shift" => "⇧",
36
+
37
+ # Smileys & People
38
+ "grin" => "😀",
39
+ "smiley" => "😃",
40
+ "smile" => "😄",
41
+ "grinning" => "😁",
42
+ "laughing" => "😆",
43
+ "sweat_smile" => "😅",
44
+ "rofl" => "🤣",
45
+ "joy" => "😂",
46
+ "slightsmile" => "🙂",
47
+ "upsidedown" => "🙃",
48
+ "meltingface" => "🫠",
49
+ "wink" => "😉",
50
+ "blush" => "😊",
51
+ "innocent" => "😇",
52
+ "hearteyessmile" => "🥰",
53
+ "hearteyes" => "😍",
54
+ "starstruck" => "🤩",
55
+ "kissing" => "😗",
56
+ "kissingheart" => "😘",
57
+ "relaxed" => "☺️",
58
+ "kissingclosedeyes" => "😚",
59
+ "kissingsmile" => "😙",
60
+ "yum" => "😋",
61
+ "tongueout" => "😛",
62
+ "tonguewink" => "😜",
63
+ "zany" => "🤪",
64
+ "tongueclosedeyes" => "😝",
65
+ "moneymouth" => "🤑",
66
+ "hugs" => "🤗",
67
+ "handovermouth" => "🤭",
68
+ "shush" => "🫢",
69
+ "thinking" => "🤔",
70
+ "salute" => "🫡",
71
+ "zipper" => "🤐",
72
+ "raisedeyebrow" => "🤨",
73
+ "neutral" => "😐",
74
+ "expressionless" => "😑",
75
+ "nomouth" => "😶",
76
+ "dottedline" => "🫥",
77
+ "cloudface" => "😶‍🌫️",
78
+ "smirk" => "😏",
79
+ "unamused" => "😒",
80
+ "eyeroll" => "🙄",
81
+ "grimace" => "😬",
82
+ "lyingface" => "🤥",
83
+ "shakingface" => "🫨",
84
+ "relieved" => "😌",
85
+ "pensive" => "😔",
86
+ "sleepy" => "😪",
87
+ "drool" => "🤤",
88
+ "sleeping" => "😴",
89
+ "mask" => "😷",
90
+ "sick" => "🤒",
91
+ "bandage" => "🤕",
92
+ "nauseated" => "🤢",
93
+ "vomit" => "🤮",
94
+ "sneeze" => "🤧",
95
+ "hot" => "🥵",
96
+ "cold" => "🥶",
97
+ "woozy" => "🥴",
98
+ "dizzy" => "😵",
99
+ "spiraleyes" => "😵‍💫",
100
+ "explodinghead" => "🤯",
101
+ "cowboy" => "🤠",
102
+ "party" => "🥳",
103
+ "disguised" => "🥸",
104
+ "sunglasses" => "😎",
105
+ "nerd" => "🤓",
106
+ "monocle" => "🧐",
107
+ "confused" => "😕",
108
+ "faceexhaling" => "😮‍💨",
109
+ "worried" => "😟",
110
+ "slightfrown" => "🙁",
111
+ "frown" => "☹️",
112
+ "openmouth" => "😮",
113
+ "hushed" => "😯",
114
+ "astonished" => "😲",
115
+ "flushed" => "😳",
116
+ "pleading" => "🥺",
117
+ "holdingbacktears" => "🥹",
118
+ "frowning" => "😦",
119
+ "anguished" => "😧",
120
+ "fearful" => "😨",
121
+ "anxious" => "😰",
122
+ "sad" => "😥",
123
+ "cry" => "😢",
124
+ "sob" => "😭",
125
+ "scream" => "😱",
126
+ "omg" => "😱",
127
+ "confounded" => "😖",
128
+ "persevere" => "😣",
129
+ "disappointed" => "😞",
130
+ "sweat" => "😓",
131
+ "weary" => "😩",
132
+ "tired" => "😫",
133
+ "yawning" => "🥱",
134
+ "triumph" => "😤",
135
+ "pout" => "😡",
136
+ "angry" => "😠",
137
+ "cursing" => "🤬",
138
+ "smiling_imp" => "😈",
139
+ "imp" => "👿",
140
+ "skull" => "💀",
141
+ "crossbones" => "☠️",
142
+ "clown" => "🤡",
143
+ "poop" => "💩",
144
+ "ghost" => "👻",
145
+ "alien" => "👽",
146
+ "alienmonster" => "👾",
147
+ "robot" => "🤖",
148
+ "smilingcat" => "😺",
149
+ "grincat" => "😸",
150
+ "joycat" => "😹",
151
+ "heartcat" => "😻",
152
+ "smirkcat" => "😼",
153
+ "kissingcat" => "😽",
154
+ "screamcat" => "🙀",
155
+ "omgcat" => "🙀",
156
+ "cryingcat" => "😿",
157
+ "poutcat" => "😾",
158
+ "heart" => "❤️",
159
+ "orange_heart" => "🧡",
160
+ "yellow_heart" => "💛",
161
+ "green_heart" => "💚",
162
+ "blue_heart" => "💙",
163
+ "purple_heart" => "💜",
164
+ "brown_heart" => "🤎",
165
+ "black_heart" => "🖤",
166
+ "grey_heart" => "🩶",
167
+ "white_heart" => "🤍",
168
+ "pinkheart" => "🩷",
169
+ "lightheart" => "🩵",
170
+ "broken_heart" => "💔",
171
+ "heartexclamation" => "❣️",
172
+ "twohearts" => "💕",
173
+ "revolvingheart" => "💞",
174
+ "heartbeat" => "💓",
175
+ "growingheart" => "💗",
176
+ "sparklingheart" => "💖",
177
+ "heartarrow" => "💘",
178
+ "loveeyes" => "😍",
179
+ "kiss" => "💋",
180
+ "envelope" => "💌",
181
+ "cupid" => "💘",
182
+ "bouquet" => "💐",
183
+ "fire" => "🔥",
184
+ "heartfire" => "❤️‍🔥",
185
+ "mendingeart" => "❤️‍🩹",
186
+ "sparkles" => "✨",
187
+ "star" => "⭐",
188
+ "dizzystar" => "💫",
189
+ "sweat_drops" => "💦",
190
+ "dash" => "💨",
191
+ "boom" => "💥",
192
+ "wave" => "👋",
193
+ "raisedback" => "🤚",
194
+ "splayed" => "🖐️",
195
+ "hand" => "✋",
196
+ "vulcan" => "🖖",
197
+ "rightwardshand" => "🫱",
198
+ "leftwardshand" => "🫲",
199
+ "palmdown" => "🫳",
200
+ "palmup" => "🫴",
201
+ "leftwardspush" => "🫷",
202
+ "rightwardspush" => "🫸",
203
+ "okhand" => "👌",
204
+ "pinched" => "🤌",
205
+ "pinching" => "🤏",
206
+ "v" => "✌️",
207
+ "crossed" => "🤞",
208
+ "indexpoint" => "🫰",
209
+ "iloveyou" => "🤟",
210
+ "metal" => "🤘",
211
+ "callme" => "🤙",
212
+ "pointleft" => "👈",
213
+ "pointright" => "👉",
214
+ "pointup" => "👆",
215
+ "middlefinger" => "🖕",
216
+ "pointdown" => "👇",
217
+ "pointup2" => "☝️",
218
+ "indexleft" => "🫵",
219
+ "thumbsup" => "👍",
220
+ "thumbsdown" => "👎",
221
+ "fist" => "✊",
222
+ "facepunch" => "👊",
223
+ "leftfist" => "🤛",
224
+ "rightfist" => "🤜",
225
+ "clap" => "👏",
226
+ "raisehands" => "🙌",
227
+ "hearthand" => "🫶",
228
+ "openhands" => "👐",
229
+ "palmsup" => "🤲",
230
+ "handshake" => "🤝",
231
+ "pray" => "🙏",
232
+ "writing" => "✍️",
233
+ "nails" => "💅",
234
+ "selfie" => "🤳",
235
+ "muscle" => "💪",
236
+ "mechanicalarm" => "🦾",
237
+ "mechanicalleg" => "🦿",
238
+ "leg" => "🦵",
239
+ "foot" => "🦶",
240
+ "ear" => "👂",
241
+ "earwithhearing" => "🦻",
242
+ "nose" => "👃",
243
+ "brain" => "🧠",
244
+ "anatomicalheart" => "🫀",
245
+ "lungs" => "🫁",
246
+ "tooth" => "🦷",
247
+ "bone" => "🦴",
248
+ "eyes" => "👀",
249
+ "eye" => "👁️",
250
+ "tongue" => "👅",
251
+ "lips" => "👄",
252
+ "bitinglip" => "🫦",
253
+
254
+ # Animals & Nature
255
+ "monkey" => "🐵",
256
+ "monkeyface" => "🐒",
257
+ "gorilla" => "🦍",
258
+ "orangutan" => "🦧",
259
+ "dog" => "🐶",
260
+ "dogface" => "🐕",
261
+ "guidedog" => "🦮",
262
+ "servicedog" => "🐕‍🦺",
263
+ "poodle" => "🐩",
264
+ "wolf" => "🐺",
265
+ "fox" => "🦊",
266
+ "raccoon" => "🦝",
267
+ "cat" => "🐱",
268
+ "catface" => "🐈",
269
+ "blackcat" => "🐈‍⬛",
270
+ "lion" => "🦁",
271
+ "tiger" => "🐯",
272
+ "tigerface" => "🐅",
273
+ "leopard" => "🐆",
274
+ "horse" => "🐴",
275
+ "moose" => "🫎",
276
+ "donkey" => "🫏",
277
+ "horseface" => "🐎",
278
+ "unicorn" => "🦄",
279
+ "zebra" => "🦓",
280
+ "deer" => "🦌",
281
+ "bison" => "🦬",
282
+ "cow" => "🐮",
283
+ "ox" => "🐂",
284
+ "waterbuffalo" => "🐃",
285
+ "cowface" => "🐄",
286
+ "pig" => "🐷",
287
+ "pigface" => "🐖",
288
+ "boar" => "🐗",
289
+ "piglips" => "🐽",
290
+ "ram" => "🐏",
291
+ "sheep" => "🐑",
292
+ "goat" => "🐐",
293
+ "camel" => "🐪",
294
+ "twohump" => "🐫",
295
+ "llama" => "🦙",
296
+ "giraffe" => "🦒",
297
+ "elephant" => "🐘",
298
+ "mammoth" => "🦣",
299
+ "rhino" => "🦏",
300
+ "hippo" => "🦛",
301
+ "mouse" => "🐭",
302
+ "mouseface" => "🐁",
303
+ "rat" => "🐀",
304
+ "hamster" => "🐹",
305
+ "rabbit" => "🐰",
306
+ "rabbitface" => "🐇",
307
+ "chipmunk" => "🐿️",
308
+ "beaver" => "🦫",
309
+ "hedgehog" => "🦔",
310
+ "bat" => "🦇",
311
+ "bear" => "🐻",
312
+ "polarbear" => "🐻‍❄️",
313
+ "koala" => "🐨",
314
+ "panda" => "🐼",
315
+ "sloth" => "🦥",
316
+ "otter" => "🦦",
317
+ "skunk" => "🦨",
318
+ "kangaroo" => "🦘",
319
+ "badger" => "🦡",
320
+ "pawprints" => "🐾",
321
+ "turkeybird" => "🦃",
322
+ "chicken" => "🐔",
323
+ "rooster" => "🐓",
324
+ "hatchingchick" => "🐣",
325
+ "babychick" => "🐤",
326
+ "chick" => "🐥",
327
+ "bird" => "🐦",
328
+ "penguin" => "🐧",
329
+ "dove" => "🕊️",
330
+ "eagle" => "🦅",
331
+ "duck" => "🦆",
332
+ "swan" => "🦢",
333
+ "owl" => "🦉",
334
+ "dodo" => "🦤",
335
+ "feather" => "🪶",
336
+ "flamingo" => "🦩",
337
+ "peacock" => "🦚",
338
+ "parrot" => "🦜",
339
+ "wing" => "🪽",
340
+ "blackbird" => "🐦‍⬛",
341
+ "goose" => "🪿",
342
+ "frog" => "🐸",
343
+ "crocodile" => "🐊",
344
+ "turtle" => "🐢",
345
+ "lizard" => "🦎",
346
+ "snake" => "🐍",
347
+ "dragon" => "🐲",
348
+ "dragonface" => "🐉",
349
+ "sauropod" => "🦕",
350
+ "trex" => "🦖",
351
+ "whale" => "🐳",
352
+ "whaleface" => "🐋",
353
+ "dolphin" => "🐬",
354
+ "seal" => "🦭",
355
+ "fish" => "🐟",
356
+ "tropicalfish" => "🐠",
357
+ "blowfish" => "🐡",
358
+ "shark" => "🦈",
359
+ "octopus" => "🐙",
360
+ "shell" => "🐚",
361
+ "coral" => "🪸",
362
+ "jellyfish" => "🪼",
363
+ "snail" => "🐌",
364
+ "butterfly" => "🦋",
365
+ "bug" => "🐛",
366
+ "ant" => "🐜",
367
+ "bee" => "🐝",
368
+ "beetle" => "🪲",
369
+ "ladybug" => "🐞",
370
+ "cricketbug" => "🦗",
371
+ "cockroach" => "🪳",
372
+ "spider" => "🕷️",
373
+ "web" => "🕸️",
374
+ "scorpion" => "🦂",
375
+ "mosquito" => "🦟",
376
+ "fly" => "🪰",
377
+ "worm" => "🪱",
378
+ "microbe" => "🦠",
379
+ "flowers" => "💐",
380
+ "cherryblossom" => "🌸",
381
+ "whiteblossom" => "💮",
382
+ "lotusflower" => "🪷",
383
+ "rosetteflower" => "🏵️",
384
+ "rose" => "🌹",
385
+ "wilted" => "🥀",
386
+ "hibiscus" => "🌺",
387
+ "sunflower" => "🌻",
388
+ "blossom" => "🌼",
389
+ "tulip" => "🌷",
390
+ "hyacinth" => "🪻",
391
+ "seedling" => "🌱",
392
+ "potplant" => "🪴",
393
+ "tree" => "🌲",
394
+ "deciduoustree" => "🌳",
395
+ "palm" => "🌴",
396
+ "cactus" => "🌵",
397
+ "grain" => "🌾",
398
+ "herb" => "🌿",
399
+ "shamrock" => "☘️",
400
+ "clover" => "🍀",
401
+ "maple" => "🍁",
402
+ "fallenleaf" => "🍂",
403
+ "leaves" => "🍃",
404
+ "emptyness" => "🪹",
405
+ "eggsnest" => "🪺",
406
+ "mushroom" => "🍄",
407
+
408
+ # Combined/Custom Emotes
409
+ "bullshit" => "🐄💩",
410
+ "catshit" => "🐱💩",
411
+ "dogshit" => "🐶💩",
412
+ "pandashit" => "🐼💩",
413
+ "horseshit" => "🐴💩",
414
+ "koalashit" => "🐨💩",
415
+ "batshit" => "🦇💩",
416
+ "shboatload" => "💩🚢",
417
+ "noevil" => "🙈🙉🙊",
418
+
419
+ # Food & Drink
420
+ "grapes" => "🍇",
421
+ "melon" => "🍈",
422
+ "watermelon" => "🍉",
423
+ "tangerine" => "🍊",
424
+ "lemon" => "🍋",
425
+ "banana" => "🍌",
426
+ "pineapple" => "🍍",
427
+ "mango" => "🥭",
428
+ "apple" => "🍎",
429
+ "greenapple" => "🍏",
430
+ "pear" => "🍐",
431
+ "peach" => "🍑",
432
+ "cherries" => "🍒",
433
+ "strawberry" => "🍓",
434
+ "blueberries" => "🫐",
435
+ "kiwi" => "🥝",
436
+ "tomato" => "🍅",
437
+ "olive" => "🫒",
438
+ "coconut" => "🥥",
439
+ "avocado" => "🥑",
440
+ "eggplant" => "🍆",
441
+ "potato" => "🥔",
442
+ "carrot" => "🥕",
443
+ "corn" => "🌽",
444
+ "hotpepper" => "🌶️",
445
+ "bellpepper" => "🫑",
446
+ "cucumber" => "🥒",
447
+ "leafy" => "🥬",
448
+ "broccoli" => "🥦",
449
+ "garlic" => "🧄",
450
+ "onion" => "🧅",
451
+ "peanuts" => "🥜",
452
+ "beans" => "🫘",
453
+ "chestnut" => "🌰",
454
+ "ginger" => "🫚",
455
+ "peas" => "🫛",
456
+ "bread" => "🍞",
457
+ "croissant" => "🥐",
458
+ "baguette" => "🥖",
459
+ "flatbread" => "🫓",
460
+ "pretzel" => "🥨",
461
+ "bagel" => "🥯",
462
+ "pancakes" => "🥞",
463
+ "waffle" => "🧇",
464
+ "cheese" => "🧀",
465
+ "meat" => "🍖",
466
+ "poultryleg" => "🍗",
467
+ "cutmeat" => "🥩",
468
+ "bacon" => "🥓",
469
+ "hamburger" => "🍔",
470
+ "fries" => "🍟",
471
+ "pizza" => "🍕",
472
+ "hotdog" => "🌭",
473
+ "sandwich" => "🥪",
474
+ "taco" => "🌮",
475
+ "burrito" => "🌯",
476
+ "tamale" => "🫔",
477
+ "stuffedflatbread" => "🥙",
478
+ "falafel" => "🧆",
479
+ "egg" => "🥚",
480
+ "cooking" => "🍳",
481
+ "paella" => "🥘",
482
+ "fondue" => "🫕",
483
+ "pot" => "🍲",
484
+ "bowl" => "🥣",
485
+ "salad" => "🥗",
486
+ "popcorn" => "🍿",
487
+ "butter" => "🧈",
488
+ "salt" => "🧂",
489
+ "cannedstuff" => "🥫",
490
+ "bento" => "🍱",
491
+ "ricecrackers" => "🍘",
492
+ "riceball" => "🍙",
493
+ "rice" => "🍚",
494
+ "curry" => "🍛",
495
+ "ramen" => "🍜",
496
+ "spaghetti" => "🍝",
497
+ "sweetpotato" => "🍠",
498
+ "oden" => "🍢",
499
+ "sushi" => "🍣",
500
+ "friedshrimp" => "🍤",
501
+ "fishcake" => "🍥",
502
+ "mooncake" => "🥮",
503
+ "dango" => "🍡",
504
+ "dumpling" => "🥟",
505
+ "fortunecookie" => "🥠",
506
+ "takeout" => "🥡",
507
+ "crab" => "🦀",
508
+ "lobster" => "🦞",
509
+ "shrimp" => "🦐",
510
+ "squid" => "🦑",
511
+ "oyster" => "🦪",
512
+ "icecream" => "🍦",
513
+ "shavice" => "🍧",
514
+ "softice" => "🍨",
515
+ "doughnut" => "🍩",
516
+ "cookie" => "🍪",
517
+ "birthdaycake" => "🎂",
518
+ "shortcake" => "🍰",
519
+ "cupcake" => "🧁",
520
+ "pie" => "🥧",
521
+ "chocbar" => "🍫",
522
+ "candy" => "🍬",
523
+ "lollipop" => "🍭",
524
+ "custard" => "🍮",
525
+ "honeypot" => "🍯",
526
+ "babybottle" => "🍼",
527
+ "milk" => "🥛",
528
+ "coffee" => "☕",
529
+ "teapot" => "🫖",
530
+ "tea" => "🍵",
531
+ "sake" => "🍶",
532
+ "champagne" => "🍾",
533
+ "wine" => "🍷",
534
+ "cocktail" => "🍸",
535
+ "tropical" => "🍹",
536
+ "beer" => "🍺",
537
+ "beers" => "🍻",
538
+ "clinking" => "🥂",
539
+ "tumbler" => "🥃",
540
+ "pouringdrink" => "🫗",
541
+ "cupstraw" => "🥤",
542
+ "beverage" => "🧋",
543
+ "mate" => "🧉",
544
+ "icecube" => "🧊",
545
+ "chopsticks" => "🥢",
546
+ "platefork" => "🍽️",
547
+ "forkknife" => "🍴",
548
+ "spoon" => "🥄",
549
+ "knife" => "🔪",
550
+ "jar" => "🫙",
551
+ "amphora" => "🏺",
552
+
553
+ # Activity
554
+ "soccer" => "⚽",
555
+ "basketball" => "🏀",
556
+ "football" => "🏈",
557
+ "baseball" => "⚾",
558
+ "softball" => "🥎",
559
+ "tennis" => "🎾",
560
+ "volleyball" => "🏐",
561
+ "rugby" => "🏉",
562
+ "frisbee" => "🥏",
563
+ "8ball" => "🎱",
564
+ "pingpong" => "🏓",
565
+ "badminton" => "🏸",
566
+ "hockeystick" => "🏒",
567
+ "fieldhockey" => "🏑",
568
+ "lacrosse" => "🥍",
569
+ "cricket" => "🏏",
570
+ "goal" => "🥅",
571
+ "golfclub" => "⛳",
572
+ "boomerang" => "🪃",
573
+ "archery" => "🏹",
574
+ "fishingpole" => "🎣",
575
+ "divingmask" => "🤿",
576
+ "boxingglove" => "🥊",
577
+ "karate" => "🥋",
578
+ "running" => "🏃",
579
+ "walking" => "🚶",
580
+ "standingperson" => "🧍",
581
+ "kneelingperson" => "🧎",
582
+ "wheelchair" => "🦽",
583
+ "motorizedwheelchair" => "🦼",
584
+ "dancer" => "💃",
585
+ "dancing" => "🕺",
586
+ "suit" => "🕴️",
587
+ "couple" => "👫",
588
+ "twomen" => "👬",
589
+ "twowomen" => "👭",
590
+ "personwhitecane" => "🧑‍🦯",
591
+ "personmotorized" => "🧑‍🦽",
592
+ "personmanual" => "🧑‍🦼",
593
+ "runners" => "🏃‍♀️",
594
+ "skier" => "⛷️",
595
+ "snowboarder" => "🏂",
596
+ "climber" => "🧗",
597
+ "fencer" => "🤺",
598
+ "horseracing" => "🏇",
599
+ "skater" => "⛸️",
600
+ "lifter" => "🏋️",
601
+ "biker" => "🚴",
602
+ "mountainbiker" => "🚵",
603
+ "cartwheel" => "🤸",
604
+ "wrestlers" => "🤼",
605
+ "waterpolo" => "🤽",
606
+ "handball" => "🤾",
607
+ "juggling" => "🤹",
608
+ "lotus" => "🧘",
609
+ "bath" => "🛀",
610
+ "bed" => "🛌",
611
+ "trophy" => "🏆",
612
+ "medal" => "🏅",
613
+ "goldmedal" => "🥇",
614
+ "silvermedal" => "🥈",
615
+ "bronzemedal" => "🥉",
616
+ "sportsmedal" => "🏅",
617
+ "rosette" => "🏵️",
618
+ "ribbon" => "🎀",
619
+ "ticket" => "🎫",
620
+ "tickets" => "🎟️",
621
+ "performingarts" => "🎭",
622
+ "art" => "🎨",
623
+ "circus" => "🎪",
624
+ "microphone" => "🎤",
625
+ "headphones" => "🎧",
626
+ "musicalnotes" => "🎶",
627
+ "keyboard" => "🎹",
628
+ "saxophone" => "🎷",
629
+ "accordion" => "🪗",
630
+ "guitar" => "🎸",
631
+ "violin" => "🎻",
632
+ "trumpet" => "🎺",
633
+ "drum" => "🥁",
634
+ "longdrum" => "🪘",
635
+ "maracas" => "🪇",
636
+ "flute" => "🪈",
637
+ "clapboard" => "🎬",
638
+ "bowtie" => "🎗️",
639
+ "videogame" => "🎮",
640
+ "dart" => "🎯",
641
+ "dice" => "🎲",
642
+ "puzzle" => "🧩",
643
+ "teddybear" => "🧸",
644
+ "pinata" => "🪅",
645
+ "mirrorball" => "🪩",
646
+ "nestingdolls" => "🪆",
647
+ "spadessuit" => "♠️",
648
+ "heartssuit" => "♥️",
649
+ "diamondssuit" => "♦️",
650
+ "clubssuit" => "♣️",
651
+ "chessmono" => "♟️",
652
+ "joker" => "🃏",
653
+ "mahjong" => "🀄",
654
+ "flowercard" => "🎴",
655
+
656
+ # Travel & Places
657
+ "globe" => "🌍",
658
+ "globeamericas" => "🌎",
659
+ "globeasia" => "🌏",
660
+ "globemeridians" => "🌐",
661
+ "worldmap" => "🗺️",
662
+ "japanmap" => "🗾",
663
+ "compass" => "🧭",
664
+ "mountain" => "⛰️",
665
+ "mountainsnow" => "🏔️",
666
+ "volcano" => "🌋",
667
+ "mountfuji" => "🗻",
668
+ "camping" => "🏕️",
669
+ "beachumbrella" => "🏖️",
670
+ "desert" => "🏜️",
671
+ "desertisland" => "🏝️",
672
+ "nationalpark" => "🏞️",
673
+ "stadium" => "🏟️",
674
+ "classicalbuilding" => "🏛️",
675
+ "buildingconstruction" => "🏗️",
676
+ "brick" => "🧱",
677
+ "rock" => "🪨",
678
+ "wood" => "🪵",
679
+ "hut" => "🛖",
680
+ "houses" => "🏘️",
681
+ "derelict" => "🏚️",
682
+ "house" => "🏠",
683
+ "garden" => "🏡",
684
+ "officebuilding" => "🏢",
685
+ "japanpost" => "🏣",
686
+ "postoffice" => "🏤",
687
+ "hospital" => "🏥",
688
+ "bank" => "🏦",
689
+ "hotel" => "🏨",
690
+ "lovehotel" => "🏩",
691
+ "store" => "🏪",
692
+ "school" => "🏫",
693
+ "department" => "🏬",
694
+ "factory" => "🏭",
695
+ "castle" => "🏯",
696
+ "wedding" => "💒",
697
+ "tower" => "🗼",
698
+ "liberty" => "🗽",
699
+ "church" => "⛪",
700
+ "mosque" => "🕌",
701
+ "hindu" => "🛕",
702
+ "synagogue" => "🕍",
703
+ "shinto" => "⛩️",
704
+ "kaaba" => "🕋",
705
+ "fountain" => "⛲",
706
+ "tent" => "⛺",
707
+ "foggy" => "🌁",
708
+ "nightstars" => "🌃",
709
+ "citysunrise" => "🌇",
710
+ "citysunset" => "🌆",
711
+ "cityscape" => "🏙️",
712
+ "bridge" => "🌉",
713
+ "hotsprings" => "♨️",
714
+ "carousel" => "🎠",
715
+ "playgroundslide" => "🛝",
716
+ "ferriswheel" => "🎡",
717
+ "rollercoaster" => "🎢",
718
+ "barberpole" => "💈",
719
+ "tents" => "🎪",
720
+ "locomotive" => "🚂",
721
+ "railcar" => "🚃",
722
+ "highspeed" => "🚄",
723
+ "bullet" => "🚅",
724
+ "train" => "🚆",
725
+ "metro" => "🚇",
726
+ "lightrail" => "🚈",
727
+ "station" => "🚉",
728
+ "tram" => "🚊",
729
+ "monorail" => "🚝",
730
+ "mountainrail" => "🚞",
731
+ "tramcar" => "🚋",
732
+ "bus" => "🚌",
733
+ "oncomingbus" => "🚍",
734
+ "trolleybus" => "🚎",
735
+ "minibus" => "🚐",
736
+ "ambulance" => "🚑",
737
+ "fireengine" => "🚒",
738
+ "policecar" => "🚓",
739
+ "oncomingpolice" => "🚔",
740
+ "taxi" => "🚕",
741
+ "oncomingtaxi" => "🚖",
742
+ "car" => "🚗",
743
+ "oncomingcar" => "🚘",
744
+ "suv" => "🚙",
745
+ "deliverytruck" => "🚚",
746
+ "articulatedlorry" => "🚛",
747
+ "tractor" => "🚜",
748
+ "racingcar" => "🏎️",
749
+ "motorcycle" => "🏍️",
750
+ "motorscooter" => "🛵",
751
+ "manualwheelchair" => "🦽",
752
+ "motorwheelchair" => "🦼",
753
+ "autorigshaw" => "🛺",
754
+ "bicycle" => "🚲",
755
+ "kickscooter" => "🛴",
756
+ "skateboard" => "🛹",
757
+ "rollerblades" => "🛼",
758
+ "busstop" => "🚏",
759
+ "motorway" => "🛣️",
760
+ "railwaytrack" => "🛤️",
761
+ "oildrum" => "🛢️",
762
+ "fuelpump" => "⛽",
763
+ "wheel" => "🛞",
764
+ "policelights" => "🚨",
765
+ "horizontallight" => "🚥",
766
+ "verticallight" => "🚦",
767
+ "stopsign" => "🛑",
768
+ "construction" => "🚧",
769
+ "anchor" => "⚓",
770
+ "ringbuoy" => "🛟",
771
+ "sailboat" => "⛵",
772
+ "canoe" => "🛶",
773
+ "speedboat" => "🚤",
774
+ "ferry" => "⛴️",
775
+ "motorboat" => "🛥️",
776
+ "ship" => "🚢",
777
+ "airplane" => "✈️",
778
+ "smallplane" => "🛩️",
779
+ "departure" => "🛫",
780
+ "arrival" => "🛬",
781
+ "parachute" => "🪂",
782
+ "seat" => "💺",
783
+ "helicopter" => "🚁",
784
+ "suspensionrail" => "🚟",
785
+ "cablecar" => "🚠",
786
+ "gondola" => "🚡",
787
+ "satellite" => "🛰️",
788
+ "rocket" => "🚀",
789
+ "flyingsaucer" => "🛸",
790
+ "bellhop" => "🛎️",
791
+ "luggage" => "🧳",
792
+ "hourglass" => "⌛",
793
+ "hourglassflowing" => "⏳",
794
+ "watch" => "⌚",
795
+ "alarmclock" => "⏰",
796
+ "stopwatch" => "⏱️",
797
+ "timerclock" => "⏲️",
798
+ "mantelclock" => "🕰️",
799
+ "twelve" => "🕐",
800
+ "twelvethirty" => "🕧",
801
+ "one" => "🕑",
802
+ "onethirty" => "🕜",
803
+ "two" => "🕒",
804
+ "twothirty" => "🕝",
805
+ "three" => "🕒",
806
+ "threethirty" => "🕞",
807
+ "four" => "🕓",
808
+ "fourthirty" => "🕟",
809
+ "five" => "🕔",
810
+ "fivethirty" => "🕠",
811
+ "six" => "🕕",
812
+ "sixthirty" => "🕡",
813
+ "seven" => "🕖",
814
+ "seventhirty" => "🕢",
815
+ "eight" => "🕗",
816
+ "eightthirty" => "🕣",
817
+ "nine" => "🕘",
818
+ "ninethirty" => "🕤",
819
+ "ten" => "🕙",
820
+ "tenthirty" => "🕥",
821
+ "eleven" => "🕚",
822
+ "eleventhirty" => "🕦",
823
+ "newmoon" => "🌑",
824
+ "waxingcrescent" => "🌒",
825
+ "firstquarter" => "🌓",
826
+ "waxinggibbous" => "🌔",
827
+ "fullmoon" => "🌕",
828
+ "waninggibbous" => "🌖",
829
+ "lastquarter" => "🌗",
830
+ "waningcrescent" => "🌘",
831
+ "crescentmoon" => "🌙",
832
+ "newmoonface" => "🌚",
833
+ "firstquarterface" => "🌛",
834
+ "lastquarterface" => "🌜",
835
+ "thermometer" => "🌡️",
836
+ "sun" => "☀️",
837
+ "fullmoonface" => "🌝",
838
+ "sunwithface" => "🌞",
839
+ "ringedplanet" => "🪐",
840
+ "starsvg" => "⭐",
841
+ "glowingstar" => "🌟",
842
+ "shootingstar" => "🌠",
843
+ "milkyway" => "🌌",
844
+ "cloud" => "☁️",
845
+ "sunbehindcloud" => "⛅",
846
+ "cloudsun" => "🌤️",
847
+ "cloudrain" => "🌧️",
848
+ "cloudsnow" => "🌨️",
849
+ "cloudlightning" => "🌩️",
850
+ "cloudtornado" => "🌪️",
851
+ "fog" => "🌫️",
852
+ "windface" => "🌬️",
853
+ "cyclone" => "🌀",
854
+ "rainbow" => "🌈",
855
+ "closedumbrella" => "🌂",
856
+ "umbrella" => "☂️",
857
+ "umbrellarain" => "☔",
858
+ "umbrellaground" => "⛱️",
859
+ "bolt" => "⚡",
860
+ "snowflake" => "❄️",
861
+ "snowman" => "☃️",
862
+ "snowmanballs" => "⛄",
863
+ "comet" => "☄️",
864
+ "droplet" => "💧",
865
+ "ocean" => "🌊",
866
+
867
+ # Objects
868
+ "eyeglasses" => "👓",
869
+ "darkglasses" => "🕶️",
870
+ "goggles" => "🥽",
871
+ "labcoat" => "🥼",
872
+ "safetyvest" => "🦺",
873
+ "necktie" => "👔",
874
+ "tshirt" => "👕",
875
+ "jeans" => "👖",
876
+ "scarf" => "🧣",
877
+ "gloves" => "🧤",
878
+ "coat" => "🧥",
879
+ "socks" => "🧦",
880
+ "dress" => "👗",
881
+ "kimono" => "👘",
882
+ "sari" => "🥻",
883
+ "onepieceswimsuit" => "🩱",
884
+ "briefs" => "🩲",
885
+ "shorts" => "🩳",
886
+ "bikini" => "👙",
887
+ "blouse" => "👚",
888
+ "foldedhands" => "👐",
889
+ "purse" => "👛",
890
+ "handbag" => "👜",
891
+ "clutchbag" => "👝",
892
+ "shoppingbags" => "🛍️",
893
+ "backpack" => "🎒",
894
+ "thongsandal" => "🩴",
895
+ "shoe" => "👞",
896
+ "runningshoe" => "👟",
897
+ "hikingboot" => "🥾",
898
+ "flatsandal" => "🥿",
899
+ "highheeledsandal" => "👡",
900
+ "heels" => "👠",
901
+ "boot" => "👢",
902
+ "balletshoes" => "🩰",
903
+ "crown" => "👑",
904
+ "tophat" => "🎩",
905
+ "gradcap" => "🎓",
906
+ "billedcap" => "🧢",
907
+ "militaryhelmet" => "🪖",
908
+ "rescueworkerhelmet" => "⛑️",
909
+ "prayerbeads" => "📿",
910
+ "lipstick" => "💄",
911
+ "ring" => "💍",
912
+ "gem" => "💎",
913
+ "mutedspeaker" => "🔇",
914
+ "speaker" => "🔈",
915
+ "mediumspeaker" => "🔉",
916
+ "loudspeaker" => "📢",
917
+ "megaphone" => "📣",
918
+ "postalhorn" => "📯",
919
+ "bell" => "🔔",
920
+ "nobell" => "🔕",
921
+ "musicscore" => "🎼",
922
+ "musicalnote" => "🎵",
923
+ "studiomicrophone" => "🎙️",
924
+ "levelslider" => "🎚️",
925
+ "controlknobs" => "🎛️",
926
+ "radio" => "📻",
927
+ "banjo" => "🪕",
928
+ "mobilephone" => "📱",
929
+ "phonearrow" => "📲",
930
+ "telephone" => "☎️",
931
+ "pager" => "📟",
932
+ "fax" => "📠",
933
+ "battery" => "🔋",
934
+ "lowbattery" => "🪫",
935
+ "electricplug" => "🔌",
936
+ "computer" => "💻",
937
+ "desktop" => "🖥️",
938
+ "printer" => "🖨️",
939
+ "keyboardobj" => "⌨️",
940
+ "computermouse" => "🖱️",
941
+ "trackball" => "🖲️",
942
+ "disk" => "💽",
943
+ "floppy" => "💾",
944
+ "cd" => "💿",
945
+ "dvd" => "📀",
946
+ "abacus" => "🧮",
947
+ "moviecamera" => "🎥",
948
+ "filmframes" => "🎞️",
949
+ "projector" => "📽️",
950
+ "televisin" => "📺",
951
+ "cameraphoto" => "📷",
952
+ "camerawithflash" => "📸",
953
+ "videocamera" => "📹",
954
+ "vhs" => "📼",
955
+ "mag" => "🔍",
956
+ "magleft" => "🔎",
957
+ "candle" => "🕯️",
958
+ "bulb" => "💡",
959
+ "flashlight" => "🔦",
960
+ "lantern" => "🏮",
961
+ "diyalamp" => "🪔",
962
+ "notebookdecorative" => "📔",
963
+ "closedbook" => "📕",
964
+ "openbook" => "📖",
965
+ "greenbook" => "📗",
966
+ "bluebook" => "📘",
967
+ "orangebook" => "📙",
968
+ "books" => "📚",
969
+ "notebook" => "📓",
970
+ "ledger" => "📒",
971
+ "pagewithcurl" => "📃",
972
+ "scroll" => "📜",
973
+ "pagebookmark" => "📄",
974
+ "newspaper" => "📰",
975
+ "rollednewspaper" => "🗞️",
976
+ "bookmarktabs" => "📑",
977
+ "bookmark" => "🔖",
978
+ "label" => "🏷️",
979
+ "moneybag" => "💰",
980
+ "coin" => "🪙",
981
+ "yen" => "💴",
982
+ "dollar" => "💵",
983
+ "euro" => "💶",
984
+ "pound" => "💷",
985
+ "moneywings" => "💸",
986
+ "creditcard" => "💳",
987
+ "receipt" => "🧾",
988
+ "chartincrease" => "📈",
989
+ "chartdecrease" => "📉",
990
+ "envelopearrow" => "📧",
991
+ "email" => "📧",
992
+ "incomingenvelope" => "📨",
993
+ "envelopearrowdown" => "📩",
994
+ "outboxtray" => "📤",
995
+ "inboxtray" => "📥",
996
+ "parcel" => "📦",
997
+ "mailbox" => "📫",
998
+ "mailboxclosed" => "📪",
999
+ "mailboxflag" => "📬",
1000
+ "mailboxnoflag" => "📭",
1001
+ "postbox" => "📮",
1002
+ "ballotbox" => "🗳️",
1003
+ "pencil" => "✏️",
1004
+ "blacknib" => "✒️",
1005
+ "fountainpen" => "🖋️",
1006
+ "pen" => "🖊️",
1007
+ "paintbrush" => "🖌️",
1008
+ "crayon" => "🖍️",
1009
+ "memo" => "📝",
1010
+ "briefcase" => "💼",
1011
+ "filefolder" => "📁",
1012
+ "openfolder" => "📂",
1013
+ "dividers" => "🗂️",
1014
+ "calendar" => "📅",
1015
+ "tearoffcalendar" => "📆",
1016
+ "spiralnotebook" => "🗒️",
1017
+ "spiralcalendar" => "🗓️",
1018
+ "cardindex" => "📇",
1019
+ "chartincreasing" => "📈",
1020
+ "chartdecreasing" => "📉",
1021
+ "bargraph" => "📊",
1022
+ "clipboard" => "📋",
1023
+ "pushpin" => "📌",
1024
+ "roundpin" => "📍",
1025
+ "paperclip" => "📎",
1026
+ "linkedpaperclips" => "🖇️",
1027
+ "straightruler" => "📏",
1028
+ "triangularruler" => "📐",
1029
+ "scissors" => "✂️",
1030
+ "cardfilebox" => "🗃️",
1031
+ "filing" => "🗄️",
1032
+ "wastebasket" => "🗑️",
1033
+ "locked" => "🔒",
1034
+ "unlocked" => "🔓",
1035
+ "lockedwithpen" => "🔏",
1036
+ "lockedwithkey" => "🔐",
1037
+ "key" => "🔑",
1038
+ "oldkey" => "🗝️",
1039
+ "hammer" => "🔨",
1040
+ "axe" => "🪓",
1041
+ "pick" => "⛏️",
1042
+ "hammerandpick" => "⚒️",
1043
+ "hammerwrench" => "🛠️",
1044
+ "dagger" => "🗡️",
1045
+ "swords" => "⚔️",
1046
+ "pistol" => "🔫",
1047
+ "boomerangobj" => "🪃",
1048
+ "bowwitharrow" => "🏹",
1049
+ "shield" => "🛡️",
1050
+ "carpentrysaw" => "🪚",
1051
+ "wrench" => "🔧",
1052
+ "screwdriver" => "🪛",
1053
+ "nutandbolt" => "🔩",
1054
+ "gear" => "⚙️",
1055
+ "clamp" => "🗜️",
1056
+ "balancescale" => "⚖️",
1057
+ "whitecane" => "🦯",
1058
+ "link" => "🔗",
1059
+ "chains" => "⛓️",
1060
+ "hook" => "🪝",
1061
+ "toolbox" => "🧰",
1062
+ "magnet" => "🧲",
1063
+ "ladder" => "🪜",
1064
+ "alembic" => "⚗️",
1065
+ "testtube" => "🧪",
1066
+ "petridish" => "🧫",
1067
+ "dna" => "🧬",
1068
+ "microscope" => "🔬",
1069
+ "telescope" => "🔭",
1070
+ "satelliteantenna" => "📡",
1071
+ "syringe" => "💉",
1072
+ "dropofblood" => "🩸",
1073
+ "pill" => "💊",
1074
+ "adhesivebandage" => "🩹",
1075
+ "crutch" => "🩼",
1076
+ "stethoscope" => "🩺",
1077
+ "xray" => "🩻",
1078
+ "door" => "🚪",
1079
+ "elevator" => "🛗",
1080
+ "mirror" => "🪞",
1081
+ "window" => "🪟",
1082
+ "sofaandlamp" => "🛋️",
1083
+ "chair" => "🪑",
1084
+ "toilet" => "🚽",
1085
+ "plunger" => "🪠",
1086
+ "shower" => "🚿",
1087
+ "bathtub" => "🛁",
1088
+ "mousetrap" => "🪤",
1089
+ "razor" => "🪒",
1090
+ "lotionbottle" => "🧴",
1091
+ "safetypin" => "🧷",
1092
+ "broom" => "🧹",
1093
+ "basket" => "🧺",
1094
+ "rollofpaper" => "🧻",
1095
+ "bucket" => "🪣",
1096
+ "soap" => "🧼",
1097
+ "bubbles" => "🫧",
1098
+ "toothbrush" => "🪥",
1099
+ "sponge" => "🧽",
1100
+ "fireextinguisher" => "🧯",
1101
+ "shoppingcart" => "🛒",
1102
+ "cigarette" => "🚬",
1103
+ "coffin" => "⚰️",
1104
+ "headstone" => "🪦",
1105
+ "funeralurn" => "⚱️",
1106
+ "nazaramulet" => "🧿",
1107
+ "hamsa" => "🪬",
1108
+ "moai" => "🗿",
1109
+ "placard" => "🪧",
1110
+ "identificationcard" => "🪪",
1111
+
1112
+ # Symbols
1113
+ "atm" => "🏧",
1114
+ "litersign" => "🚮",
1115
+ "potablewater" => "🚰",
1116
+ "wheelchairsymbol" => "♿",
1117
+ "mensroom" => "🚹",
1118
+ "womensroom" => "🚺",
1119
+ "restroom" => "🚻",
1120
+ "babysymbol" => "🚼",
1121
+ "wc" => "🚾",
1122
+ "passportcontrol" => "🛂",
1123
+ "customs" => "🛃",
1124
+ "baggageclaim" => "🛄",
1125
+ "leftluggage" => "🛅",
1126
+ "warning" => "⚠️",
1127
+ "childcrossing" => "🚸",
1128
+ "noentry" => "⛔",
1129
+ "prohibited" => "🚫",
1130
+ "nobicycles" => "🚳",
1131
+ "nosmoking" => "🚭",
1132
+ "nolittering" => "🚯",
1133
+ "nonpotable" => "🚱",
1134
+ "nopedestrians" => "🚷",
1135
+ "nophone" => "📵",
1136
+ "eighteenplus" => "🔞",
1137
+ "up" => "⬆️",
1138
+ "upright" => "↗️",
1139
+ "right" => "➡️",
1140
+ "downright" => "↘️",
1141
+ "down" => "⬇️",
1142
+ "downleft" => "↙️",
1143
+ "left" => "⬅️",
1144
+ "upleft" => "↖️",
1145
+ "updown" => "↕️",
1146
+ "leftright" => "↔️",
1147
+ "leftcurve" => "↩️",
1148
+ "rightcurve" => "↪️",
1149
+ "rightarrowcurving" => "⤴️",
1150
+ "leftarrowcurving" => "⤵️",
1151
+ "clockwise" => "🔃",
1152
+ "counterclockwise" => "🔄",
1153
+ "back" => "🔙",
1154
+ "end" => "🔚",
1155
+ "on" => "🔛",
1156
+ "soon" => "🔜",
1157
+ "top" => "🔝",
1158
+ "placeofreligion" => "🛐",
1159
+ "om" => "🕉️",
1160
+ "starofdavid" => "✡️",
1161
+ "wheelofdharma" => "☸️",
1162
+ "yinyang" => "☯️",
1163
+ "latincross" => "✝️",
1164
+ "orthodoxcross" => "☦️",
1165
+ "starandcrescent" => "☪️",
1166
+ "peaceandlove" => "☮️",
1167
+ "menorah" => "🕎",
1168
+ "sixpointedstar" => "🔯",
1169
+ "khanda" => "🪯",
1170
+ "aries" => "♈",
1171
+ "taurus" => "♉",
1172
+ "gemini" => "♊",
1173
+ "cancer" => "♋",
1174
+ "leo" => "♌",
1175
+ "virgo" => "♍",
1176
+ "libra" => "♎",
1177
+ "scorpius" => "♏",
1178
+ "sagittarius" => "♐",
1179
+ "capricorn" => "♑",
1180
+ "aquarius" => "♒",
1181
+ "pisces" => "♓",
1182
+ "ophiuchus" => "⛎",
1183
+ "shuffletracks" => "🔀",
1184
+ "repeat" => "🔁",
1185
+ "repeatone" => "🔂",
1186
+ "playbtn" => "▶️",
1187
+ "fastforward" => "⏩",
1188
+ "nexttrack" => "⏭️",
1189
+ "playorpause" => "⏯️",
1190
+ "reverse" => "◀️",
1191
+ "rewind" => "⏪",
1192
+ "lasttrack" => "⏮️",
1193
+ "upbutton" => "🔼",
1194
+ "fastup" => "⏫",
1195
+ "downbutton" => "🔽",
1196
+ "fastdown" => "⏬",
1197
+ "pausebutton" => "⏸️",
1198
+ "stopbutton" => "⏹️",
1199
+ "recordbutton" => "⏺️",
1200
+ "ejectbutton" => "⏏️",
1201
+ "cinema" => "🎦",
1202
+ "lowbrightness" => "🔅",
1203
+ "highbrightness" => "🔆",
1204
+ "signalstrength" => "📶",
1205
+ "wireless" => "📳",
1206
+ "vibration" => "📳",
1207
+ "phoneoff" => "📴",
1208
+ "female" => "♀️",
1209
+ "male" => "♂️",
1210
+ "transgender" => "⚧️",
1211
+ "multiply" => "✖️",
1212
+ "plus" => "➕",
1213
+ "minus" => "➖",
1214
+ "divide" => "➗",
1215
+ "heavyequals" => "🟰",
1216
+ "infinity" => "♾️",
1217
+ "bangbang" => "‼️",
1218
+ "interrobang" => "⁉️",
1219
+ "question" => "❓",
1220
+ "greyquestion" => "❔",
1221
+ "exclamation" => "❗",
1222
+ "greyexclamation" => "❕",
1223
+ "wavy" => "〰️",
1224
+ "currencyexchange" => "💱",
1225
+ "heavydollar" => "💲",
1226
+ "medicalymbol" => "⚕️",
1227
+ "recycle" => "♻️",
1228
+ "fleurdelis" => "⚜️",
1229
+ "trident" => "🔱",
1230
+ "namebadge" => "📛",
1231
+ "beginner" => "🔰",
1232
+ "hollowredcircle" => "⭕",
1233
+ "checkmark" => "✅",
1234
+ "checkmarkbox" => "☑️",
1235
+ "checkmarkbtn" => "✔️",
1236
+ "crossmark" => "❌",
1237
+ "crossbtn" => "❎",
1238
+ "curlloop" => "➰",
1239
+ "doublecurl" => "➿",
1240
+ "partalt" => "〽️",
1241
+ "eightspoke" => "✳️",
1242
+ "eightpointedstar" => "✴️",
1243
+ "sparkle" => "❇️",
1244
+ "copyright" => "©️",
1245
+ "registered" => "®️",
1246
+ "trademark" => "™️",
1247
+ "keycap" => "#️⃣",
1248
+ "keycapzero" => "0️⃣",
1249
+ "keycapone" => "1️⃣",
1250
+ "keycaptwo" => "2️⃣",
1251
+ "keycapthree" => "3️⃣",
1252
+ "keycapfour" => "4️⃣",
1253
+ "keycapfive" => "5️⃣",
1254
+ "keycapsix" => "6️⃣",
1255
+ "keycapseven" => "7️⃣",
1256
+ "keycapeight" => "8️⃣",
1257
+ "keycapnine" => "9️⃣",
1258
+ "keycapten" => "🔟",
1259
+ "hundredpoints" => "💯",
1260
+ "inputlatinuppercase" => "🔠",
1261
+ "inputlatinlowercase" => "🔡",
1262
+ "inputnumbers" => "🔢",
1263
+ "inputsymbols" => "🔣",
1264
+ "inputlatinletters" => "🔤",
1265
+ "ablood" => "🅰️",
1266
+ "abblood" => "🆎",
1267
+ "bblood" => "🅱️",
1268
+ "cl" => "🆑",
1269
+ "cool" => "🆒",
1270
+ "free" => "🆓",
1271
+ "information" => "ℹ️",
1272
+ "id" => "🆔",
1273
+ "circledm" => "Ⓜ️",
1274
+ "new" => "🆕",
1275
+ "ng" => "🆖",
1276
+ "oblood" => "🅾️",
1277
+ "ok" => "🆗",
1278
+ "parking" => "🅿️",
1279
+ "sos" => "🆘",
1280
+ "upexclamation" => "🆙",
1281
+ "vs" => "🆚",
1282
+ "kana" => "🈁",
1283
+ "pointingup" => "🈂️",
1284
+ "u5272" => "🈷️",
1285
+ "u5408" => "🈴",
1286
+ "u55b6" => "🈺",
1287
+ "u6307" => "🈯",
1288
+ "u6708" => "🈷️",
1289
+ "u6709" => "🈶",
1290
+ "u6e80" => "🈵",
1291
+ "u7121" => "🈚",
1292
+ "u7533" => "🈸",
1293
+ "u7981" => "🈲",
1294
+ "u7a7a" => "🈳",
1295
+ "accept" => "🉑",
1296
+ "redsquare" => "🟥",
1297
+ "orangesquare" => "🟧",
1298
+ "yellowsquare" => "🟨",
1299
+ "greensquare" => "🟩",
1300
+ "bluesquare" => "🟦",
1301
+ "purplesquare" => "🟪",
1302
+ "brownsquare" => "🟫",
1303
+ "blacklargesquare" => "⬛",
1304
+ "whitelargesquare" => "⬜",
1305
+ "blackmediumsquare" => "◼️",
1306
+ "whitemediumsquare" => "◻️",
1307
+ "blackmedimsmallesquare" => "◾",
1308
+ "whitemediusmallesquare" => "◽",
1309
+ "blacksmallsquare" => "▪️",
1310
+ "whitesmallsquare" => "▫️",
1311
+ "largeorgdiamond" => "🔶",
1312
+ "largebluediamond" => "🔷",
1313
+ "smallorgdiamond" => "🔸",
1314
+ "smallbluediamond" => "🔹",
1315
+ "redtriup" => "🔺",
1316
+ "redtridown" => "🔻",
1317
+ "diamondorange" => "💠",
1318
+ "radiobtn" => "🔘",
1319
+ "whitesqbtn" => "🔳",
1320
+ "blacksqbtn" => "🔲",
1321
+ "chequeredflag" => "🏁",
1322
+ "triangularflag" => "🚩",
1323
+ "crossedflags" => "🎌",
1324
+ "blackflag" => "🏴",
1325
+ "whiteflag" => "🏳️",
1326
+ "rainbowflag" => "🏳️‍🌈",
1327
+ "transgenderflag" => "🏳️‍⚧️",
1328
+ "pirateflag" => "🏴‍☠️",
1329
+
1330
+ # Flags
1331
+ "ascensionisland" => "🇦🇨",
1332
+ "andorra" => "🇦🇩",
1333
+ "uae" => "🇦🇪",
1334
+ "afghanistan" => "🇦🇫",
1335
+ "antiguabarbuda" => "🇦🇬",
1336
+ "anguilla" => "🇦🇮",
1337
+ "albania" => "🇦🇱",
1338
+ "armenia" => "🇦🇲",
1339
+ "angola" => "🇦🇴",
1340
+ "antarctica" => "🇦🇶",
1341
+ "argentina" => "🇦🇷",
1342
+ "americansamoa" => "🇦🇸",
1343
+ "austria" => "🇦🇹",
1344
+ "australia" => "🇦🇺",
1345
+ "aruba" => "🇦🇼",
1346
+ "alandislands" => "🇦🇽",
1347
+ "azerbaijan" => "🇦🇿",
1348
+ "bosniaherz" => "🇧🇦",
1349
+ "barbados" => "🇧🇧",
1350
+ "bangladesh" => "🇧🇩",
1351
+ "belgium" => "🇧🇪",
1352
+ "burkinafaso" => "🇧🇫",
1353
+ "bulgaria" => "🇧🇬",
1354
+ "bahrain" => "🇧🇭",
1355
+ "burundi" => "🇧🇮",
1356
+ "benin" => "🇧🇯",
1357
+ "stbarts" => "🇧🇱",
1358
+ "bermuda" => "🇧🇲",
1359
+ "brunei" => "🇧🇳",
1360
+ "bolivia" => "🇧🇴",
1361
+ "caribnetherlands" => "🇧🇶",
1362
+ "brazil" => "🇧🇷",
1363
+ "bahamas" => "🇧🇸",
1364
+ "bhutan" => "🇧🇹",
1365
+ "bouvetisland" => "🇧🇻",
1366
+ "botswana" => "🇧🇼",
1367
+ "belarus" => "🇧🇾",
1368
+ "belize" => "🇧🇿",
1369
+ "canada" => "🇨🇦",
1370
+ "cocosislands" => "🇨🇨",
1371
+ "congokinshasa" => "🇨🇩",
1372
+ "centralafrican" => "🇨🇫",
1373
+ "congobrazzaville" => "🇨🇬",
1374
+ "switzerland" => "🇨🇭",
1375
+ "ivorycoast" => "🇨🇮",
1376
+ "cookislands" => "🇨🇰",
1377
+ "chile" => "🇨🇱",
1378
+ "cameroon" => "🇨🇲",
1379
+ "china" => "🇨🇳",
1380
+ "colombia" => "🇨🇴",
1381
+ "clipperton" => "🇨🇵",
1382
+ "costarica" => "🇨🇷",
1383
+ "cuba" => "🇨🇺",
1384
+ "capeverde" => "🇨🇻",
1385
+ "curacao" => "🇨🇼",
1386
+ "christmasisland" => "🇨🇽",
1387
+ "cyprus" => "🇨🇾",
1388
+ "czechia" => "🇨🇿",
1389
+ "germany" => "🇩🇪",
1390
+ "diegogarcia" => "🇩🇬",
1391
+ "djibouti" => "🇩🇯",
1392
+ "denmark" => "🇩🇰",
1393
+ "dominica" => "🇩🇲",
1394
+ "dominicanrep" => "🇩🇴",
1395
+ "algeria" => "🇩🇿",
1396
+ "ceutamelilla" => "🇪🇦",
1397
+ "ecuador" => "🇪🇨",
1398
+ "estonia" => "🇪🇪",
1399
+ "egypt" => "🇪🇬",
1400
+ "westernsahara" => "🇪🇭",
1401
+ "eritrea" => "🇪🇷",
1402
+ "spain" => "🇪🇸",
1403
+ "ethiopia" => "🇪🇹",
1404
+ "eu" => "🇪🇺",
1405
+ "finland" => "🇫🇮",
1406
+ "fiji" => "🇫🇯",
1407
+ "falklands" => "🇫🇰",
1408
+ "micronesia" => "🇫🇲",
1409
+ "faroeislands" => "🇫🇴",
1410
+ "france" => "🇫🇷",
1411
+ "gabon" => "🇬🇦",
1412
+ "uk" => "🇬🇧",
1413
+ "grenada" => "🇬🇩",
1414
+ "georgia" => "🇬🇪",
1415
+ "frenchguiana" => "🇬🇫",
1416
+ "guernsey" => "🇬🇬",
1417
+ "ghana" => "🇬🇭",
1418
+ "gibraltar" => "🇬🇮",
1419
+ "greenland" => "🇬🇱",
1420
+ "gambia" => "🇬🇲",
1421
+ "guinea" => "🇬🇳",
1422
+ "guadeloupe" => "🇬🇵",
1423
+ "equatorialguinea" => "🇬🇶",
1424
+ "greece" => "🇬🇷",
1425
+ "southgeorgia" => "🇬🇸",
1426
+ "guatemala" => "🇬🇹",
1427
+ "guam" => "🇬🇺",
1428
+ "guineabissau" => "🇬🇼",
1429
+ "guyana" => "🇬🇾",
1430
+ "hongkong" => "🇭🇰",
1431
+ "heardmcdonald" => "🇭🇲",
1432
+ "honduras" => "🇭🇳",
1433
+ "croatia" => "🇭🇷",
1434
+ "haiti" => "🇭🇹",
1435
+ "hungary" => "🇭🇺",
1436
+ "canaryislands" => "🇮🇨",
1437
+ "indonesia" => "🇮🇩",
1438
+ "ireland" => "🇮🇪",
1439
+ "israel" => "🇮🇱",
1440
+ "isleofman" => "🇮🇲",
1441
+ "india" => "🇮🇳",
1442
+ "britishindianocean" => "🇮🇴",
1443
+ "iraq" => "🇮🇶",
1444
+ "iran" => "🇮🇷",
1445
+ "iceland" => "🇮🇸",
1446
+ "italy" => "🇮🇹",
1447
+ "jersey" => "🇯🇪",
1448
+ "jamaica" => "🇯🇲",
1449
+ "jordan" => "🇯🇴",
1450
+ "japan" => "🇯🇵",
1451
+ "kenya" => "🇰🇪",
1452
+ "kyrgyzstan" => "🇰🇬",
1453
+ "cambodia" => "🇰🇭",
1454
+ "kiribati" => "🇰🇮",
1455
+ "comoros" => "🇰🇲",
1456
+ "stkittsnevis" => "🇰🇳",
1457
+ "northkorea" => "🇰🇵",
1458
+ "southkorea" => "🇰🇷",
1459
+ "kuwait" => "🇰🇼",
1460
+ "caymanislands" => "🇰🇾",
1461
+ "kazakhstan" => "🇰🇿",
1462
+ "laos" => "🇱🇦",
1463
+ "lebanon" => "🇱🇧",
1464
+ "stlucia" => "🇱🇨",
1465
+ "liechtenstein" => "🇱🇮",
1466
+ "srilanka" => "🇱🇰",
1467
+ "liberia" => "🇱🇷",
1468
+ "lesotho" => "🇱🇸",
1469
+ "lithuania" => "🇱🇹",
1470
+ "luxembourg" => "🇱🇺",
1471
+ "latvia" => "🇱🇻",
1472
+ "libya" => "🇱🇾",
1473
+ "morocco" => "🇲🇦",
1474
+ "monaco" => "🇲🇨",
1475
+ "moldova" => "🇲🇩",
1476
+ "montenegro" => "🇲🇪",
1477
+ "stmartin" => "🇲🇫",
1478
+ "madagascar" => "🇲🇬",
1479
+ "marshallislands" => "🇲🇭",
1480
+ "macedonia" => "🇲🇰",
1481
+ "mali" => "🇲🇱",
1482
+ "myanmar" => "🇲🇲",
1483
+ "mongolia" => "🇲🇳",
1484
+ "macau" => "🇲🇴",
1485
+ "northernmariana" => "🇲🇵",
1486
+ "martinique" => "🇲🇶",
1487
+ "mauritania" => "🇲🇷",
1488
+ "montserrat" => "🇲🇸",
1489
+ "malta" => "🇲🇹",
1490
+ "mauritius" => "🇲🇺",
1491
+ "maldives" => "🇲🇻",
1492
+ "malawi" => "🇲🇼",
1493
+ "mexico" => "🇲🇽",
1494
+ "malaysia" => "🇲🇾",
1495
+ "mozambique" => "🇲🇿",
1496
+ "namibia" => "🇳🇦",
1497
+ "newcaledonia" => "🇳🇨",
1498
+ "niger" => "🇳🇪",
1499
+ "norfolkisland" => "🇳🇫",
1500
+ "nigeria" => "🇳🇬",
1501
+ "nicaragua" => "🇳🇮",
1502
+ "netherlands" => "🇳🇱",
1503
+ "norway" => "🇳🇴",
1504
+ "nepal" => "🇳🇵",
1505
+ "nauru" => "🇳🇷",
1506
+ "niue" => "🇳🇺",
1507
+ "newzealand" => "🇳🇿",
1508
+ "oman" => "🇴🇲",
1509
+ "panama" => "🇵🇦",
1510
+ "peru" => "🇵🇪",
1511
+ "frenchpolynesia" => "🇵🇫",
1512
+ "papuanewguinea" => "🇵🇬",
1513
+ "philippines" => "🇵🇭",
1514
+ "pakistan" => "🇵🇰",
1515
+ "poland" => "🇵🇱",
1516
+ "stpierremiq" => "🇵🇲",
1517
+ "pitcairnislands" => "🇵🇳",
1518
+ "puertorico" => "🇵🇷",
1519
+ "palestinianterritories" => "🇵🇸",
1520
+ "portugal" => "🇵🇹",
1521
+ "palau" => "🇵🇼",
1522
+ "paraguay" => "🇵🇾",
1523
+ "qatar" => "🇶🇦",
1524
+ "reunion" => "🇷🇪",
1525
+ "romania" => "🇷🇴",
1526
+ "serbia" => "🇷🇸",
1527
+ "russia" => "🇷🇺",
1528
+ "rwanda" => "🇷🇼",
1529
+ "saudiarabia" => "🇸🇦",
1530
+ "solomonislands" => "🇸🇧",
1531
+ "seychelles" => "🇸🇨",
1532
+ "sudan" => "🇸🇩",
1533
+ "sweden" => "🇸🇪",
1534
+ "singapore" => "🇸🇬",
1535
+ "sthelena" => "🇸🇭",
1536
+ "slovenia" => "🇸🇮",
1537
+ "svalbardjanmayen" => "🇸🇯",
1538
+ "slovakia" => "🇸🇰",
1539
+ "sierraleone" => "🇸🇱",
1540
+ "sanmarino" => "🇸🇲",
1541
+ "senegal" => "🇸🇳",
1542
+ "somalia" => "🇸🇴",
1543
+ "suriname" => "🇸🇷",
1544
+ "southsudan" => "🇸🇸",
1545
+ "saotomeprincipe" => "🇸🇹",
1546
+ "elsalvador" => "🇸🇻",
1547
+ "sintmaarten" => "🇸🇽",
1548
+ "syria" => "🇸🇾",
1549
+ "eswatini" => "🇸🇿",
1550
+ "tristanda" => "🇹🇦",
1551
+ "turkscaicos" => "🇹🇨",
1552
+ "chad" => "🇹🇩",
1553
+ "frenchsouthern" => "🇹🇫",
1554
+ "togo" => "🇹🇬",
1555
+ "thailand" => "🇹🇭",
1556
+ "tajikistan" => "🇹🇯",
1557
+ "tokelau" => "🇹🇰",
1558
+ "timorleste" => "🇹🇱",
1559
+ "turkmenistan" => "🇹🇲",
1560
+ "tunisia" => "🇹🇳",
1561
+ "tonga" => "🇹🇴",
1562
+ "turkey" => "🇹🇷",
1563
+ "trinidadtobago" => "🇹🇹",
1564
+ "tuvalu" => "🇹🇻",
1565
+ "taiwan" => "🇹🇼",
1566
+ "tanzania" => "🇹🇿",
1567
+ "ukraine" => "🇺🇦",
1568
+ "uganda" => "🇺🇬",
1569
+ "usoutlyingislands" => "🇺🇲",
1570
+ "un" => "🇺🇳",
1571
+ "us" => "🇺🇸",
1572
+ "uruguay" => "🇺🇾",
1573
+ "uzbekistan" => "🇺🇿",
1574
+ "vaticancity" => "🇻🇦",
1575
+ "stvincentgren" => "🇻🇨",
1576
+ "venezuela" => "🇻🇪",
1577
+ "britishvirginislands" => "🇻🇬",
1578
+ "usvirginislands" => "🇻🇮",
1579
+ "vietnam" => "🇻🇳",
1580
+ "vanuatu" => "🇻🇺",
1581
+ "wallisfutuna" => "🇼🇫",
1582
+ "samoa" => "🇼🇸",
1583
+ "kosovo" => "🇽🇰",
1584
+ "yemen" => "🇾🇪",
1585
+ "mayotte" => "🇾🇹",
1586
+ "southafrica" => "🇿🇦",
1587
+ "zambia" => "🇿🇲",
1588
+ "zimbabwe" => "🇿🇼",
1589
+ "england" => "🏴󠁧󠁢󠁥󠁮󠁧󠁿",
1590
+ "scotland" => "🏴󠁧󠁢󠁳󠁣󠁴󠁿",
1591
+ "wales" => "🏴󠁧󠁢󠁷󠁬󠁳󠁿"
1592
+ }.freeze
1593
+
1594
+ # Category definitions - maps category names to emote ranges
1595
+ CATEGORIES = {
1596
+ "custom" => {
1597
+ description: "Custom ASCII Art and Text Emotes",
1598
+ emotes: ["disapproval", "bugeyes", "dogshrug", "facepalm", "flip", "fu", "heresatable",
1599
+ "javaflip", "kungfuhamster", "omw", "rage", "rageflip", "rockhand", "shrug", "shrugtable",
1600
+ "unsee", "yuno"]
1601
+ },
1602
+ "keyboard" => {
1603
+ description: "Keyboard Shortcuts",
1604
+ emotes: ["cmd-", "cmd", "command", "cntl", "optn", "option", "shft", "shift"]
1605
+ },
1606
+ "smileys" => {
1607
+ description: "Smileys & People",
1608
+ emotes: EMOTES.keys.select { |k|
1609
+ ["grin", "smiley", "smile", "grinning", "laughing", "sweat_smile", "rofl", "joy",
1610
+ "slightsmile", "upsidedown", "meltingface", "wink", "blush", "innocent", "hearteyessmile",
1611
+ "hearteyes", "starstruck", "kissing", "kissingheart", "relaxed", "kissingclosedeyes",
1612
+ "kissingsmile", "yum", "tongueout", "tonguewink", "zany", "tongueclosedeyes", "moneymouth",
1613
+ "hugs", "handovermouth", "shush", "thinking", "salute", "zipper", "raisedeyebrow", "neutral",
1614
+ "expressionless", "nomouth", "dottedline", "cloudface", "smirk", "unamused", "eyeroll",
1615
+ "grimace", "lyingface", "shakingface", "relieved", "pensive", "sleepy", "drool", "sleeping",
1616
+ "mask", "sick", "bandage", "nauseated", "vomit", "sneeze", "hot", "cold", "woozy", "dizzy",
1617
+ "spiraleyes", "explodinghead", "cowboy", "party", "disguised", "sunglasses", "nerd", "monocle",
1618
+ "confused", "faceexhaling", "worried", "slightfrown", "frown", "openmouth", "hushed",
1619
+ "astonished", "flushed", "pleading", "holdingbacktears", "frowning", "anguished", "fearful",
1620
+ "anxious", "sad", "cry", "sob", "scream", "omg", "confounded", "persevere", "disappointed",
1621
+ "sweat", "weary", "tired", "yawning", "triumph", "pout", "angry", "cursing", "smiling_imp",
1622
+ "imp", "skull", "crossbones", "clown", "poop", "ghost", "alien", "alienmonster", "robot",
1623
+ "smilingcat", "grincat", "joycat", "heartcat", "smirkcat", "kissingcat", "screamcat", "omgcat",
1624
+ "cryingcat", "poutcat", "heart", "orange_heart", "yellow_heart", "green_heart", "blue_heart",
1625
+ "purple_heart", "brown_heart", "black_heart", "grey_heart", "white_heart", "pinkheart",
1626
+ "lightheart", "broken_heart", "heartexclamation", "twohearts", "revolvingheart", "heartbeat",
1627
+ "growingheart", "sparklingheart", "heartarrow", "loveeyes", "kiss", "envelope", "cupid",
1628
+ "bouquet", "fire", "heartfire", "mendingeart", "sparkles", "star", "dizzystar", "sweat_drops",
1629
+ "dash", "boom", "wave", "raisedback", "splayed", "hand", "vulcan", "rightwardshand",
1630
+ "leftwardshand", "palmdown", "palmup", "leftwardspush", "rightwardspush", "okhand", "pinched",
1631
+ "pinching", "v", "crossed", "indexpoint", "iloveyou", "metal", "callme", "pointleft",
1632
+ "pointright", "pointup", "middlefinger", "pointdown", "pointup2", "indexleft", "thumbsup",
1633
+ "thumbsdown", "fist", "facepunch", "leftfist", "rightfist", "clap", "raisehands", "hearthand",
1634
+ "openhands", "palmsup", "handshake", "pray", "writing", "nails", "selfie", "muscle",
1635
+ "mechanicalarm", "mechanicalleg", "leg", "foot", "ear", "earwithhearing", "nose", "brain",
1636
+ "anatomicalheart", "lungs", "tooth", "bone", "eyes", "eye", "tongue", "lips", "bitinglip"].include?(k)
1637
+ }
1638
+ },
1639
+ "animals" => {
1640
+ description: "Animals & Nature",
1641
+ emotes: EMOTES.keys.select { |k|
1642
+ k.start_with?("monkey", "gorilla", "orangutan", "dog", "guide", "service", "poodle", "wolf",
1643
+ "fox", "raccoon", "cat", "black", "lion", "tiger", "leopard", "horse", "moose",
1644
+ "donkey", "unicorn", "zebra", "deer", "bison", "cow", "ox", "water", "pig", "boar",
1645
+ "ram", "sheep", "goat", "camel", "two", "llama", "giraffe", "elephant", "mammoth",
1646
+ "rhino", "hippo", "mouse", "rat", "hamster", "rabbit", "chipmunk", "beaver",
1647
+ "hedgehog", "bat", "bear", "polar", "koala", "panda", "sloth", "otter", "skunk",
1648
+ "kangaroo", "badger", "paw", "turkey", "chicken", "rooster", "hatching", "baby",
1649
+ "chick", "bird", "penguin", "dove", "eagle", "duck", "swan", "owl", "dodo",
1650
+ "feather", "flamingo", "peacock", "parrot", "wing", "goose", "frog", "crocodile",
1651
+ "turtle", "lizard", "snake", "dragon", "sauropod", "trex", "whale", "dolphin",
1652
+ "seal", "fish", "tropical", "blow", "shark", "octopus", "shell", "coral", "jelly",
1653
+ "snail", "butterfly", "bug", "ant", "bee", "beetle", "lady", "cricket", "cockroach",
1654
+ "spider", "web", "scorpion", "mosquito", "fly", "worm", "microbe", "flowers",
1655
+ "cherry", "white", "lotus", "rosette", "rose", "wilted", "hibiscus", "sunflower",
1656
+ "blossom", "tulip", "hyacinth", "seedling", "pot", "tree", "deciduous", "palm",
1657
+ "cactus", "grain", "herb", "shamrock", "clover", "maple", "fallen", "leaves",
1658
+ "empty", "eggs", "mushroom") ||
1659
+ ["turkeybird", "monkey", "monkeyface", "gorilla", "orangutan", "dog", "dogface", "guidedog", "servicedog",
1660
+ "poodle", "wolf", "fox", "raccoon", "cat", "catface", "blackcat", "lion", "tiger",
1661
+ "tigerface", "leopard", "horse", "moose", "donkey", "horseface", "unicorn", "zebra",
1662
+ "deer", "bison", "cow", "ox", "waterbuffalo", "cowface", "pig", "pigface", "boar",
1663
+ "piglips", "ram", "sheep", "goat", "camel", "twohump", "llama", "giraffe", "elephant",
1664
+ "mammoth", "rhino", "hippo", "mouse", "mouseface", "rat", "hamster", "rabbit",
1665
+ "rabbitface", "chipmunk", "beaver", "hedgehog", "bat", "bear", "polarbear", "koala",
1666
+ "panda", "sloth", "otter", "skunk", "kangaroo", "badger", "pawprints", "turkey",
1667
+ "chicken", "rooster", "hatchingchick", "babychick", "chick", "bird", "penguin", "dove",
1668
+ "eagle", "duck", "swan", "owl", "dodo", "feather", "flamingo", "peacock", "parrot",
1669
+ "wing", "blackbird", "goose", "frog", "crocodile", "turtle", "lizard", "snake",
1670
+ "dragon", "dragonface", "sauropod", "trex", "whale", "whaleface", "dolphin", "seal",
1671
+ "fish", "tropicalfish", "blowfish", "shark", "octopus", "shell", "coral", "jellyfish",
1672
+ "snail", "butterfly", "bug", "ant", "bee", "beetle", "ladybug", "cricketbug", "cockroach",
1673
+ "spider", "web", "scorpion", "mosquito", "fly", "worm", "microbe", "flowers",
1674
+ "cherryblossom", "whiteblossom", "lotusflower", "rosetteflower", "rose", "wilted", "hibiscus",
1675
+ "sunflower", "blossom", "tulip", "hyacinth", "seedling", "potplant", "tree",
1676
+ "deciduoustree", "palm", "cactus", "grain", "herb", "shamrock", "clover", "maple",
1677
+ "fallenleaf", "leaves", "emptyness", "eggsnest", "mushroom"].include?(k)
1678
+ }
1679
+ },
1680
+ "combined" => {
1681
+ description: "Combined/Custom Emotes",
1682
+ emotes: ["bullshit", "catshit", "dogshit", "pandashit", "horseshit", "koalashit", "batshit",
1683
+ "shboatload", "noevil"]
1684
+ },
1685
+ "food" => {
1686
+ description: "Food & Drink",
1687
+ emotes: ["grapes", "melon", "watermelon", "tangerine", "lemon", "banana", "pineapple", "mango",
1688
+ "apple", "greenapple", "pear", "peach", "cherries", "strawberry", "blueberries", "kiwi",
1689
+ "tomato", "olive", "coconut", "avocado", "eggplant", "potato", "carrot", "corn",
1690
+ "hotpepper", "bellpepper", "cucumber", "leafy", "broccoli", "garlic", "onion", "peanuts",
1691
+ "beans", "chestnut", "ginger", "peas", "bread", "croissant", "baguette", "flatbread",
1692
+ "pretzel", "bagel", "pancakes", "waffle", "cheese", "meat", "poultryleg", "cutmeat",
1693
+ "bacon", "hamburger", "fries", "pizza", "hotdog", "sandwich", "taco", "burrito", "tamale",
1694
+ "stuffedflatbread", "falafel", "egg", "cooking", "paella", "fondue", "pot", "bowl",
1695
+ "salad", "popcorn", "butter", "salt", "cannedstuff", "bento", "ricecrackers", "riceball",
1696
+ "rice", "curry", "ramen", "spaghetti", "sweetpotato", "oden", "sushi", "friedshrimp",
1697
+ "fishcake", "mooncake", "dango", "dumpling", "fortunecookie", "takeout", "crab", "lobster",
1698
+ "shrimp", "squid", "oyster", "icecream", "shavice", "softice", "doughnut", "cookie",
1699
+ "birthdaycake", "shortcake", "cupcake", "pie", "chocbar", "candy", "lollipop", "custard",
1700
+ "honeypot", "babybottle", "milk", "coffee", "teapot", "tea", "sake", "champagne", "wine",
1701
+ "cocktail", "tropical", "beer", "beers", "clinking", "tumbler", "pouringdrink", "cupstraw",
1702
+ "beverage", "mate", "icecube", "chopsticks", "platefork", "forkknife", "spoon", "knife",
1703
+ "jar", "amphora"]
1704
+ },
1705
+ "activity" => {
1706
+ description: "Activity",
1707
+ emotes: ["soccer", "basketball", "football", "baseball", "softball", "tennis", "volleyball",
1708
+ "rugby", "frisbee", "8ball", "pingpong", "badminton", "hockeystick", "fieldhockey",
1709
+ "lacrosse", "cricket", "goal", "golfclub", "boomerang", "archery", "fishingpole",
1710
+ "divingmask", "boxingglove", "karate", "running", "walking", "standingperson",
1711
+ "kneelingperson", "wheelchair", "motorizedwheelchair", "dancer", "dancing", "suit",
1712
+ "couple", "twomen", "twowomen", "personwhitecane", "personmotorized", "personmanual",
1713
+ "runners", "skier", "snowboarder", "climber", "fencer", "horseracing", "skater", "lifter",
1714
+ "biker", "mountainbiker", "cartwheel", "wrestlers", "waterpolo", "handball", "juggling",
1715
+ "lotus", "bath", "bed", "trophy", "medal", "goldmedal", "silvermedal", "bronzemedal",
1716
+ "sportsmedal", "rosette", "ribbon", "ticket", "tickets", "performingarts", "art", "circus",
1717
+ "microphone", "headphones", "musicalnotes", "keyboard", "saxophone", "accordion", "guitar",
1718
+ "violin", "trumpet", "drum", "longdrum", "maracas", "flute", "clapboard", "bowtie",
1719
+ "videogame", "dart", "dice", "puzzle", "teddybear", "pinata", "mirrorball", "nestingdolls",
1720
+ "spadessuit", "heartssuit", "diamondssuit", "clubssuit", "chessmono", "joker", "mahjong",
1721
+ "flowercard"]
1722
+ },
1723
+ "travel" => {
1724
+ description: "Travel & Places",
1725
+ emotes: ["globe", "globeamericas", "globeasia", "globemeridians", "worldmap", "japanmap", "compass",
1726
+ "mountain", "mountainsnow", "volcano", "mountfuji", "camping", "beachumbrella", "desert",
1727
+ "desertisland", "nationalpark", "stadium", "classicalbuilding", "buildingconstruction",
1728
+ "brick", "rock", "wood", "hut", "houses", "derelict", "house", "garden", "officebuilding",
1729
+ "japanpost", "postoffice", "hospital", "bank", "hotel", "lovehotel", "store", "school",
1730
+ "department", "factory", "castle", "wedding", "tower", "liberty", "church", "mosque",
1731
+ "hindu", "synagogue", "shinto", "kaaba", "fountain", "tent", "foggy", "nightstars",
1732
+ "citysunrise", "citysunset", "cityscape", "bridge", "hotsprings", "carousel",
1733
+ "playgroundslide", "ferriswheel", "rollercoaster", "barberpole", "tents", "locomotive",
1734
+ "railcar", "highspeed", "bullet", "train", "metro", "lightrail", "station", "tram",
1735
+ "monorail", "mountainrail", "tramcar", "bus", "oncomingbus", "trolleybus", "minibus",
1736
+ "ambulance", "fireengine", "policecar", "oncomingpolice", "taxi", "oncomingtaxi", "car",
1737
+ "oncomingcar", "suv", "deliverytruck", "articulatedlorry", "tractor", "racingcar",
1738
+ "motorcycle", "motorscooter", "manualwheelchair", "motorwheelchair", "autorigshaw",
1739
+ "bicycle", "kickscooter", "skateboard", "rollerblades", "busstop", "motorway",
1740
+ "railwaytrack", "oildrum", "fuelpump", "wheel", "policelights", "horizontallight",
1741
+ "verticallight", "stopsign", "construction", "anchor", "ringbuoy", "sailboat", "canoe",
1742
+ "speedboat", "ferry", "motorboat", "ship", "airplane", "smallplane", "departure", "arrival",
1743
+ "parachute", "seat", "helicopter", "suspensionrail", "cablecar", "gondola", "satellite",
1744
+ "rocket", "flyingsaucer", "bellhop", "luggage", "hourglass", "hourglassflowing", "watch",
1745
+ "alarmclock", "stopwatch", "timerclock", "mantelclock", "twelve", "twelvethirty", "one",
1746
+ "onethirty", "two", "twothirty", "three", "threethirty", "four", "fourthirty", "five",
1747
+ "fivethirty", "six", "sixthirty", "seven", "seventhirty", "eight", "eightthirty", "nine",
1748
+ "ninethirty", "ten", "tenthirty", "eleven", "eleventhirty", "newmoon", "waxingcrescent",
1749
+ "firstquarter", "waxinggibbous", "fullmoon", "waninggibbous", "lastquarter",
1750
+ "waningcrescent", "crescentmoon", "newmoonface", "firstquarterface", "lastquarterface",
1751
+ "thermometer", "sun", "fullmoonface", "sunwithface", "ringedplanet", "starsvg",
1752
+ "glowingstar", "shootingstar", "milkyway", "cloud", "sunbehindcloud", "cloudsun",
1753
+ "cloudrain", "cloudsnow", "cloudlightning", "cloudtornado", "fog", "windface", "cyclone",
1754
+ "rainbow", "closedumbrella", "umbrella", "umbrellarain", "umbrellaground", "bolt",
1755
+ "snowflake", "snowman", "snowmanballs", "comet", "droplet", "ocean"]
1756
+ },
1757
+ "objects" => {
1758
+ description: "Objects",
1759
+ emotes: ["eyeglasses", "darkglasses", "goggles", "labcoat", "safetyvest", "necktie", "tshirt",
1760
+ "jeans", "scarf", "gloves", "coat", "socks", "dress", "kimono", "sari",
1761
+ "onepieceswimsuit", "briefs", "shorts", "bikini", "foldedhands", "purse", "handbag",
1762
+ "clutchbag", "shoppingbags", "backpack", "thongsandal", "shoe", "runningshoe",
1763
+ "hikingboot", "flatsandal", "highheeledsandal", "heels", "boot", "balletshoes", "crown",
1764
+ "tophat", "gradcap", "billedcap", "militaryhelmet", "rescueworkerhelmet", "prayerbeads",
1765
+ "lipstick", "ring", "gem", "mutedspeaker", "speaker", "mediumspeaker", "loudspeaker",
1766
+ "megaphone", "postalhorn", "bell", "nobell", "musicscore", "musicalnote",
1767
+ "studiomicrophone", "levelslider", "controlknobs", "radio", "banjo", "mobilephone",
1768
+ "phonearrow", "telephone", "pager", "fax", "battery", "lowbattery", "electricplug",
1769
+ "computer", "desktop", "printer", "keyboardobj", "computermouse", "trackball", "disk",
1770
+ "floppy", "cd", "dvd", "abacus", "moviecamera", "filmframes", "projector", "televisin",
1771
+ "cameraphoto", "camerawithflash", "videocamera", "vhs", "mag", "magleft", "candle", "bulb",
1772
+ "flashlight", "lantern", "diyalamp", "notebookdecorative", "closedbook", "openbook",
1773
+ "greenbook", "bluebook", "orangebook", "books", "notebook", "ledger", "pagewithcurl",
1774
+ "scroll", "pagebookmark", "newspaper", "rollednewspaper", "bookmarktabs", "bookmark",
1775
+ "label", "moneybag", "coin", "yen", "dollar", "euro", "pound", "moneywings", "creditcard",
1776
+ "receipt", "chartincrease", "chartdecrease", "envelopearrow", "email", "incomingenvelope",
1777
+ "envelopearrowdown", "outboxtray", "inboxtray", "parcel", "mailbox", "mailboxclosed",
1778
+ "mailboxflag", "mailboxnoflag", "postbox", "ballotbox", "pencil", "blacknib",
1779
+ "fountainpen", "pen", "paintbrush", "crayon", "memo", "briefcase", "filefolder",
1780
+ "openfolder", "dividers", "calendar", "tearoffcalendar", "spiralnotebook",
1781
+ "spiralcalendar", "cardindex", "chartincreasing", "chartdecreasing", "bargraph",
1782
+ "clipboard", "pushpin", "roundpin", "paperclip", "linkedpaperclips", "straightruler",
1783
+ "triangularruler", "scissors", "cardfilebox", "filing", "wastebasket", "locked",
1784
+ "unlocked", "lockedwithpen", "lockedwithkey", "key", "oldkey", "hammer", "axe", "pick",
1785
+ "hammerandpick", "hammerwrench", "dagger", "swords", "pistol", "boomerangobj",
1786
+ "bowwitharrow", "shield", "carpentrysaw", "wrench", "screwdriver", "nutandbolt", "gear",
1787
+ "clamp", "balancescale", "whitecane", "link", "chains", "hook", "toolbox", "magnet",
1788
+ "ladder", "alembic", "testtube", "petridish", "dna", "microscope", "telescope",
1789
+ "satelliteantenna", "syringe", "dropofblood", "pill", "adhesivebandage", "crutch",
1790
+ "stethoscope", "xray", "door", "elevator", "mirror", "window", "sofaandlamp", "chair",
1791
+ "toilet", "plunger", "shower", "bathtub", "mousetrap", "razor", "lotionbottle",
1792
+ "safetypin", "broom", "basket", "rollofpaper", "bucket", "soap", "bubbles", "toothbrush",
1793
+ "sponge", "fireextinguisher", "shoppingcart", "cigarette", "coffin", "headstone",
1794
+ "funeralurn", "nazaramulet", "hamsa", "moai", "placard", "identificationcard"]
1795
+ },
1796
+ "symbols" => {
1797
+ description: "Symbols",
1798
+ emotes: ["atm", "litersign", "potablewater", "wheelchairsymbol", "mensroom", "womensroom",
1799
+ "restroom", "babysymbol", "wc", "passportcontrol", "customs", "baggageclaim",
1800
+ "leftluggage", "warning", "childcrossing", "noentry", "prohibited", "nobicycles",
1801
+ "nosmoking", "nolittering", "nonpotable", "nopedestrians", "nophone", "eighteenplus",
1802
+ "up", "upright", "right", "downright", "down", "downleft", "left", "upleft", "updown",
1803
+ "leftright", "leftcurve", "rightcurve", "rightarrowcurving", "leftarrowcurving",
1804
+ "clockwise", "counterclockwise", "back", "end", "on", "soon", "top", "placeofreligion",
1805
+ "om", "starofdavid", "wheelofdharma", "yinyang", "latincross", "orthodoxcross",
1806
+ "starandcrescent", "peaceandlove", "menorah", "sixpointedstar", "khanda", "aries",
1807
+ "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius",
1808
+ "capricorn", "aquarius", "pisces", "ophiuchus", "shuffletracks", "repeat", "repeatone",
1809
+ "playbtn", "fastforward", "nexttrack", "playorpause", "reverse", "rewind", "lasttrack",
1810
+ "upbutton", "fastup", "downbutton", "fastdown", "pausebutton", "stopbutton",
1811
+ "recordbutton", "ejectbutton", "cinema", "lowbrightness", "highbrightness",
1812
+ "signalstrength", "wireless", "vibration", "phoneoff", "female", "male", "transgender",
1813
+ "multiply", "plus", "minus", "divide", "heavyequals", "infinity", "bangbang",
1814
+ "interrobang", "question", "greyquestion", "exclamation", "greyexclamation", "wavy",
1815
+ "currencyexchange", "heavydollar", "medicalymbol", "recycle", "fleurdelis", "trident",
1816
+ "namebadge", "beginner", "hollowredcircle", "checkmark", "checkmarkbox", "checkmarkbtn",
1817
+ "crossmark", "crossbtn", "curlloop", "doublecurl", "partalt", "eightspoke",
1818
+ "eightpointedstar", "sparkle", "copyright", "registered", "trademark", "keycap",
1819
+ "keycapzero", "keycapone", "keycaptwo", "keycapthree", "keycapfour", "keycapfive",
1820
+ "keycapsix", "keycapseven", "keycapeight", "keycapnine", "keycapten", "hundredpoints",
1821
+ "inputlatinuppercase", "inputlatinlowercase", "inputnumbers", "inputsymbols",
1822
+ "inputlatinletters", "ablood", "abblood", "bblood", "cl", "cool", "free", "information",
1823
+ "id", "circledm", "new", "ng", "oblood", "ok", "parking", "sos", "upexclamation", "vs",
1824
+ "kana", "pointingup", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709", "u6e80",
1825
+ "u7121", "u7533", "u7981", "u7a7a", "accept", "redsquare", "orangesquare", "yellowsquare",
1826
+ "greensquare", "bluesquare", "purplesquare", "brownsquare", "blacklargesquare",
1827
+ "whitelargesquare", "blackmediumsquare", "whitemediumsquare", "blackmedimsmallesquare",
1828
+ "whitemediusmallesquare", "blacksmallsquare", "whitesmallsquare", "largeorgdiamond",
1829
+ "largebluediamond", "smallorgdiamond", "smallbluediamond", "redtriup", "redtridown",
1830
+ "diamondorange", "radiobtn", "whitesqbtn", "blacksqbtn", "chequeredflag",
1831
+ "triangularflag", "crossedflags", "blackflag", "whiteflag", "rainbowflag",
1832
+ "transgenderflag", "pirateflag"]
1833
+ },
1834
+ "flags" => {
1835
+ description: "Flags",
1836
+ emotes: ["ascensionisland", "andorra", "uae", "afghanistan", "antiguabarbuda", "anguilla",
1837
+ "albania", "armenia", "angola", "antarctica", "argentina", "americansamoa", "austria",
1838
+ "australia", "aruba", "alandislands", "azerbaijan", "bosniaherz", "barbados", "bangladesh",
1839
+ "belgium", "burkinafaso", "bulgaria", "bahrain", "burundi", "benin", "stbarts", "bermuda",
1840
+ "brunei", "bolivia", "caribnetherlands", "brazil", "bahamas", "bhutan", "bouvetisland",
1841
+ "botswana", "belarus", "belize", "canada", "cocosislands", "congokinshasa",
1842
+ "centralafrican", "congobrazzaville", "switzerland", "ivorycoast", "cookislands", "chile",
1843
+ "cameroon", "china", "colombia", "clipperton", "costarica", "cuba", "capeverde", "curacao",
1844
+ "christmasisland", "cyprus", "czechia", "germany", "diegogarcia", "djibouti", "denmark",
1845
+ "dominica", "dominicanrep", "algeria", "ceutamelilla", "ecuador", "estonia", "egypt",
1846
+ "westernsahara", "eritrea", "spain", "ethiopia", "eu", "finland", "fiji", "falklands",
1847
+ "micronesia", "faroeislands", "france", "gabon", "uk", "grenada", "georgia", "frenchguiana",
1848
+ "guernsey", "ghana", "gibraltar", "greenland", "gambia", "guinea", "guadeloupe",
1849
+ "equatorialguinea", "greece", "southgeorgia", "guatemala", "guam", "guineabissau", "guyana",
1850
+ "hongkong", "heardmcdonald", "honduras", "croatia", "haiti", "hungary", "canaryislands",
1851
+ "indonesia", "ireland", "israel", "isleofman", "india", "britishindianocean", "iraq",
1852
+ "iran", "iceland", "italy", "jersey", "jamaica", "jordan", "japan", "kenya", "kyrgyzstan",
1853
+ "cambodia", "kiribati", "comoros", "stkittsnevis", "northkorea", "southkorea", "kuwait",
1854
+ "caymanislands", "kazakhstan", "laos", "lebanon", "stlucia", "liechtenstein", "srilanka",
1855
+ "liberia", "lesotho", "lithuania", "luxembourg", "latvia", "libya", "morocco", "monaco",
1856
+ "moldova", "montenegro", "stmartin", "madagascar", "marshallislands", "macedonia", "mali",
1857
+ "myanmar", "mongolia", "macau", "northernmariana", "martinique", "mauritania", "montserrat",
1858
+ "malta", "mauritius", "maldives", "malawi", "mexico", "malaysia", "mozambique", "namibia",
1859
+ "newcaledonia", "niger", "norfolkisland", "nigeria", "nicaragua", "netherlands", "norway",
1860
+ "nepal", "nauru", "niue", "newzealand", "oman", "panama", "peru", "frenchpolynesia",
1861
+ "papuanewguinea", "philippines", "pakistan", "poland", "stpierremiq", "pitcairnislands",
1862
+ "puertorico", "palestinianterritories", "portugal", "palau", "paraguay", "qatar", "reunion",
1863
+ "romania", "serbia", "russia", "rwanda", "saudiarabia", "solomonislands", "seychelles",
1864
+ "sudan", "sweden", "singapore", "sthelena", "slovenia", "svalbardjanmayen", "slovakia",
1865
+ "sierraleone", "sanmarino", "senegal", "somalia", "suriname", "southsudan",
1866
+ "saotomeprincipe", "elsalvador", "sintmaarten", "syria", "eswatini", "tristanda",
1867
+ "turkscaicos", "chad", "frenchsouthern", "togo", "thailand", "tajikistan", "tokelau",
1868
+ "timorleste", "turkmenistan", "tunisia", "tonga", "turkey", "trinidadtobago", "tuvalu",
1869
+ "taiwan", "tanzania", "ukraine", "uganda", "usoutlyingislands", "un", "us", "uruguay",
1870
+ "uzbekistan", "vaticancity", "stvincentgren", "venezuela", "britishvirginislands",
1871
+ "usvirginislands", "vietnam", "vanuatu", "wallisfutuna", "samoa", "kosovo", "yemen",
1872
+ "mayotte", "southafrica", "zambia", "zimbabwe", "england", "scotland", "wales"]
1873
+ }
47
1874
  }.freeze
48
1875
 
49
1876
  CONFIG_DIR = File.expand_path("~/.config/rage_flip")
@@ -226,5 +2053,96 @@ module RageFlip
226
2053
  def self.emote_names
227
2054
  all_emotes.keys
228
2055
  end
2056
+
2057
+ # Get all category names
2058
+ def self.category_names
2059
+ CATEGORIES.keys
2060
+ end
2061
+
2062
+ # List all categories with their descriptions
2063
+ def self.list_categories
2064
+ output = ["Available categories:", ""]
2065
+ max_name_length = CATEGORIES.keys.map(&:length).max
2066
+
2067
+ CATEGORIES.each do |name, info|
2068
+ count = get_category_emotes(name).length
2069
+ output << " #{name.ljust(max_name_length + 2)} - #{info[:description]} (#{count} emotes)"
2070
+ end
2071
+
2072
+ output << ""
2073
+ output << "Use 'emote category <name>' to see emotes in a specific category"
2074
+ output.join("\n")
2075
+ end
2076
+
2077
+ # Get emotes for a specific category
2078
+ def self.get_category_emotes(category_name)
2079
+ category = CATEGORIES[category_name.downcase]
2080
+ return [] unless category
2081
+
2082
+ emotes = category[:emotes]
2083
+ # Filter to only include emotes that actually exist
2084
+ emotes.select { |name| EMOTES.key?(name) }
2085
+ end
2086
+
2087
+ # List emotes in a specific category
2088
+ def self.list_category(category_name)
2089
+ category_name = category_name.downcase
2090
+ category = CATEGORIES[category_name]
2091
+
2092
+ unless category
2093
+ return "Unknown category: #{category_name}\n\n" + list_categories
2094
+ end
2095
+
2096
+ emotes = get_category_emotes(category_name)
2097
+
2098
+ if emotes.empty?
2099
+ return "No emotes found in category: #{category_name}"
2100
+ end
2101
+
2102
+ output = ["#{category[:description]}:", ""]
2103
+ # Sort emotes by name for better organization
2104
+ sorted_emotes = emotes.sort.map { |name| [name, EMOTES[name]] }
2105
+
2106
+ # Calculate max name length for better alignment
2107
+ max_name_length = sorted_emotes.map { |name, _| name.length }.max
2108
+
2109
+ sorted_emotes.each do |name, emote|
2110
+ output << " #{name.ljust(max_name_length + 2)} - #{emote}"
2111
+ end
2112
+
2113
+ output.join("\n")
2114
+ end
2115
+
2116
+ # Show help text
2117
+ def self.show_help
2118
+ <<~HELP
2119
+ Usage: emote [command] [arguments]
2120
+
2121
+ Commands:
2122
+ emote - List all available emotes
2123
+ emote list - List all available emotes
2124
+ emote categories - List all emote categories
2125
+ emote category <name> - List emotes in a specific category
2126
+ emote list-custom - List custom emotes
2127
+ emote init-custom - Initialize custom emote config file
2128
+ emote help - Show this help message
2129
+ emote <name> [<name>...] - Output one or more emotes (copies to clipboard)
2130
+
2131
+ Examples:
2132
+ emote smile - Output 😄
2133
+ emote pizza beer - Output 🍕🍺
2134
+ emote categories - Show all categories
2135
+ emote category food - Show all food emotes
2136
+
2137
+ Categories:
2138
+ custom, keyboard, smileys, animals, combined, food,
2139
+ activity, travel, objects, symbols, flags
2140
+
2141
+ Compound Emotes:
2142
+ You can combine emoji-only emotes by using hyphens or concatenating names:
2143
+ emote cat-poop - Output 🐱💩
2144
+ emote catpoop - Output 🐱💩
2145
+ HELP
2146
+ end
229
2147
  end
230
2148
  end