Skip to content

Commit 1205622

Browse files
committed
FIX: buy vip problem
1 parent af36e48 commit 1205622

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

telegram_bot/filters/main.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from aiogram.dispatcher.filters import Filter
33
from aiogram.types import Message
44

5-
from telegram_bot.database.methods.other import is_admin
5+
from telegram_bot.database.methods.other import is_admin, is_vip
66

77

88
class IsAdmin(Filter):
@@ -12,5 +12,25 @@ async def check(self, message: Message) -> bool:
1212
return is_admin(message.from_user.id)
1313

1414

15+
class NotAdmin(Filter):
16+
key = "not_admin"
17+
18+
async def check(self, message: Message) -> bool:
19+
return False if is_admin(message.from_user.id) else True
20+
21+
22+
class NotVip(Filter):
23+
key = "not_vip"
24+
25+
async def check(self, message: Message) -> bool:
26+
return False if is_vip(message.from_user.id) else True
27+
28+
1529
def register_all_filters(dp: Dispatcher):
16-
dp.bind_filter(IsAdmin)
30+
filters = (
31+
NotAdmin,
32+
IsAdmin,
33+
NotVip
34+
)
35+
for filter in filters:
36+
dp.bind_filter(filter)

telegram_bot/handlers/user/buy_vip.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
from aiogram import Dispatcher, Bot
55
from aiogram.types import Message, CallbackQuery
66

7+
from misc.html_tags import b
78
from telegram_bot.database.methods.update import set_vip
89
from telegram_bot.database.methods.create import create_user_payment
910
from telegram_bot.database.methods.get import get_user_by_telegram_id
11+
from telegram_bot.filters.main import NotAdmin, NotVip
1012

1113
from telegram_bot.utils.util import get_payment_info
1214
from telegram_bot.handlers.user.util import _buy_vip_text
@@ -19,23 +21,17 @@ async def __buy_vip(msg: Message) -> None:
1921
user_id = msg.from_user.id
2022
user = get_user_by_telegram_id(user_id)
2123

22-
if user.vip:
23-
await bot.send_message(user_id, 'Вы уже приобрели vip доступ')
24-
return
25-
if user.admin:
26-
await bot.send_message(user_id, 'Вы являетесь администратором, используйте настройку в Админ меню')
27-
return
28-
29-
pay_id = user.payment.key if user.payment else f'{uuid4()}'
30-
payment = Payment.create(get_payment_info(), pay_id)
3124
if user and not user.payment:
25+
payment = Payment.create(get_payment_info(), uuid4())
3226
create_user_payment(user, payment.id)
27+
else:
28+
payment = Payment.find_one(user.payment.key)
3329
if payment.status != 'succeeded':
3430
keyboard = get_payment_keyboard(payment.confirmation.confirmation_url)
3531
await bot.send_message(user_id, _buy_vip_text(), reply_markup=keyboard)
3632
else:
3733
keyboard = get_payment_keyboard()
38-
await bot.send_message(user_id, '<b>VIP</b> доступ уже оплачен. Проверьте оплату', reply_markup=keyboard)
34+
await bot.send_message(user_id, f"{b('VIP')} доступ уже оплачен. Проверьте оплату", reply_markup=keyboard)
3935

4036

4137
async def __check_buy(query: CallbackQuery) -> None:
@@ -57,7 +53,7 @@ def _register_vip_handlers(dp: Dispatcher) -> None:
5753

5854
# region Msg handlers
5955

60-
dp.register_message_handler(__buy_vip, content_types=['text'], text="Купить полную версию 💸")
56+
dp.register_message_handler(__buy_vip, NotAdmin(), NotVip(), content_types=['text'], text="Купить полную версию 💸")
6157

6258
# endregion
6359

telegram_bot/handlers/user/util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ def _buy_vip_text() -> str:
2424
i("・ Отсутствие рекламного текста после анимаций"),
2525
i("・ Доступ к VIP командам\n"),
2626
b(f"Для покупки нажмите на кнопку Оплатить."),
27-
b("После оплаты не забудьте проверить оплату!")
27+
b("После оплаты не забудьте ее проверить!")
2828
)
2929
return "\n".join(data)

0 commit comments

Comments
 (0)