dushu_pitona
@dushu_pitona

Как сделать, чтобы программа для бота запоминала, на какие кнопки нажал пользователь?

from telebot import types
import telebot
bot = telebot.TeleBot('5407QI0s9h7FNf9DV1-SMflag')
@bot.message_handler(commands=['start'])
def chem_raid(message):
  klava = types.ReplyKeyboardMarkup()
  button1 = types.KeyboardButton('1')
  button2 = types.KeyboardButton('2')
  button3 = types.KeyboardButton('3')
  button4 = types.KeyboardButton('4')
  button5 = types.KeyboardButton('5')
  button6 = types.KeyboardButton('/start')
  #
  klava.row(button1, button2)
  klava.row(button3, button4)
  klava.row(button5, button6)
  #
  bot.send_message(message.chat.id, 'Что вы хотите зарейдить?', reply_markup=klava)
#
@bot.message_handler(content_types=["text"])
def chto_raid(message):
    klava = types.ReplyKeyboardMarkup()
    button1 = types.KeyboardButton('a')
    button2 = types.KeyboardButton('b')
    button3 = types.KeyboardButton('c')
    button4 = types.KeyboardButton('d')
    button5 = types.KeyboardButton('/start')
    button6 = types.KeyboardButton('f')
  #
    klava.row(button1, button2)
    klava.row(button3, button4)
    klava.row(button5, button6)
    if message.text == '1':
         bot.send_message(message.chat.id, 'Чем вы хотите зарейдить?', reply_markup=klava)
bot.polling()


Например, необходимо запомнить, что в 1 клавиатуре нажали 1, дальше, если во 2 клавиатуре нажали на кнопку a, высветится 10 клавиатура, а если на b , то 11 клавиатура. Для этого хотел присваивать переменным название кнопок и в конце проверять: если klav1==1 and klav2==a: выводим какой-то текст. Но программа просто не запоминает эти переменные.
Заранее спасибо.
  • Вопрос задан
  • 376 просмотров
Решения вопроса 2
@twistfire92
Python backend developer
Если вы используете обычную клавиатуру, не inline, то советую посмотреть в сторону метода register_next_step_handler() В интернете полно примеров использования, в том числе на этом ресурсе.
Но мало где описывается, что помимо объекта сообщения и объекта функции этот метод принимает аргументы, которые в эту функцию передает.
Пример такого использования можете посмотреть тут
Ответ написан
Комментировать
@pr0l
сохранять в любом случае переменные для дальнейшего применения в других функция придется через классы.
ответ тут https://qna.habr.com/q/1163398
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы