Path: blob/master/ invest-robot-contest_trading_bot-master/bot/handlers/sandbox_handlers.py
5936 views
from main import dp, bot1from aiogram.types import Message2from bot.keyboards.start_menu_keyboard import get_start_menu3from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton4import sqlite3 as sl5from tinkoff.invest import Client6from config.personal_data import get_token78"""910Тут представлены все хэндлеры, которые отвечают за создание или закрытие песочницы1112"""1314"""15Открытие песочницы16"""171819@dp.message_handler(state="*", text="Открыть песочницу")20async def create_sandbox(message: Message):21with Client(get_token(message.from_user.id)) as client:22acc = client.sandbox.get_sandbox_accounts().accounts23if len(acc) == 0:24client.sandbox.open_sandbox_account()25await message.answer("Аккаунт песочницы успешно создан!")26else:27await message.answer("У Вас уже есть аккаунт в песочнице!",28reply_markup=get_start_menu(user_id=message.from_user.id))293031"""32Закрытие песочницы33Выводит список всех аккаунтов34"""353637@dp.message_handler(state="*", text="Закрыть песочницу")38async def delete_sandbox_start(message: Message):39with Client(get_token(message.from_user.id)) as client:40acc = client.sandbox.get_sandbox_accounts().accounts4142if len(acc) == 0:43await message.answer("У Вас ещё нет аккаунта в песочнице!:",44reply_markup=get_start_menu(user_id=message.from_user.id))45else:46delete_sandbox = InlineKeyboardMarkup()47for i in acc:48delete_sandbox.add(InlineKeyboardButton(text=f"{i.id}", callback_data=f"sandbox:close:{i.id}"))4950await message.answer("Выберите аккаунт:",51reply_markup=delete_sandbox)525354"""55Закрытие аккаунта56Принимает id песочницы и закрывает её57"""585960@dp.callback_query_handler(lambda c: c.data and c.data.startswith('sandbox:close'))61async def close_sandbox_finish(callback_query):62data = callback_query.data.split(":")6364account_id = data[2]6566with Client(get_token(callback_query.from_user.id)) as client:67client.sandbox.close_sandbox_account(account_id=account_id)68connection = sl.connect("db/BotDB.db")69cursor = connection.cursor()7071cursor.execute('DELETE FROM str1_config WHERE user_id=? AND account_id = ?',72(callback_query.from_user.id, account_id))7374connection.commit()7576with Client(get_token(callback_query.from_user.id)) as client:77acc = client.sandbox.get_sandbox_accounts().accounts7879if len(acc) == 0:80await bot.edit_message_text(chat_id=callback_query.from_user.id,81message_id=callback_query.message.message_id, text="Все аккаунты закрыты!")82else:83delete_sandbox = InlineKeyboardMarkup()84for i in acc:85delete_sandbox.add(InlineKeyboardButton(text=f"{i.id}", callback_data=f"sandbox:close:{i.id}"))8687await bot.edit_message_text(chat_id=callback_query.from_user.id,88message_id=callback_query.message.message_id, text="Выберите аккаунт:",89reply_markup=delete_sandbox)909192