Error when running python telegram bot for a long time

I created a bot on TeleBot. Immediately after the launch, everything works fine, but after a few hours an error appears in the console (shown below). What could be the problem and how to solve it?

the error:

Traceback (most recent call last):
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 449, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 444, in _make_request
    httplib_response = conn.getresponse()
  File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/http/client.py", line 1374, in getresponse
    response.begin()
  File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
  File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/http/client.py", line 287, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/requests/adapters.py", line 489, in send
    resp = conn.urlopen(
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    retries = retries.increment(
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/util/retry.py", line 550, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 449, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 444, in _make_request
    httplib_response = conn.getresponse()
  File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/http/client.py", line 1374, in getresponse
    response.begin()
  File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
  File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/http/client.py", line 287, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 605, in <module>
    bot.polling(non_stop=True, interval=0) #запуск бота
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/__init__.py", line 1043, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/__init__.py", line 1118, in __threaded_polling
    raise e
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/__init__.py", line 1073, in __threaded_polling
    polling_thread.raise_exceptions()
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/util.py", line 108, in raise_exceptions
    raise self.exception_info
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/util.py", line 90, in run
    task(*args, **kwargs)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/__init__.py", line 649, in __retrieve_updates
    updates = self.get_updates(offset=(self.last_update_id + 1), 
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/__init__.py", line 623, in get_updates
    json_updates = apihelper.get_updates(self.token, offset, limit, timeout, allowed_updates, long_polling_timeout)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/apihelper.py", line 321, in get_updates
    return _make_request(token, method_url, params=payload)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/telebot/apihelper.py", line 156, in _make_request
    result = _get_req_session().request(
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/home/runner/test-1/venv/lib/python3.10/site-packages/requests/adapters.py", line 547, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

There is a line “Connection aborted” in the text of your error. Perhaps the error occurs due to the fact that Replit disables your repl.

I also strongly recommend that you put your bot’s token in a secret.

And can I ask you one question?

Вы говорите по-русски?

Вы правы
За рекомендацию с токеном спасибо, не подумал, что его можно будет увидеть
Может быть вы знаете, почему Replit отключает мой repl?

Replit автоматически выключает ваши реплы через несколько часов после закрытия браузера или выключения компьютера/телефона.

Я заметил, что в вашем репле используется файл background.py. В своём телеграм боте я его использовал для того, чтобы бот не выключался, но для этого надо было дополнительно подключать к реплу UptimeRobot. Если вы сделаете также, то репл не будет выключаться.

Вы первый человек в Ask, с которым я смог говорить на родном языке :slight_smile:

Я уже использую UptimeRobot. Это помогло немного увеличить время работы бота, но как видите, он все равно выключается.

А ваш бот стабильно работает?

:slight_smile:

Мой бот работает и не выключается. Я получше рассмотрю вашу ошибку и код бота, может быть найду решение проблемы.

1 Like

буду вам очень благодарен :heart:

Попробуйте заменить строку номер 621 в файле main.py с

bot.polling(non_stop=True, interval=0)

на

bot.infinity_polling(none_stop=True)

Я не знаю точно, поможет ли это, но, думаю, попробовать стоит.
Если не поможет, замените эту строку кода на ту, что была до этого.

поменял

Спасибо, что уделили время моей проблеме :upside_down_face:

Пожалуйста, удалите файлы config.py в ваших реплах с телеграм ботами и поместите токены ботов в секреты ваших реплов. Чем раньше вы это сделаете, тем меньше вероятность того, что ваши токены мог кто-то украсть.

Не подскажите мне, как их скрыть?

Сначала вам нужно нажать на кнопку Secrets на панели в левом нижнем углу.

Должна будет открыться вкладка секретов.

Нажмите на кнопку New Secret и введите ключ секрета (достаточно короткий и простой) в поле Key и токен бота в поле Value. Потом нажмите кнопку Save, и секрет с токеном вашего бота будет создан.
image

После этого вам надо будет добавить некоторые строки кода в ваш программу. А именно:

  • в файле main.py импортируйте модуль os
  • создайте переменную TOKEN в main.py файле с помощью этого кода:
TOKEN = os.environ['здесь напишите ключ вашего секрета с токеном бота']
  • при создании объекта bot используйте переменную TOKEN
1 Like

Сделал, спасибо большое!!

Привет @AveTsygaika, так как KAlexK помог тебе. Отметьте это как решение, нажав кнопку Решение под сообщением, которое помогло. Это может помочь людям, которые столкнутся с подобной проблемой в будущем. Хорошего дня!


Hey @AveTsygaika since KAlexK helped you. Please mark it as the solution by pressing the Solution button below the post that helped. It can help people that have a similar problem in the future. Have a nice day!

4 Likes

If I don’t know if the problem has been solved yet, can I not click the Solution button?

Когда вы будете уверены, что проблема решена, тогда можете отмечать пост как решение.

When you are sure that the problem has been solved, then you can mark the post as a solution.

Значит, бот теперь работает. Поздравляю! Желаю удачно продолжать разработку!

2 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.