Refactoring profile.py
This commit is contained in:
+48
-55
@@ -4,6 +4,7 @@ from aiogram import F, Router, types
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
from aiogram.types import BufferedInputFile, InlineKeyboardButton, InlineKeyboardMarkup
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from loguru import logger
|
||||
|
||||
from bot import bot
|
||||
@@ -16,34 +17,24 @@ from handlers.texts import (
|
||||
profile_message_send,
|
||||
)
|
||||
|
||||
|
||||
class ReplenishBalanceState(StatesGroup):
|
||||
choosing_transfer_method = State()
|
||||
waiting_for_admin_confirmation = State()
|
||||
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
async def process_callback_view_profile(
|
||||
callback_query: types.CallbackQuery, state: FSMContext
|
||||
):
|
||||
tg_id = callback_query.from_user.id
|
||||
chat_id = callback_query.from_user.id
|
||||
username = callback_query.from_user.full_name
|
||||
|
||||
image_path = os.path.join(os.path.dirname(__file__), "pic.jpg")
|
||||
|
||||
if not os.path.isfile(image_path):
|
||||
await bot.send_message(tg_id, "Файл изображения не найден.")
|
||||
return
|
||||
|
||||
try:
|
||||
key_count = await get_key_count(tg_id)
|
||||
balance = await get_balance(tg_id)
|
||||
key_count = await get_key_count(chat_id)
|
||||
balance = await get_balance(chat_id)
|
||||
if balance is None:
|
||||
balance = 0
|
||||
|
||||
profile_message = profile_message_send(username, tg_id, balance, key_count)
|
||||
profile_message = profile_message_send(username, chat_id, balance, key_count)
|
||||
|
||||
profile_message += f"<b>Обязательно подпишитесь на канал</b> <a href='{CHANNEL_LINK}'>здесь</a>\n"
|
||||
|
||||
@@ -52,35 +43,26 @@ async def process_callback_view_profile(
|
||||
"\n<i>Нажмите ➕Устройство снизу, чтобы добавить устройство в VPN</i>"
|
||||
)
|
||||
|
||||
inline_keyboard = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="➕ Устройство", callback_data="create_key"
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="📱 Мои устр-ва", callback_data="view_keys"
|
||||
),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="💳 Пополнить баланс",
|
||||
callback_data=(
|
||||
"pay_freekassa"
|
||||
if PAYMENT_METHOD == "freekassa"
|
||||
else "replenish_balance"
|
||||
),
|
||||
)
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="👥 Пригласить", callback_data="invite"),
|
||||
InlineKeyboardButton(
|
||||
text="📘 Инструкции", callback_data="instructions"
|
||||
),
|
||||
],
|
||||
[InlineKeyboardButton(text="⬅️ Назад", callback_data="back_to_menu")],
|
||||
]
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.add(
|
||||
InlineKeyboardButton(text="➕ Устройство", callback_data="create_key"),
|
||||
InlineKeyboardButton(text="📱 Мои устр-ва", callback_data="view_keys"),
|
||||
)
|
||||
builder.add(
|
||||
InlineKeyboardButton(
|
||||
text="💳 Пополнить баланс",
|
||||
callback_data=(
|
||||
"pay_freekassa"
|
||||
if PAYMENT_METHOD == "freekassa"
|
||||
else "replenish_balance"
|
||||
),
|
||||
)
|
||||
)
|
||||
builder.add(
|
||||
InlineKeyboardButton(text="👥 Пригласить", callback_data="invite"),
|
||||
InlineKeyboardButton(text="📘 Инструкции", callback_data="instructions"),
|
||||
)
|
||||
builder.add(InlineKeyboardButton(text="⬅️ Назад", callback_data="back_to_menu"))
|
||||
|
||||
# Попробуем удалить предыдущее сообщение
|
||||
try:
|
||||
@@ -90,37 +72,48 @@ async def process_callback_view_profile(
|
||||
f"Ошибка при удалении сообщения: {e}"
|
||||
) # Логируем ошибку, если удаление не удалось
|
||||
|
||||
with open(image_path, "rb") as image_file:
|
||||
await bot.send_photo(
|
||||
chat_id=tg_id,
|
||||
photo=BufferedInputFile(image_file.read(), filename="pic.jpg"),
|
||||
caption=profile_message,
|
||||
if not os.path.isfile(image_path):
|
||||
with open(image_path, "rb") as image_file:
|
||||
await bot.send_photo(
|
||||
chat_id=chat_id,
|
||||
photo=BufferedInputFile(image_file.read(), filename="pic.jpg"),
|
||||
caption=profile_message,
|
||||
parse_mode="HTML",
|
||||
reply_markup=builder.as_markup(),
|
||||
)
|
||||
else:
|
||||
await bot.send_message(
|
||||
chat_id=chat_id,
|
||||
text=profile_message,
|
||||
parse_mode="HTML",
|
||||
reply_markup=inline_keyboard,
|
||||
reply_markup=builder.as_markup(),
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
await bot.send_message(tg_id, f"❗️ Ошибка при получении данных профиля: {e}")
|
||||
await bot.send_message(chat_id, f"❗️ Ошибка при получении данных профиля: {e}")
|
||||
|
||||
await callback_query.answer()
|
||||
|
||||
|
||||
@router.callback_query(F.data == "invite")
|
||||
async def invite_handler(callback_query: types.CallbackQuery):
|
||||
tg_id = callback_query.from_user.id
|
||||
referral_link = get_referral_link(tg_id)
|
||||
chat_id = callback_query.from_user.id
|
||||
referral_link = get_referral_link(chat_id)
|
||||
|
||||
referral_stats = await get_referral_stats(tg_id)
|
||||
referral_stats = await get_referral_stats(chat_id)
|
||||
|
||||
invite_message = invite_message_send(referral_link, referral_stats)
|
||||
|
||||
button_back = InlineKeyboardButton(text="⬅️ Назад", callback_data="view_profile")
|
||||
keyboard = InlineKeyboardMarkup(inline_keyboard=[[button_back]])
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.add(InlineKeyboardButton(text="⬅️ Назад", callback_data="view_profile"))
|
||||
|
||||
await callback_query.message.delete()
|
||||
|
||||
await bot.send_message(
|
||||
chat_id=tg_id, text=invite_message, parse_mode="HTML", reply_markup=keyboard
|
||||
chat_id=chat_id,
|
||||
text=invite_message,
|
||||
parse_mode="HTML",
|
||||
reply_markup=builder.as_markup(),
|
||||
)
|
||||
|
||||
await callback_query.answer()
|
||||
|
||||
+8
-10
@@ -35,8 +35,10 @@ async def send_welcome_message(chat_id: int, trial_status: int):
|
||||
InlineKeyboardButton(text="👤 Мой профиль", callback_data="view_profile")
|
||||
)
|
||||
builder.add(InlineKeyboardButton(text="🔒 О VPN", callback_data="about_vpn"))
|
||||
builder.add(InlineKeyboardButton(text="📞 Поддержка", url=SUPPORT_CHAT_URL))
|
||||
builder.add(InlineKeyboardButton(text="📢 Наш канал", url=CHANNEL_URL))
|
||||
builder.add(
|
||||
InlineKeyboardButton(text="📞 Поддержка", url=SUPPORT_CHAT_URL),
|
||||
InlineKeyboardButton(text="📢 Наш канал", url=CHANNEL_URL),
|
||||
)
|
||||
|
||||
if not os.path.isfile(image_path):
|
||||
with open(image_path, "rb") as image_from_buffer:
|
||||
@@ -113,26 +115,22 @@ async def handle_connect_vpn(callback_query: CallbackQuery):
|
||||
InlineKeyboardButton(
|
||||
text="🍏 Подключить",
|
||||
url=f'{APP_URL}/?url=v2raytun://import/{trial_key_info["key"]}',
|
||||
)
|
||||
)
|
||||
builder.add(
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="🤖 Подключить",
|
||||
url=f'{APP_URL}/?url=v2raytun://import-sub?url={trial_key_info["key"]}',
|
||||
)
|
||||
),
|
||||
)
|
||||
|
||||
builder.add(
|
||||
InlineKeyboardButton(
|
||||
text="🍏 Скачать",
|
||||
url="https://apps.apple.com/ru/app/v2raytun/id6476628951",
|
||||
)
|
||||
)
|
||||
builder.add(
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="🤖 Скачать",
|
||||
url="https://play.google.com/store/apps/details?id=com.v2raytun.android&hl=ru",
|
||||
)
|
||||
),
|
||||
)
|
||||
|
||||
await callback_query.message.answer(
|
||||
|
||||
Reference in New Issue
Block a user