Задать вопрос
@Zudvin
Developer in NegativeSpace

Python Telegram Bot — как исправить Update' object has no attribute 'send_message'?

Всем привет!

На борту Python by pyenv == 3.7.7

Использую python-telegram-bot

| => python -m telegram
python-telegram-bot 12.8 (v12.8-2-g9288e4f)
certifi 2020.06.20
Python 3.7.7 (default, Jul  7 2020, 21:25:17)  [Clang 10.0.1 (clang-1001.0.46.4)]


Имеется код из статьи на хабре который я обновил под состояние на 2020-й ( код написан в 2018-м ):

Статья на хабре: https://habr.com/ru/post/346606/

Сам код:

# Настройки
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import apiai, json
updater = Updater('Telegram API', use_context=True) # Токен API к Telegram
dispatcher = updater.dispatcher
# Обработка команд
def startCommand(bot, update):
    bot.send_message(chat_id=chat_id, text='Привет, давай пообщаемся?')
def textMessage(bot, update):
    request = apiai.ApiAI('Dialogflow API').text_request() # Токен API к Dialogflow
    request.lang = 'ru' # На каком языке будет послан запрос
    request.session_id = 'YouBot' # ID Сессии диалога (нужно, чтобы потом учить бота)
    request.query = update.message.reply_text # Посылаем запрос к ИИ с сообщением от юзера
    responseJson = json.loads(request.getresponse().read().decode('utf-8'))
    response = responseJson['result']['fulfillment']['speech'] # Разбираем JSON и вытаскиваем ответ
    # Если есть ответ от бота - присылаем юзеру, если нет - бот его не понял
    if response:
        bot.send_message(chat_id=chat_id, text=response)
    else:
        bot.send_message(chat_id=chat_id, text='Я Вас не совсем понял!')
# Хендлеры
start_command_handler = CommandHandler('start', startCommand)
text_message_handler = MessageHandler(Filters.text, textMessage)
# Добавляем хендлеры в диспетчер
dispatcher.add_handler(start_command_handler)
dispatcher.add_handler(text_message_handler)
# Начинаем поиск обновлений
updater.start_polling(clean=True)
# Останавливаем бота, если были нажаты Ctrl + C
updater.idle()


Ошибка которую выдает консоль:

python bot.py
No error handlers are registered, logging exception.
Traceback (most recent call last):
  File "/Users/project-python/hhbot/python-telegram-bot/telegram/ext/dispatcher.py", line 340, in process_update
    handler.handle_update(update, self, check, context)
  File "/Users/project-python/hhbot/python-telegram-bot/telegram/ext/handler.py", line 119, in handle_update
    return self.callback(update, context)
  File "bot.py", line 8, in startCommand
    bot.send_message(chat_id=chat_id, text='Привет, давай пообщаемся?')
AttributeError: 'Update' object has no attribute 'send_message'
  • Вопрос задан
  • 7883 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Вот пример есть
https://github.com/python-telegram-bot/python-tele...

Соответственно, скорее всего правильно будет
update.message.reply_text('Привет, давай пообщаемся?')


https://python-telegram-bot.readthedocs.io/en/stab...
https://python-telegram-bot.readthedocs.io/en/stab...
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы