diff --git a/app/services/Bybit/functions/Add_Bybit_API.py b/app/services/Bybit/functions/Add_Bybit_API.py
index 5b4f614..2ee471e 100644
--- a/app/services/Bybit/functions/Add_Bybit_API.py
+++ b/app/services/Bybit/functions/Add_Bybit_API.py
@@ -7,8 +7,7 @@ import app.telegram.Keyboards.reply_keyboards as reply_markup
import app.telegram.database.requests as rq
from aiogram.types import Message, CallbackQuery
-# FSM - Механизм состояния
-from aiogram.fsm.state import State, StatesGroup
+from app.states.States import state_reg_bybit_api
from aiogram.fsm.context import FSMContext
logging.config.dictConfig(LOGGING_CONFIG)
@@ -16,12 +15,13 @@ logger = logging.getLogger("add_bybit_api")
router_register_bybit_api = Router()
-class state_reg_bybit_api(StatesGroup):
- api_key = State()
- secret_key = State()
@router_register_bybit_api.callback_query(F.data == 'clb_new_user_connect_bybit_api_message')
-async def info_for_bybit_api_message(callback: CallbackQuery):
+async def info_for_bybit_api_message(callback: CallbackQuery) -> None:
+ """
+ Отвечает пользователю подробной инструкцией по подключению аккаунта Bybit.
+ Показывает как создать API ключ и передать его чат-боту.
+ """
text = '''Подключение Bybit аккаунта
1. Зарегистрируйтесь или войдите в свой аккаунт на Bybit (https://www.bybit.com/).
@@ -43,36 +43,50 @@ async def info_for_bybit_api_message(callback: CallbackQuery):
await callback.answer()
+
@router_register_bybit_api.callback_query(F.data == 'clb_new_user_connect_bybit_api')
-async def add_api_key_message(callback: CallbackQuery, state: FSMContext):
+async def add_api_key_message(callback: CallbackQuery, state: FSMContext) -> None:
+ """
+ Инициирует процесс добавления API ключа.
+ Переводит пользователя в состояние ожидания ввода API Key.
+ """
await state.set_state(state_reg_bybit_api.api_key)
text = 'Отправьте KEY_API ниже: '
await callback.message.answer(text=text)
+
@router_register_bybit_api.message(state_reg_bybit_api.api_key)
-async def add_api_key_and_message_for_secret_key(message: Message, state: FSMContext):
- await state.update_data(api_key = message.text)
-
+async def add_api_key_and_message_for_secret_key(message: Message, state: FSMContext) -> None:
+ """
+ Сохраняет API Key во временное состояние FSM,
+ затем запрашивает у пользователя ввод Secret Key.
+ """
+ await state.update_data(api_key=message.text)
+
text = 'Отправьте SECRET_KEY ниже'
await message.answer(text=text)
await state.set_state(state_reg_bybit_api.secret_key)
+
@router_register_bybit_api.message(state_reg_bybit_api.secret_key)
-async def add_secret_key(message: Message, state: FSMContext):
- await state.update_data(secret_key = message.text)
+async def add_secret_key(message: Message, state: FSMContext) -> None:
+ """
+ Сохраняет Secret Key и финализирует регистрацию,
+ обновляет базу данных, устанавливает символ пользователя и очищает состояние.
+ """
+ await state.update_data(secret_key=message.text)
data = await state.get_data()
await rq.update_api_key(message.from_user.id, data['api_key'])
await rq.update_secret_key(message.from_user.id, data['secret_key'])
await rq.set_new_user_symbol(message.from_user.id)
-
+
await state.clear()
- await message.answer('Данные добавлены, нажмите на профиль и начните торговлю!', reply_markup=reply_markup.base_buttons_markup)
-
-
\ No newline at end of file
+ await message.answer('Данные добавлены, нажмите на профиль и начните торговлю!',
+ reply_markup=reply_markup.base_buttons_markup)