rage_flip 2.1.0 → 2.2.1

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