1
1
import os
2
- from telegram import Update , InlineKeyboardButton , InlineKeyboardMarkup
2
+ from telegram import Update , InlineKeyboardButton , InlineKeyboardMarkup , ParseMode
3
3
from telegram .ext import (
4
4
CommandHandler ,
5
5
ConversationHandler ,
24
24
def create_inline_markup (list ):
25
25
keyboard_markup_list = []
26
26
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
+ )
28
31
return InlineKeyboardMarkup (keyboard_markup_list )
29
32
30
33
@@ -74,7 +77,7 @@ def start(update, context):
74
77
)
75
78
return CS .RESET_UP
76
79
else :
77
- update .message .reply_text (SETUP_TEXT )
80
+ update .message .reply_text (SETUP_TEXT , parse_mode = ParseMode . HTML )
78
81
return CS .SET_UP
79
82
except Exception as e :
80
83
update .message .reply_text (ERROR_TEXT )
@@ -110,7 +113,7 @@ def reset_up(update, context) -> int:
110
113
reply = update .callback_query .data
111
114
update .callback_query .answer ()
112
115
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 )
114
117
return CS .SET_UP
115
118
else :
116
119
update .callback_query .edit_message_text (END_TEXT , reply_markup = None )
@@ -141,43 +144,35 @@ def config_handler(update, context) -> int:
141
144
return ConversationHandler .END
142
145
update .callback_query .edit_message_text (reply , reply_markup = None )
143
146
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 )
145
148
return CS .SET_UP
146
149
else :
147
150
try :
148
151
if reply == "Configure Quick Transport" :
149
152
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
164
155
elif reply == "Configure Quick Others" :
165
156
context .user_data ["config" ] = EntryType .OTHERS
166
157
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
181
176
except Exception as e :
182
177
update .callback_query .message .reply_text (ERROR_TEXT )
183
178
return ConversationHandler .END
@@ -550,13 +545,24 @@ def add_transport(update, context):
550
545
update .message .reply_text (QUICK_SETUP_TRANSPORT )
551
546
return ConversationHandler .END
552
547
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" ]
558
550
)
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
560
566
561
567
562
568
def add_others (update , context ):
@@ -575,7 +581,9 @@ def add_others(update, context):
575
581
update .message .reply_text (QUICK_SETUP_OTHER )
576
582
return ConversationHandler .END
577
583
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
+ )
579
587
update .message .reply_text (
580
588
"Quick Add Others, please choose your category." ,
581
589
reply_markup = create_inline_markup (setting_list ),
@@ -595,6 +603,17 @@ def quick_add_category(update, context) -> int:
595
603
return CS .QUICK_ADD
596
604
597
605
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
+
598
617
def quick_add (update , context ) -> int :
599
618
reply = update .message .text
600
619
try :
@@ -800,6 +819,7 @@ def setup_handlers(dispatcher):
800
819
quick_add_states = {
801
820
CS .QUICK_ADD : [MessageHandler (Filters .text & ~ Filters .command , quick_add )],
802
821
CS .QUICK_ADD_CATEGORY : [CallbackQueryHandler (quick_add_category )],
822
+ CS .QUICK_ADD_TRANSPORT : [CallbackQueryHandler (quick_add_transport )],
803
823
}
804
824
805
825
# Retrieve transaction-related states and handlers
0 commit comments