Меню

Bot polling telebot ошибка

Делал большой проект на Python3, Телеграмм бот с множеством функций, из-за скудности багажа знаний и (как я понял это необходимо) кошелька на сервера использовал bot.polling() (Использую pyTelegramBotAPI) и буквально через пол часа бот падает. написал обычного бота для теста отклика через время, думая что перегрузил проект, но нет, в самом деле падает, код:

import telebot
import extras


bot = telebot.TeleBot(extras.token)


@bot.message_handler(content_types="text")
def handler_text(message):
    bot.send_message(message.from_user.id, 'Все ещё в деле')

bot.polling(none_stop=True)

Ошибка в консоли:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagestelebotutil.py", line 58, in run
    task(*args, **kwargs)
  File "D:/Python/test.py", line 10, in handler_text
    bot.send_message(message.from_user.id, 'Все ещё в деле')
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagestelebot__init__.py", line 439, in send_message
    reply_markup, parse_mode, disable_notification))
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagestelebotapihelper.py", line 135, in send_message
    return _make_request(token, method_url, params=payload, method='post')
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagestelebotapihelper.py", line 54, in _make_request
    timeout=(connect_timeout, read_timeout), proxies=proxy)
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagesrequestssessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagesrequestssessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "C:UsersMainWindowsPCAppDataLocalProgramsPythonPython36-32libsit
e-packagesrequestsadapters.py", line 490, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected(
'Remote end closed connection without response',))

Что то подобное
Что делать? На систему вебхуков переходить не хочу, не умею, может есть починка полинга?

Hi eternnoir, thanks for the library!

subject: I have, an timeout error while non_stop polling. This causing app to crash.
Is there a native way, to ignore such kind of errors and continue polling?

i use simple code example

if __name__ == '__main__':
        bot.polling(none_stop=True)

Traceback (most recent call last):
File «C:Usersanatoliy.piskunovDesktopPyTBotbot.py», line 184, in
bot.polling(none_stop=True) #constantly get messages from Telegram
File «C:Program Files (x86)Python35-32libsite-packagestelebot__init__.py», line 192, in polling
self.threaded_polling(none_stop, interval, timeout)
File «C:Program Files (x86)Python35-32libsite-packagestelebot__init
.py», line 215, in *threaded_polling
polling_thread.raise_exceptions()
File «C:Program Files (x86)Python35-32libsite-packagestelebotutil.py», line 73, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File «C:Program Files (x86)Python35-32libsite-packagessix.py», line 686, in reraise
raise value
File «C:Program Files (x86)Python35-32libsite-packagestelebotutil.py», line 54, in run
task(_args, _kwargs)
File «C:Program Files (x86)Python35-32libsite-packagestelebot__init
.py», line 122, in retrieve_updates
updates = self.get_updates(offset=(self.last_update_id + 1), timeout=timeout)
File «C:Program Files (x86)Python35-32libsite-packagestelebot__init
.py», line 92, in get_updates
json_updates = apihelper.get_updates(self.token, offset, limit, timeout)
File «C:Program Files (x86)Python35-32libsite-packagestelebotapihelper.py», line 139, in get_updates
return _make_request(token, method_url, params=payload)
File «C:Program Files (x86)Python35-32libsite-packagestelebotapihelper.py», line 34, in _make_request
result = requests.request(method, request_url, params=params, files=files, timeout=(connect_timeout, read_timeout))
File «C:Program Files (x86)Python35-32libsite-packagesrequestsapi.py», line 57, in request
return session.request(method=method, url=url, *_kwargs)
File «C:Program Files (x86)Python35-32libsite-packagesrequestssessions.py», line 475, in request
resp = self.send(prep, *_send_kwargs)
File «C:Program Files (x86)Python35-32libsite-packagesrequestssessions.py», line 585, in send
r = adapter.send(request, **kwargs)
File «C:Program Files (x86)Python35-32libsite-packagesrequestsadapters.py», line 459, in send
raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host=’api.telegram.org’, port=443): Max retries exceeded with url: /bot<%bot_name%>:<%bot_token%>/getUpdates?timeout=20&offset=1 (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x03D83430>, ‘Connection to api.telegram.org timed out. (connect timeout=3.5)’))

Cheetah7

0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 21

1

08.07.2019, 23:37. Показов 21134. Ответов 6

Метки bot, bot telegram, pycharm, python 3.7, python 3.x (Все метки)


Здравствуйте!

При запуске кода для связи с чат-ботом в Telegram, возникла следующая проблема, которую не получается решить:
‘Connection to api.telegram.org timed out. (connect timeout=3.5)’

Падает чат-бот. Проблема с bot.polling()

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import telebot
import const
 
bot = telebot.TeleBot(const.API_TOKEN)
 
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
    bot.reply_to(message, "Привет! Я Бот!")
 
@bot.message_handler(func=lambda message: True)
def echo_all(message):
    bot.reply_to(message, message.text)
 
bot.polling()

Проблема в строчке bot.polling(). Пробовала зациклить.

Python
1
2
3
4
5
6
while True:
    try:
        bot.polling(none_stop=True)
    except Exception as e:
        print(e)
        time.sleep(150)

Ошибка не пропала.
Очень нужна помощь!!! Заранее спасибо!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

08.07.2019, 23:37

Ответы с готовыми решениями:

Чат-бот. Chat-Bot
Вот у меня есть чат-бот(вопрос — ответ)
У меня возникли 2 вопроса:

1. Что дописать что бы,…

Telegram Bot: Бот не реагирует на сообщения
Приветствую.

Создаю бота через библиотеку — Telegram.Bot.

Бот не реагирует на сообщения. …

Падает бот
import telebot
from telebot import types…

Чат-бот
Здравствуйте, хочу сделать сайт с чат-ботом. Механизм такой: Создаю таблицу dicitonary с полями:…

6

Cheetah7

0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 21

08.07.2019, 23:44

 [ТС]

2

Внесла изменения в код. Бот не падает, но и не отвечает(( В чём проблема?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import telebot
import const
import time
 
bot = telebot.TeleBot(const.API_TOKEN, threaded=False)
 
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
    bot.reply_to(message, "Привет! Я Бот!")
 
@bot.message_handler(func=lambda message: True)
def echo_all(message):
    bot.reply_to(message, message.text)
 
bot.infinity_polling(True)

Падает чат-бот. Проблема с bot.polling()

Падает чат-бот. Проблема с bot.polling()



0



210 / 107 / 43

Регистрация: 12.12.2016

Сообщений: 380

09.07.2019, 17:53

3



0



Cheetah7

0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 21

10.07.2019, 22:42

 [ТС]

4

Добавила прокси. Перед этим поставила несколько библиотек:
pip install requests[socks]
pip install gunicorn
pip install PuSocks
pip install pyTelegramBotAPI —upgrade
pip install urllib3
pip install requests==2.10.0

Но бот так и не отвечает

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import telebot
from telebot import apihelper
import const
import time
 
bot = telebot.TeleBot(const.API_TOKEN, threaded=False)
apihelper.proxy = {"https": "socks5://54.39.16.26:41279"}
 
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
    bot.reply_to(message, "Привет! Я Бот!")
 
@bot.message_handler(func=lambda message: True)
def echo_all(message):
    bot.reply_to(message, message.text)
 
while True:
    try:
        bot.polling(none_stop=True, interval=0, timeout=20)
    except Exception as E:
        time.sleep(1)

Кто с таким сталкивался? Очень нужна помощь!!!



0



1283 / 668 / 365

Регистрация: 07.01.2019

Сообщений: 2,176

11.07.2019, 00:02

5



0



1 / 1 / 0

Регистрация: 10.01.2011

Сообщений: 82

07.06.2022, 13:13

6

чем отличается bot.infinity_polling от bot.polling?



0



Эксперт по компьютерным сетям

5868 / 3331 / 1028

Регистрация: 03.11.2009

Сообщений: 9,949

07.06.2022, 17:19

7

bot.polling вроде бы не обрабатывает ошибки и требует свой бесконечный цикл



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

07.06.2022, 17:19

Помогаю со студенческими работами здесь

Чат-бот на C++
Как сделать оффлайн бота для общения?В данный момент изучаю C++ и решил сделать такого!Также надо…

Чат-бот
Ниже полностью рабочий код для программы чат-бота, который вам отвечает.
У меня есть…

чат-бот
Подскажите пожалуйста..как написать чат-бот, что-то похожее на A.L.I.C.E.

Чат бот
Мою проблему объяснить не очень просто, но я постараюсь. Недавно я захотел написать чат бота на Qt…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

7

import configparser
import config
import telebot
from telebot import types #buttons
from string import Template

bot = telebot.TeleBot(config.token)

user_dict = {}

class User:
    def __init__(self, city):
        self.city = city

        keys = ['fullname', 'phone']

        for key in keys:
            self.key = None

# если /help, /start
@bot.message_handler(commands=['start','help'])
def send_welcome(message):
    chat_id = message.chat.id
    bot.send_message(chat_id, "Здравствуйте." + "{message.from_user.first_name}" + " Я бот! Я могу вам помочь связаться с оператором для консультации.", reply_markup=markup)
    return(chat_id)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) 

#bot.send_message(message.chat.id, "Здравствуйте. {message.from_user.first_name}" + " Я бот! Я могу вам помочь связаться с оператором для консультации.", chat_id=call, reply_markup=markup)

def process_city_step(message):
    try:
        chat_id = message.chat.id
        user_dict[chat_id] = User(message.text)

        # удалить старую клавиатуру
        markup = types.ReplyKeyboardRemove(selective=False)

        msg = bot.send_message(chat_id, 'Как к вам обращаться?', reply_markup=markup)
        bot.register_next_step_handler(msg, process_fullname_step)

    except Exception as e:
        bot.reply_to(message, 'ooops!!')

def process_fullname_step(message):
    try:
        chat_id = message.chat.id
        user = user_dict[chat_id]
        user.fullname = message.text

        msg = bot.send_message(chat_id, 'Ваш номер телефона')
        bot.register_next_step_handler(msg, process_phone_step)

    except Exception as e:
        bot.reply_to(message, 'ooops!!')

def process_phone_step(message):
    try:
        int(message.text)

        chat_id = message.chat.id
        user = user_dict[chat_id]
        user.phone = message.text

    except Exception as e:
        msg = bot.reply_to(message, 'Вы ввели что то другое. Пожалуйста введите номер телефона.')
        bot.register_next_step_handler(msg, process_phone_step)

def process_social_step(message):
    try:
        chat_id = message.chat.id
        user = user_dict[chat_id]
        user.carModel = message.text

        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        itembtn1 = types.KeyboardButton('Только телефон')
        itembtn2 = types.KeyboardButton('Telegram')
        itembtn3 = types.KeyboardButton('Viber')
        itembtn4 = types.KeyboardButton('WhatsApp')
        markup.add(itembtn1, itembtn2, itembtn3, itembtn4)

        msg = bot.send_message(chat_id, 'Ваши соц сети', reply_markup=markup)
        bot.register_next_step_handler(msg)

    except Exception as e:
        bot.reply_to(message, 'ooops!!')

        # ваша заявка "Имя пользователя"
        bot.send_message(chat_id, getRegData(user, 'Ваша заявка', message.from_user.first_name), parse_mode="Markdown")
        # отправить в группу
        bot.send_message(config.chat_id, getRegData(user, 'Заявка от бота', bot.get_me().username), parse_mode="Markdown")

    except Exception as e:
        bot.reply_to(message, 'ooops!!')

# формирует вид заявки регистрации
# нельзя делать перенос строки Template
# в send_message должно стоять parse_mode="Markdown"
def getRegData(user, title, name):
    t = Template('$title *$name* n ФИО: *$fullname* n Телефон: *$phone* ')

    return t.substitute({
        'title': title,
        'name': name,
        'fullname': user.fullname,
        'phone': user.phone
    })

# произвольный текст
@bot.message_handler(content_types=["text"])
def send_help(message):
    bot.send_message(message.chat.id, 'О нас - /aboutnРегистрация - /regnПомощь - /help')

# Enable saving next step handlers to file "./.handlers-saves/step.save".
# Delay=2 means that after any change in next step handlers (e.g. calling register_next_step_handler())
# saving will hapen after delay 2 seconds.
bot.enable_save_next_step_handlers(delay=2)

# Load next_step_handlers from save file (default "./.handlers-saves/step.save")
# WARNING It will work only if enable_save_next_step_handlers was called!
bot.load_next_step_handlers()

if __name__ == '__main__':
    bot.polling(none_stop=True)

Python — AsyncTeleBot polling timeout error

Running this python script in a bash console:

import asyncio
from telebot.async_telebot import AsyncTeleBot
bot = AsyncTeleBot(SECRET_TOKEN)
asyncio.run(bot.infinity_polling())

This error message is printed to the console repeatedly every 2 seconds, regardless of the timeout parameter.

(async_telebot.py:321 MainThread) ERROR - TeleBot: "Request timeout. Request: method=get url=getUpdates params=<aiohttp.formdata.FormData object at 0x7f0c35d9b7f0> files=None request_timeout=20"

The same script works well when run locally, or if I used TeleBot instead of AsyncTeleBot (I need it to be asyncronous)

I have tried the following, but still facing the same issue

  • setting timeout and request_timeout parameters
  • using bot.polling(non_stop=True)
  • updating pyTelegramBotAPI

Would appreciate any assistance in resolving this issue!

sinstarzs
|
4
posts
|



Dec. 14, 2022, 2 p.m.

|
permalink

Updating pyTelegramBotAPI to 4.8.0 resulted in a similar error:

2022-12-14 17:11:34,999 (asyncio_helper.py:101 MainThread) ERROR - TeleBot: "Aiohttp ClientError: ClientConnectorError"
2022-12-14 17:11:34,999 (async_telebot.py:361 MainThread) ERROR - TeleBot: "Infinity polling exception: Request timeout. Request: method=get url=getMe params=<aiohttp.formdata.FormData object at 0x7f003abe6520> files=None request_timeout=300"
2022-12-14 17:11:35,000 (async_telebot.py:363 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "/home/sinstarzs/.local/lib/python3.9/site-packages/telebot/async_telebot.py", line 357, in infinity_polling
    await self._process_polling(non_stop=True, timeout=timeout, request_timeout=request_timeout,
  File "/home/sinstarzs/.local/lib/python3.9/site-packages/telebot/async_telebot.py", line 397, in _process_polling
    self._user = await self.get_me()
  File "/home/sinstarzs/.local/lib/python3.9/site-packages/telebot/async_telebot.py", line 1899, in get_me
    result = await asyncio_helper.get_me(self.token)
  File "/home/sinstarzs/.local/lib/python3.9/site-packages/telebot/asyncio_helper.py", line 154, in get_me
    return await _process_request(token, method_url)
  File "/home/sinstarzs/.local/lib/python3.9/site-packages/telebot/asyncio_helper.py", line 105, in _process_request
    raise RequestTimeout("Request timeout. Request: method={0} url={1} params={2} files={3} request_timeout={4}".format(method, url, params, files, request_timeout, current_try))
telebot.asyncio_helper.RequestTimeout: Request timeout. Request: method=get url=getMe params=<aiohttp.formdata.FormData object at 0x7f003abe6520> files=None request_timeout=300

sinstarzs
|
4
posts
|



Dec. 14, 2022, 5:15 p.m.

|
permalink

Telegram API is whitelisted, and this script works when I run with Telebot instead of AsyncTeleBot

sinstarzs
|
4
posts
|



Dec. 15, 2022, 2:27 p.m.

|
permalink

That’s why I’m suggesting checking proxy settings. Free accounts connect to whitelisted sites via proxy.

Staff

fjl
|
3598
posts
|

PythonAnywhere staff
|



Dec. 15, 2022, 4:18 p.m.

|
permalink

It works after adding this. Thanks!

from telebot import asyncio_helper
asyncio_helper.proxy = 'http://proxy.server:3128'

sinstarzs
|
4
posts
|



Dec. 15, 2022, 5:43 p.m.

|
permalink

Excellent, thanks for confirming!

Staff

giles
|
11163
posts
|

PythonAnywhere staff
|



Dec. 16, 2022, 12:38 a.m.

|
permalink

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Bot pod ошибка что то пошло не так
  • Bosh ошибка e 17