When someone types an emoji in Slack, it shows up in the API as a text description surrounded by colons. For example, 😻 is
:heart_eyes_cat: when it comes through the API. Previously, the gateway would just send the text through to IRC, which doesn't look great for IRC users.
Today I updated the gateway to translate those emoji text to unicode so that they appear as native emoji in IRC.
It was actually a surprisingly small amount of code overall. Thankfully, Slack publishes the data they use for their emoji names, so I basically added that to the gateway and look up the mapping there. I had to use a separate library to translate the unicode hex values to an actual unicode string.
It even supports the emoji with skin tone variations! 👍🏻👍🏿
For now, I just left the custom emoji unreplaced, since they are images in Slack and there isn't a good way to send image data in IRC. For our web logs, I might in the future replace those with images so that they look right there, but for now just getting the standard emoji replaced is an improvement for our IRC channel as well as the web logs!