@Msondre

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

Бот после каждого действия изменяет свое сообщение, а не отправляет новое. Нужно, чтобы после ввода пользователя, бот удалил сообщение пользователя, принял его, и редактировал свое сообщение
хэндлер:
class User(StatesGroup):
    id = State()


async def start_set_id(callback: types.CallbackQuery):
    await User.id.set()
    await callback.message.edit_text(text='Отправьте id')


async def set_id(message: types.Message, state: FSMContext):
    id = message.text
    await message.delete()
    await message.answer(text='id изменено')
    await state.finish()


def register_handlers_search(dp: Dispatcher):
    dp.register_callback_query_handler(start_set_id, text='set_id', state=None)
    dp.register_message_handler(set_id, state=User.id)
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
Denkuwus
@Denkuwus
15 y.o
Можно использовать метод edit_message_text класса Updater:

async def set_id(message: types.Message, state: FSMContext):
    id = message.text
    # Удалить сообщение пользователя
    await message.delete()
    # Редактируем сообщение бота
    await message.bot.edit_message_text(
        chat_id=message.chat.id,
        message_id=message.message_id,
        text='ник изменен'
    )
    # Завершить процесс
    await state.finish()


Здесь метод edit_message_text используется для редактирования сообщения бота с текстом «ник изменен». Параметры chat_id и message_id используются для указания редактируемого чата и сообщения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы