Не могу получить элемент с словаря python

Есть словарь, который в функции создается сам:

message = {
        'from_user': {'id': call.message.chat.id},
        'chat': {'id': call.message.chat.id}
    }

При выводе словаря получаю:

# print(message)
# print(type(message))

{'from_user': {'id': 00000000}, 'chat': {'id': 00000000}}
<class 'dict'>

Но попытавшись использовать этот словарь в другой функции, получаю ошибку:

Task exception was never retrieved
future: <Task finished name='Task-24' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py:409> exception=AttributeError("'dict' object has no attribute 'from_user'")>
Traceback (most recent call last):
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 417, in _process_polling_updates
    for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 238, in process_updates
    return await asyncio.gather(*tasks)
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 286, in process_update
    return await self.callback_query_handlers.notify(update.callback_query)
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "c:\Users\Maxim\Desktop\englishbot\englishbot.py", line 100, in callback_handler
    await userAnswerCheckWord(call)
  File "c:\Users\Maxim\Desktop\englishbot\englishbot.py", line 151, in userAnswerCheckWord
    await sendNewWord(message)
  File "c:\Users\Maxim\Desktop\englishbot\englishbot.py", line 74, in sendNewWord
    keyboard, message_text, image_link = await generate_message(message)
  File "c:\Users\Maxim\Desktop\englishbot\gen_message.py", line 9, in generate_message
    if (await connect.get_user_stateAction(message)) == 'lwords':
  File "c:\Users\Maxim\Desktop\englishbot\sqlite_connector.py", line 153, in get_user_stateAction
    userId = message.from_user.id
AttributeError: 'dict' object has no attribute 'from_user'

Функция которая обращается к словарю:

async def get_user_stateAction(message):
        userId = message.from_user.id

        sql.execute(f"""SELECT action FROM users_states WHERE userId = '{userId}'""")
        if sql.fetchone()[0] == 'lwords':
            return 'lwords'
        else:
            return 'none'

По просьбе одного из пользователей, код который вызывает функцию get_user_stateAction:

from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from kreekly_parser import get_word
from sqlite_connector import connect
from random import randint
import asyncio


async def generate_message(message):
    if (await connect.get_user_stateAction(message)) == 'lwords':
        select_eng_word, select_rus_word, eng_words, rus_words, image_link, action, audio, response_status = await get_word()
        if response_status == 200:

            # генерация клавиатуры    
            keyboard = InlineKeyboardMarkup()
            for button in range(len(eng_words)):
                keyboard.add(InlineKeyboardButton(text=eng_words[button], callback_data=f'SELECTED_WORD:{eng_words[button]}'))

            # передача правильных слов
            await connect.setRightWord(message, select_eng_word, select_rus_word)

            # передача аудио
            await connect.setNewAudio(message, audio)

            # передача неправильных слов
            wrongWords = eng_words
            inn = wrongWords.index(select_eng_word)
            del wrongWords[inn]
            await connect.setWrongUserWords(message, wrongWords=wrongWords)

            # генерация текста сообщения
            message_text = (
                f"Как переводится {select_rus_word}?"
            )

            return keyboard, message_text, image_link

        else:
            pass
    else:
        pass

Ответы (2 шт):

Автор решения: GrAnd

Обращаться к словарю надо так:

userId = message['from_user']['id']
→ Ссылка
Автор решения: Maxim Chyorny

Я просто сделал так:

async def get_user_stateAction(message):
        try:
            userId = message["from_user"]["id"]
        except:
            userId = message.from_user.id
        finally:
            sql.execute(f"""SELECT action FROM users_states WHERE userId = '{userId}'""")
            if sql.fetchone()[0] == 'lwords':
                return 'lwords'
            else:
                return 'none'
→ Ссылка