Try except python telegram bot

Как запустить Python — Telegram бота чтобы он не крашился из-за ошибок?

Запустил python процесс для бота телеграм.
и он раз в день крашится (процесс завершается) из-за разных ошибок, например:

File "main_bot.py", line 67, in bot.polling(none_stop=True, interval=0) File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 192, in polling self.__threaded_polling(none_stop, interval, timeout) File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 215, in __threaded_polling polling_thread.raise_exceptions() File "/usr/local/lib/python2.7/dist-packages/telebot/util.py", line 73, in raise_exceptions six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2]) File "/usr/local/lib/python2.7/dist-packages/telebot/util.py", line 54, in run task(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 122, in __retrieve_updates updates = self.get_updates(offset=(self.last_update_id + 1), timeout=timeout) File "/usr/local/lib/python2.7/dist-packages/telebot/__init__.py", line 92, in get_updates json_updates = apihelper.get_updates(self.token, offset, limit, timeout) File "/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py", line 139, in get_updates return _make_request(token, method_url, params=payload) File "/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py", line 34, in _make_request result = requests.request(method, request_url, params=params, files=files, timeout=(connect_timeout, read_timeout)) File "/usr/lib/python2.7/dist-packages/requests/api.py", line 49, in request return session.request(method=method, url=url, **kwargs) File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 569, in send r = adapter.send(request, **kwargs) File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 407, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', error(101, 'Network is unreachable'))

Можно ли сделать так, чтобы py демон не завершался, либо запускать его автоматически если он вылетит?

Бот запускаю на VPS с Debian так :
bot.polling(none_stop=True, interval=0)

Использую pyTelegramBotAPI

Источник

Блог вебмастера

создание сайтов, заработок в сети, раскрутка, программирование

Ошибки и их решения при написании бота для телеграм

Ошибки при разработке telegram бота на python

Хочу описать несколько ошибок, с которыми я столкнулся при разработке бота для телеграм. Они популярные, но все таки запишу для себя чтобы не забыть.

Читайте также:  Php value memory limit 256m htaccess

Это глобальные переменные, большие тексты и отсутствие try/except.

Не используйте глобальные переменные

Если ботом планируете пользоваться не только Вы, никогда не используйте глобальные переменные. Особенно, если в боте будет личная (персональная) информация. Пример: бот запрашивал имя, любое число и город. Данные сохранялись в переменные и потом выводились в конце пользователю для подтверждения.

В моем коде были глобальные переменные и пользователи могли видеть чужую информацию! Это происходило при одновременном обращении к боту. Для решения этой задачи нужно использовать классы или передавать переменные в функциях.

Я создавал новый массив и наполнял его на каждом шагу (использовал register_next_step_handler ). Первый ответ пользователя (имя) я передавал на второй шаг, дальше (число и имя с 1 шага) передавал на третий. И в конце уже разбивал данные.

Отсутствие try/except

Некоторые пользователи получали ошибки и заказчик толком не мог объяснить в чем причина. Дописав лог, проанализировал скриншоты я понял, что в причина в отсутствии логина telegram. Я не использовал try/except при выводе логина.

Источник

Оцените статью