сбивается 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 шт):
Странно, что Вы ожидаете чего-то другого!
После 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
...