Как сделать умножение с данными, полученными от пользователя TELEBOT Python
Как сделать умножение с данными, полученными от пользователя TELEBOT Python. Допустим идет сообщение от бота: введите число товара: вводится с клавы число, потом бот должен 18 умножить на мое число и выдать цену за всю покупку, больше вопрос у меня по тому, как все таки записать ввод моего числа в какую-либо переменную для дальнейшего использования!
import telebot;
from telebot import types
bot = telebot.TeleBot('*****************');
mm = types.ReplyKeyboardMarkup(row_width=2)
button1 = types.KeyboardButton("?Обратная связь")
button2 = types.KeyboardButton("?Купить ключ")
mm.add(button1,button2)
otvet = types.InlineKeyboardMarkup(row_width=2)
button1s = types.InlineKeyboardButton("Windows 10", callback_data='Windows 10')
button2s = types.InlineKeyboardButton("office 2021", callback_data='Office 2021')
button3s = types.InlineKeyboardButton("Windows 11", callback_data='Windows 11')
button4s = types.InlineKeyboardButton("office 2016", callback_data='Office 2016')
otvet.add(button1s,button2s,button3s,button4s)
sm = types.InlineKeyboardMarkup(row_width=5)
button1 = types.InlineKeyboardButton(" 1 шт", callback_data='1')
button2 = types.InlineKeyboardButton(" 2 шт", callback_data='2')
button3 = types.InlineKeyboardButton(" 3 шт", callback_data='3')
button4 = types.InlineKeyboardButton(" 4 шт", callback_data='4')
button5 = types.InlineKeyboardButton(" 5 шт", callback_data='5')
button6 = types.InlineKeyboardButton(" 6 шт", callback_data='6')
button7 = types.InlineKeyboardButton(" 7 шт", callback_data='7')
button8 = types.InlineKeyboardButton(" 8 шт", callback_data='8')
button9 = types.InlineKeyboardButton(" 9 шт", callback_data='9')
button10 = types.InlineKeyboardButton("10 шт", callback_data='10')
sm.add(button1,button2,button3,button4,button5,button6,button7,button8,button9,button10)
oplat = types.InlineKeyboardMarkup(row_width=1)
buttonbalance = types.InlineKeyboardButton("Снять с баланса", callback_data="walet1")
oplat.add(buttonbalance)
@bot.message_handler(comands=['start'])
@bot.message_handler(content_types=['text', 'document', 'audio'])
def get_text_messages(message):
if message.text == "/start" or message.text == "Привет":
bot.send_message(message.from_user.id, "Чем могу помочь?", reply_markup=mm)
elif message.text == "/help" or message.text == "Помощь":
bot.send_message(message.from_user.id, "Напиши боту Привет")
if message.text == "?Обратная связь":
bot.send_message(message.chat.id, "Если с ботом что-то не так, то позвоните по этому номеру: 79*********")
if message.text == "?Купить ключ":
bot.send_message(message.chat.id, "Вот,что у меня есть в наличии", reply_markup=otvet)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
try:
if call.message:
if call.data == "Windows 10":
Windows10proprice = "599 руб."
bot.send_message(call.message.chat.id, f'Ключ indows 10 pro стоимость: {Windows10proprice}'" В наличии 7 шт.Введите количество", reply_markup=sm)
if call.data == "Office 2021":
Office2021price = "1099 руб."
bot.send_message(call.message.chat.id, f'Ключ Office 2021 стоимость: {Office2021price}'" В наличии 2 шт. Введите количество", reply_markup=sm)
if call.data == "Windows 11":
Windows11proprice = "699 руб."
bot.send_message(call.message.chat.id, f'Ключ windows 11 pro стоимость:{Windows11proprice}'" В наличии 5 шт. Введите количество",reply_markup=sm)
if call.data == "Office 2016":
Office2016price = "499 руб."
bot.send_message(call.message.chat.id, f'Ключ Office 2016 стоимость: {Office2016price}'" В наличии 8 шт. Введите количество", reply_markup=sm)
if call.data == "1":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "2":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "3":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "4":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "5":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "6":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "7":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "8":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "9":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
if call.data == "10":
bot.send_message(call.message.chat.id, "Теперь выберите способ оплаты", reply_markup=oplat)
except Exception as e:
print(repr(e))
bot.polling(none_stop=True)
Ответы (2 шт):
Т.к. вы не предоставили свой код, то стоит только догадываться как у вас реализован выбор и показ товаров пользователю. Но, вы в своем вопросе спросили как перемножить цену товара с количеством, которое ввел пользователь, то:
import telebot
bot = telebot.TeleBot("TOKEN")
products = {
'огурцы': 50,
'помидоры': 75,
'лук': 60,
}
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, "Пришли мне название товара и количество через пробел:")
@bot.message_handler()
def send_price(message):
product = message.text.split(' ')[0].lower() # Название товара
count = int(message.text.split(' ')[1]) # Необходимое количество
if product in products:
price = products.get(product)
bot.send_message(message.chat.id, str(price * count)) # Отправляем итоговую стоимость
else:
bot.send_message(message.chat.id, "У нас нет такого товара")
bot.polling()
В начале кода создай переменную temp={}
И модифицировать ваш callback_query_handler
if call.message:
if call.data == "Windows 10":
Windows10proprice = "599 руб."
temp[call.message.chat.id] = {}
temp[call.message.chat.id]["product"] = call.data
temp[call.message.chat.id]["price"] = Windows10proprice
bot.send_message(call.message.chat.id, f'Ключ indows 10 pro стоимость: {Windows10proprice}'" В наличии 7 шт. Введите количество", reply_markup=sm)
if call.data == "Office 2021":
Office2021price = "1099 руб."
temp[call.message.chat.id] = {}
temp[call.message.chat.id]["product"] = call.data
temp[call.message.chat.id]["price"] = Office2021price
bot.send_message(call.message.chat.id, f'Ключ Office 2021 стоимость: {Office2021price}'" В наличии 2 шт. Введите количество", reply_markup=sm)
if call.data == "Windows 11":
Windows11proprice = "699 руб."
temp[call.message.chat.id] = {}
temp[call.message.chat.id]["product"] = call.data
temp[call.message.chat.id]["price"] = Windows11proprice
bot.send_message(call.message.chat.id, f'Ключ windows 11 pro стоимость:{Windows11proprice}'" В наличии 5 шт. Введите количество",reply_markup=sm)
if call.data == "Office 2016":
Office2016price = "499 руб."
temp[call.message.chat.id] = {}
temp[call.message.chat.id]["product"] = call.data
temp[call.message.chat.id]["price"] = Office2016price
bot.send_message(call.message.chat.id, f'Ключ Office 2016 стоимость: {Office2016price}'" В наличии 8 шт. Введите количество", reply_markup=sm)
if call.data in ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]:
temp[call.message.chat.id]["quantity"] = int(call.data)
bot.send_message(call.message.chat.id, f"Цена за {temp[call.message.chat.id]["product"]}, в количестве {call.data} равна {temp[call.message.chat.id]["price"]*int(call.data)} Теперь выберите способ оплаты", reply_markup=oplat)
Так же я немного сократил ваш код