Hello I am currently using python telegram bot to create my bot, currently I am unable to use my data collector (which also functions to calculate my calories) to display the value I want) The issue is that it keeps returning a None value, does anybody know the solution why ?
def cal_collector(user_input):
cal = []
if user_input.isnumeric() == True:
cal.append(user_input)
else:
if str(user_input).lower == "math":
if cal == False:
return "0"
total_calories = sum(cal)
return str(total_calories)
def cal_calculator(update: Update,_: CallbackContext):
query = update.callback_query
query.answer()
keyboard = [
[InlineKeyboardButton("Back", callback_data = str(ONE))]
]
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(str(cal_collector("math")),reply_markup = reply_markup)
return SECOND
def calorie_reply(update: Update,_ : CallbackContext):
keyboard = [
[InlineKeyboardButton("Back", callback_data = str(ONE))]
]
reply_markup = InlineKeyboardMarkup(keyboard)
user_input = update.message.text
cal_collector(user_input)
update.message.reply_text(calorie_input(user_input),reply_markup = reply_markup)
return SECOND
I understand my means of doing this is quite rubbish :’) so if anybody has other better solutions to better store my data in python telegram bot it would be much appreciated! ( I am still not too sure how to utilise classes and objects for this tho)
Advertisement
Answer
Nevermind, turns out the issue was that the values were being thrown away as said by @BoarGules. Also, I restructured the code in such a way such that it was much simpler. Although it does not have the isnumeric filter yet for the user input but i will do what I can. Here is the appended code for anyone that is interested.
answer = "You have keyed in " + user_input + " calories! Click Back to go back to the main menu"
return answer
#Storing Data in a class
cal = []
# calculates total cals
def cal_calculator(update: Update,_: CallbackContext):
query = update.callback_query
query.answer()
keyboard = [
[InlineKeyboardButton("Back", callback_data = str(ONE))]
]
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(f'You have consumed {str(sum(cal))}',reply_markup = reply_markup)
return SECOND
def calorie_reply(update: Update,_ : CallbackContext):
keyboard = [
[InlineKeyboardButton("Back", callback_data = str(ONE))]
]
reply_markup = InlineKeyboardMarkup(keyboard)
user_input = update.message.text
user_int = int(user_input)
cal.append(user_int)
update.message.reply_text(calorie_input(user_input),reply_markup = reply_markup)
return SECOND