Можно ли упростить код?
Например положить команды и вызываемые ими смайлики с словарь вроде smileys = {text: smile_list} и сделать цикл:
for text, smile_list in smileys:
    if text in message.text:
        msg = message.text
        for i in range(0, len(smile_list)):
            wtf = (text+"{0}]").format(i)
            if wtf in msg:
                  bot.send_message(message.chat.id,msg.replace(wtf,smile_list[i]))

Список смайлов генерируется аналогично. Вообще, если мы видим, что у нас дважды встречается один и тот же (по структуре) фрагмент кода, значит мы что-то уже сделали не так и тут или нужен цикл или надо выделить его в отдельную функцию.
Создай словарь с ключами "::<ваша уникальная эмоция>" и значением - соответственный смайл. Если эмоций на один ключ много, то делай значение-массив. Потом ищи в сообщении свою уникальную команду (ключ словаря : ) ) бери значение и делай с ним, что захочешь. Если есть повторение одного и того же кода, значит код стоит упрощать или выносить в функции. Такой код читается лучше. В вашем очень трудно разобраться