Пишу телеграмм бота на Python. Хелп
Пишу телеграмм бота на Python. Библиотека Telegram Bot API. Бот должен выдать пользователю расчет цены.
bot.send_message(message.chat.id, 'Результат равен ' + (int(width_d)*int(length_d))*3000 , parse_mode='html')
Залип с одним вопросом. Не понимаю почему не происходит расчет. Точнее понимаю что из за типов данных, но не могу понять почему они не переводятся, вроде делаю все правильно. Или может я чего не понимаю. хелп. Сильно не ругайте, если что ни так.) Только учусь. Буду рад продуктивной критике.
import telebot
from telebot import types
bot = telebot.TeleBot('5367324988:AAH-vbdXLimLjzt2r_QGpKTrpjr6AHhfZiA')
dlina = '<b>Ввведите пожалуйста длину рисунка в сантиметрах: пример "125"</b>'
shirina = '<b>Ввведите пожалуйста ширину рисунка в сантиметрах: \nпример "125"</b>'
messno = '<b>Всего доброго! Если захотите сделать расчет, воспользуйтесь командой /start </b>'
length_d = [int]
width_d = [int]
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
bat1 = types.KeyboardButton('Да')
bat2 = types.KeyboardButton('Нет')
markup.add(bat1, bat2)
mess = f'Здравствуйте <b>{message.from_user.first_name} {message.from_user.last_name}!\n</b>Вас приветствует компания <b>MagiсPrint23!</b>\nМы занимаемся интерьерной печатью и нанесением любых рисунков на любые поверхности. \nХотите расчитать стоимость вашего рисунка?'
bot.send_message(message.chat.id, mess, parse_mode='html', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def calculation(message):
if message.text == "Да":
bot.send_message(message.chat.id, dlina, parse_mode='html')
bot.register_next_step_handler(message, get_length)
elif message.text == "да":
bot.send_message(message.chat.id, dlina, parse_mode='html')
bot.register_next_step_handler(message, get_length)
elif message.text == "Нет":
bot.send_message(message.chat.id, messno, parse_mode='html')
elif message.text == "нет":
bot.send_message(message.chat.id, messno, parse_mode='html')
else:
bot.send_message(message.chat.id, text="На такую комманду я не запрограммировал..")
def get_length(message):
try:
length = message.text
length_d.append(length)
if length.isdigit():
bot.send_message(message.chat.id, shirina, parse_mode='html')
bot.register_next_step_handler(message, get_width)
else:
bot.send_message(message.chat.id, 'Цифрами пожалуйста', parse_mode='html')
bot.register_next_step_handler(message, get_length)
except Exception:
bot.reply_to(message, 'Длина должна быть в сантиметрах')
bot.register_next_step_handler(message, get_length)
def get_width(message):
try:
width = message.text
width_d.append(width)
if width.isdigit():
bot.send_message(message.chat.id, 'Результат равен ' + ((width_d)*(length_d))*3000 , parse_mode='html')
else:
bot.send_message(message.chat.id, 'Цифрами пожалуйста', parse_mode='html')
bot.register_next_step_handler(message, get_width)
except Exception:
bot.reply_to(message, 'Длина должна быть в сантиметрах')
bot.register_next_step_handler(message, get_width)
bot.polling(none_stop=True)
Ответы (1 шт):
Мне кажется проблема в том, что у вас в функции get_length() переменная length она как бы локальна, то есть она существует только в этой функции и нигде больше, что бы ее использовать в следущих функциях ее нужно куда то сохранить, наприме, в список, или базу данных(что более лучше), и потом использовать ее, если нужно могу написать полный код