From 0b9a6970999e3a955c2f8ee133ec6bb0935ce859 Mon Sep 17 00:00:00 2001 From: dddennnisss Date: Fri, 21 Aug 2026 22:22:42 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=82=D0=BE:=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D1=83=D1=81=D1=8B=20=D0=BC=D0=BE=D0=B4=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D0=B8=20=D0=B2=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B2=D0=BE=D0=BC=20=D1=80=D0=B5=D0=B6=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/handlers.cpython-313.pyc | Bin 24887 -> 24878 bytes photo_bot/handlers.py | 46 ++++++++---------- utils/__pycache__/texts.cpython-313.pyc | Bin 46868 -> 46987 bytes utils/texts.py | 7 +-- 4 files changed, 25 insertions(+), 28 deletions(-) diff --git a/photo_bot/__pycache__/handlers.cpython-313.pyc b/photo_bot/__pycache__/handlers.cpython-313.pyc index 681a76c4a26046b988bd5f0595b1223c4bb17b92..427a5a1c7a7d5d4602d9f239176c3e38a34c2de6 100644 GIT binary patch delta 2212 zcmaJ?eQZ-z6u-B9{d#M=jdm;BXzA8%teu;KZXg2%HU_wjAuA(B3bn3}wR3B```+02 z&~77y4+$Gy1!7`?@gpM|K`M%9G-^ov$K*BDYD*_V>;? zzjMz$_rCMaefuN)`bXIEo5jK-7%hXx`VXJBlxY6KZ`AO3ksAe2z|zsszML#~qoAfc zLZ@8zRM6jqnL9$HF=(kkO*sXTrUpb-23IYx+!wG0R|oQg&5c~3pcM6UWKE!utPLz0 zx?g2%z}kbW8})%Am3<&k9JKz6F$Nqevu-ZZ`o^VPV6kf2aMu}vm#CJOU{m)|nyf3O zc1;o9NPU`X*p~iQvk|A)b5}90q<`vG=xQO~mFWik*L+?j+e96Mdg?5EsoDpkQaX_6 z3x(s6P&^^U_U;cQqX{Vy5(r5U(hm-;>F)~jwK$xkuW^S zg4m#n9Do}J@zHX}V%;#P2htBXUe!QWKbEBM5bZDZ>qpqkQTk%(n$#mqOfnc^unoX# z%tg(4G3x|_hXE8`l)}=m7#b!6ijfFnG7%RA5(7#!0Q7VX0H+>&KjOA8m<=mlqiVJAX8nr@~$ExKmN zA-rMUVx!BP*5x_~q>dgOFa}Ib+MMP_J*e9-M=f~lGSR)xd*@duRwXC>!pUPD{od)E zV@h21JpS&qZi|{vhl`(MKlPbtb*+_-xpaBfd9MN}T#sWxKD!ppb9VYyZ5jR6RqSxw zwe@KJ#lwzG_SKp=$MU9~OZ|mCM%48a{P|Vdz1Ukcd?Y=!)T&9zFJvaw=+)xf9W6Ya%Nnm#^3Na_$5cm|!ts-aBpxe?@*vzAC?0&v%g&LiEM*qxwPE1c}pzii>#zOdMmd zjQ&{R@nXd!MiV0;Nf0HkS$)^!2%|j=BnC?uB7WD-E( zg}6laL$pyzWJfz!UzB>PQ_q7gZihDU0~$lO?Z{p`y((+-&sh9pn`RA`qX)(hOx0u! zW#^=>VIy7^rHbXC^YaLjnaSUfdyK2NS2{>->< z)>=5(f4u*Ox$^wOS#$lY!+BGO@=I_W_IU1jdl1!Ay;=ye6klgo#Y<}{# zRs$>Q(W2sG`foUXhRT&ysY2iM%J+88+#krmuW-j$`z&vn^d0w2JuYGn_xe z`G2iL*2Y^rBz~&`=^FnOSwEe~Z>z(naa%R_^ad}8AFjb|Uhc!St(Bl$cjLBN?s~bN z$zIH`mSHcP_xv!Y4^+jShGk&bLH5&MTGr#!w4t@$(*hR7oFu}&m@pDbhNURU)eP8K z6(Mqx9%_Y;oQd-#q~PV`8Twjl(teW7H|!HgB-ShC%4;ayuyHrWL+Mj(2er6`@(2DCxD_82LvHW%0Tw|=DrsC zb4ScStV zhqs<6C~G6?nXr@<16)%Oua7_@Mq~>u-E#=O*|U4f@i={F&l$QSRFqOr*3>6Ro!~1F z#TW|3!-GO7q+Tp=oQYuxuC41Vo>mkjQo~}geJk8!iNrwe?7En7D+6`I?CMfD_3f)? z{v2aoWAF#S1w`&)vJZfMAKK=!W6d4(U%16=zt_{AM_;kIapUynn+P6PdvCMH%}#0! IS8*)R->EEZ-v9sr delta 1964 zcmZWpdu&rx7(eIs_O|PDeQxV^OZURH9b;@`Lmmq2R@eqBwwp4jbeHwA6}omiw;M1p z8(_!=F@Q%Ne;CEY$BYTaRO2IkZCMoXp{X(mzQKWa3aV8BEZ&$-=T#*=%0_xpa| zcfRxZzWZIDfgjF5{aw9Y1ISp6O&;2CQD4L`%zITDXm77YwJs0>A$`ZX_BvGO0%0b2 z5T8_8$HNWlA)NvMS|8Szf%Q2BpvGE&n!+1aFpq}};f*0|w)yEb35!Y}vXLXM2(3<{%X@Pdz?j3=yK%}cR)D>y%>rK&XiD3- zA2r%adbS!0YcXSb9eVLwCYSOsAzIR3nv4o~AU$t=00WfCaza8nA|hlVikn3T=(H69 zh$^uJTx1|G5whk1ArXy>k)eTPDj6X&lL(Cx!|`-^!8;7u&DTZa5aEEMo;yltbPP{A zHhK3^ahL+4u$zEeom(j9McLC7dhqWKhvg6vB{c!MFdfK?i;H>XIYOOIZz<-W!J`16 z9Js(G5P}H?f66(ru3F7S?*p(;i325%K^1e=8}* zXKXyKRH z7`?f3@AlilWdRV2K9*(bpUwEK#dwQgp)P!nu72x@Vu+JYZA zU8blSbpB0VO_SmvbX!NXY4<7vqv%8v`2Er;E~!?>-SZ*o$RC*W4DD3A%tULcUwh=~+B7DGy*7DyM@K?qzj$QLii?am{lRM^h zj;l@AIx_2yeWM%0;XpO^26$m?wz}t`<;1tT=WgpQ=l4$Sy{ewomtO0d)w}0)=JTCX zowv=s8DSvP8_UEFXX0osK6)!YnmICl7l1*yjadL74x8!6gU+{TWtLw^}xJgQKQfs z7OQ}=;V+4{l2fbw7B~(4I`-{tZX(W@q2I{PSbX(FxyeDliM^@fsBDB3O%(fjYr+q`#7wCM|sEDGmzErLtP`bM1SqM@3Z0m6a^kJ@T-sq9ta{qS}J&zaL?C>e9 zZg-EM06F3UZTq z*k4dN<;p0y@IreT9L1K7Mi|2F9jBa!DZPt8Rw>0raR?O?+3i^>Z~RL~=jI9OBGeNy+EhsA%SFq_CV4?V-X}ui1sY>28EM2wevfdm-<rXjnang`%l0i#`{a*Dg43y%f<4MvgVOgEH2g1 zJV+5bgEZj^EJTX7(*{d!IypiTgg&Q=LK0JQuH=@RWe+5i@!Yir=n|b2Fo=Ed_L;CM?VWetQ0C)8s%T# C();HC diff --git a/photo_bot/handlers.py b/photo_bot/handlers.py index 3240af9..a983161 100644 --- a/photo_bot/handlers.py +++ b/photo_bot/handlers.py @@ -31,7 +31,6 @@ from utils.texts import ( photo_preview_ready, photo_moderation_pending, photo_welcome_with_status, - PHOTO_TEST_ENTRY_TEXT, PHOTO_TEST_WELCOME_TEXT, PHOTO_TEST_PREVIEW_TEXT, PHOTO_TEST_AI_CHECKING_TEXT, @@ -162,34 +161,31 @@ async def send_dynamic_photo_main_menu(msg: Message, user_id: str): (кнопок загрузки фото нет); - rejected — ОДНО сообщение: меню + причина отказа (кнопки на месте); - иначе/ошибка API — штатное меню входа. + Статус проверяется и показывается всегда, включая тестовый режим. """ - status = None - if not config.PHOTO_TEST_MODE: - status = await check_moderation_status(user_id) - if status.get("status") == "ok" and status.get("moderation_status") == "pending": - # Фото на модерации — не вводим в модуль (кнопок загрузки нет) - photo_id = status.get("photo_id", "???") - log_menu_stats(user_id, "Photo Bot", "Вход заблокирован — фото на модерации") - await msg.answer( - photo_moderation_pending(photo_id), - parse_mode="html" - ) - return - if status.get("status") == "ok" and status.get("moderation_status") == "rejected": - log_menu_stats(user_id, "Photo Bot", "Вход — фото отклонено, показана причина") - elif status.get("status") != "ok": - logger.warning( - f"Не удалось проверить статус модерации для {user_id}: {status.get('reason')}" - ) - status = None + # Статус модерации запрашиваем всегда (и в тестовом режиме тоже) + status = await check_moderation_status(user_id) + if status.get("status") == "ok" and status.get("moderation_status") == "pending": + # Фото на модерации — не вводим в модуль (кнопок загрузки нет) + photo_id = status.get("photo_id", "???") + log_menu_stats(user_id, "Photo Bot", "Вход заблокирован — фото на модерации") + await msg.answer( + photo_moderation_pending(photo_id), + parse_mode="html" + ) + return + if status.get("status") == "ok" and status.get("moderation_status") == "rejected": + log_menu_stats(user_id, "Photo Bot", "Вход — фото отклонено, показана причина") + elif status.get("status") != "ok": + logger.warning( + f"Не удалось проверить статус модерации для {user_id}: {status.get('reason')}" + ) + status = None states.set_state(user_id, "PHOTO_MODE") log_menu_stats(user_id, "Photo Bot (TEST)" if config.PHOTO_TEST_MODE else "Photo Bot", "Вход") - # Одно универсальное сообщение: меню + (если нужно) причина отказа - if config.PHOTO_TEST_MODE: - entry_text = PHOTO_TEST_ENTRY_TEXT - else: - entry_text = photo_welcome_with_status(status) + # Одно универсальное сообщение: меню (+ тест-кнопка) + (если нужно) статус модерации + entry_text = photo_welcome_with_status(status, show_test=config.PHOTO_TEST_MODE) await msg.answer(entry_text, parse_mode="html") diff --git a/utils/__pycache__/texts.cpython-313.pyc b/utils/__pycache__/texts.cpython-313.pyc index b2b7bdff47693ce8aaf20a460bc7cac1a838d5ad..5e5c8938c4b4939fdaee702d603df5858eddcbb9 100644 GIT binary patch delta 999 zcmY*XdrVt(6z+FR?*@e$SuoR0EQ=9pEMn+LT;dDaN>u2Ohq$&u=U4$DN=uz?%5GaI zEsvG$fLmZ}5HOR?N4v9;3Ob^jx<4ej-6Rs{G(O`$PKePsgPZp^cbEPJ&sxxgWo8ys4T$QE6#h;uZcPb7WpO$TLV z*!WE9FNJA>TDL4B#ck#df?fA7VPA<>r(W=^w1{Kv5k5&OAp)CKl)tc1I zLp#SBFY5E9qObI~9=<1PO6aX}l9fu!dNDxXlpPRL43=9IwURrpjV#x9#`4+Svhxh8Wh-=<^X|a(<&1 z$l~#)w*=&H)r+M93iu6oNWg=f>m3EGeBq@M;4wD7JSm`rFYP`BRB`XCW5CnAvGsAl zLB72|qJ~`357ct{O=zI-Dy*~52Z zP^q=jOgIlm=vvr^5t2H4Fh+*1!#GAKx@nwD9^ZSy&VBiPdy|7BR=9cR9DgOXuvTu$6 delta 827 zcmX9+drZx76u+O}eMI+mX$s}pik3(8u*qYHY35Zbnp>uoQexb8i@ED@Rrl9Bom{Eg zL$y3I#SzAqXY-FOVQVGE!mx>$jd{%X$NA&?Ip6dBoX&7 zYpf<|_%uAHxkP?v0If}15W-1bt78T;7QyFH~ zrnF@|(TC)%8`gU{7o3gh*9Sk+1e?7CCrLwh93IpkWx*+m*jBA`LP&H`e(_BDoH(7m zqPu}J)ECo$PTC*aifiP){Wos#gdNSmZSIO210GPz&L%viaFY!K)N3li5Jkqzcus@y zMR>`(6Y|vfMz3~{;5+vwCICO#H|aF+hkKKM0BXLKG7T6<&r&;}C;MK8k(Q@jggbpm z>x2i@rT6Hjh>^@$qA^c0c#fy4SOdxXZ15(1MkQu&eTD^?&F%*-Nbu*LgIgplVYf_K z!b)~nT7mVvEPFGsf#t(DBy8ffN3Q^}{N36H#BoE;M!-bxbKhVW_2s>GNmR-Ofi6{g zR9hF*pZqmQ=GC@TAd}7>JBBP;P>_Qo)KOrAl>!TkkW1Z#cGzfTQ9cUkR*?lV%_@%| zt9>3yX|y3! z{44OKaxQwvtEvEZxUuR4@Q_2R>wu@+M<*o=bE@MW@P_Btsx|n?i=0;h@Y{x8fGdwQ z1xn*R)Iuy*tO@xvhjV;OJ20KpZT?1cs8}emg$@B`2d`-Rr9~KrolnqC(jcTc`Ljwu VSJF2H#teL=^RbK8eR7<)>tDfuDlPy3 diff --git a/utils/texts.py b/utils/texts.py index 2c90526..cdf5757 100644 --- a/utils/texts.py +++ b/utils/texts.py @@ -395,11 +395,12 @@ def photo_cancel_text() -> str: def photo_moderation_pending(photo_id: str) -> str: return _photo_moderation_pending(photo_id, EMOJI_DIGITS) -def photo_welcome_with_status(status: dict = None) -> str: +def photo_welcome_with_status(status: dict = None, show_test: bool = False) -> str: """Универсальное входное сообщение фото-режима: меню + статус модерации, - если он требует внимания (отказ с причиной).""" + если он требует внимания (отказ с причиной). + show_test — добавить кнопку тест-проверки (PHOTO_TEST_MODE).""" info = _photo_status_info(status, EMOJI_DIGITS) - return _photo_welcome(EMOJI_DIGITS, info=info) + return _photo_welcome(EMOJI_DIGITS, show_test=show_test, info=info) PHOTO_TEST_WELCOME_TEXT = _photo_test_welcome(EMOJI_DIGITS) PHOTO_TEST_PREVIEW_TEXT = _photo_test_preview(EMOJI_DIGITS)