From 8a7634daedd4b54f1d65e75df4e714a981f41a4f Mon Sep 17 00:00:00 2001 From: dddennnisss Date: Sat, 22 Aug 2026 14:22:00 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=82=D0=BE:=20=D0=B2=D1=85=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=B2=20=D1=82=D0=B5=D1=81=D1=82-=D1=80=D0=B5=D0=B6?= =?UTF-8?q?=D0=B8=D0=BC=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B5=201;=20=D0=B2?= =?UTF-8?q?=D0=BE=20=D0=B2=D1=85=D0=BE=D0=B4=D0=BD=D0=BE=D0=BC=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B8=20=E2=80=94=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E+=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81+?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=201=20(=D0=B1=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82-=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/handlers.cpython-313.pyc | Bin 26855 -> 27084 bytes photo_bot/handlers.py | 20 ++++++++++++------ utils/__pycache__/texts.cpython-313.pyc | Bin 50156 -> 50333 bytes utils/texts.py | 4 +++- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/photo_bot/__pycache__/handlers.cpython-313.pyc b/photo_bot/__pycache__/handlers.cpython-313.pyc index a80bad307ad2fe714a16d47046851562357c1d81..d4257dbfed3fd2ea8325076c6fddb139c3eab3b6 100644 GIT binary patch delta 3834 zcmaJDYiwK9`5fP4$9DX7{C47Z62Fo-PU^gz_$Fx#v`vXGw*@>DvOY5SaW|!O)tZOb zP7_SphQbl6=(LT829YK)O2*c0XefYI5CtXB(vr2%P^Jx{u{1#f(l*^W_vVJc#%^-I z?|kpqIp_KxbMW+A(6FM{YXNzj{Xe?*zI`VQBVIU#k9c>%llYfaA&s)_b^wN+002MZ zbzo2BlVt$_cu=t7fd;G1MlI>XE4Xq_*Q((3oB`im3Kv5}K z5j)7KITN0*%9J~0UcrMW6V@^_4-J5`(74cw`+X&A#ZIbiYi1-(KPcMpC0|rS;tEL2 z>4?*+MC&=&an7%_{Xq@#u-~Kx{Y&K4XPEskYM;K-Kgk$wi^6%$fp2~L(BOUh4%~+q zL+?QYJ|E`2-zEM>Dk<<%Fhan5*`c8k;T~ZabCL7bB^9vRkHscq7fjKq>XW^5CKh{l zIW-obF)nF{44ZaU;~!R^D)m5MXj-;2dczeh1wo)}`usqicsy#%Ti_(jtI-)IhQzoH=e6=Ko1$e9hW!U zv2GT_lMVZ9VtPYe|2Ho$&1>B%jvq+npdG)OiaztK z$ps5<;yiSfg>tX=l5l>&MFgv4flsIP3TYXt`NExGEBfSqlVjrGYI%zRq!nTUrY5b% z!dv+Y-nJe#id&nKu9$elULZaBvTYofnrPLJ#nJ@+tF4*9$<|}|>3De4D85O$Gq6SO z&QG`WGjBFC__0QZ!_M2e1T8}@V(2L{N;@ss7;awQgQQpsm&B=z1J;RI-kV7<7Or08 zG!V`X;-6SBDXtMaS^{Nho)Ie=NITKaVac62$Ti6w6&zeM@4!b|9B_;1@J}s|Zc6{d z^>W|&O1WCD)W>VmOi19oD0N(ZF!-JuPhWWY_l;{g-LqZI5y(T zz6BreD?CKM75aSJA@Y?nlcx9z4^vKMev_8>AR;HxF9d|35F#4Ks6U^d5AZ=g)U=VS z5H3C<=g5b#vD>RC9H-9AH_?RU)(H_&=rKo<_>kxJM&9WLI6GMio z`5L~O$cQ(x67lBnMDG_g9&-y{iBEK=jJ4c0aRY8oGeVTF#aFs*p(wY5>*sd1GGt5r zdL!K^cPlqQK7%px8GMSC$He#;?&|T>+_vFCU*tCQ^&BtPBi(xVNRKVF(PA=&uWT1y z&wKeOw+sKVCjfWjzxBl7?c}I9v9I?j>yzXotLr~RV0r(`B773R(>ts;7q`n13xl+> zo+{oI8|{-*5l2xjPuta!Q>-(2xiut*YuA_EBwUPL65n3P`0=oa+%Hc zxUw&*rxvPyyl%nuJqY9Y#Fl_-O12_5YGIRA99QP+&72&2A3a%dHjeMgbN^jM^bV;C zPQl&TsvvXNoJ(<&S2NAULvk5juVO#k53-C8?1$nHk#FGaP0vQ>VQSuG4Z=7}-UEM~)^bKg z!_fwsdCT4Sz_tsz@Ht&#PM4V4eMZ-O!Du^YjFA7Q|v2;gQFVsMmy`J)T{%J>d>r{ z?VwcY%?dbbL~q(yF@-ZmIBG#>OstIx&qm;=4V|qsn&TF9803}Wo$d8<`rL)ehT+&2bg>j+McKPi zIM#~ZjY&j()wlt?r-x%5=sg3gC&VQW9P2`tyoj#-kUGBv5T1KP+M7W}c6D?>(BN2KrsTE^y{X{4Dv=dIWqffgKS%1b@ zsP<V_t3eIf4p)=fu^4kTQ#%%6uK83n$hC-) zu&zlHzSba`TuYZEyhTE-66%1Y|JS-Gysi+TQiN&|mW$A!olr2>ov!gLb3Fyen^e~u zm2{mEgI&)miFi#Rj%H07@mjg)eT}v!0@lph34hsI$)gsjkanW6Y%Qq~i55wt9g>Ex zb!ypM8FND&WpfJVMhcdiR5uz;l$gmWlvFlDUTQa!(-K`**-WlN^fQz5iH>G+bUsub z(Xwnk(XVe{*%&j!`e2A$9gg0<$*bOby$A`_Z zBLSPH@=JiAlY2g)XlXA53ibU}N2=a}<|V}_g2qSlD}dq^1}H37MAk?hx%B=62$gVT delta 3881 zcmahLYiwK9`5fP4$9DWq{7&rHiQ_oV+i~7b;wFuuC2pIu8`#XCRcQ+oyJaa1aFTju z)7Z30v^|3g#-wi221pyD&3>>S+sc?!5ER-qC{Puec9Vc=h%}wlCT)^^=ic5Vpt0TL ze(&?W&UeoB+h_5|XRzg}*=$7c{4((4Zynxw%raJnr`dtBQQ;kg*ehjj_LG3opzXQ~ zp&fs`CGnU4M%#{1&cS|ERL-6%FD4=yaWZ2dDil)_n=ALmo!sRYpPX0aMInh5nkx2g zwmGoLYnFppz_E7K5>q|3u$Kev5uYj>DOagAOsyieAZp_YV>=563nh*%d~HcmP^>CY zF3A26j2TKhHIkC=0Z)mR+{(b^)1wT|o|2(WkFs;{n%jllIOd#cs5m6BQWX}w5<#KGT{3OYo-Pt!kGX$yrB=s*X=kHBCk6_oKE0O6?wgN zpbD6i9-OHrC%rmOhcJg#GOXrs=dCRPj|iFI{XV=`AFe>C5>=q7XQC+*?L$b!xf)Q& zPd6;d;2o_XC8{uk@2g{r@k2r$s02V$#1ml~TN+ACv@EGn;%Sg%7R@6f`@P4fku2<2E#26{K5Fp_R?*59TY})Tg8O8t zgb`cW!8)foM0M(NumK4Uv+pJ1Q7f(F6EE3CEA?ixY5fOXwTfTuf;u*c(7YJ+$~jto|@KQ$ZKciIBbsDo{4qfWJDg}){RHrwKMJ4Gjr z^NQ4ZcDw+?;^einLc*YflI^sPJ=E^T^>VH+wbu!D+8|3BK{AYGW1)#Qv(b)FQHv(_2M<@TH=SwEZiJUg*AV@1RJ% zMkF^yl1Cm0Z)y~~*+VI>;LUAfKTVa#J4Fp#LS4Dl%TM&G7ahpEbNocfkLYF7sbq9j z3s+SSl%-Rx;j&t9+teGhdnM17*)K@9_ilr}|FADu;{B?z^c?Oh2b=A^elyIG=!G~) z@`*k+)Yr$3^@i>Lb)4%Y4@LY>ZE6MD;?8|jO`fLK7s!_T+*mH(+nak*wGlmPDNuMH zyQ9Aw&Lck@ex+63e$fw_G;dgfsJ0bI^s{sQmF^9>)!Uv9@bLlL!GypLCVajCqJ(bT zym8ZzR0b!5P_#KCm5XH~BkXk4DU^>KVsNpuy(z;zs$VG}21X96xvgP3)b%KQ*6h%l zz{t~Ua+RV(>pb`$A#g;4QiT+f!eD=dhY1G73Na*xTUTq4Ds#`O>%~fz-QbT_jy$JI z)-cWRy3`I!Rf=tQRXu!+>239}T~b8+A1lT6mepV>=hGPxtHlWDz&B7bUY{G-{bDT# zm7=$cWo&Lkvo%UL$s@cuAxJf1lr;@FD{JT-beLv41sKX-t1HABx`l3qFKGaA5Xl;ZtR!37mN8_<6lyo#jZ#7o?Zyz-kc|S=XI}HZ5-Z7DTc6oC*2S>#%>0nqo?G>mec`r#g-I*@oRx>6%o**;kbT{Wd(Btto@_}JM_Hf>e$2-Y+i=4*!T0GuE&KKfo zS@&Th9`7R`HYrRpFj0y=D!~&P@=*9)8 zpRAbm*8p=-z!SyfBH@aQdRcMNkVe2=GT;ddxn$&;!X=BWx@7fpO)Z|VlS^@~xzsqM z;bA^$#*@Y5la>f)K6T?s3;EQO;>=|yp0tz8E;;AR{%|3VE~oHhDY@Lcp#hlB>giQ3(V&(`(#Y`JeuZaR}6Tvn_MxbNddTd3!dyH^H##?5;>iD=V0T0g02y~ACqfZ z!fAs8^w<23f=#$q-wpKj8e9mI>#;b{3#GUaAq!6KW5Fx?Sn&Bdlf;D@vd|_gy5v+B zk*r@702Mm$qE2BA3Nk6ksvw7goC<>9y-@d}UqJz5zP@O&#sJ&Dm@tkv35%(k@wjj! zBG2QExE4e=lpVd%CNH_ssh}PO_2F~@{N2=G==V*n4D~WBmZ3$4b{Uo$C-uV3fOk?5 zZnoozF5S%zEvHj*uq8nY>LtBg-;%PWOLjTR5_BexmfXh4>Y}BPp3^boWJl3b!T@w( zsh6vlF@_c|6JxAIu$8e=+99LwK?D9V|Qdy<| diff --git a/photo_bot/handlers.py b/photo_bot/handlers.py index a44ddb4..93333d6 100644 --- a/photo_bot/handlers.py +++ b/photo_bot/handlers.py @@ -180,9 +180,12 @@ async def send_dynamic_photo_main_menu(msg: Message, user_id: str): states.set_state(user_id, "PHOTO_MODE") moderation_pending_users.add(user_id) if config.PHOTO_TEST_MODE: - # Тест-режим: можно отправить фото на проверку в ИИ - test_submode_users.add(user_id) - await msg.answer(photo_test_welcome(photo_id), parse_mode="html") + # Единый вход: меню + «фото на модерации» + кнопка «1 — тест проверка фото». + # Описание тест-режима показываем ТОЛЬКО после нажатия кнопки 1 + await msg.answer( + photo_welcome_with_status(status, show_test=True), + parse_mode="html" + ) else: await msg.answer( photo_moderation_pending(photo_id), @@ -256,16 +259,19 @@ async def photo_module_handler(msg: Message): ) if still_pending: photo_id = status.get("photo_id", "???") - if config.PHOTO_TEST_MODE and in_test_submode(user_id): - # тест-режим: повторяем инфо (можно отправить фото на тест) + if config.PHOTO_TEST_MODE and (cmd == "1" or in_test_submode(user_id)): + # Вход в тест-под-режим (кнопка 1) / повтор его сообщения + test_submode_users.add(user_id) + log_menu_stats(user_id, "Photo Bot (TEST)", "Тест-под-режим (фото на модерации)") await msg.answer(photo_test_welcome(photo_id), parse_mode="html") else: - # стандартная ошибка: кнопок, кроме 0, нет + # стандартная ошибка: кнопок, кроме 0 (и 1 в тест-режиме), нет await msg.answer(photo_invalid_cmd(), parse_mode="html") return # Статус изменился (одобрено/отклонено) — разблокируем + was_in_test = in_test_submode(user_id) moderation_pending_users.discard(user_id) - if config.PHOTO_TEST_MODE: + if config.PHOTO_TEST_MODE and was_in_test: await msg.answer(PHOTO_TEST_WELCOME_TEXT, parse_mode="html") else: await msg.answer( diff --git a/utils/__pycache__/texts.cpython-313.pyc b/utils/__pycache__/texts.cpython-313.pyc index 25ac25c3e59e469e1cece366dbd262a0b6501581..d162623d704a961aad600aa4dd2214292535862b 100644 GIT binary patch delta 2830 zcmZ{mYgAO%702hy%o$~rQ63|Vih_bLiK0P7iy`t-qQ*gBco`&&;i-t`z$i)7h$bS% zk%7%qRIDT#YK_Q2TbF4qrirLYMQwb{vQ}d?%SC+G)W%x7_hq@7FP#tj{`YV1d+wcc z_uc#cP^sBbr7=8mch{@%=WD52TCnS&;cA3>41>E7XIT*ZC&Dy+$TUV_m8wLWs!bU> z6Fr+wrAl#6)f!YOhN+rFmNKk_rwmW!=zC1n1gZ)&W>0x)y01D|ti=<}8jDNyo@Ump zS#~^86!R1VH+iTx2UWYP77Ds0@UXSt> zI1_W7H=>#jhhoRFYWZz!uvSa|Kt7xEt~$CFLqba?0F7BIs_@{_*;cO1E6H_fm#!!( z5y=$s6it*>O{SSl3z=Al6#vE|@%>;f4!Ep%6>K{VSLs?sV3!@f~=PvY5L)_xr0NSa6tMdP|pS_DG z@GF>g4jwJe^`y-j$XAPjjfA4?Abu6`1qs>D8NZJ5IyB|9@EfRZ!!%nPzlrJrT(*79 zt^o@-!LcP?{Ci~okQbK}F@!O>Vf;3NpJaLN9j5C?$<(kce+9b<6~10@H{XZfL1+Md zK{8w~Fv2?pKKvdM4{#J%p}5cpKNk4$he*7^x6sP^Az++0R1}WlkCFMnuL|e0FX2vM z1pgQMBV|a@8V!Gnax!!j|BXLG6($|aGZ}x5a+>TfDP?LEgPfHioZgHX(y{UsV_L`% zFY!SLqGYA;VcZR6EVP&IxJJ!-hhfeH{F0RR;IMlq3jPy`LLVS>gQZYEK_j=|4Yh1{|!6ld?R3 zaTCTC$;#ZZ*p=)J%hz~wKcqIfY0Uw~+8|JS}7SH%e3!NK${mmMeTOM|gJYg%#8+bW2rDeiASOjB| z2!e;}C$RwVuL$Q;5v-P(6>W@D>sv3MZJ5jWbd($A{0|N4K)UX2H#Bw)n(sEYE0?qn zLdU;P_Whx+TTFzto2Hnl2Z&Hw|6@|0pfT&j3H%Zbq)l~cP1dKPpZ>k-JSX6?VqliNVNgXE0 z*)oaGL#G+)w(MtfA=(k9Ux0oqJ_#`&R)7%>A`Jr)N}N{q zT&d}cP9x7mb{HNwtvaerp@#XjAv_D^5h$;<>Zm@24$jq@c{a+=>*}m8|M z1jp#Mt$5q9Fbi+}YMoKP1o3ggix8)S6+HC0h`uD0u4D$+8{sQ3>hlrzzQ~M)?TBBk z_tqC8KK;LSy&8;guzrMoDdIm9{t?dB$HFGWAq}4TV#H?&-&gPx#H|e;`Vz!{A*@`I znV@HzH@G+Y@Rb<22=h#hK-Hmxj^ZHeT`{4Drqqe1~pCMWhnm&zi7&Er}{H% zUex8zrm1`tl523GDGg+^5n`H6yd235c&pjUrYqO#Z8qxPLw1X9g0>=-MPtAZ5?Va@ z8VuZq>=rAFSCUV(jN~66`vGpXSanoDVh%)a3+5Fl??Lf4E1QRjll2?Xe@H8?Rd(`F zs}Yh~ef1w9eoXigZ30VF7CqJK&MPtS1g^AN-Kdt$YAki7P8Vz+#;cG#mA37*j8~)7 z$$#!>WZZ$$AnV%l)lj<61Kf6x=Cz1M$d`6I8FRwX_D~K8#>%_xUu)P_IJ!5CHy{X> z5BIKTx~(WhBb0Yc*q^ ze0@a=3NU1kf@?W}a`b2KQ*!eGb3z;Pv=<4&M6Ut83ug5ki&<^4h;VY04*-?&9b-W} zATT@!pC5i2U<3wtnpvm}>s-cW(btMlW?CI7`mPZ4Ng-&Oxp;o@3R{^_CKU~IL8DwK z-SU@@FUEjjl0cX*LTQ$Knhb8nuFktDw0mEc* zsl%z&262B{utLA*fZ}jkp~myts^@9e*tqWL+}6q delta 2762 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 str | None: f"Пожалуйста, отправьте новое фото." ) if ms == "pending": + photo_id = status.get("photo_id") + num = f" (№ {photo_id})" if photo_id not in (None, "", "???") else "" return ( - f"⏳ У вас уже есть фото на модерации.\n" + f"⏳ У вас уже есть фото на модерации{num}.\n" f"Ожидайте решения модератора." ) return None