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