Занесение данных из ton connect в базу данных sqlite
Появилась трудность с добавлением/удалением полученного кошелька с помощью ton connect в базу данных
@router.message(F.text == 'Кошелёк')
async def wallet(message: types.Message):
chat_id = message.chat.id
connector = get_connector(chat_id)
connected = await connector.restore_connection()
mk_b = InlineKeyboardBuilder()
if connected:
mk_b.button(text='Отправить транзакцию', callback_data='send_tr')
mk_b.button(text='Отключить кошелёк', callback_data='disconnect')
await message.answer(text='Кошелёк', reply_markup=mk_b.as_markup())
else:
wallets_list = TonConnect.get_wallets()
for wallet in wallets_list:
mk_b.button(text=wallet['name'], callback_data=f'connect:{wallet["name"]}')
mk_b.adjust(1, )
if not connected:
await message.answer(text='Выберите кошелёк', reply_markup=mk_b.as_markup())
async def connect_wallet(message: types.Message, wallet_name: str):
connector = get_connector(message.chat.id)
wallets_list = connector.get_wallets()
wallet = None
for w in wallets_list:
if w['name'] == wallet_name:
wallet = w
if wallet is None:
raise Exception(f'Неизвестный кошелёк: {wallet_name}')
generated_url = await connector.connect(wallet)
mk_b = InlineKeyboardBuilder()
mk_b.button(text='Подключение', url=generated_url)
await message.answer(text='Подключите кошелёк в течении 3-ёх минут', reply_markup=mk_b.as_markup())
for i in range(1, 180):
await asyncio.sleep(1)
if connector.connected:
if connector.account.address:
wallet_address = connector.account.address
wallet_address = Address(wallet_address).to_str(is_bounceable=False)
await message.answer(f'Адресс вашего кошелька: <code>{wallet_address}</code>')
db.add_wallet(wallet_address)
logger.info(f'Подключено к адрессу: {wallet_address}')
return
await message.answer(f'Время подключения истекло!', reply_markup=mk_b.as_markup())
async def disconnect_wallet(message: types.Message):
connector = get_connector(message.chat.id)
await connector.restore_connection()
await connector.disconnect()
db.delete_wallet(message.from_user.id)
await message.answer('Вы успешно отключены!')
def add_wallet(self, wallet_address):
with self.connection:
return self.cursor.execute(f"INSERT INTO users (wallet) VALUES (?)", (wallet_address,)).fetchone()[0]
def delete_wallet(self, wallet_address):
with self.connection:
return self.cursor.execute(f"DELETE FROM users WHERE wallet = ? ", (wallet_address,)).fetchone()[0]
В терминале выдает ошибку
return self.cursor.execute(f"INSERT INTO users (wallet) VALUES (?)", (wallet_address,))
[![sqlite3.IntegrityError: NOT NULL constraint failed: users.user_id][1]][1]