vera_ira
@vera_ira
Делаю приложение по изучению Иврит (Python Kotlin)

Как работает bot.edit_message_text в python telegram bot?

Есть хендлер который вызывает функцию и есть функция которая выполняет ряд действий и отправляет сообщение с инлайн-клавиатурной.

def make_b(message, namber_bort):
    key = telebot.types.InlineKeyboardMarkup()
    but = telebot.types.InlineKeyboardButton(text="бла-бла", callback_data=5)
    key.add(but)
        
    bot.edit_message_text(message.chat_id, text="тру-ту-ту", reply_markup=key )


@bot.message_handler(content_types=['text'])
def handle_text(message):
   if message.text==5
       make_b(message, namber_bort)


Если отправляю сообщение так, как указано ниже, то проблем нет.
bot.send_message(message.chat.id, text="тру-ту-ту", reply_markup=key)


А если через bot.edit_message_text, то ошибка:


AttributeError: 'Message' object has no attribute 'chat_id'


А мне нужно изменить сообщение. Подскажите, что не так?
message.chat_id задавала через message.chat.id. Ошибка такая:

(__init__.py:418 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}']"


И через message.chat.get('id'):

AttributeError: 'Chat' object has no attribute 'get'


И фантазия моя закончилась.
  • Вопрос задан
  • 6200 просмотров
Решения вопроса 1
vera_ira
@vera_ira Автор вопроса
Делаю приложение по изучению Иврит (Python Kotlin)
Решение нашла:
bot.edit_message_text работает только на изменение уже существующего сообщения, поэтому логично, что его стоит помещать только в @bot.callback_query_handler.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlmazKayum
В методе edit_message_text надо указывать id чата chat_id и id сообщения message_id.
Попробуй так:
bot.edit_message_text(chat_id=message.chat.id, message_id=message.message_id, text="тру-ту-ту", reply_markup=key )
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
iCode Москва
от 90 000 до 200 000 ₽
SwapZilla.co Сочи
от 200 000 ₽
SwapZilla.co Москва
от 200 000 ₽
10 июл. 2020, в 10:34
200 руб./за проект
10 июл. 2020, в 00:25
80000 руб./за проект