ittadoru
@ittadoru
Новичок Python

Не получается вывести кнопки inline telebot, что делать?

Создал код, но при нажатии на кнопку назад вместо того чтоб выполнить аналогичные действия, он не видит будто мои кнопки, просто делает edit_message_text и всё, хотя кнопки в коде прописаны корректно, пропишите правильный код, если что умные слова не понимаю, заранее спасибо
import telebot
from telebot import types

bot = telebot.TeleBot('6120723755:AAFfrdnbVfEI0R-PxTAVh1IbNfhhh11s98k')


@bot.message_handler(commands={'start'})
def start(message):
    markup_inline = types.InlineKeyboardMarkup(row_width=2)
    btn_inline1 = types.InlineKeyboardButton(
        text='Что бот может?', callback_data='skills')
    btn_inline2 = types.InlineKeyboardButton(
        text='Как начать чат?', callback_data='start_chat')
    markup_inline.add(btn_inline1, btn_inline2)
    start_text = f'Привет <b>{message.from_user.first_name}</b>, в этом анонимном чате ты сможешь общаться с людьми, при этом не раскрывая свою личность и профиль в телеграм, это поможет не предвзято поговорить с собеседником. Но так же и он будет анонимным, и тебе не удасться узнать его личность, <b><em>ну разве что если ты сам у него не спросишь)</em></b>'
    bot.send_message(message.chat.id, start_text,
                     parse_mode='html', reply_markup=markup_inline)
    # bot.send_message(message.chat.id, '')


@bot.callback_query_handler(func=lambda callback: callback.data)
def skills(call):
    markup_inline = types.InlineKeyboardMarkup(row_width=2)
    if call.data == 'skills':
        btn_back = types.InlineKeyboardButton(
            text='Назад <--', callback_data='back')
        btn_skills = types.InlineKeyboardButton(
            text='Конкретнее...', callback_data='skills_part2')
        markup_inline.add(btn_back, btn_skills)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='На данном этапе развития бот может выполнять стандартные задачи для анонимного чат бота', reply_markup=markup_inline)
    elif call.data == 'start_chat':
        pass
    elif call.data == 'back':
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text=f'Привет <b>{call.message.from_user.first_name}</b>, в этом анонимном чате ты сможешь общаться с людьми, при этом не раскрывая свою личность и профиль в телеграм, это поможет не предвзято поговорить с собеседником. Но так же и он будет анонимным, и тебе не удасться узнать его личность, <b><em>ну разве что если ты сам у него не спросишь)</em></b>', parse_mode='html', reply_markup=markup_inline)
        btn_inline1 = types.InlineKeyboardButton(
            text='Что бот может?', callback_data='skills')
        btn_inline2 = types.InlineKeyboardButton(
            text='Как начать чат?', callback_data='start_chat')
        markup_inline.add(btn_inline1, btn_inline2)


if __name__ == '__main__':
    bot.infinity_polling()
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
KPoseidon
@KPoseidon
Шарпист с косяками
Менять markup_inline надо было вначале, а по хорошему вообще сделать временную переменную, чтобы не стирать основной маркап, а потом менять сообщение. Код, если не поняли, о чём я:

elif call.data == 'back':
        back_markup = types.InlineKeyboardMarkup()
        btn_inline1 = types.InlineKeyboardButton(
            text='Что бот может?', callback_data='skills')
        btn_inline2 = types.InlineKeyboardButton(
            text='Как начать чат?', callback_data='start_chat')
        back_markup.add(btn_inline1, btn_inline2)

        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text=f'Привет <b>{call.message.from_user.first_name}</b>, в этом анонимном чате ты сможешь общаться с людьми, при этом не раскрывая свою личность и профиль в телеграм, это поможет не предвзято поговорить с собеседником. Но так же и он будет анонимным, и тебе не удасться узнать его личность, <b><em>ну разве что если ты сам у него не спросишь)</em></b>', parse_mode='html', reply_markup=back_markup)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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