@RaymanPy

Ошибка при обработке JSON?

Использую WebHook в своем TelegramBot`е
В нем есть так скажем форма (имя и номер телефона)

Так вот при заполнении `имени` выходит ошибка :

2019-02-01 13:06:42,362: Exception on /`secret` [POST]
Traceback (most recent call last):
  File "/home/PyRayman/venv/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/PyRayman/venv/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/PyRayman/venv/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/PyRayman/venv/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/PyRayman/venv/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/PyRayman/venv/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/PyRayman/TelegramBot/mainbot.py", line 85, in webhook
    bot.process_new_updates([update])
  File "/home/PyRayman/venv/lib/python3.6/site-packages/telebot/__init__.py", line 314, in process_new_updates
    self.process_new_messages(new_messages)
  File "/home/PyRayman/venv/lib/python3.6/site-packages/telebot/__init__.py", line 333, in process_new_messages
    self._notify_next_handlers(new_messages)
  File "/home/PyRayman/venv/lib/python3.6/site-packages/telebot/__init__.py", line 1299, in _notify_next_handlers
    self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"])
  File "/home/PyRayman/venv/lib/python3.6/site-packages/telebot/__init__.py", line 464, in _exec_task
    task(*args, **kwargs)
TypeError: 'str' object is not callable


вот собственно часть кода где выходит ошибка:
@app.route('/{}'.format(secret),methods=['POST'])
def webhook():
	print(flask.request.headers)
	if flask.request.headers.get('content-type') == 'application/json':
		json_string = flask.request.get_data().decode('utf-8')
		update = telebot.types.Update.de_json(json_string)
		bot.process_new_updates([update])
		return ''
	else:
	    print('You NOT made it!')
	    flask.abort(403)
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@MAGistr_MTM
Учусь программировать
Скорее всего, вы назвали аттрибут класса(скоее всего task), так же как метод его.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
netpastor
@netpastor
Python developer
Exception on /`secret` [POST]
Нет ошибки в урле?
Ответ написан
@stahh
Судя по месту где выпадает ошибка у вас в liseners строка(и), а должен быть метод(ы)
def handle_messages(messages):
for message in messages:
# Do something with the message
bot.reply_to(message, 'Hi')

bot.set_update_listener(handle_messages)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Платформа НТИ Москва
от 130 000 до 180 000 руб.
от 150 000 до 200 000 руб.
от 90 000 до 150 000 руб.
19 сент. 2019, в 02:43
500 руб./за проект
19 сент. 2019, в 02:30
2000 руб./за проект
18 сент. 2019, в 23:10
5000 руб./за проект