From 08376cdcd25d3fa309d5c3fa0891d4e2f0e5eeae Mon Sep 17 00:00:00 2001 From: Oleg Aliullov Date: Thu, 6 Oct 2022 21:32:41 +0300 Subject: [PATCH] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * добавлена оплата по YooMoney. --- main.py | 12 +- tgbot/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 143 bytes .../data/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 148 bytes tgbot/data/__pycache__/config.cpython-310.pyc | Bin 0 -> 1245 bytes tgbot/data/__pycache__/loader.cpython-310.pyc | Bin 0 -> 541 bytes tgbot/data/config.py | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 470 bytes .../admin_functions.cpython-310.pyc | Bin 0 -> 12463 bytes .../__pycache__/admin_menu.cpython-310.pyc | Bin 0 -> 2993 bytes .../__pycache__/admin_payment.cpython-310.pyc | Bin 0 -> 7803 bytes .../admin_products.cpython-310.pyc | Bin 0 -> 29490 bytes .../admin_settings.cpython-310.pyc | Bin 0 -> 5030 bytes .../__pycache__/main_errors.cpython-310.pyc | Bin 0 -> 1988 bytes .../__pycache__/main_missed_.cpython-310.pyc | Bin 0 -> 1705 bytes .../__pycache__/main_start.cpython-310.pyc | Bin 0 -> 3127 bytes .../__pycache__/user_menu.cpython-310.pyc | Bin 0 -> 14746 bytes .../user_transactions.cpython-310.pyc | Bin 0 -> 5824 bytes tgbot/handlers/admin_payment.py | 84 +++++- tgbot/handlers/main_start.py | 2 +- tgbot/handlers/user_transactions.py | 44 ++- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 153 bytes .../__pycache__/inline_admin.cpython-310.pyc | Bin 0 -> 5932 bytes .../__pycache__/inline_all.cpython-310.pyc | Bin 0 -> 1080 bytes .../__pycache__/inline_page.cpython-310.pyc | Bin 0 -> 5336 bytes .../__pycache__/inline_user.cpython-310.pyc | Bin 0 -> 2368 bytes .../__pycache__/reply_all.cpython-310.pyc | Bin 0 -> 2402 bytes tgbot/keyboards/inline_admin.py | 6 +- tgbot/keyboards/inline_user.py | 7 +- tgbot/keyboards/reply_all.py | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 524 bytes .../__pycache__/exists_user.cpython-310.pyc | Bin 0 -> 1690 bytes .../__pycache__/throttling.cpython-310.pyc | Bin 0 -> 2219 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 152 bytes .../__pycache__/api_qiwi.cpython-310.pyc | Bin 0 -> 12318 bytes .../__pycache__/api_qiwip2p.cpython-310.pyc | Bin 0 -> 3140 bytes .../__pycache__/api_session.cpython-310.pyc | Bin 0 -> 1336 bytes .../__pycache__/api_sqlite.cpython-310.pyc | Bin 0 -> 13970 bytes .../__pycache__/api_yoo.cpython-310.pyc | Bin 0 -> 6188 bytes tgbot/services/api_session.py | 21 ++ tgbot/services/api_sqlite.py | 16 +- tgbot/services/api_yoo.py | 255 ++++++++++++++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 149 bytes .../const_functions.cpython-310.pyc | Bin 0 -> 2219 bytes .../misc_functions.cpython-310.pyc | Bin 0 -> 10368 bytes .../misc/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 154 bytes .../__pycache__/bot_commands.cpython-310.pyc | Bin 0 -> 966 bytes .../__pycache__/bot_filters.cpython-310.pyc | Bin 0 -> 1474 bytes .../__pycache__/bot_logging.cpython-310.pyc | Bin 0 -> 854 bytes tgbot/utils/misc_functions.py | 10 +- 49 files changed, 435 insertions(+), 26 deletions(-) create mode 100644 tgbot/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/data/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/data/__pycache__/config.cpython-310.pyc create mode 100644 tgbot/data/__pycache__/loader.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/admin_functions.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/admin_menu.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/admin_payment.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/admin_products.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/admin_settings.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/main_errors.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/main_missed_.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/main_start.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/user_menu.cpython-310.pyc create mode 100644 tgbot/handlers/__pycache__/user_transactions.cpython-310.pyc create mode 100644 tgbot/keyboards/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/keyboards/__pycache__/inline_admin.cpython-310.pyc create mode 100644 tgbot/keyboards/__pycache__/inline_all.cpython-310.pyc create mode 100644 tgbot/keyboards/__pycache__/inline_page.cpython-310.pyc create mode 100644 tgbot/keyboards/__pycache__/inline_user.cpython-310.pyc create mode 100644 tgbot/keyboards/__pycache__/reply_all.cpython-310.pyc create mode 100644 tgbot/middlewares/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/middlewares/__pycache__/exists_user.cpython-310.pyc create mode 100644 tgbot/middlewares/__pycache__/throttling.cpython-310.pyc create mode 100644 tgbot/services/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/services/__pycache__/api_qiwi.cpython-310.pyc create mode 100644 tgbot/services/__pycache__/api_qiwip2p.cpython-310.pyc create mode 100644 tgbot/services/__pycache__/api_session.cpython-310.pyc create mode 100644 tgbot/services/__pycache__/api_sqlite.cpython-310.pyc create mode 100644 tgbot/services/__pycache__/api_yoo.cpython-310.pyc create mode 100644 tgbot/services/api_yoo.py create mode 100644 tgbot/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/utils/__pycache__/const_functions.cpython-310.pyc create mode 100644 tgbot/utils/__pycache__/misc_functions.cpython-310.pyc create mode 100644 tgbot/utils/misc/__pycache__/__init__.cpython-310.pyc create mode 100644 tgbot/utils/misc/__pycache__/bot_commands.cpython-310.pyc create mode 100644 tgbot/utils/misc/__pycache__/bot_filters.cpython-310.pyc create mode 100644 tgbot/utils/misc/__pycache__/bot_logging.cpython-310.pyc diff --git a/main.py b/main.py index 5abe621..64e8394 100644 --- a/main.py +++ b/main.py @@ -13,8 +13,8 @@ from tgbot.services.api_sqlite import create_dbx from tgbot.utils.misc.bot_commands import set_commands from tgbot.utils.misc.bot_logging import bot_logger -from tgbot.utils.misc_functions import check_update, check_bot_data, on_startup_notify, update_profit_day, \ - update_profit_week, autobackup_admin, check_mail +from tgbot.utils.misc_functions import on_startup_notify, update_profit_day, \ + update_profit_week, autobackup_admin colorama.init() @@ -23,8 +23,8 @@ async def scheduler_start(aSession): scheduler.add_job(update_profit_week, "cron", day_of_week="mon", hour=00, minute=1) scheduler.add_job(update_profit_day, "cron", hour=00) - scheduler.add_job(check_update, "cron", hour=00, args=(aSession,)) - scheduler.add_job(check_mail, "cron", hour=12, args=(aSession,)) + #scheduler.add_job(check_update, "cron", hour=00, args=(aSession,)) + #scheduler.add_job(check_mail, "cron", hour=12, args=(aSession,)) scheduler.add_job(autobackup_admin, "cron", hour=00) @@ -37,13 +37,13 @@ async def on_startup(dp: Dispatcher): await dp.bot.get_updates(offset=-1) await set_commands(dp) - await check_bot_data() + #await check_bot_data() await scheduler_start(aSession) await on_startup_notify(dp, aSession) bot_logger.warning("BOT WAS STARTED") print(colorama.Fore.LIGHTYELLOW_EX + "~~~~~ Bot was started ~~~~~") - print(colorama.Fore.LIGHTBLUE_EX + "~~~~~ TG developer: @raclear ~~~~~") + print(colorama.Fore.LIGHTBLUE_EX + "~~~~~ TG developer: @raclear Repo fork from: @djimbo ~~~~~") print(colorama.Fore.RESET) if len(get_admins()) == 0: print("***** ENTER ADMIN ID IN settings.ini *****") diff --git a/tgbot/__pycache__/__init__.cpython-310.pyc b/tgbot/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ad0a951b8f556ad91f953166fa5ad7f616381ec GIT binary patch literal 143 zcmd1j<>g`k0`?Df$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vAKeRZts8~Ng zCpBF^IKQ+gIki|n#N9nVKc(0+FDbu7za$+*#>Z#oWtPOp>lIYq;;_lhPbtkwwF8+| J%mgG@7y$LYA29#` literal 0 HcmV?d00001 diff --git a/tgbot/data/__pycache__/__init__.cpython-310.pyc b/tgbot/data/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caee745de6a80f7e777b9696c92f72aa6a34f104 GIT binary patch literal 148 zcmd1j<>g`k0`?Df$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vUKeRZts8~Ng zCpBF^IKQ+gIki|n#N9nVKc(0+FDbu7za$+*rX-dm>c_`t=4F<|$LkeT-r}&y%}*)K ONwotRSj+?@SQr4N`5^xQ literal 0 HcmV?d00001 diff --git a/tgbot/data/__pycache__/config.cpython-310.pyc b/tgbot/data/__pycache__/config.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c21b1c17c56f8a811c2e1bc5317a05a424286125 GIT binary patch literal 1245 zcmZuv&u`l{6eej|mSsCV4A_!vz_e3gpt07&fUWSnI*E}5E1V#9Q$WLD$RcYKkwuN9 zGc<5c-F3HN#eShSuuK1eUG`7xtYdfTt>;{}N4f>FqLlPW@B5zK<9m;y(eM$hKm9L~ zCuM~GF~;@ffN>Wd6#-C0af%|u&=RjuL>O6?C|O~Q7@?&tM4c_PbXI6tre*4`NaWH= zRH0tv(P~tsKCOL^BA?b-^;bk2zn6?}RHJx+nj0@5KI&i971Nq$6V>7wFTB@QQP$#& zWmh;T(8arYG8Q_dv5qZ_W5rr@eDTgTJ{1rG;G%T9bvrS!UoQe5rm8)7)ZYNwR&$9K zXh|qG)hrMtPz_YHEI~C6b!d4-E-`f%_#DX(7Z@sZSNIZVbq(BOOe<$)*<9d>;m8Dm zZ`t~O3ceNi8=|fm6;j74J*zlYv5aa{&nhQY@vLGQbx5mL8Cj)j70ako?dhuaVGran zb(op?UYq86f35sc;ZK-;6>$T?s1E=pE#IG_VDwYQ>}A#Ck!=%J&R)usvtY*BVchYb|NNKDoIp!7qrv!5a974j%3=u_e|Q$`iwuN7i$G6V5YP2g z$hYMFmVd`viI|01C}TC{RGjl<`bM&sPyhI7ooyOt8B2q&`@IK)U=iFu-tP{3gKypv zShr>@wB6^X`~Q#F4#yq8S(i2FqpSnG8tr;6vSDa54tc|9)!n1vXn6EhuOBszyTdO> zkhHto9rU8AHSZlA45FHGI_;ed4v+eFNYM?$?DqzHCx^#F!*4=SN{QpEmkxD literal 0 HcmV?d00001 diff --git a/tgbot/data/__pycache__/loader.cpython-310.pyc b/tgbot/data/__pycache__/loader.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..935623095575dc96dfa4a09a10df649d1a30c758 GIT binary patch literal 541 zcmYjOJ#X7E5G5&DU$tB}KOjRlFVfVl2-=`Q8nliB*j>07jCfYnil#s^gXhfM`X~CA zxOVE+xl@jE5|jiV?j7&l9gn&!3xX^Cd)EAX18(}OgwG3qb-X8YN)oP8=@~$5h z`T1(I-K;)cTw}(G)8Aq5iy?@%>ZnTXG28XxrB6ktTO*WV*n)`=`0Gbk)#$x5-EFnA zYWpau)Yy&*WAf!wpgRm;%_N9V#bBSBsh%xciO^`LO%jB!TzjisC502A$gXQm8vOCc z&GNI4@Xj+i`21P_i4RN2NWEa)Bpeg literal 0 HcmV?d00001 diff --git a/tgbot/data/config.py b/tgbot/data/config.py index 464c319..8aea4bb 100644 --- a/tgbot/data/config.py +++ b/tgbot/data/config.py @@ -7,7 +7,7 @@ BOT_TOKEN = read_config['settings']['token'].strip().replace(" ", "") # Токен бота PATH_DATABASE = "tgbot/data/database.db" # Путь к БД PATH_LOGS = "tgbot/data/logs.log" # Путь к Логам -BOT_VERSION = "1.0" # Версия бота +BOT_VERSION = "1.1" # Версия бота # Получение администраторов бота diff --git a/tgbot/handlers/__pycache__/__init__.cpython-310.pyc b/tgbot/handlers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9ceb52c72aa927aa369ff791089f3971d80f4789 GIT binary patch literal 470 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 MwaDX_&8(LH7eTgLDF6Tf literal 0 HcmV?d00001 diff --git a/tgbot/handlers/__pycache__/admin_menu.cpython-310.pyc b/tgbot/handlers/__pycache__/admin_menu.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3806528433f1cfddb546da6fdb6ca3f36b846a5f GIT binary patch literal 2993 zcmaJ@+m91f7@te;+jcLMWpChsaw(ctVq(;+8y7^_2n(@`#(A)r?U|OsOs6?BBW|)L zEJchGAc~l%S$5IHxNi#)vo5y>|AFc2JnEBgoAAa9e&3nd(i^s!({pBi=gfEceZQ|p zA`#=@6W*98+>3MEKe%ZA1Yz+GT;?**afBnh#_7Dw^EekYK^J9_%|$Js2j!q1l0$k} z4zqg!Euu%|D4PehnBF7z=y5r&C**{ll#}d!NbA-6Y@IFfS{Z2Iox%;dqz++o-wkZL;MCaTJuu2w8FU!-c)O_-`>l`AEGnJn6s zf>kyu{yJ8+RNb4y36YX&<%wdcXu*^@N%V3BroDLEv=pms!rp>u?*WrHmcIK&a+aKX z&T9RFbJzL9c~HOX+?DDJ&RTte-MU}D?DG55f*U}u+#nvIx?$aOjrPMS1p(dnKR6G- z^%q=^_rtKj&-2UNEp7_9dz9n3dF~8PcuN3o30H*8yM%){iqrNa>=>V&@C;i7v%re_ zdFP??r?c*?O3tHJTkBu6*_s*8&Q7fGZXDvK&E<84p0%rxfKahqDVwL=kWw+vsgy?G zJu3nofFI_=3P*=w{^afKDO06p*3i^aHfPwhpqkm4BS#E_m{XNm!^&DE98W71q9IVh z_~s#5cBVS#CcLGez9gLZI0S=mJ}Ha{bQGrcAPj&1_=DuMd$;!7IMOY!2cz=_{6cit z_M4ET2N0M$e$HUg8m%?Sx$QiJB(Acc&=fm_;``|~9HKZ3;ef7t!wAgWr02yZ>)4Jl zglvbw-T?#T=aS^ybZ*zba@LSA7wa`JV7-0`md|&@d=>USj}Sl%@eBw{H(I<2`#f5} zYrh4K-gfQ+E!L2t5(J>es9URFZLy?&waN2fljkVDZnQ`ZJ#Rz0U7<|62BOysM5Er& zb#pVJl0YR`+eq?_rK<~)^NaHcj9P`1+=F6z;6>&F%h4)(aQ}Z|)1GAS$YnU_cQ|q# zJY8dja0gZ$M*|I-Tos#K?E&k$`sOFON)2KcEEDB`vLx?Br;rgFOV_`aoLk5s_I4D6 zH7vspqKbgVf@i06=69Ku`z^ku*!k&nvz=HgUG41i$;hM&l`DfU+DyWrKzG3!baPgY zfa)o;im8HHMGA(lLyel93WdgE`7?$31SahUTVO8XYr?gm&jlpqyg&piP~(2$h`1<{ zz%$kQ2sAAK-x}-2Iqm>w?mGuv8owXI#Z)ag?Fw|(#>!$8zW%FpaPrXmr%uK;mTs&{ z;{}7L6Hj`^vuxt)SGb^5QR34cZQX!TRVx&|c6&Vu%M+tuW0Rop2ZCD>pJ|yJX*}v) z*qd>B9X38j2}FI03n5)uAurfPTQMmf!1h41I2?e%4Sxy}3{h&a z4m%JY$_Ry@+mBeZL|cHeGT@Y$}WB>IX^@Ft=DTHbF1}h5>z(G4(pDv z@YVG#KZVS{7EWUy?8<4sP59Oy16YI5V*I0;h#>=dic)tU5PqD3q8PuXQS# z#=4}}CQvacYKc4Q!ELLonfNBt$~W|prO+K~M(FT=BLf{XUo2}DWQ!*7kdbys(;27) zZm<6bBkwm_);n4MVWLY>q*&!MqB1tHxHVCSk%;xP$hZz7r>PS>>|#AA&d2$b5a);B W7r%Xh6yFzay;87F#o%6Si2n~IX;u3G literal 0 HcmV?d00001 diff --git a/tgbot/handlers/__pycache__/admin_payment.cpython-310.pyc b/tgbot/handlers/__pycache__/admin_payment.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d636320d2e8155650f7b014f8832088d53b39bc1 GIT binary patch literal 7803 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 CxeYb| literal 0 HcmV?d00001 diff --git a/tgbot/handlers/__pycache__/main_errors.cpython-310.pyc b/tgbot/handlers/__pycache__/main_errors.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d5adc8e905e49142a6bbd91da99471504798888 GIT binary patch literal 1988 zcmb7F&1>976rUMswci`taiJll(V;XfwCigz#*{*v21+hTpy;A%cP3le`pV2G@tQR_ z-cl$gDfCik39;#^wW-lF>4`GQbKq#WvLq4`JR%hZ7U$eCQta-X$u`0e{89A?eRljD{ z{JK^58&<<_TFqQu@mhY{YGcH-z0N+O2E$hftc>f+3}98pIy zI1w6kNp>dUA&m!8*sf&09fiV`ZW!3&x*IY3O7u^I0X#em`RJ8FSI^o*ChbzOk)2em z<9VgXWn!bSDZOuG9c5FpVgukb`k}PFa5!WknAsPmItFOwksh zSfVkW;A@D_Q!++sAEPzAMz+Y9P!wbSY)tkvs_o+~ZLCrK6rvTd`akj7A+JF= zcZ?cw$rE&8jDJM8$ppGw&h5?9lZvN{V+2xtKkt3$ z(l;(_zI*mU7_dvDh@CaV{u&!d(-meAN>jvrG2m__oxaDi&Hy^B?+n)Mt1;uFmw1^& zPe6xT^Zj^Kw%*7NBNiM^HO;a|ZI{L?V7<~`eR1d34Kw*J-A(Q#57O=AQM!{nFq5b0 zB>4^KZt}aC+)wT%PfSo8sAIalyt33^g_dn`7I`Dvcldf7#h-w~zixkTCO?1;I7xm< z4swUzn#nzI^f&f4>a)Z>x&r<3&|tv;F?Z8v_=pF=LL+&E_j^+1#u*iutr`b{8^D zNX}b;BGX}JIax(So-4VU0=%lkn#Y2y>N6pnA&Y8Yv{~IE zUcjBI4t@yMk7`HU1m_pJb6MMQ!y$M4o`g?RaMd8$d=9jya@6xehXO{`J=W<$zRpJd z(BV|{+`w}KW=Bw^yaq*mP8DX5jB76Bpyx!cEv`a^*>Q=Fi@36cA#CWNmgP$tJsAGqbDK zh(m(8K~xDMI(7=Q90T!STl2f_?SLL(wBA;{B^Mmaa9`CMp5c{d*w+=7Xo= zc8gUv$=KgDHm$7{Zf{k$4OZucCCXl7Gg@0?=NF9T>~lb3G)ZR3wA&S2O5pAH7jDhP zorK>>nlvlVd11Kd`D-7hT=cTyEpYOdIr!B_?3~w0-s9JK$P>;$Pgxh}M8rF3dr9za zX8U0*c{^DNWJcbCm?p-~@-p!fo|!&uAWCo!pW_%5l^yXh$?*ke7E(nu&e~45mt7oJAW+O?Tjv8elZcS6+q6dBd?BVm_#)>x&MS$?fkh``7MKkJ@S*z{ z-6SUo&;WDu&#!Np_zuYmUPs>MLR7%0aScfg#O(Dm4>4T!5+sCzHO*`YF8bo zgTXgyuK^5@pMZa=_EFkZPt+r|hvtUbSC8LTkJWBN9jU#+I;cTVM}z)gL;V73{D68N zR9~rG$3DLQw4uI(U`Of@0v@P+&_jF-_++pF!b5Nd1%^2QpNHzufxMTX-NRlx^2A!& zZCZbKo0x<{izy`Mkzn1ki6s$7?G!pJqX9d!JoU56a}j=)7;xA*mtI&on^yi3moPHw zeFEgQMcv5kJyd z`u=Cg5;{R*h8b$XOp8R|Hqa{?G!D{O!%dGP8jav(a2YjPor*U=nr}`+6Av$;Fj&-y zbZcG^FAFbnSRlJz0v#>{BFoArhNRc!QeevpysX{X6GNH=p>+5ipLdfW?#SU4P}S4x zFfZ|(F!mV4D`LD0L;V`>EykW;(ixT&?p9V-$fic{PVIrNPNIzl@urs{sXhG^N3Hpk?>|>^qf1p%eF;~#@)>Qnsd(F`#ZmL z&UG@Glmfp~%IoEidKBe1oOJ$TFnI$W@d;5Bs!(DnHqi;ev1+NdrfYUYkI1=ZMeUd# zljDdLw-b6oj-yu6PU$H*j#-=Rw4SyzdPdIUR+pXCvvy9;+1+|KQ7Q^ed{6Wq=#$WI zX0fSW);+J#6y3C-(lpa(hLMQ~?V{OFBlASx0up^45;+!WN_5j6DX~@B$byZ{V5N6K zYtOf=v)Mzgc!%o#@XWfDt#E&r{j0y`f zhYiabH_FrRdW_dWPNg+yyFI~pNqDuI!`;$^S+!s>X|t+Vn&7Mk7BUs)mIQNMvsw{n zgCtH->1;s@qNCzXuO1{u#d~bRw5%XDDo#0kx)2Mx$Gv)~Y`CoA@OsIqv8vv)W=Whe zYb+G2Il^>Jr`jRbUJAuBsA{^*4n=b9Y1yexnA|SJ^-c05T<$~9gng+z>6m3U6FF|w z56mR6J>qbCCfOW)XwRf@IOf^ojL)Ry*ep+14VwkzMSvnITsT7zw?i0tH-KDL5$fhI z0(}&oU*QohG;?H@TvryAQHX-K6{5HVI6wxJbE>P(s`KQ!wy5y^Ze&)a>H;~ZxzSmT zY6HqVp^@n*-#@EN#c0%xw^w5eYReW?PAId=b$Gu>I@b#EF$fz|lv|#JoyR2}CJj<@ zU^x}D`Vit&@s2}taD3#!cUSZN7yfGFLf*gU-)vm;SN)&-+l>p2xyBW_ly6+{mtp-L ztbPWgIe!I47xRtt{!RZ!)I_!7!Qt_d8ze{rU#xn`Hu$txDr!i)-9i z(8jz`kpADiaPo%A`@tX|f(FKU93x#NU}3WZra^D#+3`4-6`qGTkI@Nu_&$~Ig`tPq zkFH&w%lqFp=KcGU8F8ZpuzF&cetnJ6_e@0F4GVBs6I8>Cmj>vO4CCfNYDQ z*MOEQ^7BBxyuSqGTlVk5a}WNjdC9^R|4!pFQq;fK_+0Xl?*J$i^qp|u2gvULx`^>@fBBz5_g9~Q&R@Wt zV32ljZc7vGW?F6nj^AwojuG}U%r_7y0*gqXHn4|a(gyawZ1oxN_O0D#D>~l6?@NSV zfsr?eJNV&Z-v0_22u~c`8n@@3F^yX)qwZmu{q|@ zLi9;8;&E6Ak`vsq<;@{bP5M-pq@E<{4?soW?Gy7+OigLIKRBW`R@koh7^YL= za+k6s=>zK}!XgJ*GdxxEJ=CI);i4gmM$IgV(-vG+WZjdMP9F-5c&=%QB9`eQlqR@r zVF?l(Psul7lg2%zYuuSM$4$2cF|KFZvoLgmY%_LB&B_**rM?zZOQ-RA*M7Md&0-#t zsX+!9M+!?UJAzb(tE>)*gSJCGi;dt_K@v4hawHAq5c^(|&=QfZSTE_y^^#n&i}aCP O9A-(FL7z+ZlfM9)Spf0? literal 0 HcmV?d00001 diff --git a/tgbot/handlers/__pycache__/user_menu.cpython-310.pyc b/tgbot/handlers/__pycache__/user_menu.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35138a5a7d8fa0dde5d4dd06ac749b1ef1d3fd33 GIT binary patch literal 14746 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 K6~7;t(*75t;d=f6 literal 0 HcmV?d00001 diff --git a/tgbot/handlers/__pycache__/user_transactions.cpython-310.pyc b/tgbot/handlers/__pycache__/user_transactions.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b04f84e2f977f07b5bb037bee59df94b4470ee67 GIT binary patch literal 5824 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💳 Введите номер счета Yoo аккаунта 🖍") + + ######################################## ПРИНЯТИЕ QIWI ######################################## # Принятие логина для QIWI @@ -101,6 +119,21 @@ async def payment_qiwi_edit_login(message: Message, state: FSMContext): "🥝 Введите номер (через +7, +380) QIWI кошелька 🖍") +# Принятие acc_number для Yoo +@dp.message_handler(IsAdmin(), state="here_yoo_acc_number") +async def payment_qiwi_edit_login(message: Message, state: FSMContext): + #if message.text.startswith("+"): + await state.update_data(here_yoo_acc_number=message.text) + + await state.set_state("here_yoo_token") + await message.answer( + "🥝 Введите токен API Yoo кошелька 🖍\n" + "❕ Получить можно тут 👉 Нажми на меня\n" + "❕ При получении токена, ставьте только первые 3 галочки.", + disable_web_page_preview=True + ) + + # Принятие токена для QIWI @dp.message_handler(IsAdmin(), state="here_qiwi_token") async def payment_qiwi_edit_token(message: Message, state: FSMContext): @@ -114,6 +147,33 @@ async def payment_qiwi_edit_token(message: Message, state: FSMContext): disable_web_page_preview=True ) +# Принятие токена для Yoo +@dp.message_handler(IsAdmin(), state="here_yoo_token") +async def payment_qiwi_edit_token(message: Message, state: FSMContext): + await state.update_data(here_yoo_token=message.text) + + await state.set_state("here_yoo_client_id") + await message.answer( + "🥝 Введите Клиентский ID 🖍\n" + "❕ Получить можно тут 👉 Нажми на меня\n" + "❕ Вы можете пропустить добавление оплаты по Форме, отправив: 0", + disable_web_page_preview=True + ) + +# Принятие клиентского ID для Yoo +@dp.message_handler(IsAdmin(), state="here_yoo_client_id") +async def payment_qiwi_edit_token(message: Message, state: FSMContext): + await state.update_data(here_yoo_client_id=message.text) + + await state.set_state("here_yoo_redirect_url") + await message.answer( + "🥝 Введите Redirect URL 🖍\n" + "❕ Получить можно тут 👉 Нажми на меня\n" + "❕ Вы можете пропустить добавление оплаты по Форме, отправив: 0", + disable_web_page_preview=True + ) + + # Принятие приватного ключа для QIWI @dp.message_handler(IsAdmin(), state="here_qiwi_secret") @@ -131,3 +191,25 @@ async def payment_qiwi_edit_secret(message: Message, state: FSMContext): await asyncio.sleep(0.5) await (await QiwiAPI(cache_message, qiwi_login, qiwi_token, qiwi_secret, True)).pre_checker() + +# Принятие приватного ключа для Yoo +@dp.message_handler(IsAdmin(), state="here_yoo_redirect_url") +async def payment_qiwi_edit_secret(message: Message, state: FSMContext): + async with state.proxy() as data: + acc_number = data['here_yoo_acc_number'] + token = data['here_yoo_token'] + client_id = data['here_yoo_client_id'] + if message.text == "0": redirect_url = "None" + if message.text != "0": redirect_url = message.text + + await state.finish() + + cache_message = await message.answer("🥝 Проверка введённых Yoo данных... 🔄") + await asyncio.sleep(0.5) + #await update_paymentx() + await (await YooAPI(acc_number, token, client_id, redirect_url)).update_yoo() + await message.answer( + "Данные yoomoney успешно обновлены!\n" + "❕ Вы можете пропустить добавление оплаты по Форме, отправив: 0", + disable_web_page_preview=True + ) diff --git a/tgbot/handlers/main_start.py b/tgbot/handlers/main_start.py index 28b343f..b72120f 100644 --- a/tgbot/handlers/main_start.py +++ b/tgbot/handlers/main_start.py @@ -13,7 +13,7 @@ 'buy_item_open', 'buy_item_confirm'] # Игнор-колбэки пополнений -prohibit_refill = ['user_refill', 'refill_choice', 'Pay:', 'Pay:Form', 'Pay:Number', 'Pay:Nickname'] +prohibit_refill = ['user_refill', 'refill_choice', 'Pay:', 'Pay:Form', 'Pay:ForYm', 'Pay:Number', 'Pay:Nickname'] #################################################################################################### diff --git a/tgbot/handlers/user_transactions.py b/tgbot/handlers/user_transactions.py index 108a834..cce4628 100644 --- a/tgbot/handlers/user_transactions.py +++ b/tgbot/handlers/user_transactions.py @@ -5,11 +5,13 @@ from tgbot.data.loader import dp from tgbot.keyboards.inline_user import refill_bill_finl, refill_choice_finl from tgbot.services.api_qiwi import QiwiAPI +from tgbot.services.api_yoo import YooAPI from tgbot.services.api_sqlite import update_userx, get_refillx, add_refillx, get_userx from tgbot.utils.const_functions import get_date, get_unix from tgbot.utils.misc_functions import send_admins min_input_qiwi = 5 # Минимальная сумма пополнения в рублях +min_input_yoo = 5 # Выбор способа пополнения @@ -46,10 +48,15 @@ async def refill_get(message: Message, state: FSMContext): if min_input_qiwi <= pay_amount <= 300000: get_way = (await state.get_data())['here_pay_way'] await state.finish() - - get_message, get_link, receipt = await ( - await QiwiAPI(cache_message, user_bill_pass=True) - ).bill_pay(pay_amount, get_way) + if get_way == 'Form': + get_message, get_link, receipt = await ( + await QiwiAPI(cache_message, user_bill_pass=True) + ).bill_pay(pay_amount, get_way) + elif get_way == 'ForYm': + print("test") + get_message, get_link, receipt = await ( + await YooAPI(cache_message) #, acc_number=410011512189686 + ).bill_pay(pay_amount, get_way) if get_message: await cache_message.edit_text(get_message, reply_markup=refill_bill_finl(get_link, receipt, get_way)) @@ -88,6 +95,35 @@ async def refill_check_form(call: CallbackQuery): await call.message.edit_text("❌ Счёт был отклонён.") +#Проверка оплаты через форму Yoo +@dp.callback_query_handler(text_contains="Pay:ForYm") +async def refill_check_formy(call: CallbackQuery): + receipt = call.data.split(":")[2] + print(call.data) + #print(receipt) + + pay_status, pay_amount = await ( + await YooAPI() + ).check_formy(receipt) + + #print(pay_status, pay_amount) + + if pay_status == "success": + get_refill = get_refillx(refill_receipt=receipt) + if get_refill is None: + await refill_success(call, receipt, pay_amount, "ForYm") + else: + await call.answer("❗ Ваше пополнение уже было зачислено.", True) + elif pay_status == "EXPIRED": + await call.message.edit_text("❌ Время оплаты вышло. Платёж был удалён.") + elif pay_status == "WAITING": + await call.answer("❗ Платёж не был найден.\n" + "⌛ Попробуйте чуть позже.", True, cache_time=5) + elif pay_status == "REJECTED": + await call.message.edit_text("❌ Счёт был отклонён.") + + + # Проверка оплаты по переводу (по нику или номеру) @dp.callback_query_handler(text_startswith=['Pay:Number', 'Pay:Nickname']) async def refill_check_send(call: CallbackQuery): diff --git a/tgbot/keyboards/__pycache__/__init__.cpython-310.pyc b/tgbot/keyboards/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d09d5084122bd648149b0dd5eaf34a1e824d69ad GIT binary patch literal 153 zcmd1j<>g`k0`?Df$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v8KeRZts8~Ng zCpBF^IKQ+gIki|n#N9nVKc(0+FDbu7za$+*W~Wvr#Z?z*X literal 0 HcmV?d00001 diff --git a/tgbot/keyboards/__pycache__/inline_admin.cpython-310.pyc b/tgbot/keyboards/__pycache__/inline_admin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae15dd6af534b1b2931eba3e4c7187413aab41f9 GIT binary patch literal 5932 zcmbtYO>7&-73MCNKN6`QOO|ZOcET1$Q3ZzN{<$feCXR#J2!aqOk^(gkB`D5XW<_$D z*WR+}fA=QG|X-imhz z&)w#U#+IU}mTNqj!fdfptd)2!*=5ZiC>1M}*E?58d5m%MA< zQe(73vTE9Pan8)TV?4~&(~!d??_#Jx>QN`VG!IGBKAc^SO4=Vk3Kjimd46_T_Y<_M zg|hII^MRc#N8|{&9_^j^C7SFRt76X0ykkLG)1G0)pzmY)pz0I!p@5!a`f$*HtoY{hu?0!pDv-^t`*c7dO zV_Q#q&aKXxQgJkP^fs1D^R;5t44NlcpmRTYw75_>gu(n6kERs5e!j8wNug@? zUFn*BKZ(?M{6=rrfm+O$X1+j`#`d26axER1x38tf!bU3rZHdbz8+~x&$~lIKO!KsN z53UbeZEQa5ICVQaGjn8qx>TB(J@}iq4!k|3`B7I^TrxIDeXOL|?IF{Azj}1{&lb6~y94rFC>FE;rG4 zXAH6PgSJz2T$?weFh83g4(e*9i89in1WQM>p$@495PDs6G>B1!(qXF%>?Tk_fR5OE zP{g&kme$i6|66ZW(+t$%tv#jj*oev(A=>4=G3pBs!_D9E(doVLB5fjaQ(ub6-A+{1 zgnmIg4$l!0SCcy(_%ptZ2?RV5yB-w?Y~j{8%dyD43#*v_MI*8@sf0-gWO*rg^G)0b{)=LfJ6wub(K}qC8i2B<-}aXzG^D8phtX z=#~zCvXutq`-4Rwi;Y984GeXpC04NNrivYV(Y^g06tGi0tq*EReNx#g*Iv-uHVV5m z@&q6+LMjtG!|ZS4dP5-i0JdVfIQ&GZ!0$-2`4{S~GU zFx`NyQN*AO6_JZ01l5OwIz~)Bf5in9P<6jQ01U`U3eLR!9;IwOBOnG0gd;FWrvg#xJs6z_;>LlX5!q9@ zQVB$9SVnFdY3-w{8Sjs+LI>aYsReQ@ew9v~$100oJsQ*sHJ z(V~uwB9&XGMR{=J((NFzpUz+zSCHa=%3!mKXgONKiDb@_3ksk(Q+T9h6+-P~@heEh zuVN4AC=h1Wv?;f-9cS@eY>d?{yX=&$TA?IOI^xjEW!EPmzxJ0i8JH~L$Xx&(4ix~q zOPRH^%Z+i2-8H&>v|Kl{>y%M)`uQh1I$-blEYcY3R#li4(=oH0i7rR|RM?7)JR!}h zb;Oj6M7?2fOUTKX9B%R=hP5d{p!9S+%&*5O&;F0mCn-ukeM7To{l*RDa~!rc+~#nz z61jEu3(C5$dMmpS6uKrq94Z~myAjJS;QYfIwN9r3;CY6^N%Q2c3^`NhIS$M<%Ta43 ze*os*HJJ#z=QUAdaDwn#aNCr#s8!+Bcx=SwPe6KNH7Gr0^CruA)@tCip^P+^lXMd6 zwL`Waxf?A!L3P}C4#i7!D6O#KzlU&m+JM^Xv_accB2R4nC{)w2hSeU#fqY}NDJy|* z#=Ct}`CVsQho6Ri+1U;s?(*5rwm=p)8Ev2LY=&Cfg)o$IfLbCjD{}G7Q#T$-k{((9bO>-)z5NxLSEf1SeHmWv#vs> zE7#h{L_ojVJP{((WVf6!?UF3l31nJ__baQRH0S>(y?alLcGz;P7XKf9N0$U2&?s;Z z1u8w-l`1%IXM+ooiyHtR1nH(=1xJQ+jcqvV3b*9g1zZahLVekIT}py*)c7;Sxwc5p zcxA_|!im36E8GUr4j;_Q?@?Qim;y=#eTJV3M=lHbL$J#qQ9%my`uUcSwHy0xfY;uI zg1me?{&cs{ezVtyb#|tQ#wPhQ2t3u99_~l$|LaVF5hil-$LOtN83Gh!2yDZ|%NsJa zq3@???_H9K?j`AfzFXja*n+-bF$nrz1O2Jfman39Dv@(J_=Ru|MD8}cwm&JG+h``e zJkOrU*6xXLw~T~;g+_8O6|bXsLUYQe82u>0`Q{A^ks*Zc?r}GS?&nze4(R?H6bYdl zwy2#hF@K;~w&rB9I_)gfOzq4?Dr~gGyb%7 literal 0 HcmV?d00001 diff --git a/tgbot/keyboards/__pycache__/inline_all.cpython-310.pyc b/tgbot/keyboards/__pycache__/inline_all.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f706249d11f308124e57b75f208a33ef91394e9 GIT binary patch literal 1080 zcmZ`&zi-n(6tC~oTqA(yN zmX^ZE7F9%wQb_-W^Xd^Mw$2QMca9xJAwA2_=l6Zz^Ly`}Nx57SVC63x#=X2C{NgXO z3w**uxV;e=Bp}feY*7_$NtHwai-*GJ43?0DGAR32g546z@!c0m%}&ugDkNwTl@fGm ziY}v-*e9yFsjrN#C5r2)k|^>s=#445nxKUl^yU<;CTJ1e+7aq&zo7=9E=ARC$1)xK z1b3Q5r|79p+krdpeH8dUae_6F{5*awvrl1{U4;9r$IjRw?1o2s6@xgtCbczNH?8{} z?A67nZ0MHN)Qz@=bYBmuTzzshQGaKB_G6*eA%0K;>gDPCp3F|!h+V*ap0cCmz{6Cd zc-OS7;C4)WcObK4APwZ0I}8uuIb?%qCFZ^~J)h7{u$m_D5fUGU`{5g&x>_iHy3nVp3PtiQLOmP)ZrUSZA9ecXchyz1Z%55QY=!unx%LuMmr z)oig>s-f=xLc7E>eUmsm^wl6&*5;BjeQd|7g#aj?)k{%XH%W`?_NL!)u}3Ayoo2v9 z866?D!jDo*_a&R~l#Y^LuH$$UD!@jsF4CnTh!T literal 0 HcmV?d00001 diff --git a/tgbot/keyboards/__pycache__/inline_page.cpython-310.pyc b/tgbot/keyboards/__pycache__/inline_page.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9ed1eb3c0e3d0a28dc648edfc5bd4cb6192361c GIT binary patch literal 5336 zcmd5=OK%%h6rMW|dz{3H>$vGFZLIPr;Ssk$AB56Y1qmTU7Zg}nRF>mAgdu)$XHuGI zB9(?#RH8yctbouKu^>KIh&u z=R4tQHkYa zm3Tg0G4m$+bZ)$-gOblP=m)ltnKoV46Rv0N^cimo+T z6Sn1?@_VS$cC8BP{Zy~l9NV>PRp(TRk(}@`Q1;?|7Vn>5VZ>GDl{w}zP}Ngh)noH) z$`C0J>NudxDX!+~jsAIco;|0W706*WyjoaC`%{G* z9_WJ3V;9uRj45w#31na`6Gsz@rydWbqDL2Hk_)cofGdx?@k?f7#Wv+K14nZ~<52wt z)s2zDX~iazp-LGllRSgo=sXugetp6G&Cz`DNVi}p3&5?Yh=xSGW_f_g=(>4%??IQi`#CYR=29-es9!i^Hny!$Y@o$ zJW(u76?oAtuEfFVkBcAwklmA8A(O~bV^td)8(Zl|bLr!yZ(;oOdiCqG*`)rz@5K zL*Ed^>ZIjsMb3TAo|^FWO3{7O*GraN_BF>9i-sQ;R;6~*5`kHV2ZPP~=2VCm-ze3l ztFF(Ai;8#va#j!LUUe+t8S0adau4pHT3_j$HXo$=nTp)?hKT}Euh@n9h88I(FTr(Z-Ap6!qE=l6KeyCIN)d! zKbUWV_cXzgWHf*xK^npFvydM=Ce06l6Y%J3fnzd+V}D!8Mj$zo62S2;acz5^1{?>D z2@~H@BtT|2HoR@2BrI4?07F4|6@5g=aKr$S6p;-evqS3_1*j5fnlVTuLu4b7AtED0 z$i4&eAZq^RwoG8Ek7M)(Q%&8jsXh!Y9Zgk?Vsx}c5yR1Tq@RdTB;C?Y^s&9e+B;Fp zNH<>4&TH7Yc!bEKbV71YjfY%g6d`qtxQfR(yTImD86`Ct4G{?uCDSlowIxcTKa7&& z0Hi)=csf@R&t7#6PxTCnj(Bx&i+S25z$xs-2x3kwY{g}Z;$Cc?B3@zvk#220dU`$T zN7O;wi}Ah?%-gU6JAgzcPEvM-xsAV+=4sE-2ks+RS#et*_}Gmvn~6%2tv{G5VvWE6b;sep;SiKC}G6^1I6) zX0M)GoZZpNC<1K2ara`cpe@VjEjCeYGm$MsC~pwNUTh;WOk_Ke9UzNwk)?W&va}?m zVkZsUN92Bxd?HF+*E_d054o0g0KBKLO1ie5C<>=hdx#A)^Ex82u2Q5$9Nx-e*HgNV zavy5CLFHD&;IyHuVjNsLyEgIyNV%GP{I+u!2cUcML34OfPCZY|&9*3N})?c6uS9a^1Dly;B~qDUE+F^t96r~PftwGv~%yXD$K28GC$a| zs*6!~%;ZNRL#MxS)^;Fy!D4@FSZwp%Gkv=W{UNg0PU)_A45LVOZqFx3g+&0n6;~jY z6|Lx^Ea?F7QIH)*Gr`;eE7e86FYm=f_8FOdqmJ{SV8cm|y z#@{0UE*Qgq3MY}pIb+4TU2xtm<3k01Zpc(fCQ5X-7j$cq7YmtW$S5qxRS43)6x)>P n$P1mk%b5o&$S}&*A?#3b$WZY2f|^lH)4U(Qo#rlj`*!{dZ_oC- literal 0 HcmV?d00001 diff --git a/tgbot/keyboards/__pycache__/inline_user.cpython-310.pyc b/tgbot/keyboards/__pycache__/inline_user.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..288eda973edf16fc6b2c43c4c12ba78682ed4ef4 GIT binary patch literal 2368 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 literal 0 HcmV?d00001 diff --git a/tgbot/middlewares/__pycache__/throttling.cpython-310.pyc b/tgbot/middlewares/__pycache__/throttling.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cb0d6751fa5533cf082e587da180b4aa39b316a1 GIT binary patch literal 2219 zcmZuyOK%)S5bo}I?c0t?LbkY}Qy0)vjr@FenuWIsUvqs?Y z{#=Sa^$7VLmFdR@S#?!Fg8C7vq&UY!i*VJE(T(pE zj_Pd)DUk$4B?#gy)koMVU?jPz$=uIb6B3u_;f$(M=f21>sVc&e5%N&&x_@ z9A4q2C4hy^LmfVqms4JFkk6_7c&pjB*Xw<^?{McUb`{cn z1(N=WNxMySWAi2@+fWZ%jXv3L0!-e)WS4FY$UR`vw)cg1o8C6>wB6<6)NzJ_Da=|^ zWVt?e0!R4pvvvP6ayb!7FZED8^lP-`h$uq0=29Z=80R0Kg$?aDk2 zdVpuaVlJy@b#$hXnAzgQ=(u2P<`O$ZyCUb{PriiW3~uyB1z6Phq+I0-xMG>mwR{ox z8gUxUb9n|7%Yi;>d?$3NUIoGKR%nIVtVPdKmo;dMF?xo!fGIAm+-3jRe{Ws5F(K7) z9d(}dSyU&HM+{t#ADm;l3~yeC$qogaq2Jx2au$%IoE^|Hx>!;;+Sc+De6jZqh{ctq z-yVKFKm2C+)9~Bjqv7{QgW-2aJ4g41k1oy+e;huZKiV1o3=2OTeF?_LoyCQfCFo!+ zaVHXj3#jnCm+8WhVk6mXvoe`)gXjOHN?rgPhNut{cDKe(Qv2VnH=dh;XYc~Yb@bT) z(Qe4s;IF6!L7MYkf+T1J!DqcNDJfx!Q^I$FK&i!%mKSl_P{5%$N`+p_xx@q*a+tV^ z=BPVBQ%-_lD)dvh51}^A29H-*s1*V@I&AJdHTGpglBb|SSjIykC-%r5g^vV4vRm0^ zeP)1&D6EVhoFgxhaB3ceCVjy2J{?$;+$XYSbatPh-Y=1qFT*~076jCir^-6Pvg-D- z=#a@baTy&>k+#Z3ltbC&CNTz&2DK@Ut#ikf+gVKVC`{B+XR_ZoXvwTx zGKE$877T@#X;IrP>lWK(`$XY|alR_Uw1fat%Ml8C9YwRMQ;%^Uv8e)u1JI z;-Wd;WInqk2~Lk~Jsl^igUsE~ah|DBcQC!agH5>;#|h%kYmY|G4}s YizNe>5IQvrVwTQABF&G@+9zN653Kn(!~g&Q literal 0 HcmV?d00001 diff --git a/tgbot/services/__pycache__/__init__.cpython-310.pyc b/tgbot/services/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e05211fe865fa44b7ba1b47c7fe3070e06dae6c1 GIT binary patch literal 152 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 literal 0 HcmV?d00001 diff --git a/tgbot/services/__pycache__/api_session.cpython-310.pyc b/tgbot/services/__pycache__/api_session.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ceeb0b3fbc55fd60f9fa831d89c89e4692a453d GIT binary patch literal 1336 zcma)5J#W)M7{0qWj+-WJDQzhfB#>CLGz^TW6m=+Ff<$2PVg=tdxN`0E&H*(l5{Ukg zcFgbKUwCC=?#9IXoNLvIionvndhh+X=XpPzw%bicpYdLX8+FEh;!^!;blIh2o|BMF z@|YcSpL6IU7QWbLvL>B#CY|rXuhFe8UAnn+bEN3APU9D4vJTI^H=`^{lR?}IVX1y4 z%GEQnD&}*^d?6R?%Z^`@TscSeLt)=`e3v{8>76@%!y+{E)+=+GgneZU0pzY$*;psN zkXJCE3p#sru28dNXDlGuXH(vr61~6_`J_8W#fMX-TNL+ur~BS0ZMtc!hTVQT)}b=p zcl-NkD$POiApFs3YOOS7!kO2 n>baYpj-q6!@mCd7#t5zVwnuXBMX@G3*kyyxx40*koYl2IQj!P} literal 0 HcmV?d00001 diff --git a/tgbot/services/__pycache__/api_sqlite.cpython-310.pyc b/tgbot/services/__pycache__/api_sqlite.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15e7425e424cac286680b8bf2bc0ad26f08ec2e1 GIT binary patch literal 13970 zcmcIrTWniLdOkPaDOtY6wrs~fmK{foX(_RD-8dJ;Rvc|C*(=G3%}v74oFj!XMapxi zm{!R)S*O7ErI(jJbP-f4`cM}wwm?y|PX$__K(}x0-Hci(3{+Tm} zhsTGKU7(cD+~=Q}fByOApMS>9p`omX-_LiyQT^kOHSMPq3I9w)-o)qrnXYL}V|raH zNnbDNB5srn_(t7au}YRsd1gJak}M@xQl->Nx|Bwm#S&j?r3_0t*(HOeSo%w=l=EX5 zmPIVjax9NBLu`l*!yjfl*a-X`Y$w|Ve}wI3d*JV6Pq4l4cd>nJKm6TnlpTP-haF^x z;6K5hWQXDJWk;9|e;+%_#^CQ~$JlZBqwFbm0{#K^G#iJ1kQLZ7@DH(*tO)-}c8X2F zKg=fCv+$3w=h$iZHao+fhkum4z+Qwu#$IAC!#~DeVc&s&oW07~VsF78XXn^?_yso2-iH4SyTIOof0E6x@4_##ciBbwr`Rl;gFnG8vCHr$+4tBy z{Abw$TZI1{yTaasf116|uEIaVuCWsQ=h^q!2k>8DAF_|&zsU3jtxb2(Sgy`jrf zi|>@rPc2TpHMKBZFunA$(<-kuYHb-}m6qdWt97Ts%b&DX>Q#ek`o9Ex`p)5Vi*RaM z*Jx=S?Nj}ZeqQ@9|AEmpyH-c1hu zajU$x+Nw1hg@l)^u5q`?J(D+Yc^S9znNw!9YRfZgtnHcAX8o?lhd|`(*CwyH4tFP; zb!T~Up}EGZjyt({;X<>?+?mGpW^1ywOfCw2R-?SiYOUp8XavzM>%8D=z?D@qoZ$_o5))t&Lrnb=GCiL*Aq5ed)+A7RpONT(G*aF z3;6Eug|iG2AEvr`NB#a+smG< z*W6aMxw88D0V0`%lhm?$^1=GiwN;XU@=}wpR9X{f>&(gef;ib5< zTCY?c&!Rjp`B|mD=D3h36Kv)qpve!CL(>&%e5kL5eaLk4a7Og3Vd&`xd2__zPa>g@ z<-~zN@J=Jr(J*rTE5S@=fZZmuzSI=EX%fI>@Mpsan4FkfPucIkGd(|TgV9rS=La*H z??e-P7dfK$yMvI35)(Pi!wCw|5Y|uhjjCMX%Wf?5OunD$5ZeWJ3I;z!VZp8lr*=I| z^BBsy1k_nQ4|ZiAj9C0IqE(Vf^&?Rskrwj#0Rk<^Ud!0jf9pusY?&RiY<0|y1W7Gc zs=@HrO5V|0sXN+oYSYj)vl9 zlo6ULF;T~(6Lr^^TR*rkeR2BSqWz5h_WY&U{;9f~=10&tx5)|E#g9^yM2wHY@zP69 ztNKZ^;oP;navA;kH+OMMAeOl|p5lbJ&-|=twBoYSlgBOVQGjJZK zdzE^fpQ4J91(j7@aogu9o2H1Lfz#JMjh*J>9KQQ+!wKeNPglcyXktFFcs3FpK>J2A zmj8#M{FkFh4Q4X&mlL+#H9{@|O_p+dc?50|EOK zkzhb4AXa9_5CbwHU=S-IV6=x@5HM{MtGxpe>zK^gr*$lW4#q%qn1~LV&|&|T%TPC_ z`=!lZm|k4pDbd(pX0&zP%?#!bZ3KKMs#ikh8TU=6yV+_S#oa z{yw3u62`2KEl9@#J&VLXf#_SH5j=f_1qu%8v`8NjPq9o#&tsW_WBWdjgnbrPLqC)G(WX9S#N2tglx zar}9lvLRK5?X?YAu1s4zq_k-J@ybebEfnQW)xn7*$i7v%9fYMm;@8_&Bau2vVcX?! z4BRVZC6YabFelBjG~D0a(okP_gKWRMrL3Qg?v`?Xn7SK8sJjv)BNLt@twq*o|0Yc& zslIuG^p;`M(v1huT@quz;4?@bEOfM2la_HPUe+ajeiEf(mspM@-S5PYsF2v6Nh{jA zN&a0b{M;b20#GDbxBZ6!-HTDW4=r0s_XVmEw=j38o!Ia4pHe}wG-ru4kyAet0i{v6 zbBF{R@P4%cW0Un2@?{(m#il!GRoD-0vf%lJxK&Zbk@Gz`TMHb?_y9at^ae}0z;jis{S#_Y z$T^+uw{DitQ{jPfF67ZCTyxy^KLw;0qof}ebwPTdsP9&y9wPtGL|%wHX;OVX50k%7 z>nsrWeQ^pjgk2lB1ssVAy8xIt{YddtNO1g$l~yfPu>DhXEp#5qlKS%vzZxCRLmMl9 zA4T{Z-|AULX1ZosO;-6VF;BzDiFLIyhT zbu2oncM|?VJvmUZJP~Ca=|_JQhZ3tzw?@`Cdt8MCN(2#kP7k819Oks59mGTSyHM)t zC(Twf6qnnkVhI}P$DPPozEIfWFggY{$@BU#gbFDy7xaa&Du{?P`fv~x{VweZ;-P+* zLZztR5=O*fA~LrE<`jwcf1!Q3Rf;2i+DOw@`Ac!k{|I@H4|R%k80u771nRy|Y?vTt z>r;<{Iz^_9Bb^U*W$Gio;MXVWYC9hQb&B3LP^XHu^VF<>x(eFcx>^1)iVTK2aR^p~ z-S!g!_((O`6*Q0)zs0*N@KKJ#zkNSJa9SBZ}+_vDP3bs#Bv)70X zPPEy+S)!v4XXI=PNCE9hqCG`*mWVdl2h@)MDUa_QKKDyF0U({}CICnY0FnVqzuip| zFl}n?$xf2#H%xxAlh{bYl9<{^lQDMFXk}0$OXgQt8DUcdbmf$V@n#OC^8?iWS093| z#GI$aTN%l`ZI6>HKuZLGHI)$bknu4DJcw|of<-PWsIUY%Qep_Hwg#t~_7A`JYTX2L z9#r>@XSBl5K%<41s=4kejO5aKmgJQNYp%d_4!_oDabmrfa9g+l2}7C$AX?!ip)ZiZ zhlb|L69OF$#H#l)!GNQ?kT672Zu=F?wo3+QvUH@45x9FznA&yYm)5t&=h@`gfASS% zZ;w{{B8nN27f9tBaztnP6f%roPR*krm9o!>UeAz>3WcmmeZv?0`s81s)PeXz2hkdg zP{KATnp>pi1UlVBJ6ku$S5agzIteQy5p~-i22^>JY9DrxQAJW6h)jXuPf}hY$^w<# zEh+n`^!5HYl}Rv%6#iIsDJRt>!JY;+C(!7#XmfqDA<(Er6bGVF-dB$V-CIO=ipt+2 zy2KRqBef_vH2pgw0TNwThbD#_wPnpT4U=viyNQklWO@zAgd0d8(q-H~(tR9a%)F5R zLRq*pfR=Se{ zsu9ggGTb$9?iPo(3}G5sOVO^`%5LOXx?>)M9krVc-=;LuxJ&sojB_xGSe@*Wi5r!S zyeGW}-e~uTCF{n7&Fcv8HF6qoYJURFq>vv7Jp5HEd6=9rIG$N|8p1BOw@H%3NQ&EoimBz-YylGNIH6a4HRiO6z+N${H3_b6gD?dko`qgK~gk zhwf!Z`LAMZ)nPd5M;Eud@QMA4cDF!kj(3N#e+^^*8tzx9l{u=D>0~>(PQEj=JS>jj z!vjwx#qi9DTQFm;@+?LWt6$@8`jd+5Ji=wzs$Udl5Z?k7qzL9?S5qaF8r~N#<6lcQhmiXCwMccoqD_?hTL5!wUyt0Hlv@Lhdh=%VQ#-zDn zN7V2&5;Uu9Tf;$$l)_$I>h-&Vd=V!`K-X78Q<@JLQQG@(Dlwuo6r>A5?nQ|apgO|r7(E!@7-hWt%7HTK{9*O0OG9z>evk@zi7 zwc!rl_k>cR%C&!tzR11ri*4KGpQFg&y-#Z9KHJ^)Uj>wZ5T#7Grr=#_=7RFT{jaB) z2h{(DsEa-D4pAqH>Zdj(0Rxwj8o*@3ot-G?)8>++@`|n7IT|=G-koC zU*3lQ{$qpC^_G2U{`~a3{nj_&KqRnaa1xu_3FVTZy38WF| z+)=N%xG4#^@e^=EJPjZKrOPZ_1^znd^~n*+^sM!`H16@`=gKsLYe1M|7~O2*(&~=R zj2i|YZ9%EOgUzv#5xJJwDAO!KX?~4lP$PvJr%@vGU6(cC})>7miq(n8a2}_ zAEGc6P#6Y<1?27!6b=XqBLM}x1j8#ZyaN+|yIUDNUce{s6Hx1k5Y4>-&3&NRMecq< zQ;uWQAIE`Eje|jrL#Xk)sPSZ|#$mt4kx&ggs6o8?F=`wQ)fn?@91GPr-dE%AQRAsl zjT3&2r$aTygBk_2@h_vinx zjiu&z-y@E~JzA*iJI}vm->SIw64U@T{@moth4sHXH$P2RyLe1?F>=8>-ji@V3z@zE zvA;Y&GdneZ&3(PCq>-PO-xLzj}7LMe<@hF zM@uxqr_;oz2eEwetBv2R-Kv#CqZRR1^M=!q!xeGY0bsO335{CyMvo=9^AT^hWC4od zh23?BhvKp2Z_5JF3Ao*CmP0+DXtiDgTww>5H7JQYtcDF5&j)$Ems+V-Rpb8L6xRPO zRxy%y#i8*R?cUh^upGA^QDZJb5aoDfNRHJH`{V4D!R1{r9vKYABBSAP$duj~9!IGu z6!M-m2i1fB5Q5Niyu{mhMCb6|pwynzUq}>>5k(T9h$tQ#EQ;#Nws0@=uq>V-S^V2r zSyc6~@++-1w|uL~Z^$Y26a1AWmZP5p-CY)0skv1=sk#}8xofMdP43I9$j4*MP`%d%PY z)=!o_^&`Dr_9syH3R}EP^VMC?TI6fK9MJ5?OgGI@WV(+Io^Cm;!acf$j{wi}G}%9k zoord_{}Z8Q3+kR-PP3mT@7mQ|7X4IT&+jXVHQpDG0J&dtJ18eUL>Rio`ca0$!aeh0 zmcBqNy&20=RqwHwswxqvs%VDrw|d57im2I8ap0U<*~-2Duu@r zqy^(C21(+m7K}Vd4&BVi`44i$tx_Z{A{7DudOVF|APqgjz$1f~8J!5D%zKHL7q0+O z@yB8uRR}Xp#4)f+WURe06=TL(RL1OZG2hnRICyx9E&O}A|BGAM7%d>)j?%g@%idEEiGF;K~%{R`Rq$33qwo| zWm^eNLC|&}#xeb(8IN=-BG>_$FyIxH-9g$Rf)1% zlsk=(mjHucEhMCrZ!z^)%STqoCH^DF_4Yr~A(d>>bV%K6;>z7fXQZFpk;D_}wB^Tg z`z`C6biyx_^L;;8)d~EOtf74|_A~z5AYFKg{|fb}M$Qp9-cIpfK_+NHP2kP;Qf*m0 za4sE`>1(Z8-K7kir&?{o`@>V<_ z9s{sBHIc0Jx zbBn>ZQ-FG}&6+c^#9dxeSi9&B7k5r>)`qa6Ubh&ZRT>OT*8?mEVw`mI-n*$jSA^ OM*3oh(<8D@KK;McjzkCm literal 0 HcmV?d00001 diff --git a/tgbot/services/__pycache__/api_yoo.cpython-310.pyc b/tgbot/services/__pycache__/api_yoo.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b750fb1e161202b98328c8256386dfc5b9a63c0a GIT binary patch literal 6188 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 literal 0 HcmV?d00001 diff --git a/tgbot/services/api_session.py b/tgbot/services/api_session.py index 36b88e0..f6adb39 100644 --- a/tgbot/services/api_session.py +++ b/tgbot/services/api_session.py @@ -23,3 +23,24 @@ async def close(self) -> None: return None await self._session.close() + +# Асинхронная сессия для запросов +class RequestsSession: + def __init__(self) -> None: + self._session: Optional[aiohttp.ClientSession] = None + + # Вызов сессии + async def get_session(self) -> aiohttp.ClientSession: + if self._session is None: + new_session = aiohttp.ClientSession() + self._session = new_session + + return self._session + + # Закрытие сессии + async def close(self) -> None: + if self._session is None: + return None + + await self._session.close() + \ No newline at end of file diff --git a/tgbot/services/api_sqlite.py b/tgbot/services/api_sqlite.py index 80ccec0..8857eae 100644 --- a/tgbot/services/api_sqlite.py +++ b/tgbot/services/api_sqlite.py @@ -482,7 +482,7 @@ def create_dbx(): print("DB was not found(1/8) | Creating...") # Создание БД с хранением данных платежных систем - if len(con.execute("PRAGMA table_info(storage_payment)").fetchall()) == 7: + if len(con.execute("PRAGMA table_info(storage_payment)").fetchall()) == 13: print("DB was found(2/8)") else: con.execute("CREATE TABLE storage_payment(" @@ -492,12 +492,18 @@ def create_dbx(): "qiwi_nickname TEXT," "way_form TEXT," "way_number TEXT," - "way_nickname TEXT)") + "way_nickname TEXT," + "way_formy TEXT," + "user_id INTEGER," + "yoo_token TEXT," + "yoo_client_id TEXT," + "yoo_redirect_url TEXT," + "yoo_acc_number INTEGER)") con.execute("INSERT INTO storage_payment(" - "qiwi_login, qiwi_token, qiwi_secret, qiwi_nickname, way_form, way_number, way_nickname) " - "VALUES (?, ?, ?, ?, ?, ?, ?)", - ['None', 'None', 'None', 'None', 'False', 'False', 'False']) + "qiwi_login, qiwi_token, qiwi_secret, qiwi_nickname, way_form, way_number, way_nickname, way_formy, yoo_token, yoo_client_id, yoo_redirect_url, yoo_acc_number) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + ['None', 'None', 'None', 'None', 'False', 'False', 'False', 'False', 'None', 'None', 'None', 'None']) print("DB was not found(2/8) | Creating...") # Создание БД с хранением настроек diff --git a/tgbot/services/api_yoo.py b/tgbot/services/api_yoo.py new file mode 100644 index 0000000..98b433b --- /dev/null +++ b/tgbot/services/api_yoo.py @@ -0,0 +1,255 @@ +# - *- coding: utf- 8 - *- +import asyncio +import json +import time + +from aiohttp import ClientConnectorCertificateError +from async_class import AsyncClass +from yoomoney import Client +from yoomoney import Quickpay + +from tgbot.services.api_session import RequestsSession +from tgbot.services.api_sqlite import update_paymentx, get_paymentx +from tgbot.utils.misc_functions import send_admins + + +# Апи работы с YooMoney +class YooAPI(AsyncClass): + async def __ainit__(self, acc_number=None, token=None, client_id=None, redirect_url=None): + #self.user_id = user_id + #check_pass=False, user_bill_pass=False, user_check_pass=False + if token is not None: + self.token = token + self.client_id = client_id + self.acc_number = acc_number + self.redirect_url = redirect_url + else: + #self.login = get_upaymentx(self.user_id)['qiwi_login'] + #self.token = get_upaymentx(self.user_id)['qiwi_token'] + #self.secret = get_upaymentx(self.user_id)['qiwi_secret'] + #self.login = get_paymentx()['qiwi_login'] + self.token = get_paymentx()['yoo_token'] + self.client_id = get_paymentx()['yoo_client_id'] + self.acc_number = get_paymentx()['yoo_acc_number'] + self.redirect_url = get_paymentx()['yoo_redirect_url'] + + #self.base_url = "https://yoomoney.ru/api/" + #self.headers = {"authorization": f"Bearer {self.token}"} + #self.client_id = get_paymentx()['yoo_client_id'] + #self.user_check_pass = user_check_pass + #self.user_bill_pass = user_bill_pass + #self.check_pass = check_pass + #self.add_pass = add_pass + #self.dp = dp + + + # Рассылка админам о нерабочем киви + @staticmethod + async def error_wallet(): + await send_admins(" Yoo кошелёк недоступен ❌\n" + "❗ Как можно быстрее его замените ❗") + + + #Обновление данных + async def update_yoo(self): + update_paymentx(yoo_acc_number=self.acc_number, yoo_token=self.token, yoo_client_id=self.client_id, yoo_redirect_url=self.redirect_url) + + + # Обязательная проверка перед каждым запросом + async def pre_checker(self): + if self.acc_number != "None": + if self.add_pass: + status, response = await self.check_account() + else: + status, response, code = await self.check_logpass() + await asyncio.sleep(0.5) + + if self.add_pass: + await self.dp.edit_text(response) + if status: + update_paymentx(qiwi_login=self.login, qiwi_token=self.token, qiwi_secret=self.secret) + else: + return False + elif self.check_pass: + if status: + if self.secret == "None": + text_secret = "Отсутствует" + else: + text_secret = self.secret + + await self.dp.answer(f"🥝 Qiwi кошелёк полностью функционирует ✅\n" + f"◾ Номер: {self.login}\n" + f"◾ Токен: {self.token}\n" + f"◾ Приватный ключ: {text_secret}") + else: + await self.error_wallet() + return False + elif self.user_bill_pass: + if not status: + await self.dp.edit_text( + "❗ Извиняемся за доставленные неудобства, пополнение временно недоступно.\n" + "⌛ Попробуйте чуть позже.") + await self.error_wallet() + return False + elif self.user_check_pass: + if not status: + await self.dp.answer( + "❗ Извиняемся за доставленные неудобства, проверка временно недоступна.\n" + "⌛ Попробуйте чуть позже.", True) + await self.error_wallet() + return False + elif not status: + if not self.add_pass: + await self.error_wallet() + return False + + return True + else: + if self.user_bill_pass: + await self.dp.edit_text( + "❗ Извиняемся за доставленные неудобства, пополнение временно недоступно.\n" + "⌛ Попробуйте чуть позже.") + await self.error_wallet() + return False + + # Проверка баланса + async def get_balance(self): + response = await self.pre_checker() + if response: + status, response, code = await self._request( + "funding-sources", + "v2", + "accounts", + ) + + save_balance = [] + for balance in response['accounts']: + if "qw_wallet_usd" == balance['alias']: + save_balance.append(f"🇺🇸 Долларов: {balance['balance']['amount']}$") + + if "qw_wallet_rub" == balance['alias']: + save_balance.append(f"🇷🇺 Рублей: {balance['balance']['amount']}₽") + + if "qw_wallet_eur" == balance['alias']: + save_balance.append(f"🇪🇺 Евро: {balance['balance']['amount']}€") + + if "qw_wallet_kzt" == balance['alias']: + save_balance.append(f"🇰🇿 Тенге: {balance['balance']['amount']}₸") + + save_balance = "\n".join(save_balance) + await self.dp.answer(f"🥝 Баланс кошелька {self.login} составляет:\n" + f"{save_balance}") + + # Проверка п2п ключа + async def check_secret(self): + try: + qiwi_p2p = QiwiP2P(self.secret) + bill = qiwi_p2p.bill(amount=1, lifetime=1) + qiwi_p2p.reject(bill_id=bill.bill_id) + return True + except: + return False + + # Создание платежа + async def bill_pay(self, get_amount, get_way): + #response = await self.pre_checker() + #if response: + receipt = str(int(time.time() * 100)) + print(receipt) + + #print(get_way) + + if get_way == "ForYm": + #yoo = yooAPI() + #bill = qiwi.bill(bill_id=receipt, amount=get_amount, comment=receipt) + #send_requests = bill.pay_url + + quickpay = Quickpay( + receiver=self.acc_number, #'410011512189686', + quickpay_form="shop", + targets="Pay for goods in bot", + paymentType="SB", + sum=get_amount, + label=receipt, + ) + + print(quickpay.base_url) + + send_requests = quickpay.base_url + + print(quickpay.redirected_url) + + return_message = f"🆙 Пополнение баланса Yoomoney\n" \ + f"➖➖➖➖➖➖➖➖➖➖➖➖➖\n" \ + f"🥝 Для пополнения баланса, нажмите на кнопку ниже \n" \ + f"Перейти к оплате и оплатите выставленный вам счёт\n" \ + f"❗ У вас имеется 30 минут на оплату счета.\n" \ + f"💰 Сумма пополнения: {get_amount}₽\n" \ + f"➖➖➖➖➖➖➖➖➖➖➖➖➖\n" \ + f"🔄 После оплаты, нажмите на Проверить оплату" + + + return return_message, send_requests, receipt + return False, False, False + #send_requests, + + # Проверка платежа по форме + async def check_formy(self, receipt): + #yoo = YooAPI() + print(self.token) + #token = "410011512189686.0C1440CB73FD1452BC25E2B8FF48A4C8EA46FCF44A5A8E432F9B5F65E16AD45A5B07CAA9E8684E384ADD321358C4B4EDF10662A2AB8F9685CC27D6F6EF60B4DE851917851F2EB51FAD265BAA0AEDDA7E27D919C179C1491C140133FE01817816B6A1D4BA839E472C7CE1468E37470D312B8FB516242D1420D25802E2E66C2588" + client = Client(self.token) + history = client.operation_history(label=receipt) + #print(history.operations) + for operation in history.operations: + pay_status = operation.status # Получение статуса платежа + pay_amount = int(float(operation.amount)) # Получение суммы платежа в рублях + + return pay_status, pay_amount + + # Проверка платежа по переводу + async def check_send(self, receipt): + response = await self.pre_checker() + if response: + status, response, code = await self._request( + "payment-history", + "v2", + "payments", + {"rows": 30, "operation": "IN"}, + ) + + pay_status = False + pay_amount = 0 + + for check_pay in response['data']: + if str(receipt) == str(check_pay['comment']): + if "643" == str(check_pay['sum']['currency']): + pay_status = True + pay_amount = int(float(check_pay['sum']['amount'])) + else: + return_message = 1 + break + + if pay_status: + return_message = 3 + else: + return_message = 2 + + return return_message, pay_amount + + return 4, False + + # Запросы +''' async def _request(self, action, version, get_way, params=None): + url = self.base_url.format(action, version, self.login, get_way) + + rSession: RequestsSession = self.dp.bot['rSession'] + session = await rSession.get_session() + + try: + response = await session.get(url, params=params, headers=self.headers, ssl=False) + return True, json.loads((await response.read()).decode()), response.status + except ClientConnectorCertificateError: + return False, None, "CERTIFICATE_VERIFY_FAILED" + except: + return False, None, response.status''' diff --git a/tgbot/utils/__pycache__/__init__.cpython-310.pyc b/tgbot/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5de2db579419139b7d18c62a94d55d1b1f06157 GIT binary patch literal 149 zcmd1j<>g`k0`?Df$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v4KeRZts8~Ng zCpBF^IKQ+gIki|n#N9nVKc(0+FDbu7za$+*mX>7Z6zj*wXXa&=#K-FuRNmsS$<0qG P%}KQbnOMvOBv=>#)AS*i literal 0 HcmV?d00001 diff --git a/tgbot/utils/__pycache__/const_functions.cpython-310.pyc b/tgbot/utils/__pycache__/const_functions.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96e2fa7c024c241ea1b52d7ba925106f25102038 GIT binary patch literal 2219 zcmZuy&us>Q5 z4g}e~Bo!Q5RXw9hPH)`XLl689aNTQ9zV)07{oZU6V%k~l+c$4^X5RbedvDUoNuQyW z{#glbml^w;I!Bv>&Q-j69YQk6W7edvhhT#ou26*kjsL_)xZC*Vq4b$5 z8aCv+@Y@JzY?o~lQoK=fGM50#N+j13ojFlr5QV$mi(~75E^xRk53QF(kB_0Jix4jN zctxmbr~%%?Mi?LZa2B0>{|AC_{h1Ho)6kL5uGK7>il$)WiB1%#RENMpJ~>{Mi`C9z z_0B@|t1H!Su2ffRt`hh$E0|QawiNl0dD^IT^1sHLWph8$Yjp1a>pTq*B-Z(3+$RK2 zq94$r2aWUsUJ5`jKs;qnImiarcRT}182*fJ^Ji?^xt;^*HpWhX79h`PWqk&sjd<_+ z15E4VdB*10kKz>jRXh}{IZ3RuHIa$MPck085LqEedx^;rk0S&~hpy}?_{(Gn(oT2f z1KNOgJHwuw*WEZWYn@Q*Ry)*-%W)dCV!Z<8;P)J3EUsEfJItIoOlm?A9%_z+-D8$C zyV2D6iVGO9n=NofLD`98agUvPj9>OMYBJBLUCMWxW7?I%=GAFCBJ7B@=;Qkt_fej4 zcEskOJ}X^2XUUGZcEnor$2KDijg0N_g*|?0k57V0MHP0^O^_mw&<1w|#XPA9n<@oH zd32iR4@hwy-Lcq+42M;9AwM{a<@m} zy!zwSpRZoN{;5ZdL+9n|Uk>aqG4j`lA{)`sj3kK(2up+!5obg(jb_M3X$r6=>EmP$ z(kpWz^bu~ng>M4+xfv>hRNJa!hNhC>p&HDKB46S~B-RO`F2Sg%W{p8fTOLBWgARhG z0(|v=CIAz;b}9#Rrq72|j6oh)-F@phYqcb3GXTV|v%7Nxr|%4fEbMZ1x$odYv1#_! zsxS7%5dY9x4=+eQbo*GBiV*-UH8Sp7VAT8YY4iroVxm4ow^qmsHXSmjn|3o_o0c;A zQDp9C#a6c)CNgs$q)~$UMDaHLJa_0GXqI(rGqhI%iY*N9RwhS=as`t#Wuk|oG>Zq7 zRrtKZ{WlfImZ{4a9D|XLln&$?UVD$_jHEiRJh};=lnj`&jbLwsqpQH&I9sPUqvsCT zy2>8mq#HMG)!fWMiOEWlmQg!0mIImpeJk#TUn-R<6jqT?)t{6?*!EdPjl_Uf`%hb_Ujrev-yc9eZNc|IeJLbod%+4(IM fz2#0SdvUlzfM}vJ?j-KHe%V8tDtP|Xbmhdqlp)UQ literal 0 HcmV?d00001 diff --git a/tgbot/utils/__pycache__/misc_functions.cpython-310.pyc b/tgbot/utils/__pycache__/misc_functions.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5856be63aeff15cc8233bde6741e2a9fc1b2da83 GIT binary patch literal 10368 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 XJ*G#M9%Wb`)YJMn%H4W@YWRNuVS!G} literal 0 HcmV?d00001 diff --git a/tgbot/utils/misc/__pycache__/__init__.cpython-310.pyc b/tgbot/utils/misc/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..24846c6bcc4107328872927d7a1702b419ca289e GIT binary patch literal 154 zcmd1j<>g`k0`?Df$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vOKeRZts8~Ng zCpBF^IKQ+gIki|n#N9nVKc(0+FDbu7za$+*mX>7Z6zk_^7ANb+$7kkcmc+;F6;$5h Uu*uC&Da}c>0~uS)1SD7(0F&7xcK`qY literal 0 HcmV?d00001 diff --git a/tgbot/utils/misc/__pycache__/bot_commands.cpython-310.pyc b/tgbot/utils/misc/__pycache__/bot_commands.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f06cbc9927f27d84a70e5ecb5d2f82c537f92188 GIT binary patch literal 966 zcmZ`%OKTKC5bmDG&SbM|HV>nM$lhcTcK?6`V}dc4fFvRgNSI8|ZYIp^Y`S|6kqAjP z>OmujB6`YA^cK;WXh=Nx2YRl3j3;k7`v9vaPegm@>iVjyzN)U8xLC|1Sk~TvH)bI8 zO@Wik0&oR3djNtUfilfMF64`sKk9%>;ADVW#?ElL+?AP5StaK!i7#n8T}+q6X1bI|)U4 zXl~Nm9}$zqg!%LcQWMIeIS}$xHi_dK_%BgKqn+x`%%Q%M( zZ2Y39!8lgwl$IOB4eCZzwNw@lP?gWMd`5M!QB`gB7}=dAuM(HLRWEMVgGTl~suIv{ tB@}D+k`tm2Y|_3Q#Uu&+0X0Q-9z+56;euuxHny?x+qTu2=|6k&e*o~_n{EfL zaejuW9)Y={7j#ULY6G%5|wST(o`ZDN(aE4 zNFV-w9JJrSJF1-}V$?p)3ONv}-9I|YGOoIlcUj)fM`(*YPE3E?x?z}Ryhw2Ehv8`vCCeugNtX7j zr3A7LNZ)hK)X-;x!CG1%F^B9>?fGW{WCdOWk*%&eEM{7OKjg(k-O9Uo4&aLB(uoESLIP&sPJ7eE6u(vM5jMDB~&<(RWx{0or1X` zQ7CAq9heK;%PuQ)k7-ps&0wXeyobRsk84Kjb02)$=*Jim(MD~Yu6ivX zugTr=$OjOtY4w8IinLsAdI;`LUt(>_T{OS1rEi3Uo}qsa%z6Fxu#HR}!|P9RpJsw+ zBa=#3z0KswfAa8FJU+md(&|Ksg7n?Z11n_7!(Se?kp+GLn!i{e>NWk+j^b=2qf}RY zu(v`j9;<1TL)*yKs?Q`AXt||ZvBjf2Y7Mf5cRGN7y}_7_0GkTeF(l*sEQIH1(0Y`6?&*I$ng%YqqR5knpQ>mf~vXo z1K`+S+G|g}_1pvM*d(NpvewS-%)EK~W-MAQOT$(Ba~l3IH0@X6{J$#boZ*(=(J+k> zuKA=qsZa5wTu%(&AR3TOh3Q-3SApKtn87NndQW{5<8?4tjhS2Bx4_yopt>c9w>C{6 zH?8tcHb+~{Z$lfiW*KRh+2eioro(iwpdC?Gzo!IM%rw{fjf%8Om#F%?^Z9r&y&BEd zL)+o-8F(5b;L6@z&vpVC=JCN>#vJy^0Yc*xQsJ@^mw=Q(gjMTrwsX76ZaLnc)7j27 zUt#p_3GnQJm-8<_`7-t(!gexXsHJ1G6FWJvKlbeLzeUBoT+%;+wPUi{->K>+Lt_3AkaxuoEr8W#v3@8$T-qIU5hPBkUuhk9kA zH!c2~GA5T7SE@D3GYFE$()I)4q1qh2pUfx2^QmfF2Qm(arTCv()❗ Данное сообщение видят только администраторы бота. """), markup="default") - await check_update(aSession) + #await check_update(aSession) # Рассылка сообщения всем администраторам @@ -67,7 +67,7 @@ async def autobackup_admin(): # Автоматическая проверка обновления каждые 24 часа -async def check_update(aSession: AsyncSession): +'''async def check_update(aSession: AsyncSession): session = await aSession.get_session() try: @@ -85,11 +85,11 @@ async def check_update(aSession: AsyncSession): f"➖➖➖➖➖➖➖➖➖➖\n" f"❗ Данное сообщение видят только администраторы бота.") except Exception as ex: - print(f"Error check update: {ex}") + print(f"Error check update: {ex}")''' # Расссылка админам об критических ошибках и обновлениях -async def check_mail(aSession: AsyncSession): +'''async def check_mail(aSession: AsyncSession): session = await aSession.get_session() try: @@ -105,7 +105,7 @@ async def check_mail(aSession: AsyncSession): f"➖➖➖➖➖➖➖➖➖➖\n" f"❗ Данное сообщение видят только администраторы бота.") except Exception as ex: - print(f"Error check mail: {ex}") + print(f"Error check mail: {ex}")''' # Получение faq