сбивается message_id при повторном запуске функции aiogram

создаю бота типа игры и там можно изменять ники через бд, но суть в том что при первом запуске этой функции:

@router.callback_query(F.data == 'rename')
async def rename_user(callback: CallbackQuery, state: FSMContext):
    await state.set_state(user_states.state_for_name)
    await edit_message(path=r'other_photo//rename.png', caption='Введите новое имя в чат', callback=callback)

@router.message(user_states.state_for_name)
async def end_of_rename_user(message: Message, state: FSMContext, bot: Bot):
    await state.set_state(None)
    await state.set_data({})
    new_user_name = message.text
    bool_new_user_name = main_func_bd('check_name', message.from_user.id, user_name=new_user_name)
    skin = main_func_bd('valid_skin', message.from_user.id)
    if bool_new_user_name:
        main_func_bd('rename', message.from_user.id, user_name=new_user_name)
        text = main_func_bd('profile', message.from_user.id)
        
    elif not bool_new_user_name:
        profile = main_func_bd('profile', message.from_user.id)
        text = f'Такой ник уже существует!\n{profile}'

    await bot.edit_message_media(chat_id=message.chat.id, message_id= message.message_id - 1, media=InputMediaPhoto(media=FSInputFile(fr'skins/{skin}.png'), caption=text), reply_markup=profile_markup)
    await bot.delete_message(message.chat.id, message.message_id)

ник изменяется, а при повторном запуске выдается ошибка, что сообщение для edit не было найдено:

aiogram.exceptions.TelegramBadRequest: Telegram server says - Bad Request: message to edit not found

все остальное работает идеально, кроме этого message_id. я пытался вычитать из message_id один, типа должно изменяться как раз прошлое сообщение перед тем как пришлется ник игрока, но тогда ошибка возникает при первом запуске функции, получается, что message_id как то стоит на месте вне зависимости присылаются новые сообщения или нет (как раз ник игрока), но это только моя догадка, подскажите, как можно это исправить


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

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

Странно, что Вы ожидаете чего-то другого!

После await bot.delete_message(message.chat.id, message.message_id),
как можно успешно await bot.edit_message_media(chat_id=message.chat.id, message_id= message.message_id, # ...) ?


Дополнение. (после обновления вопроса)

Вот допустим получили ссылки на сообщения из истории:

link_messages_history = (
    'https://t.me/c/1950314177/5/1459',
    'https://t.me/c/1950314177/5/1460',
    'https://t.me/c/1950314177/5/1461',
    'https://t.me/c/1950314177/5/1462'
    )

если удалить сообщение с id == 1461 и заново получить 4 сообщения из истории,
то получим такие ссылки:

other_link_messages_history = (
    'https://t.me/c/1950314177/5/1458',
    'https://t.me/c/1950314177/5/1459',
    'https://t.me/c/1950314177/5/1460',
    'https://t.me/c/1950314177/5/1462'
    )

Вот и думайте, можете ли Вы делать message_id= message.message_id - 1,
или Вам надо сохранять id сообщения которое будете в дальнейшем редактировать в FSM...

→ Ссылка