Skip to content

Instantly share code, notes, and snippets.

@jerbear2008
Last active November 13, 2021 00:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jerbear2008/b7ce5fb16044079f44372059d8e235dd to your computer and use it in GitHub Desktop.
Save jerbear2008/b7ce5fb16044079f44372059d8e235dd to your computer and use it in GitHub Desktop.
Discord text to emojis
let singleEmojis = {
'a': [':regional_indicator_a:', ':a:', ':arrow_up_small:', ':arrow_up:', ':arrow_double_up:', ':outbox_tray:'],
'b': [':regional_indicator_b:', ':b:'],
'c': [':regional_indicator_c:', ':copyright:', ':star_and_crescent:'],
'd': [':regional_indicator_d:', ':leftwards_arrow_with_hook:'],
'e': [':regional_indicator_e:', ':three:', ':e_mail:'],
'f': [':regional_indicator_f:'],
'g': [':regional_indicator_g:', ':arrow_right_hook:'],
'h': [':regional_indicator_h:', ':pause_button:', ':hash:'],
'i': [':regional_indicator_i:', ':information_source:'],
'j': [':regional_indicator_j:', ':arrow_heading_up:'],
'k': [':regional_indicator_k:', ':arrow_backward:'],
'l': [':regional_indicator_l:'],
'm': [':regional_indicator_m:', ':m:'],
'n': [':regional_indicator_n:'],
'o': [':regional_indicator_o:', ':o:', ':zero:', ':o2:', ':record_button:', ':radio_button:', ':arrows_counterclockwise:', ':arrows_clockwise:', ':repeat:', ':octagonal_sign:', ':white_circle:', ':white_square_button:'],
'p': [':regional_indicator_p:', ':parking:'],
'q': [':regional_indicator_q:'],
'r': [':regional_indicator_r:', ' :registered:'],
's': [':regional_indicator_s:', ':heavy_dollar_sign:', ':moneybag:', ':dollar:'],
't': [':regional_indicator_t:', ':cross:'],
'u': [':regional_indicator_u:', ':arrow_double_down:'],
'v': [':regional_indicator_v:'],
'w': [':regional_indicator_w:', ':chart_with_downwards_trend:', ':chart_with_upwards_trend:'],
'x': [':regional_indicator_x:', ':negative_squared_cross_mark:', ':x:', ':heavy_multiplication_x:', ':crossed_swords:'],
'y': [':regional_indicator_y:'],
'z': [':regional_indicator_z:', ':zzz:'],
' ': [':black_large_square:', ':black_medium_square:', ':black_medium_small_square:', ':black_small_square:', ':blue_square:', ':white_large_square:', ':white_medium_square:', ':white_medium_small_square:', ':black_square_button:', ':white_small_square:', ':yellow_square:', ':orange_square:', ':green_square:', ':purple_square:', ':brown_square:', ':red_square:'],
}
let multiEmojis = {
'tm': [':tm:'],
'ab': [':ab:']
}
let input = 'this is an example :white_check_mark:'
input = input.toLowerCase()
let length = input.length
let output = []
let unusedSingleEmojis = singleEmojis
let unusedMultiEmojis = multiEmojis
let missed = []
for(let i = 0; i < length;) {
let string = input.substr(i)
let char = string[0]
convert: {
if(char === ':') {
//passthrough emojis
let end = string.substr(1).search(':') + 2
if(end <= 2) break
let emoji = string.substr(0, end)
if(emoji.includes(' ')) break
output.push(emoji)
i += end
break convert
}
for (let multiEmoji in unusedMultiEmojis) {
//find multi emojis
if (string.startsWith(multiEmoji) && unusedMultiEmojis[multiEmoji].length > 0) {
output.push(unusedMultiEmojis[multiEmoji].shift())
i += multiEmoji.length
break convert
}
}
//find single emojis
if(!unusedSingleEmojis[char] || unusedSingleEmojis[char].length === 0) {
missed.push(char)
i++
break convert
}
output.push(unusedSingleEmojis[char].shift())
i++
}
}
output
output.join(' ')
missed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment