@Kirill_Zet

Как сделать калькулятор в телеграмме?

Здравствуйте, подскажите пожалуйста, как можно сделать следующее:
Я сделал кнопки и мне нужно чтобы когда человек нажимал на определенную кнопку и вводил числовое значение на клавиатуре, оно считалось по моей формуле и выводилось снова на экран, после чего я бы мог нажать на ту же или на другую кнопку и сработало бы тоже самое ( только с другой формулой в случае с другой кнопкой).
@bot.message_handler(commands=['start'])
def start(message):
    markup_menu = types.InlineKeyboardMarkup(row_width=2)
    m1 = types.InlineKeyboardButton(text='CS:M to REAL', callback_data='m1')
    m2 = types.InlineKeyboardButton(text='CS:M to STEAM', callback_data='m2')
    m3 = types.InlineKeyboardButton(text='CS:M to BALANCE', callback_data='m3')
    m4 = types.InlineKeyboardButton(text='CS:M BALANCE to REAL', callback_data='m4')
    m5 = types.InlineKeyboardButton(text='LIS to CS:MONEY', callback_data='m5')
    m6 = types.InlineKeyboardButton(text='LIS to STEAM', callback_data='m6')
    m7 = types.InlineKeyboardButton(text='Курсы валют', callback_data='m7')
    markup_menu.add(m1, m2, m3, m4, m5, m6, m7)
    mess = f'Привет, <b>{message.from_user.first_name}</b>, какую функцию ты хочешь использовать?'
    bot.send_message(message.chat.id, mess, parse_mode='html', reply_markup=markup_menu)


@bot.callback_query_handler(func=lambda callback: callback.data)
def check_callback_data(callback):
    if callback.data == 'menu':
        markup_menu = types.InlineKeyboardMarkup(row_width=2)
        m1 = types.InlineKeyboardButton(text='CS:M to REAL', callback_data='m1')
        m2 = types.InlineKeyboardButton(text='CS:M to STEAM', callback_data='m2')
        m3 = types.InlineKeyboardButton(text='CS:M to BALANCE', callback_data='m3')
        m4 = types.InlineKeyboardButton(text='CS:M BALANCE to REAL', callback_data='m4')
        m5 = types.InlineKeyboardButton(text='LIS to CS:MONEY', callback_data='m5')
        m6 = types.InlineKeyboardButton(text='LIS to STEAM', callback_data='m6')
        m7 = types.InlineKeyboardButton(text='Курсы валют', callback_data='m7')
        markup_menu.add(m1, m2, m3, m4, m5, m6, m7)
        bot.edit_message_text(chat_id=callback.message.chat.id,message_id=callback.message.id,text='Какую валюты ты хочешь выбрать?',reply_markup=markup_menu)

    elif callback.data in ['dollar','lira','uan']:
        bot.send_message(callback.message.chat.id,f'{vallue(callback.data)}₽')


    elif callback.data == 'm2':
        bot.send_message(callback.message.chat.id, f'')
    elif callback.data == 'm3':
        bot.send_message(callback.message.chat.id, f'3')
    elif callback.data == 'm4':
        bot.send_message(callback.message.chat.id, f'4')
    elif callback.data == 'm5':
        bot.send_message(callback.message.chat.id, f'5')
    elif callback.data == 'm6':
        bot.send_message(callback.message.chat.id, f'6')

    elif callback.data == 'm7':
        markup_val = types.InlineKeyboardMarkup(row_width=2)
        m0 = types.InlineKeyboardButton(text='Меню', callback_data='menu')
        m1 = types.InlineKeyboardButton(text='Курс Доллара', callback_data='dollar')
        m2 = types.InlineKeyboardButton(text='Курс Лиры', callback_data='lira')
        m3 = types.InlineKeyboardButton(text='Курс Юаня', callback_data='uan')
        markup_val.add(m0, m1, m2, m3)
        bot.edit_message_text(chat_id=callback.message.chat.id,message_id=callback.message.id,text='Какую валюту ты хочешь выбрать?',reply_markup=markup_val)





bot.polling(none_stop=True)

вот мой код, то есть если человек нажал 6 кнопку, после чего вписал определенное число, ему бы что то вывелось, потом пятую кнопку и так далее.
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
примерно так:
def callback(callback):
    if callback.data == 'some_button':
        m = bot.send_message(callback.message.chat.id, "enter some data")
        bot.register_next_step_handler(m, foo)

def foo(message):
    bot.send_message(message.chat.id, f"you entered {message.text}")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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