Telebot. Нужно как то разделить 2 сообщения если они в одном message_handler
Немножко далекий. Нужно сделать так, чтобы при первом сообщении шел подсчёт по calories, а при втором уже по protein. Проблема в том, что не получается разделить как то два сообщения. При первом message_handler все сразу идет на 2 переменных.
from telebot import TeleBot
bot = TeleBot("")
class Data:
calories = 0
protein = 0
data = Data()
def calc_info(message):
message_kall_info = message.text
if message_kall_info.isdigit() == True:
count_kall = int(message_kall_info)
data.calories += count_kall
bot.send_message(message.chat.id, f"Введите количество белка")
print(f"белок {message.text} ")
else:
bot.send_message(message.chat.id, "Вы ввели не цифру")
@bot.message_handler(content_types=['text'])
def send_kall_status(message):
calc_info(message)
bot.polling()
Ответы (1 шт):
Автор решения: NTA
→ Ссылка
Можно добавить переменную state
в класс Data
, и менять переменную взависимости от запрашиваемых данных (калории, белок, протеин и т.д). В функции calc_info
высчитывать данные взависимости от значения переменной state
from telebot import TeleBot
bot = TeleBot("")
class Data:
state = 'none'
calories = 0
protein = 0
belok = 0
data = Data()
def calc_info(message):
message_kall_info = message.text
if message_kall_info.isdigit() == True:
if data.state == 'kallories':
count_kall = int(message_kall_info)
data.calories += count_kall
bot.send_message(message.chat.id, "Введите количество белка")
print(f"белок {message.text} ")
data.state = 'belok'
elif data.state == 'protein':
#высчитывание протеина, или чего вы там еще хотите
bot.send_message(message.chat.id, f"Белок: {data.belok}, Калории: {data.kallories}")
else:
bot.send_message(message.chat.id, "Вы ввели не цифру")
@bot.message_handler(content_types=['text'])
def send_kall_status(message):
if data.state == 'none':
data.state = 'kallories'
calc_info(message)
elif data.state == 'belok':
data.state = 'protein'
calc_info(message)
bot.polling()