Делал большой проект на 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',))
Что то подобное
Что делать? На систему вебхуков переходить не хочу, не умею, может есть починка полинга?
I tried it, and with infinity_polling. When switching networks, the process survived, but did not respond to events. Eventually, the following exception occurred:
2021-07-09 23:28:15,356 (__init__.py:586 MainThread) ERROR - TeleBot: "Infinity polling exception: HTTPSConnectionPool(host='api.telegram.org', port=443): Read timed out. (read timeout=30)" 2021-07-09 23:28:15,356 (__init__.py:588 MainThread) ERROR - TeleBot: "Exception traceback: Traceback (most recent call last): File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 445, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 440, in _make_request httplib_response = conn.getresponse() File "/usr/lib/python3.9/http/client.py", line 1349, in getresponse response.begin() File "/usr/lib/python3.9/http/client.py", line 316, in begin version, status, reason = self._read_status() File "/usr/lib/python3.9/http/client.py", line 277, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "/usr/lib/python3.9/socket.py", line 704, in readinto return self._sock.recv_into(b) File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into return self.read(nbytes, buffer) File "/usr/lib/python3.9/ssl.py", line 1099, in read return self._sslobj.read(len, buffer) socket.timeout: The read operation timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/requests/adapters.py", line 439, in send resp = conn.urlopen( File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen retries = retries.increment( File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment raise six.reraise(type(error), error, _stacktrace) File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/packages/six.py", line 770, in reraise raise value File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen httplib_response = self._make_request( File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 447, in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 336, in _raise_timeout raise ReadTimeoutError( urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.telegram.org', port=443): Read timed out. (read timeout=30) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/__init__.py", line 582, in infinity_polling self.polling(none_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout, File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/__init__.py", line 620, in polling self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout, allowed_updates) File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/__init__.py", line 679, in __threaded_polling raise e File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/__init__.py", line 642, in __threaded_polling self.worker_pool.raise_exceptions() File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/util.py", line 130, in raise_exceptions raise self.exception_info File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/util.py", line 82, in run task(*args, **kwargs) File "/home/andy/Code/codepic/app/./colorcodebot.py", line 164, in wrapper resp = original(*args, **kwargs) File "/home/andy/Code/codepic/app/./colorcodebot.py", line 278, in welcome self.bot.reply_to( File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/__init__.py", line 2152, in reply_to return self.send_message(message.chat.id, text, reply_to_message_id=message.message_id, **kwargs) File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/__init__.py", line 925, in send_message apihelper.send_message( File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/apihelper.py", line 257, in send_message return _make_request(token, method_url, params=payload, method='post') File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/telebot/apihelper.py", line 139, in _make_request result = _get_req_session().request( File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/requests/sessions.py", line 542, in request resp = self.send(prep, **send_kwargs) File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/requests/sessions.py", line 655, in send r = adapter.send(request, **kwargs) File "/home/andy/.local/share/venvs/0dda4f1e0a6c3d4825183a79e394ca41/venv/lib/python3.9/site-packages/requests/adapters.py", line 529, in send raise ReadTimeout(e, request=request) requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.telegram.org', port=443): Read timed out. (read timeout=30) "
At this point the bot became responsive to any new events, but never «caught up» on the ones missed in the meantime.
|
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, возникла следующая проблема, которую не получается решить:
Проблема в строчке bot.polling(). Пробовала зациклить.
Ошибка не пропала.
__________________
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
08.07.2019, 23:37 |
|
Ответы с готовыми решениями: Чат-бот. Chat-Bot 1. Что дописать что бы,… Telegram Bot: Бот не реагирует на сообщения Создаю бота через библиотеку — Telegram.Bot. Бот не реагирует на сообщения. … Падает бот Чат-бот 6 |
|
Cheetah7 0 / 0 / 0 Регистрация: 10.06.2016 Сообщений: 21 |
||||
|
08.07.2019, 23:44 [ТС] |
2 |
|||
|
Внесла изменения в код. Бот не падает, но и не отвечает(( В чём проблема?
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 |
|||
|
Добавила прокси. Перед этим поставила несколько библиотек: Но бот так и не отвечает
Кто с таким сталкивался? Очень нужна помощь!!!
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++
чат-бот Чат бот Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 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)
Автор philips2009, 03 февраля 2020, 19:32:23
« назад — далее »
0 Пользователи и 1 гость просматривают эту тему.
Доброго времени суток уважаемые форумчане
Создал телеграмм-бота используя библиотеку pytelegrambotapi. Бот работает но есть проблема, после минут 5-10 простоя (то есть если не используется) то бот падает.
Пробовал так:
bot.polling(none_stop=True)
и так:
try:
bot.polling(none_stop=True)
except:
time.sleep(5)
Думаю что с моей ОС какие-то проблемы потому-что попробовал тот же бот на пк с Linux Lite, там работает без нареканий, оставил, для интереса на продолжительное время — проработал около 3-х суток. Помогите или дайте наводку где копать и пожалуйста с более менее простыми словами, поскольку являюсь начинающим.
Заранее спасибо.
ОС
uname -a
Linux debian 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64 GNU/Linux
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.11 (stretch)
Release: 9.11
Codename: stretch
версии питона проверьте, и установленные библиотеки.
логгирование настройте и в try except запись ошибки вместо sleep сделайте.
телеграм ботом сам не пользовался, поэтому и советы из раздела «пальцем в небо».
Цитата: philips2009 от 05 февраля 2020, 13:57:47
Цитата: ogost от 04 февраля 2020, 07:37:12логгирование настройте и в try except …
Всегда эта ошибка
('Connection aborted', ConnectionResetError(104, 'Connection reset by peer'))
Похоже, что сервер просто не принимает ваши запросы.
Опять же из серии «пальцем в небо»:
1. Проверьте доступность телеграмма, может с блокировками что-то связанное, или с маршрутами.
2. Или может ваш айпишник в блеклисте у телеграма
3. Если используется шифрование — проверить валидность всяких сертификатов, версии используемой библиотеки и прочего.
Разумеется, первые два вопроса отпадают, если проблемный хост и хост с Linux Lite подключены к одному каналу.
Цитата: ogost от 05 февраля 2020, 18:30:48Похоже, что сервер просто не принимает ваши запросы. ….
По первому вопросу
Здесь не понял, какими блокировками имеете ввиду
По второму
Я думаю если бы мой IP был в блэклисте телеграмма, тогда бы вообще не работал бот
По третьему
Шифрование не используется
проблемный хост и хост с Linux Lite:
у обеих разные IP, на счет канала не знаю
Цитата: philips2009 от 05 февраля 2020, 20:29:33Здесь не понял, какими блокировками имеете ввиду
В России роскомнадзор воюет же с телегой, не? Эти блокировки и имел ввиду.
Цитата: philips2009 от 05 февраля 2020, 20:29:33у обеих разные IP, на счет канала не знаю
Под одним каналом я подразумевал одного и того же провайдера.
Есть ли возможность поменять IP проблемного хоста на IP беспроблемного? Это чтобы исключить возможные проблемы со стороны сети.
На этом идеи заканчиваются, прошу прощения.
- Русскоязычное сообщество Debian GNU/Linux
-
►
-
►
Программирование -
►
bot.polling
Когда я оставляю свою программу запущенной на несколько часов, а затем отправляю сообщение боту, он не отвечает, а через некоторое время генерирует следующую ошибку.
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 445, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 440, in _make_request
httplib_response = conn.getresponse()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1322, in getresponse
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 303, in begin
version, status, reason = self._read_status()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 264, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 1241, in recv_into
return self.read(nbytes, buffer)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 1099, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/util/retry.py", line 532, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/packages/six.py", line 770, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 447, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/urllib3/connectionpool.py", line 336, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.telegram.org', port=443): Read timed out. (read timeout=30)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "botTest.py", line 28, in <module>
bot.polling()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/__init__.py", line 617, in polling
self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout, allowed_updates)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/__init__.py", line 676, in __threaded_polling
raise e
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/__init__.py", line 639, in __threaded_polling
self.worker_pool.raise_exceptions()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/util.py", line 130, in raise_exceptions
raise self.exception_info
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/util.py", line 82, in run
task(*args, **kwargs)
File "botTest.py", line 25, in echo_message
bot.reply_to(message, message.text)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/__init__.py", line 2147, in reply_to
return self.send_message(message.chat.id, text, reply_to_message_id=message.message_id, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/__init__.py", line 919, in send_message
apihelper.send_message(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/apihelper.py", line 257, in send_message
return _make_request(token, method_url, params=payload, method='post')
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/telebot/apihelper.py", line 139, in _make_request
result = _get_req_session().request(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.telegram.org', port=443): Read timed out. (read timeout=30)
Насколько я понимаю, проблема заключается в запросах, сделанных bot.polling ().
Я также пробовал использовать файл примера echo_bot.py, но проблема та же. Пробовал разные решения:
bot.polling(none_stop=True, timeout=30)
А также
try:
bot.polling(none_stop=True)
except Exception as e:
time.sleep(15)
К сожалению, все с той же проблемой. Сначала он работает правильно, а затем через несколько часов перестает отвечать.
Это пример кода
import telebot
API_TOKEN = 'API_TOKEN'
bot = telebot.TeleBot(API_TOKEN)
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
bot.reply_to(message, "Hi there, I am EchoBot.")
@bot.message_handler(func=lambda message: True)
def echo_message(message):
bot.reply_to(message, message.text)
bot.polling()
Спасибо всем за помощь
Уведомления
- Начало
- » Python для новичков
- » Ошибка при запуске кода телеграмм бота
#1 Июнь 30, 2019 12:39:06
Ошибка при запуске кода телеграмм бота
Возникает ошибка:
https://savepice.ru/full/2019/6/30/676eee3f63a0992ff377fd25337b380e-full.png.html
Возникает ошибка: ^
IndentationError: unindent does not match any outer indentation level
C:Python>bot.py
File “C:Pythonbot.py”, line 14
answer += “Температура в данном городе: ” + str(temp) + “nn”
^
IndentationError: unindent does not match any outer indentation level
Используемая ОС: Виндовс 10 64 бит,
Версия Python: 3.7.3
установленные модули: pyowm, pyTelegramBotAPI==0.3.0, pyTelegramBotAPI
Сам код:
import pyowm import telebot owm = pyowm.OWM('b835a7aae1d1bb2d3516b660bc2019db', language = "ru") bot = telebot.TeleBot("844058209:AAGjEHluy8tTU3G4z64wOtq-HYy7T7T9-uY") @bot.message_handler(content_types=['text']) def send_echo(message): observation = owm.weather_at_place( message.text ) w = observation.get_weather() temp = w.get_temperature('celsius')["temp"] answer = "В городе " + message.text + "сейчас" + w.get_detailed_status() + "n" answer += "Температура в данном городе: " + str(temp) + "nn" if temp < 10: answer += "Одевайся теплее на улице холодно" elif temp < 20: answer += "Можешь одеть что-нибудь полегче, рубашку с джинсами например " else: answer += "Выходи в трусах, там очень тепло" bot.send_message(message.chat.id, answer) bot.polling( none_stop = True )
Отредактировано kiryanovik (Июнь 30, 2019 12:43:25)
Офлайн
- Пожаловаться
#2 Июнь 30, 2019 14:27:09
Ошибка при запуске кода телеграмм бота
А что за дополнительные отступы в первых 4 строчках метода?
Офлайн
- Пожаловаться
#4 Июнь 30, 2019 17:51:32
Ошибка при запуске кода телеграмм бота
Egorro13
А что за дополнительные отступы в первых 4 строчках метода?
Сейчас вроде разобрался с этой ошибкой, конкретно ее больше не возникает, я просто делал отступы пробелом (вручную) а так оказывается нельзя, надо интером чтоб редактор кода автоматически переносил строки на нужное место — увидел это когда выделил весь код и там подсвечивается где я вручную пробелом щелкал и где редактор кода сам перенес! В общем теперь бот запускается, но проблема теперь в чем то другом)) Я просто уже не понимаю что может быть, весь день сижу)
По ссылке скриншот на ошибку при запуске в cmd, ошибка возникает конкретно когда боту пишешь город для вывода
https://savepice.ru/full/2019/6/30/41618896d17b22a37cec4dd080314a10-full.png.html
Офлайн
- Пожаловаться
#5 Июнь 30, 2019 17:59:54
Ошибка при запуске кода телеграмм бота
kiryanovik
Можно и пробелом, но чтобы их количество для всех отступов совпадало, обычно по Pep-8 ставится 4 пробела на 1 отступ.
kiryanovik
По ссылке скриншот на ошибку при запуске в cmd, ошибка возникает конкретно когда боту пишешь город для вывода
Как я понимаю, ошибка возникает из-за того, что для бесплатных аккаунтов функция недоступна
Офлайн
- Пожаловаться
#6 Июнь 30, 2019 18:36:00
Ошибка при запуске кода телеграмм бота
Egorro13
До телеграмма я написал код просто для cmd, с использованием этого же ключа и все работало, а в телеграмме не хочет, плюс я зарегистрировал на owm еще один аккаунт и история таже самая. Не совсем понятно из за чего это происходит
Офлайн
- Пожаловаться
#7 Июнь 30, 2019 18:37:11
Ошибка при запуске кода телеграмм бота
Egorro13
Или для каких именно аккаунтов вы имеете ввиду ? аккаунт на owm или в телеграмме все же ?
Офлайн
- Пожаловаться
#8 Июнь 30, 2019 18:40:27
Ошибка при запуске кода телеграмм бота
Egorro13
Что можете порекомендовать взамен owm ? бесплатное конечно же
Офлайн
- Пожаловаться
#9 Июнь 30, 2019 20:17:23
Ошибка при запуске кода телеграмм бота
kiryanovik
плюс я зарегистрировал на owm еще один аккаунт и история таже самая. Не совсем понятно из за чего это происходит
По ссылке можно увидеть, какие функции доступны бесплатно
kiryanovik
Или для каких именно аккаунтов вы имеете ввиду ? аккаунт на owm или в телеграмме все же ?
На скриншоте мало что можно разобрать из-за картинки и мелкого размера, но все же видно, что исключение выбрасывает именно OWM.
kiryanovik
Что можете порекомендовать взамен owm ? бесплатное конечно же
Порекомендовать не могу — с этим делом еще не сталкивался, просто попытался помочь по смыслу. Возможно, кто-то более опытный что-то посоветует
Офлайн
- Пожаловаться
#10 Июль 1, 2019 18:02:57
Ошибка при запуске кода телеграмм бота
Egorro13
Спасибо большое) с вашей помощью хоть что то стало понятно!
Офлайн
- Пожаловаться
- Начало
- » Python для новичков
- » Ошибка при запуске кода телеграмм бота

Чат-бот