@@ -7,11 +7,62 @@ let wordQueue = [];
77let win_avatar_enable = false ;
88
99async function generate_secret_word ( ) {
10- const data = await kontekstno_query ( { method : 'random-challenge' } ) ;
11- room_id = data . id ;
10+ let room_id ;
11+ let is_bugged = true ;
12+ let retry_count = 0 ;
13+ const max_retries = 5 ;
14+
15+ while ( is_bugged ) {
16+ if ( retry_count >= max_retries ) {
17+ show_fullscreen_error ( 'Ошибка получения секретного слова.<br>Пожалуйста, попробуйте зайти позже.' ) ;
18+ throw new Error ( 'Превышено количество попыток получения секретного слова.' ) ;
19+ }
20+
21+ const data = await kontekstno_query ( { method : 'random-challenge' } ) ;
22+ room_id = data . id ;
23+
24+ // Проверка на забагованное слово.
25+ // Если для "банан" возвращается 0, значит игра сломана и надо перезапустить.
26+ try {
27+ const check = await kontekstno_query ( {
28+ method : 'score' ,
29+ word : 'банан' ,
30+ challenge_id : room_id
31+ } ) ;
32+
33+ if ( check . distance === 0 ) {
34+ console . warn ( `Слово ID ${ room_id } забаговано (дистанция для "банан" = 0). Попытка ${ retry_count + 1 } /${ max_retries } ...` ) ;
35+ retry_count ++ ;
36+ } else {
37+ is_bugged = false ;
38+ }
39+ } catch ( e ) {
40+ console . error ( 'Ошибка при проверке слова на баг:' , e ) ;
41+ retry_count ++ ;
42+ // Небольшая пауза перед повтором при сетевой ошибке
43+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
44+ }
45+ }
46+
1247 return room_id ;
1348}
1449
50+ function show_fullscreen_error ( message ) {
51+ // Удаляем предыдущую ошибку, если она есть
52+ const existing = document . querySelector ( '.error-overlay' ) ;
53+ if ( existing ) existing . remove ( ) ;
54+
55+ const error_html = `
56+ <div class="error-overlay">
57+ <div class="error-content">
58+ <div class="error-icon">⚠️</div>
59+ <div class="error-message">${ message } </div>
60+ </div>
61+ </div>
62+ ` ;
63+ document . body . insertAdjacentHTML ( 'beforeend' , error_html ) ;
64+ }
65+
1566async function kontekstno_query ( {
1667 method = '' ,
1768 word = '' ,
0 commit comments