Refactoring profile.py

This commit is contained in:
Zakhar Izmaylov
2024-11-09 15:35:22 +03:00
parent f05cfb1c11
commit 9518ef9f07
2 changed files with 56 additions and 65 deletions
+48 -55
View File
@@ -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
View File
@@ -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(