В чем отличие bot.polling() от bot.polling(none_stop=True)?
Вот в принципе и вся проблема, всегда передавал polling(none_stop=True), без этого бот будет выключаться?
Ответы (1 шт):
После вызова этой функции TeleBot начинает опрашивать серверы Telegram на предмет новых сообщений.
- none_stop: True / False (по умолчанию False) - не прекращать опрос при получении ошибки от серверов Telegram
- interval: True / False (по умолчанию False) - интервал между запросами на опрос. изменение этого параметра снижает время отклика бота.
- таймаут: целое число (по умолчанию 20) - Тайм-аут в секундах для длительного опроса
https://github.com/eternnoir/pyTelegramBotAPI#telebot
Так же имеется bot.infinity_polling:
def infinity_polling(self, *args, **kwargs):
while not self.__stop_polling.is_set():
try:
self.polling(*args, **kwargs)
except Exception as e:
time.sleep(5)
pass
logger.info("Break infinity polling")
Метод infinity_polling нужен только для обхода падения бота путем перезапуска его. В обычной ситуации вызывался бы bot.polling, внутри которого также крутился цикл.
Т.к. этот код вызывает цикл, то все остальные действия ниже него не произойдут пока цикл не завершится.
Если нужно параллельно что-то выполнить, то нужно запускать что-то в отдельном потоке, например самого бота -- через вызов infinity_polling.