From c63c8d08cf9ca968d979cf7745bbba4417a8a035 Mon Sep 17 00:00:00 2001 From: Zakhar Izmaylov Date: Tue, 12 Nov 2024 00:11:33 +0300 Subject: [PATCH] Fix formating and freekassa --- .flake8 | 2 +- .isort.cfg | 2 +- handlers/admin/admin.py | 4 ++- handlers/admin/admin_panel.py | 42 ++++++++++++++++++++---------- handlers/commands.py | 16 +++++++++--- handlers/keys/key_management.py | 4 +-- handlers/keys/keys.py | 4 ++- handlers/pay.py | 12 +++++---- handlers/payments/freekassa_pay.py | 2 ++ handlers/profile.py | 18 ++++++++----- handlers/start.py | 16 ++++++------ 11 files changed, 77 insertions(+), 45 deletions(-) diff --git a/.flake8 b/.flake8 index 0990c3c6..1d5b8e45 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] -max-line-length = 200 +max-line-length = 250 ignore = E203, E266, E501, W503, F541, E704, W293, W291, E126, E121, E123, E128, E302, E131, E231, W292, E402, E261 max-complexity = 25 select = B, C, E, F, W, T4, B9 diff --git a/.isort.cfg b/.isort.cfg index ffc56c98..575f47ca 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -1,3 +1,3 @@ [settings] profile=black -line_length = 200 \ No newline at end of file +line_length = 250 \ No newline at end of file diff --git a/handlers/admin/admin.py b/handlers/admin/admin.py index f8187ccf..309ad629 100644 --- a/handlers/admin/admin.py +++ b/handlers/admin/admin.py @@ -18,7 +18,9 @@ async def cmd_add_balance(message: types.Message): return await add_balance_to_client(int(client_id), amount) - await message.reply(f"✅ Баланс клиента {client_id} успешно пополнен на {amount}") + await message.reply( + f"✅ Баланс клиента {client_id} успешно пополнен на {amount}" + ) except ValueError: await message.reply( "❓ Неверный формат команды!\n" diff --git a/handlers/admin/admin_panel.py b/handlers/admin/admin_panel.py index ec021440..19dccfd2 100644 --- a/handlers/admin/admin_panel.py +++ b/handlers/admin/admin_panel.py @@ -31,15 +31,17 @@ async def handle_admin_command(message: types.Message): text="📊 Статистика пользователей", callback_data="user_stats" ) ) - builder.row( - InlineKeyboardButton(text="👥 Управление пользователями", callback_data="user_editor") - ) builder.row( InlineKeyboardButton( - text="📢 Массовая рассылка", callback_data="send_to_alls" + text="👥 Управление пользователями", callback_data="user_editor" ) ) - builder.row(InlineKeyboardButton(text="💾 Создать резервную копию", callback_data="backups")) + builder.row( + InlineKeyboardButton(text="📢 Массовая рассылка", callback_data="send_to_alls") + ) + builder.row( + InlineKeyboardButton(text="💾 Создать резервную копию", callback_data="backups") + ) builder.row( InlineKeyboardButton(text="🔄 Перезагрузить бота", callback_data="restart_bot") ) @@ -73,7 +75,9 @@ async def user_stats_menu(callback_query: CallbackQuery): builder = InlineKeyboardBuilder() builder.row( - InlineKeyboardButton(text="🔙 Вернуться в меню", callback_data="back_to_admin_menu") + InlineKeyboardButton( + text="🔙 Вернуться в меню", callback_data="back_to_admin_menu" + ) ) await callback_query.message.edit_text( @@ -94,7 +98,9 @@ async def handle_send_to_all(callback_query: CallbackQuery, state: FSMContext): async def handle_backup(message: Message): await message.answer("💾 Инициализация резервного копирования базы данных...") await backup_database() - await message.answer("✅ Резервная копия успешно создана и отправлена администратору.") + await message.answer( + "✅ Резервная копия успешно создана и отправлена администратору." + ) @router.callback_query(F.data == "restart_bot", IsAdminFilter) @@ -122,9 +128,15 @@ async def user_editor_menu(callback_query: CallbackQuery): ) ) builder.row( - InlineKeyboardButton(text="🆔 Поиск по Telegram ID", callback_data="search_by_tg_id") + InlineKeyboardButton( + text="🆔 Поиск по Telegram ID", callback_data="search_by_tg_id" + ) + ) + builder.row( + InlineKeyboardButton( + text="🔙 Вернуться назад", callback_data="back_to_admin_menu" + ) ) - builder.row(InlineKeyboardButton(text="🔙 Вернуться назад", callback_data="back_to_admin_menu")) await callback_query.message.edit_text( "👇 Выберите способ поиска пользователя:", reply_markup=builder.as_markup() ) @@ -144,15 +156,17 @@ async def back_to_admin_menu(callback_query: CallbackQuery): text="📊 Статистика пользователей", callback_data="user_stats" ) ) - builder.row( - InlineKeyboardButton(text="👥 Управление пользователями", callback_data="user_editor") - ) builder.row( InlineKeyboardButton( - text="📢 Массовая рассылка", callback_data="send_to_alls" + text="👥 Управление пользователями", callback_data="user_editor" ) ) - builder.row(InlineKeyboardButton(text="💾 Создать резервную копию", callback_data="backups")) + builder.row( + InlineKeyboardButton(text="📢 Массовая рассылка", callback_data="send_to_alls") + ) + builder.row( + InlineKeyboardButton(text="💾 Создать резервную копию", callback_data="backups") + ) builder.row( InlineKeyboardButton(text="🔄 Перезагрузить бота", callback_data="restart_bot") ) diff --git a/handlers/commands.py b/handlers/commands.py index c055e197..d1596c65 100644 --- a/handlers/commands.py +++ b/handlers/commands.py @@ -32,7 +32,9 @@ async def backup_command(message: Message): await message.answer("🔄 Инициализация резервного копирования базы данных...") await backup_database() - await message.answer("✅ Бэкап базы данных успешно завершен и отправлен администратору.") + await message.answer( + "✅ Бэкап базы данных успешно завершен и отправлен администратору." + ) @router.message(Command("start")) @@ -75,10 +77,14 @@ async def handle_send_trial_command(message: types.Message, state: FSMContext): except Exception as e: if "Forbidden: bot was blocked by the user" in str(e): blocked_count += 1 - logger.info(f"🚫 Бот заблокирован пользователем с tg_id: {tg_id}") + logger.info( + f"🚫 Бот заблокирован пользователем с tg_id: {tg_id}" + ) else: error_count += 1 - logger.error(f"❌ Ошибка при отправке сообщения пользователю {tg_id}: {e}") + logger.error( + f"❌ Ошибка при отправке сообщения пользователю {tg_id}: {e}" + ) await message.answer( f"📊 Результаты рассылки пробных периодов:\n" @@ -87,7 +93,9 @@ async def handle_send_trial_command(message: types.Message, state: FSMContext): f"❌ Ошибок: {error_count}" ) else: - await message.answer("📭 Нет пользователей с неиспользованными пробными ключами.") + await message.answer( + "📭 Нет пользователей с неиспользованными пробными ключами." + ) finally: await conn.close() diff --git a/handlers/keys/key_management.py b/handlers/keys/key_management.py index 2e219bb4..aa8399b4 100644 --- a/handlers/keys/key_management.py +++ b/handlers/keys/key_management.py @@ -209,9 +209,7 @@ async def handle_key_name_input(message: Message, state: FSMContext): remaining_time = expiry_time - current_time days = remaining_time.days - key_message = key_message_success( - public_link, f"⏳ Осталось дней: {days} 📅" - ) + key_message = key_message_success(public_link, f"⏳ Осталось дней: {days} 📅") await message.bot.send_message( tg_id, key_message, parse_mode="HTML", reply_markup=keyboard diff --git a/handlers/keys/keys.py b/handlers/keys/keys.py index 24c7efe1..19e4fc96 100644 --- a/handlers/keys/keys.py +++ b/handlers/keys/keys.py @@ -138,7 +138,9 @@ async def process_callback_view_key(callback_query: types.CallbackQuery): time_left = expiry_date - current_date if time_left.total_seconds() <= 0: - days_left_message = "🕒 Статус подписки:\n🔴 Истекла\nОсталось часов: 0" + days_left_message = ( + "🕒 Статус подписки:\n🔴 Истекла\nОсталось часов: 0" + ) elif time_left.days > 0: days_left_message = f"Осталось дней: {time_left.days}" else: diff --git a/handlers/pay.py b/handlers/pay.py index 1e158842..c0a21de2 100644 --- a/handlers/pay.py +++ b/handlers/pay.py @@ -17,33 +17,35 @@ async def handle_pay(callback_query: CallbackQuery): if YOOKASSA_ENABLE: builder.row( InlineKeyboardButton( - text="💳 ЯКасса: быстрый перевод", + text="💳 ЯКасса: быстрый перевод", callback_data="pay_yookassa", ) ) if FREEKASSA_ENABLE: builder.row( InlineKeyboardButton( - text="🌐 FreeKassa: множество способов", + text="🌐 FreeKassa: множество способов", callback_data="pay_freekassa", ) ) if CRYPTO_BOT_ENABLE: builder.row( InlineKeyboardButton( - text="💰 CryptoBot: криптовалюта", + text="💰 CryptoBot: криптовалюта", callback_data="pay_cryptobot", ) ) if STARS_ENABLE: builder.row( InlineKeyboardButton( - text="⭐ Оплата Звездами", + text="⭐ Оплата Звездами", callback_data="pay_stars", ) ) - builder.row(InlineKeyboardButton(text="⬅️ Вернуться в профиль", callback_data="view_profile")) + builder.row( + InlineKeyboardButton(text="⬅️ Вернуться в профиль", callback_data="view_profile") + ) await callback_query.message.answer( "💸 Выберите удобный способ пополнения баланса:\n\n" diff --git a/handlers/payments/freekassa_pay.py b/handlers/payments/freekassa_pay.py index 27601d78..4a0ce507 100644 --- a/handlers/payments/freekassa_pay.py +++ b/handlers/payments/freekassa_pay.py @@ -11,10 +11,12 @@ from aiogram.fsm.state import State, StatesGroup from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from aiohttp import web +from telegram import InlineKeyboardMarkup from bot import bot from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID from database import update_balance +from handlers.texts import PAYMENT_OPTIONS router = Router() logging.basicConfig(level=logging.DEBUG) diff --git a/handlers/profile.py b/handlers/profile.py index 77df7759..913307ed 100644 --- a/handlers/profile.py +++ b/handlers/profile.py @@ -31,9 +31,7 @@ async def process_callback_view_profile( profile_message = profile_message_send(username, chat_id, balance, key_count) if key_count == 0: - profile_message += ( - "\n🔧 Нажмите кнопку ➕ Устройство, чтобы настроить VPN-подключение" - ) + profile_message += "\n🔧 Нажмите кнопку ➕ Устройство, чтобы настроить VPN-подключение" builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text="📢 Наш канал", url=CHANNEL_URL)) @@ -51,13 +49,15 @@ async def process_callback_view_profile( InlineKeyboardButton(text="👥 Пригласить друзей", callback_data="invite"), InlineKeyboardButton(text="📘 Инструкции", callback_data="instructions"), ) - builder.row(InlineKeyboardButton(text="⬅️ Главное меню", callback_data="back_to_menu")) + builder.row( + InlineKeyboardButton(text="⬅️ Главное меню", callback_data="back_to_menu") + ) try: await callback_query.message.delete() except Exception as e: logger.error(f"❗ Ошибка при удалении сообщения: {e}") - + if os.path.isfile(image_path): with open(image_path, "rb") as image_file: await bot.send_photo( @@ -76,7 +76,9 @@ async def process_callback_view_profile( ) except Exception as e: - await bot.send_message(chat_id, f"❗️ Не удалось загрузить профиль. Техническая ошибка: {e}") + await bot.send_message( + chat_id, f"❗️ Не удалось загрузить профиль. Техническая ошибка: {e}" + ) await callback_query.answer() @@ -91,7 +93,9 @@ async def invite_handler(callback_query: types.CallbackQuery): invite_message = invite_message_send(referral_link, referral_stats) builder = InlineKeyboardBuilder() - builder.row(InlineKeyboardButton(text="⬅️ Вернуться в профиль", callback_data="view_profile")) + builder.row( + InlineKeyboardButton(text="⬅️ Вернуться в профиль", callback_data="view_profile") + ) await callback_query.message.delete() diff --git a/handlers/start.py b/handlers/start.py index a69b542d..7dec1498 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -107,23 +107,23 @@ async def handle_connect_vpn(callback_query: CallbackQuery): builder.row( InlineKeyboardButton( - text="🍏 Скачать для iOS", - url="https://apps.apple.com/ru/app/v2raytun/id6476628951" + text="🍏 Скачать для iOS", + url="https://apps.apple.com/ru/app/v2raytun/id6476628951", ), InlineKeyboardButton( - text="🤖 Скачать для Android", - url="https://play.google.com/store/apps/details?id=com.v2raytun.android&hl=ru" + text="🤖 Скачать для Android", + url="https://play.google.com/store/apps/details?id=com.v2raytun.android&hl=ru", ), ) builder.row( InlineKeyboardButton( - text="🍏 Подключить на iOS", - url=f'{APP_URL}/?url=v2raytun://import/{trial_key_info["key"]}' + text="🍏 Подключить на iOS", + url=f'{APP_URL}/?url=v2raytun://import/{trial_key_info["key"]}', ), InlineKeyboardButton( - text="🤖 Подключить на Android", - url=f'{APP_URL}/?url=v2raytun://import-sub?url={trial_key_info["key"]}' + text="🤖 Подключить на Android", + url=f'{APP_URL}/?url=v2raytun://import-sub?url={trial_key_info["key"]}', ), )