From 958a8fb74cf79686be1759b518874198bf75f303 Mon Sep 17 00:00:00 2001 From: Vlad Date: Sat, 28 Sep 2024 13:12:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/__pycache__/keys.cpython-310.pyc | Bin 10364 -> 10254 bytes .../__pycache__/notifications.cpython-310.pyc | Bin 2439 -> 2911 bytes handlers/keys.py | 13 +++---- handlers/notifications.py | 32 ++++++++++++++---- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/handlers/__pycache__/keys.cpython-310.pyc b/handlers/__pycache__/keys.cpython-310.pyc index bcefdc3ae887440f573fb6fc0e614456e8bf1b5f..49d6cd33d2c3ca17108e78fe44678305e0371798 100644 GIT binary patch delta 604 zcmZvZPiqrF7{=dsb~oMbzic=E>?X!_Lo6*6`T>geBGg-zeXzuyIdEG z+z~o0W;k|pAhQY$7-4GlUB%4#Ofa(c*@f;5Ov^k-DpV0DAgLxbQKo99Pa`9|09B(dzdT$&_|2Q@ zjBUf{wh&HOi)zABCAHZE)m1G$gd?EFiIxU)0!+N|zqbhHd-t0~vU^jymDFfC`)8xx zX%ah}joxL`&^gQ^_06J09yg**gtUS%tQXTwQ8|JWcIOWH(~9MF>|;yXoz;tvo%gsf z;Oh6^HsxCTzU*}0$E)M1VKX6=xqz7NdiV`N%LpotbE&kEYgQq2_Dy S$D<)WzIeIPMxz^`vv~s*osW$G delta 706 zcmah{&ubGw6n<~AiEH*pHoIwR(l$(E8|k5Sg5JCgMpB3+t_Q;`t;s<_ zQ-X64EP(|50~%^YTB}Dd9%lXm(W^%hJ$P_;ON>InIlb?FkN17=z1dv(wPN3~tTaUL z(vMpomxlHkibPzXW%81UHK!;7O7mT8>VC4H@{bMhGB8+%AldvbhBT*jv5^uV=&ALa zzFD)_agH2nb}hrwoy1`&!gb)uzB7O^W^fgJjq84vYs~0i-yHzcb1(^Q4APu1bCon2 z%&H@^1H<v4y)dNmAWFTJ z?;=jMs2r-ts->P#`Ce^=*;jHuEIl~g@OKI)Ig00V&%_J6AkNO0#O?V{iv$7g-U!vm rhEB?8qDCAf=wgcKsH1~ADH4LY+2R)m#ag9_=XbtVN|>y;XrB8Gzh%TA diff --git a/handlers/__pycache__/notifications.cpython-310.pyc b/handlers/__pycache__/notifications.cpython-310.pyc index 09464cdf22c296c482366877bf9855a2f860548a..b0a30e754e84f05b2b974a072b0664731d2a949b 100644 GIT binary patch delta 1038 zcmb7CO-vI(6n<~^r@QU$wiGO-7Tu^-swf~KF{FqZqjC@vIS??008_9AP|Fgu*_EFf z@j{eLj0Zx}dNn4ZF?uk1@ZxcM@xVn-MiVa{jPZav%TF){O`OTRH+k>--uve5&Xm84 z7?*V24}2Ya`)%MyaL$O6Z8%r^aIWs`PGcxAtaWP$X(TniE>(deaW8W(Z!UG>KeVn(jV}oQ zkaxcmxWHf$)&+O+v3L9t8wU}r&>g&XQb%wMgq&fO(Q4c9Mwmy0PUzw^$GC2IyiQ0w z?sMLDnm3=}XWCqGlkQXZnVIT4JXXPBUhGk6%6;iRUSZUDiKaDvlHHT**#{|%+n;=w z$`HdW;7h5(aPQS6Av0pJ6TWr~vb(-iM71)*>7JqVfVJdb8Q{vDxxOyhd&THkR;R>| z2@$Lygxd&es4Pe27|Mbn_?Hz)K?Mm}&uBbDzV0$Y7)NE2{LHrUBFR{G51Ue6VJkbT X?#5bnL9GreLWtK2@vZSKlQ8)OF-8w3 delta 640 zcmaJ;&uddb5T4ohYv0fOYAdZ#a_CbcEh>sMAyz6X?ID8X5G#mK#})(;3N9-EUF!9PIHdXl;!(TmW5*>Cw~zxjrpZ(|#|;I8jGpdwZM zwS3Xr4D#$fY))et2zYf#MWT*fz8YS`-aP3&ui;VbO-_^9&!b5&Wx z)^-G4j97vTKrjz6wqDATc5Zbh)`d>SIK+lRQ=zHQQfNh5mkW!ugOFg?CZ1r-BPVjn zCWqWMTfr41uZ^)yzA(3d0>Rap>KL&j;I=0W;ZR!Glxgb&SA=`V1a>XTs@{46U2`=7 z(ncU*!?9f9UV!UI{~u~!<6KAE$1EPDHCKN~IoH2^eWZgI^zgVZ_C*y3cl?fN8!#mR<6~g&) zSS^P&`O2J;H_S2l)ts6 $2 ''', threshold_time, datetime.utcnow().timestamp() * 1000) @@ -30,17 +40,24 @@ async def notify_expiring_keys(bot: Bot): tg_id = record['tg_id'] email = record['email'] expiry_time = record['expiry_time'] + + # Рассчитываем оставшееся время и уменьшаем его на 3 часа + time_left = (expiry_time / 1000) - datetime.utcnow().timestamp() + hours_left = max(0, int(time_left // 3600) - 3) + expiry_date = datetime.utcfromtimestamp(expiry_time / 1000).strftime('%Y-%m-%d %H:%M:%S') - - # Создаем клавиатуру с кнопкой "Пополнить баланс" + + # Создаем клавиатуру с выбором тарифов keyboard = InlineKeyboardMarkup(inline_keyboard=[ + [InlineKeyboardButton(text='1 месяц (100 руб.)', callback_data=f'renew_plan|1|{record["client_id"]}')], + [InlineKeyboardButton(text='3 месяца (250 руб.)', callback_data=f'renew_plan|3|{record["client_id"]}')], [InlineKeyboardButton(text='Пополнить баланс', callback_data='replenish_balance')] ]) - message = f"Ваш ключ {email} истечет {expiry_date}. Пожалуйста, продлите его." + message = f"Ваш ключ {email} истечет через {hours_left} часов ({expiry_date}). Пожалуйста, продлите его." await bot.send_message(chat_id=tg_id, text=message, parse_mode='HTML', reply_markup=keyboard) - # Получаем все истекшие ключи + # Обрабатываем истекшие ключи expired_records = await conn.fetch(''' SELECT tg_id, email FROM keys WHERE expiry_time <= $1 @@ -49,9 +66,10 @@ async def notify_expiring_keys(bot: Bot): for record in expired_records: tg_id = record['tg_id'] email = record['email'] - - # Создаем клавиатуру с кнопкой "Пополнить баланс" + keyboard = InlineKeyboardMarkup(inline_keyboard=[ + [InlineKeyboardButton(text='1 месяц (100 руб.)', callback_data=f'renew_plan|1|{record["client_id"]}')], + [InlineKeyboardButton(text='3 месяца (250 руб.)', callback_data=f'renew_plan|3|{record["client_id"]}')], [InlineKeyboardButton(text='Пополнить баланс', callback_data='replenish_balance')] ])