title: Asynchronous function in telegram bot
body: <p>From understanding basics of async/await I learned that <code>time.sleep()</code> is a blocking function, which freezes the execution. I tried to check it in this simple <code>message_handler</code> while creating a telegram bot.</p>
  <pre><code>import telebot
  from time import sleep
  
  token = '...'
  bot = telebot.TeleBot(token)
  
  @bot.message_handler(commands=['test'])
  def test(message):
      bot.send_message(message.chat.id, 'Hello')
      sleep(5)
      bot.send_message(message.chat.id, 'World')
  
  if __name__ == '__main__':
  bot.infinity_polling()
  </code></pre>
  <p>A /test command was sent from two devices with a little interval (&lt;5s). I expected the program to send a message 'Hello' to the first device, freeze for 5 seconds and then send 'World', and only after that do the same with the second device. But instead both devices were treated simultaneously.</p>
  <p>In this case I cannot understand the process. How does the program respond immediately to the second device, if it was frozen by <code>time.sleep()</code> after responding to the first one?</p>