async def continue_adding(message: types.Message, state: FSMContext): async with state.proxy() as data: w_native = '' w_learning = '' if data['direction'] == 1: dct = Dictionary(YANDEX_API, from_lang=data['native'], to_lang=data['learning']) from_lang = data['native'] to_lang = data['learning'] w_native = str(message.text).capitalize() result = dct.lookup(message.text) elif data['direction'] == 2: dct = Dictionary(YANDEX_API, from_lang=data['learning'], to_lang=data['native']) from_lang = data['learning'] to_lang = data['native'] w_learning = str(message.text).capitalize() result = dct.lookup(message.text, ui='en') else: logging.error("CHECK YOUR CODE") pass if not result.is_found: return await message.reply("not found") tr = result.get_tr('text', 'gen', 'pos')[0] if from_lang == 'DE': if result.gen == 'n': article = "das" elif result.gen == 'm': article = "der" else: article = "die" w_learning = f"{article} {result.text}" elif to_lang == 'DE': if tr['gen'] == 'n': article = "das" elif tr['gen'] == 'm': article = "der" else: article = "die" w_learning = f"{article} {tr['text']}" else: w_learning = tr['text'] if data['direction'] == 2: w_native = str(tr['text']).capitalize() logging.info(f'checking if card {w_native} already exists') cards = session.query(Card).filter(Card.side1 == w_native).all() if len(cards) != 0: if to_lang == w_native: logging.debug(f'Exists! Reply native from Card') return await message.reply(cards[0].side1) else: logging.debug(f'Exists! Reply learning from Card') return await message.reply(cards[0].side2) logging.debug(f'adding new card') new_card = Card() new_card.user_id = data['user'] new_card.lan1 = from_lang new_card.lan2 = to_lang new_card.side1 = w_native new_card.side2 = w_learning session.add(new_card) # cashes data for db session.commit() # writes all cached data to file logging.info(f'new card created {new_card.side1} {new_card.side2}') return await message.reply(f"{new_card.side1} - {new_card.side2}")