1010from prometheus_client import Gauge , Histogram
1111from prometheus_async import aio
1212
13- from chatbase import track_message , track_click
1413from database import db
1514from settings import *
1615
@@ -61,7 +60,7 @@ class States(Helper):
6160
6261def get_words ():
6362 logging .info ('getting new words' )
64- words = db .words .aggregate ([{'$sample' : {'size' : 5 }}])
63+ words = db .words .aggregate ([{'$sample' : {'size' : WORDS_COUNT }}])
6564 return list (words )
6665
6766class Message :
@@ -91,7 +90,6 @@ async def send_pong(alice_request):
9190async def handle_new_session (alice_request ):
9291 m = Message (alice_request )
9392 logging .info (f'Initialized new session!\n user_id is { m .user_id !r} ' )
94- track_message (m .user_id , m .session_id , 'start' , m .command , False )
9593 await dp .storage .set_state (m .user_id , States .START )
9694 return alice_request .response (
9795 "Привет! Ерундопель - это игра где нужно угадать "
@@ -114,11 +112,9 @@ async def handle_user_agrees(alice_request):
114112 yes_list = ['давай' , 'начать игру' , 'да' , 'хочу' , 'начнем игру' , 'еще' , 'продолжить' ]
115113 await dp .storage .reset_state (m .user_id )
116114 if m .command in no_list :
117- track_message (m .user_id , m .session_id , 'no' , m .command , False )
118115 return alice_request .response ("Жаль, возвращайтесь как решите сыграть.\n "
119116 "До встречи!" ,
120117 end_session = True )
121- track_message (m .user_id , m .session_id , 'start_game' , m .command , False )
122118 words = get_words ()
123119 await dp .storage .update_data (m .user_id , words_list = words )
124120 words_list = []
@@ -181,15 +177,13 @@ async def handle_hi_alisa(alice_request):
181177@dp .request_handler (commands = ['помощь' ])
182178async def handle_user_help (alice_request ):
183179 m = Message (alice_request )
184- track_message (m .user_id , m .session_id , 'help' , m .command , False )
185180 return alice_request .response (
186181 'Скажите номер варианта ответа, "повтори"" или "стоп".' ,
187182 buttons = choose_buttons )
188183
189184@dp .request_handler (commands = ['помощь' , 'что ты умеешь' , 'что ты умеешь?' ])
190185async def handle_user_what (alice_request ):
191186 m = Message (alice_request )
192- track_message (m .user_id , m .session_id , 'help' , m .command , False )
193187 return alice_request .response (
194188 "Я знаю много редких слов. Могу загадать тебе несколько. Хочешь попробовать?" ,
195189 buttons = start_buttons )
@@ -212,7 +206,6 @@ async def handle_user_cancel(alice_request):
212206@dp .request_handler (contains = ['дальше' , 'следующее' , 'следующая' , 'следующий' ])
213207async def handle_next (alice_request ):
214208 m = Message (alice_request )
215- track_message (m .user_id , m .session_id , 'next' , m .command , False )
216209 data = await dp .storage .get_data (m .user_id )
217210 points = int (data .get ('points' )) - 1
218211 words = data .get ('words_list' )
@@ -258,7 +251,6 @@ async def handle_next(alice_request):
258251 "третий" , "третий вариант" , "три" , "3" , "3 3" ])
259252async def handle_user_answer (alice_request ):
260253 m = Message (alice_request )
261- track_message (m .user_id , m .session_id , 'choice' , m .command , False )
262254 data = await dp .storage .get_data (m .user_id )
263255 words = data .get ('words_list' )
264256 words_iter = data .get ('words' )
@@ -302,11 +294,11 @@ async def handle_user_answer(alice_request):
302294 points = int (data .get ('points' )) + 3
303295 return alice_request .response (
304296 f"{ previous_word } это: { right_choice } ."
305- f"Вы ответили на все вопросы .\n "
297+ f"Вы ответили на { WORDS_COUNT } вопросов .\n "
306298 f"Спасибо за игру!\n "
307299 f"Вы набрали очков: { points } \n " ,
308300 tts = '<speaker audio="alice-sounds-game-win-1.opus">'
309- f"Вы ответили на все вопросы .\n - "
301+ f"Вы ответили на { WORDS_COUNT_TEXT } вопросов .\n - "
310302 f"Спасибо за игру!\n - "
311303 f"Вы набрали очков: { points } \n - " ,
312304 end_session = True , buttons = [REVIEW_BUTTON ])
@@ -316,7 +308,21 @@ async def handle_user_answer(alice_request):
316308 points = int (data .get ('points' )) - 1
317309 await dp .storage .update_data (m .user_id , failed = 0 , points = points )
318310
319- word = next (words_iter )
311+ try :
312+ word = next (words_iter )
313+ except StopIteration :
314+ points = int (data .get ('points' )) - 3
315+ return alice_request .response (
316+ f"{ previous_word } это: { right_choice } ."
317+ f"Вы ответили на { WORDS_COUNT } вопросов.\n "
318+ f"Спасибо за игру!\n "
319+ f"Вы набрали очков: { points } \n " ,
320+ tts = '<speaker audio="alice-sounds-game-win-1.opus">'
321+ f"Вы ответили на { WORDS_COUNT_TEXT } вопросов.\n - "
322+ f"Спасибо за игру!\n - "
323+ f"Вы набрали очков: { points } \n - " ,
324+ end_session = True , buttons = [REVIEW_BUTTON ])
325+
320326 exp = [element for element in words if element ['word' ] == word ][0 ]
321327 e1 = exp ["e1" ]
322328 e2 = exp ["e2" ]
@@ -364,7 +370,6 @@ async def handle_user_answer(alice_request):
364370 "пожалуйста повтори" , "можешь повторить" , "можешь повторить?" , "да" , "ладно" ])
365371async def handle_user_repeat (alice_request ):
366372 m = Message (alice_request )
367- track_message (m .user_id , m .session_id , 'repeat' , m .command , False )
368373 data = await dp .storage .get_data (m .user_id )
369374 questions = data .get ('questions' )
370375 word = data .get ('word' )
@@ -385,7 +390,6 @@ async def handle_user_repeat(alice_request):
385390@dp .request_handler ()
386391async def handle_all_other_requests (alice_request ):
387392 m = Message (alice_request )
388- track_message (m .user_id , m .session_id , None , m .command , True )
389393 return alice_request .response (
390394 'Скажите номер варианта (один, два или три), "повтори"" или "стоп".'
391395 )
@@ -396,4 +400,4 @@ async def handle_all_other_requests(alice_request):
396400 app = get_new_configured_app (dispatcher = dp , path = WEBHOOK_URL_PATH )
397401 app .router .add_get ("/healthz" , health )
398402 app .router .add_get ("/metrics" , aio .web .server_stats )
399- web .run_app (app , host = WEBAPP_HOST , port = WEBAPP_PORT )
403+ web .run_app (app , host = WEBAPP_HOST , port = WEBAPP_PORT , loop = dp . loop )
0 commit comments