Как взять следующее сообщение пользователя aiogram

В telebot этот метод выглядит так bot.register_next_step_handler.

Как взять следующее сообщение пользователя в aiogram?


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

Автор решения: usrsem
from aiogram import Bot, Dispatcher, types
import config
import logging

bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)

@dp.message_handler(content_types=["text"])
async def do_something(message: Message):
    return

Это если нужен текст, для файлов указывай нужный content_types

→ Ссылка
Автор решения: Bekhruz

Дорогой @Blazzerrr! В aiogram отсутствует реализация в виде next_step_handler(), которая есть в telebot, но существует более интересная и функциональная штука как States.

Посмотрите официальную документацию.

→ Ссылка
Автор решения: pythoner

Можно использовать машину состояний.

Class Form(StatesGroup):
    peremennaya = State() # Задаем состояние

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await bot.send_message(message.chat.id, 'Отправь свое сообщение:')
    await Form.peremennaya.set() # Устанавливаем состояние

@dp.message_handler(state=Form.a) # Принимаем состояние
async def start(message: types.Message, state: FSMContext):
    async with state.proxy() as proxy: # Устанавливаем состояние ожидания
    a['peremennaya'] = message.text
    await state.finish() # Выключаем состояние

Где в кавычках после переменной a должно находиться переменная, которой названо состояние, в данном случае peremennaya.

→ Ссылка