from aiogram import F, Router import app.telegram.Keyboards.inline_keyboards as inline_markup import app.telegram.database.requests as rq from aiogram.types import Message, CallbackQuery # FSM - Механизм состояния from aiogram.fsm.state import State, StatesGroup from aiogram.fsm.context import FSMContext 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): text = '''Подключение Bybit аккаунта 1. Зарегистрируйтесь или войдите в свой аккаунт на Bybit (https://www.bybit.com/). 2. В личном кабинете выберите раздел API. 3. Создание нового API ключа - Нажмите кнопку Create New Key (Создать новый ключ). - Выберите системно-сгенерированный ключ. - Укажите название API ключа (любое). - Выберите права доступа для торговли (Trade). - Можно ограничить доступ по IP для безопасности. 4. Подтверждение создания - Подтвердите создание ключа. - Отправьте чат-роботу. Важно: сохраните отдельно API Key и Secret Key в надежном месте. Secret ключ отображается только один раз. ''' await callback.message.answer(text=text, parse_mode='html', reply_markup=inline_markup.connect_bybit_api_markup) 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): 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) 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) 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('Данные добавлены, нажмите на профиль и начните торговлю!')