11import os
2- from telegram import Update , InlineKeyboardButton , InlineKeyboardMarkup
2+ from telegram import Update , InlineKeyboardButton , InlineKeyboardMarkup , ParseMode
33from telegram .ext import (
44 CommandHandler ,
55 ConversationHandler ,
2424def create_inline_markup (list ):
2525 keyboard_markup_list = []
2626 for reply in list :
27- keyboard_markup_list .append ([InlineKeyboardButton (reply , callback_data = reply )])
27+ if reply :
28+ keyboard_markup_list .append (
29+ [InlineKeyboardButton (reply , callback_data = reply )]
30+ )
2831 return InlineKeyboardMarkup (keyboard_markup_list )
2932
3033
@@ -74,7 +77,7 @@ def start(update, context):
7477 )
7578 return CS .RESET_UP
7679 else :
77- update .message .reply_text (SETUP_TEXT )
80+ update .message .reply_text (SETUP_TEXT , parse_mode = ParseMode . HTML )
7881 return CS .SET_UP
7982 except Exception as e :
8083 update .message .reply_text (ERROR_TEXT )
@@ -110,7 +113,7 @@ def reset_up(update, context) -> int:
110113 reply = update .callback_query .data
111114 update .callback_query .answer ()
112115 if reply == "Yes" :
113- update .callback_query .message .reply_text (SETUP_TEXT )
116+ update .callback_query .message .reply_text (SETUP_TEXT , parse_mode = ParseMode . HTML )
114117 return CS .SET_UP
115118 else :
116119 update .callback_query .edit_message_text (END_TEXT , reply_markup = None )
@@ -141,43 +144,35 @@ def config_handler(update, context) -> int:
141144 return ConversationHandler .END
142145 update .callback_query .edit_message_text (reply , reply_markup = None )
143146 if reply == "Change Google Sheet" :
144- update .callback_query .message .reply_text (SETUP_TEXT )
147+ update .callback_query .message .reply_text (SETUP_TEXT , parse_mode = ParseMode . HTML )
145148 return CS .SET_UP
146149 else :
147150 try :
148151 if reply == "Configure Quick Transport" :
149152 context .user_data ["config" ] = EntryType .TRANSPORT
150- msg = f"This is your current Transport settings.\n "
151- setting_list = gs .get_quick_add_settings (
152- context .user_data ["sheet_id" ], context .user_data ["config" ]
153- )
154- # Retrieve current settings
155- if setting_list == None :
156- msg = f"{ msg } Default Payment: None\n Default Type: None\n "
157- else :
158- msg = f"{ msg } Default Payment: { setting_list [0 ]} \n Default Type: { setting_list [1 ]} \n "
159- msg = f"{ msg } Do you want to update it?"
160- update .callback_query .message .reply_text (
161- msg , reply_markup = create_inline_markup (["Yes" , "No" ])
162- )
163- return CS .CONFIG_SETUP
153+ msg = QUICK_TRANSPORT_TEXT
154+ limit = QUICK_TRANSPORT_LIMIT
164155 elif reply == "Configure Quick Others" :
165156 context .user_data ["config" ] = EntryType .OTHERS
166157 msg = QUICK_OTHER_TEXT
167- setting_list = gs .get_quick_add_others (context .user_data ["sheet_id" ])
168- keyboard_list = []
169- if setting_list == None :
170- msg = f"{ msg } No settings found\n "
171- else :
172- for setting in setting_list :
173- msg = f"{ msg } { setting } \n "
174- if len (setting_list ) < QUICK_OTHER_LIMIT :
175- keyboard_list .append ("Add new" )
176- keyboard_list .append ("Cancel" )
177- update .callback_query .message .reply_text (
178- msg , reply_markup = create_inline_markup (keyboard_list )
179- )
180- return CS .CONFIG_SETUP
158+ limit = QUICK_OTHER_LIMIT
159+
160+ setting_list = gs .get_quick_add_list (
161+ context .user_data ["sheet_id" ], context .user_data ["config" ]
162+ )
163+ keyboard_list = []
164+ if setting_list == None :
165+ msg = f"{ msg } No settings found\n "
166+ else :
167+ for setting in setting_list :
168+ msg = f"{ msg } { setting } \n "
169+ if len (setting_list ) < limit :
170+ keyboard_list .append ("Add new" )
171+ keyboard_list .append ("Cancel" )
172+ update .callback_query .message .reply_text (
173+ msg , reply_markup = create_inline_markup (keyboard_list )
174+ )
175+ return CS .CONFIG_SETUP
181176 except Exception as e :
182177 update .callback_query .message .reply_text (ERROR_TEXT )
183178 return ConversationHandler .END
@@ -550,13 +545,24 @@ def add_transport(update, context):
550545 update .message .reply_text (QUICK_SETUP_TRANSPORT )
551546 return ConversationHandler .END
552547 else :
553- context .user_data ["payment" ] = setting_list [0 ]
554- context .user_data ["category" ] = setting_list [1 ]
555- update .message .reply_text (
556- f"Quick Add Transport\n Default Payment: { setting_list [0 ]} \n Default Type: { setting_list [1 ]} "
557- + "\n \n Please enter as follow: [price],[start],[end]\n e.g. 2.11, Home, Work"
548+ setting_list = gs .get_quick_add_list (
549+ context .user_data ["sheet_id" ], context .user_data ["entry_type" ]
558550 )
559- return CS .QUICK_ADD
551+ if len (setting_list ) == 1 :
552+ payment , category = setting_list [0 ].split ("," )
553+ context .user_data ["payment" ] = payment
554+ context .user_data ["category" ] = category
555+ update .message .reply_text (
556+ f"Quick Add Transport\n Default Payment: { payment } \n Default Type: { category } "
557+ + "\n \n Please enter as follow: [price],[start],[end]\n e.g. 2.11, Home, Work"
558+ )
559+ return CS .QUICK_ADD
560+ else :
561+ update .message .reply_text (
562+ "Quick Add Transport, please choose your category." ,
563+ reply_markup = create_inline_markup (setting_list ),
564+ )
565+ return CS .QUICK_ADD_TRANSPORT
560566
561567
562568def add_others (update , context ):
@@ -575,7 +581,9 @@ def add_others(update, context):
575581 update .message .reply_text (QUICK_SETUP_OTHER )
576582 return ConversationHandler .END
577583 else :
578- setting_list = gs .get_quick_add_others (context .user_data ["sheet_id" ])
584+ setting_list = gs .get_quick_add_list (
585+ context .user_data ["sheet_id" ], context .user_data ["entry_type" ]
586+ )
579587 update .message .reply_text (
580588 "Quick Add Others, please choose your category." ,
581589 reply_markup = create_inline_markup (setting_list ),
@@ -595,6 +603,17 @@ def quick_add_category(update, context) -> int:
595603 return CS .QUICK_ADD
596604
597605
606+ def quick_add_transport (update , context ) -> int :
607+ reply = update .callback_query .data
608+ context .user_data ["payment" ], context .user_data ["category" ] = reply .split ("," )
609+ update .callback_query .answer ()
610+ update .callback_query .edit_message_text (
611+ f'Quick Add Transport\n Default Payment: { context .user_data ["payment" ]} \n Default Type: { context .user_data ["category" ]} '
612+ + "\n \n Please enter as follow: [price],[start],[end]\n e.g. 2.11, Home, Work"
613+ )
614+ return CS .QUICK_ADD
615+
616+
598617def quick_add (update , context ) -> int :
599618 reply = update .message .text
600619 try :
@@ -800,6 +819,7 @@ def setup_handlers(dispatcher):
800819 quick_add_states = {
801820 CS .QUICK_ADD : [MessageHandler (Filters .text & ~ Filters .command , quick_add )],
802821 CS .QUICK_ADD_CATEGORY : [CallbackQueryHandler (quick_add_category )],
822+ CS .QUICK_ADD_TRANSPORT : [CallbackQueryHandler (quick_add_transport )],
803823 }
804824
805825 # Retrieve transaction-related states and handlers
0 commit comments