Задать вопрос
fuckmylifecantsavethat
@fuckmylifecantsavethat

Python Bot на телеграмм, как изменить сообщение в инлайн кейбоард?

Мне нужно, чтоб после нажатия кнопки под предсказанием, появилась стартовая надпись "Выбери печеньку...", не понимаю, в чем ошибка. Запускалось, а затем пишет это: ERROR - TeleBot: "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message identifier is not specified"

# -*- coding: utf8 -*-

import telebot
from telebot import types, TeleBot
import time
from email import message

bot: TeleBot = telebot.TeleBot('***')

@bot.message_handler(content_types=['text'])
def inline_key(a):
    if a.text == "Хочу предсказание":
        mainmenu = types.InlineKeyboardMarkup( )
        key1 = types.InlineKeyboardButton(text='', callback_data='key1')
        key2 = types.InlineKeyboardButton(text='', callback_data='key2')
        key3 = types.InlineKeyboardButton(text='', callback_data='key3')
        mainmenu.add(key1, key2, key3)
        bot.send_message(a.chat.id, 'Выбери печеньку...', reply_markup=mainmenu)


@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    global mainmenu
    if call.data == "mainmenu":
        mainmenu = types.InlineKeyboardMarkup( )
        key1 = types.InlineKeyboardButton(text='', callback_data='key1')
        key2 = types.InlineKeyboardButton(text='', callback_data='key2')
        key3 = types.InlineKeyboardButton(text='', callback_data='key3')
        mainmenu.add(key1, key2, key3)
        bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id, reply_markup=mainmenu)

    elif call.data == "key1":
        next_menu = types.InlineKeyboardMarkup( )
        back = types.InlineKeyboardButton(text='✨', callback_data='mainmenu')
        next_menu.add(back)
        bot.edit_message_text('Лучшее - враг хорошего.', call.message.chat.id, call.message.message_id,
                              reply_markup=next_menu)
    if call.data == "mainmenu":
        bot.edit_message_text('Выбери печеньку...', reply_markup=mainmenu)



    elif call.data == "key2":
        next_menu2 = types.InlineKeyboardMarkup( )
        back = types.InlineKeyboardButton(text='✨', callback_data='mainmenu')
        next_menu2.add(back)
        bot.edit_message_text('Каждому причитается столько счастья, сколько сам в силах подарить.',
                              call.message.chat.id, call.message.message_id,
                              reply_markup=next_menu2)
    if call.data == "mainmenu":
        bot.edit_message_text('Выбери печеньку...', reply_markup=mainmenu)


    elif call.data == "key3":
        next_menu2 = types.InlineKeyboardMarkup( )
        back = types.InlineKeyboardButton(text='✨', callback_data='mainmenu')
        next_menu2.add(back)
        bot.edit_message_text('Дорога в тысячу миль начинается с первого шага.', call.message.chat.id,
                              call.message.message_id,
                              reply_markup=next_menu2)
    if call.data == "mainmenu":
        bot.edit_message_text('Выбери печеньку...', reply_markup=mainmenu)


bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 643 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@N0tdefined
20 лет, Киев
# -*- coding: utf8 -*-

bot: TeleBot = telebot.TeleBot('1484311639:AAFoANckqoWvHr0G8XCw6CpGSuf-fXUGBn4')

@bot.message_handler(content_types=['text'])
def inline_key(a):
if a.text == "Хочу предсказание":
mainmenu = types.InlineKeyboardMarkup( )
key1 = types.InlineKeyboardButton(text='1', callback_data='key1')
key2 = types.InlineKeyboardButton(text='2', callback_data='key2')
key3 = types.InlineKeyboardButton(text='3', callback_data='key3')
mainmenu.add(key1, key2, key3)
bot.send_message(a.chat.id, 'Выбери печеньку...', reply_markup=mainmenu)

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.data == "mainmenu":
mainmenu = types.InlineKeyboardMarkup()
key1 = types.InlineKeyboardButton(text='1', callback_data='key1')
key2 = types.InlineKeyboardButton(text='2', callback_data='key2')
key3 = types.InlineKeyboardButton(text='3', callback_data='key3')
mainmenu.add(key1, key2, key3)
bot.send_message(call.message.chat.id, "Выбери печеньку...", reply_markup=mainmenu)

elif call.data == "key1":
next_menu = types.InlineKeyboardMarkup( )
back = types.InlineKeyboardButton(text='✨', callback_data='mainmenu')
next_menu.add(back)
bot.edit_message_text('Лучшее - враг хорошего.', call.message.chat.id, call.message.message_id,
reply_markup=next_menu)

elif call.data == "key2":
next_menu2 = types.InlineKeyboardMarkup( )
back = types.InlineKeyboardButton(text='✨', callback_data='mainmenu')
next_menu2.add(back)
bot.edit_message_text('Каждому причитается столько счастья, сколько сам в силах подарить.',
call.message.chat.id, call.message.message_id,
reply_markup=next_menu2)

elif call.data == "key3":
next_menu2 = types.InlineKeyboardMarkup( )
back = types.InlineKeyboardButton(text='✨', callback_data='mainmenu')
next_menu2.add(back)
bot.edit_message_text('Дорога в тысячу миль начинается с первого шага.', call.message.chat.id,
call.message.message_id,
reply_markup=next_menu2)

bot.polling(none_stop=True, interval=0)
Ответ написан
Ваш ответ на вопрос

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

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