diff --git a/handlers/coupons.py b/handlers/coupons.py
index 9c9064e3..a069fca9 100644
--- a/handlers/coupons.py
+++ b/handlers/coupons.py
@@ -34,8 +34,8 @@ async def handle_activate_coupon(
)
await callback_query.message.answer(
- "Введите код купона:\n\n"
- "Пожалуйста, введите действующий код купона, который вы хотите активировать.",
+ "🎫 Введите код купона:\n\n"
+ "📝 Пожалуйста, введите действующий код купона, который вы хотите активировать. 🔑",
parse_mode="HTML",
reply_markup=builder.as_markup(),
)
@@ -58,9 +58,9 @@ async def process_coupon_code(message: types.Message, state: FSMContext):
InlineKeyboardButton(text="👤 Личный кабинет", callback_data="view_profile")
)
- markup = builder.as_markup()
-
- await message.answer(activation_result, reply_markup=markup, parse_mode="HTML")
+ await message.answer(
+ activation_result, reply_markup=builder.as_markup(), parse_mode="HTML"
+ )
await state.clear()
@@ -79,7 +79,7 @@ async def activate_coupon(user_id: int, coupon_code: str):
)
if not coupon_record:
- return "❌ Купон не найден или его использование ограничено. Пожалуйста, проверьте код и попробуйте снова."
+ return "❌ Купон не найден 🚫 или его использование ограничено. 🔒 Пожалуйста, проверьте код и попробуйте снова. 🔍"
usage_exists = await conn.fetchrow(
"""
@@ -90,7 +90,7 @@ async def activate_coupon(user_id: int, coupon_code: str):
)
if usage_exists:
- return "❌ Вы уже активировали этот купон. Купоны могут быть активированы только один раз."
+ return "❌ Вы уже активировали этот купон. 🚫 Купоны могут быть активированы только один раз. 🔒"
coupon_amount = coupon_record["amount"]
@@ -116,13 +116,11 @@ async def activate_coupon(user_id: int, coupon_code: str):
)
await update_balance(user_id, coupon_amount)
- return f"✅ Купон успешно активирован!\n\nНа ваш баланс добавлено {coupon_amount} рублей."
+ return f"✅ Купон успешно активирован! 🎉\n\nНа ваш баланс добавлено {coupon_amount} рублей 💰."
except Exception as e:
logger.error(f"Ошибка при активации купона: {e}")
- return (
- "⚠️ Произошла ошибка при активации купона.\nПопробуйте ещё раз позже."
- )
+ return "⚠️ Произошла ошибка при активации купона! 🔧\nПопробуйте ещё раз позже. 🕒"
finally:
await conn.close()
diff --git a/handlers/donate.py b/handlers/donate.py
index 8625b416..0dedc524 100644
--- a/handlers/donate.py
+++ b/handlers/donate.py
@@ -42,9 +42,9 @@ async def process_donate(callback_query: types.CallbackQuery, state: FSMContext)
await bot.send_message(
chat_id=callback_query.from_user.id,
- text="🌟 Поддержите наш проект!\n\n"
- "Каждый донат помогает развивать и улучшать сервис. "
- "Мы ценим вашу поддержку и работаем над тем, чтобы сделать наш продукт еще лучше. 💡",
+ text="🌟 Поддержите наш проект! 💪\n\n"
+ "💖 Каждый донат помогает развивать и улучшать сервис. "
+ "🤝 Мы ценим вашу поддержку и работаем над тем, чтобы сделать наш продукт еще лучше. 🚀💡",
reply_markup=builder.as_markup(),
)
diff --git a/handlers/profile.py b/handlers/profile.py
index 817b67c5..39cb3652 100644
--- a/handlers/profile.py
+++ b/handlers/profile.py
@@ -8,7 +8,7 @@ from aiogram.utils.keyboard import InlineKeyboardBuilder
from bot import bot
from config import CHANNEL_URL
from database import get_balance, get_key_count, get_referral_stats
-from handlers.texts import get_referral_link, invite_message_send, profile_message_send
+from handlers.texts import get_referral_link, invite_message_send, profile_message_send,RENEWAL_PLANS
from logger import logger
router = Router()
@@ -35,6 +35,9 @@ async def process_callback_view_profile(
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text="📢 Наш канал", url=CHANNEL_URL))
+ builder.row(
+ InlineKeyboardButton(text="💡 Тарифы", callback_data="view_tariffs")
+ )
builder.row(
InlineKeyboardButton(text="➕ Устройство", callback_data="create_key"),
InlineKeyboardButton(text="📱 Мои устройства", callback_data="view_keys"),
@@ -88,6 +91,31 @@ async def process_callback_view_profile(
)
+@router.callback_query(F.data == "view_tariffs")
+async def view_tariffs_handler(callback_query: types.CallbackQuery):
+ try:
+ await callback_query.message.delete()
+ except Exception as e:
+ logger.error(f"Ошибка при удалении сообщения: {e}")
+ builder = InlineKeyboardBuilder()
+ builder.row(
+ InlineKeyboardButton(text="⬅️ Вернуться в профиль", callback_data="view_profile")
+ )
+
+ await callback_query.message.answer(
+ "🚀 Доступные тарифы VPN:\n\n" +
+ "\n".join([
+ f"{months} {'месяц' if months == '1' else 'месяца' if int(months) in [2, 3, 4] else 'месяцев'}: "
+ f"{RENEWAL_PLANS[months]['price']} "
+ f"{'💳' if months == '1' else '🌟' if months == '3' else '🔥' if months == '6' else '🚀'} рублей"
+ for months in sorted(RENEWAL_PLANS.keys(), key=int)
+ ]),
+ parse_mode="HTML",
+ reply_markup=builder.as_markup(),
+ )
+ await callback_query.answer()
+
+
@router.callback_query(F.data == "invite")
async def invite_handler(callback_query: types.CallbackQuery):
chat_id = callback_query.from_user.id