1414from game .blackJack import BlackJack
1515from gamehandler import GameHandler
1616from lang .language import translate
17+ from statehandler import StateHandler
18+ from userstate import UserState
1719
1820__author__ = 'Rico'
1921
3133
3234game_handler = GameHandler ()
3335tg_bot = updater .bot
34- comment_list = []
3536lang_list = ["de" , "en" , "nl" , "eo" , "br" , "es" , "ru" , "fa" ]
3637
3738
@@ -44,6 +45,9 @@ def start(bot, update):
4445 username = update .message .from_user .username
4546 db = DBwrapper .get_instance ()
4647
48+ state_handler = StateHandler .get_instance ()
49+ user = state_handler .get_user (user_id )
50+
4751 if not db .is_user_saved (user_id ):
4852 logger .info ("New user" )
4953 db .add_user (user_id , "en" , first_name , last_name , username )
@@ -52,12 +56,10 @@ def start(bot, update):
5256 language (bot , update )
5357 return
5458
55- if user_id in comment_list :
56- comment_list .remove (user_id )
57-
5859 # check if user already has got a game (in the same chat):
5960 game_index = game_handler .get_index_by_chatid (chat_id )
6061 if game_index is None :
62+ user .set_state (UserState .PLAYING )
6163 logger .debug ("Creating a game" )
6264 lang_id = db .get_lang_id (user_id )
6365 bj = BlackJack (chat_id , user_id , lang_id , first_name , game_handler , message_id , send_message )
@@ -105,8 +107,10 @@ def join_secret(bot, update):
105107
106108def stop (bot , update ):
107109 user_id = update .message .from_user .id
108- if user_id in comment_list :
109- comment_list .remove (user_id )
110+ state_handler = StateHandler .get_instance ()
111+ user = state_handler .get_user (user_id )
112+
113+ user .set_state (UserState .IDLE )
110114
111115 chat_id = update .message .chat_id
112116 game_handler .gl_remove (chat_id )
@@ -156,38 +160,49 @@ def comment(bot, update):
156160 lang_id = db .get_lang_id (user_id )
157161 text = update .message .text
158162 params = text .split ()
159- if game_handler .get_game_by_chatid (chat_id ) is None :
163+
164+ state_handler = StateHandler .get_instance ()
165+ user = state_handler .get_user (user_id )
166+
167+ if user .get_state () == UserState .IDLE :
160168 if len (params ) > 1 :
161169 text = " " .join (params [1 :])
162170 logger .debug ("New comment! {}!" .format (user_id ))
163- send_message (chat_id , translate ("userComment" , lang_id ))
164- for admin_id in db .get_admins ():
165- send_message (admin_id , "New comment:\n \n {}\n \n {} | {} | {} | @{} | {}" .format (text , user_id , first_name ,
166- last_name , username ,
167- lang_id ))
168171
169- if user_id in comment_list :
170- logger .debug ("Remove {} from comment_list!" .format (user_id ))
171- comment_list .remove (user_id )
172+ bot .sendMessage (chat_id = chat_id , text = translate ("userComment" , lang_id ))
173+ for admin_id in db .get_admins ():
174+ bot .sendMessage (admin_id , "New comment:\n \n {}\n \n {} | {} | {} | @{} | {}" .format (text , user_id , first_name ,
175+ last_name , username ,
176+ lang_id ))
177+ logger .debug ("Set {}'s state to IDLE!" .format (user_id ))
178+ user .set_state (UserState .IDLE )
172179 else :
173180 # The user just wrote "/comment" -> Ask him to send a message
174181 logger .debug ("Add {} to comment_list!" .format (user_id ))
175- comment_keyboard = ReplyKeyboardMarkup ([[KeyboardButton (translate ("cancel" , lang_id ))]])
176- send_message (chat_id , translate ("sendCommentNow" , lang_id ), reply_markup = comment_keyboard )
177- if user_id not in comment_list :
178- comment_list .append (user_id )
182+
183+ keyboard = [[InlineKeyboardButton (text = translate ("cancel" , lang_id ), callback_data = "cancel_comment" )]]
184+ reply_markup = InlineKeyboardMarkup (keyboard )
185+
186+ bot .sendMessage (chat_id = chat_id , text = translate ("sendCommentNow" , lang_id ), reply_markup = reply_markup )
187+ user .set_state (UserState .COMMENTING )
179188
180189
181190def cancel (bot , update ):
182- user_id = update .message .from_user .id
191+ user_id = update .callback_query .from_user .id
192+ message_id = update .callback_query .message .message_id
193+ callback_query_id = update .callback_query .id
183194 chat_id = update .message .chat_id
184- db = DBwrapper .get_instance ()
185- lang_id = db .get_lang_id (user_id )
186195
187- if user_id in comment_list :
188- comment_list .remove (user_id )
189- # send message - cancelledMessage
190- send_message (chat_id , translate ("cancelledMessage" , lang_id ))
196+ state_handler = StateHandler .get_instance ()
197+ user = state_handler .get_user (user_id )
198+
199+ if user .get_state () == UserState .COMMENTING :
200+ db = DBwrapper .get_instance ()
201+ lang_id = db .get_lang_id (user_id )
202+
203+ user .set_state (UserState .IDLE )
204+ bot .editMessageText (chat_id = chat_id , message_id = message_id , text = translate ("cancelledMessage" , lang_id ))
205+ bot .answerCallbackQuery (callback_query_id = callback_query_id , text = translate ("cancelledMessage" , lang_id ))
191206
192207
193208def answer (bot , update ):
@@ -237,6 +252,8 @@ def callback_eval(bot, update):
237252 elif query_data == "com_ch_lang" :
238253 language (bot , update )
239254
255+ elif query_data == "cancel_comment" :
256+ cancel (bot , update )
240257
241258def send_message (chat_id , text , message_id = None , parse_mode = None , reply_markup = None , game_id = None ):
242259 tg_bot .sendMessage (chat_id = chat_id , text = text , reply_to_message_id = message_id , parse_mode = parse_mode ,
@@ -264,15 +281,18 @@ def game_commands(bot, update):
264281 db = DBwrapper .get_instance ()
265282 lang_id = db .get_lang_id (user_id )
266283
267- if user_id in comment_list :
284+ state_handler = StateHandler .get_instance ()
285+ user = state_handler .get_user (user_id )
286+
287+ if user .get_state () == UserState .COMMENTING :
268288 # User wants to comment!
269289 send_message (chat_id , translate ("userComment" , lang_id ))
270290 for admin_id in db .get_admins ():
271291 send_message (admin_id ,
272292 "New comment:\n \n {}\n \n {} | {} | {} | @{} | {}" .format (text , user_id , first_name , last_name ,
273293 username , lang_id ))
274294
275- comment_list . remove ( user_id )
295+ user . set_state ( UserState . IDLE )
276296 return
277297
278298 if not db .is_user_saved (user_id ):
0 commit comments