Зачем раз в 2 секунды проверять работоспособность скрипта, и если упал - перезапускать? Такой блевотины я давно не видел. Тут же надо сделать обработчик исключений (ошибок) стандартный.
В Python за это отвечает try-except. Добавляешь бесконечный цикл, и в случае не истины (поломки) он вернется к действиям, которые должны будут исполниться при истине.
while True:
try:
bot.polling()
except:
continue
Вместо
bot.polling()
нужно добавить любой другой метод запускающий long polling, если в скрипте используется библиотека альтернативная PyTelegramBotAPI