Path: blob/master/ invest-robot-contest_trading_bot-master/bot/handlers/insert_token_handlers.py
5935 views
from main import dp1from aiogram.types import Message2from bot.keyboards.start_menu_keyboard import get_start_menu3from aiogram.dispatcher import FSMContext4from aiogram.dispatcher.filters.state import State, StatesGroup5from aiogram import types6from aiogram.types import ReplyKeyboardRemove7import sqlite3 as sl8from tinkoff.invest import Client9from config.crypto_rsa import encrypt1011"""1213Тут представлены все хэндлеры, которые отвечают за добавление токена1415"""1617"""18Создаём состояние ожидания19"""202122class TokenWaiting(StatesGroup):23wait_token = State()242526"""27Первый хэндлер, который запускает состояние ожидания28"""293031@dp.message_handler(state="*", text="Изменить Токен")32async def choose_token_start(message: Message):33await message.answer("Внимание! При изменении токена все торговые стратегии будут удалены!")34await message.answer("Введите токен!", reply_markup=ReplyKeyboardRemove())35await TokenWaiting.next()363738"""39Второй хэндлер, который исполняется в состоянии s_wait_figi40"""414243@dp.message_handler(state=TokenWaiting.wait_token, content_types=types.ContentTypes.TEXT)44async def choose_token_finish(message: Message, state: FSMContext):45token = message.text46try:47with Client(token) as client:4849acc = client.users.get_accounts()5051connection = sl.connect("db/BotDB.db")52cursor = connection.cursor()5354encrypted_token = encrypt(token)55account_id = acc.accounts[0].id56account_type = acc.accounts[0].type57account_access = acc.accounts[0].access_level5859cursor.execute('UPDATE users SET token = ?, account_id = ?, account_type = ?, account_access = ? WHERE '60'user_id = ?;',61(sl.Binary(encrypted_token), account_id, account_type, account_access,62message.from_user.id))6364cursor.execute('DELETE FROM str1_config WHERE user_id = ?;',65(message.from_user.id,))6667connection.commit()6869await message.answer("Ваш токен добавлен!", reply_markup=get_start_menu(message.from_user.id))70await message.delete()71await state.finish()7273except:74await message.answer("Такого токена не существует! Введите снова!")75return767778