Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_trading_bot-master/bot/handlers/insert_token_handlers.py
5935 views
1
from main import dp
2
from aiogram.types import Message
3
from bot.keyboards.start_menu_keyboard import get_start_menu
4
from aiogram.dispatcher import FSMContext
5
from aiogram.dispatcher.filters.state import State, StatesGroup
6
from aiogram import types
7
from aiogram.types import ReplyKeyboardRemove
8
import sqlite3 as sl
9
from tinkoff.invest import Client
10
from config.crypto_rsa import encrypt
11
12
"""
13
14
Тут представлены все хэндлеры, которые отвечают за добавление токена
15
16
"""
17
18
"""
19
Создаём состояние ожидания
20
"""
21
22
23
class TokenWaiting(StatesGroup):
24
wait_token = State()
25
26
27
"""
28
Первый хэндлер, который запускает состояние ожидания
29
"""
30
31
32
@dp.message_handler(state="*", text="Изменить Токен")
33
async def choose_token_start(message: Message):
34
await message.answer("Внимание! При изменении токена все торговые стратегии будут удалены!")
35
await message.answer("Введите токен!", reply_markup=ReplyKeyboardRemove())
36
await TokenWaiting.next()
37
38
39
"""
40
Второй хэндлер, который исполняется в состоянии s_wait_figi
41
"""
42
43
44
@dp.message_handler(state=TokenWaiting.wait_token, content_types=types.ContentTypes.TEXT)
45
async def choose_token_finish(message: Message, state: FSMContext):
46
token = message.text
47
try:
48
with Client(token) as client:
49
50
acc = client.users.get_accounts()
51
52
connection = sl.connect("db/BotDB.db")
53
cursor = connection.cursor()
54
55
encrypted_token = encrypt(token)
56
account_id = acc.accounts[0].id
57
account_type = acc.accounts[0].type
58
account_access = acc.accounts[0].access_level
59
60
cursor.execute('UPDATE users SET token = ?, account_id = ?, account_type = ?, account_access = ? WHERE '
61
'user_id = ?;',
62
(sl.Binary(encrypted_token), account_id, account_type, account_access,
63
message.from_user.id))
64
65
cursor.execute('DELETE FROM str1_config WHERE user_id = ?;',
66
(message.from_user.id,))
67
68
connection.commit()
69
70
await message.answer("Ваш токен добавлен!", reply_markup=get_start_menu(message.from_user.id))
71
await message.delete()
72
await state.finish()
73
74
except:
75
await message.answer("Такого токена не существует! Введите снова!")
76
return
77
78