Как получить текст сообщения aiogram

#пробовал это сделать через fsm но почему то не работает

#!venv/bin/python
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Command
from aiogram.dispatcher.filters.state import State, StatesGroup
import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

# Объект бота
bot = Bot(token="")
# Диспетчер для бота
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

# Включаем логирование, чтобы не пропустить важные сообщения
logging.basicConfig(level=logging.INFO)

@dp.message_handler(Command('name'))
async def cmd_tese1(message: types.Message):
    await message.answer("Введите название")
    await Name.test1.set()


class Name(StatesGroup):
    test1=State()

    @dp.message_handler(state=test1)
    async def state1(self: types.Message, state: FSMContext):
        answer = self.text
        await  state.update_data(test1=answer)
        name = await state.get_data('test1')
        await self.answer(answer)
        print(answer)
        await state.finish()



if __name__ == "__main__":
    # Запуск бота
    executor.start_polling(dp, skip_updates=False)

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

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

Ничего не понял, что вы конкретно хотите?
Я четко вижу как вы получаете текст answer = self.text правда зачем-то назвали message - self и вполне возможна ошибка из-за зарезервированного слова

Поменяйте на

@dp.message_handler(state=test1)
async def state1(message: types.Message, state: FSMContext):
    answer = message.text

Но это половина беды.
Какого черта вы засунули хендлер внутрь класса стейтов? Для чего? Вытащите его!

UPD 1. Делайте вот так.

from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import StatesGroup, State

import config

bot = Bot(token=config.BOT_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)


class FSMInputName(StatesGroup):
    name = State()


@dp.message_handler(commands=["name"])
async def cmd_tese1(message: types.Message):
    await message.answer("Введите название")
    await FSMInputName.name.set()


@dp.message_handler(state=FSMInputName.name)
async def state1(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['name'] = message.text
    
    await message.answer(message.text)
    await state.finish()
    # после этого данные в fsm пропадают, поэтому думайте когда закрывать стейт


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
→ Ссылка