@KeXaiL

Ошибка aiogram.utils.exceptions.MessageNotModified: Message is not modified: specified new message content and reply markup are exactly the same as a?

Добрый день! Возникла проблема с InlineKeyboardMarkup, когда бот отправляет сообщение выводится 3 inline кнопки, при нажатии на кнопку с текстом "Недельная" выводится ошибка: aiogram.utils.exceptions.MessageNotModified: Message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message
def premium_btn_monthly():
    keyboard = InlineKeyboardMarkup(row_width=3)
    item = InlineKeyboardButton("Месячная", callback_data="monthly_o")
    item1 = InlineKeyboardButton("Недельная", callback_data="weakly")
    item2 = InlineKeyboardButton("Годовая", callback_data="annual")
    keyboard.add(item, item1, item2)
    keyboard.add(InlineKeyboardButton(" Starter: ₽700", callback_data="starter_monthly"))
    keyboard.add(InlineKeyboardButton(" Premium: ₽1400", callback_data="premium_monthly"))
    return keyboard

def premium_btn_annual():
    keyboard = InlineKeyboardMarkup(row_width=3)
    item = InlineKeyboardButton("Месячная", callback_data="monthly")
    item1 = InlineKeyboardButton("Недельная", callback_data="weakly")
    item2 = InlineKeyboardButton("Годовая", callback_data="annual_o")
    keyboard.add(item, item1, item2)
    keyboard.add(InlineKeyboardButton(" Starter: ₽2600", callback_data="starter_annual"))
    keyboard.add(InlineKeyboardButton(" Premium: ₽5600", callback_data="premium_annual"))
    return keyboard

def premium_btn_weakly():
    keyboard = InlineKeyboardMarkup(row_width=3)
    item = InlineKeyboardButton("Месячная", callback_data="monthly")
    item1 = InlineKeyboardButton("Недельная", callback_data="weakly_o")
    item2 = InlineKeyboardButton("Годовая", callback_data="annual")
    keyboard.add(item, item1, item2)
    keyboard.add(InlineKeyboardButton(" Starter: ₽500", callback_data="starter_weakly"))
    keyboard.add(InlineKeyboardButton(" Premium: ₽1000", callback_data="premium_weakly"))
    return keyboard

def premium_btn_monthly():
    keyboard = InlineKeyboardMarkup(row_width=3)
    item = InlineKeyboardButton("Месячная", callback_data="monthly_o")
    item1 = InlineKeyboardButton("Недельная", callback_data="weakly")
    item2 = InlineKeyboardButton("Годовая", callback_data="annual")
    keyboard.add(item, item1, item2)
    keyboard.add(InlineKeyboardButton(" Starter: ₽700", callback_data="starter_monthly"))
    keyboard.add(InlineKeyboardButton(" Premium: ₽1400", callback_data="premium_monthly"))
    return keyboard

def premium_btn_annual():
    keyboard = InlineKeyboardMarkup(row_width=3)
    item = InlineKeyboardButton("Месячная", callback_data="monthly")
    item1 = InlineKeyboardButton("Недельная", callback_data="weakly")
    item2 = InlineKeyboardButton("Годовая", callback_data="annual_o")
    keyboard.add(item, item1, item2)
    keyboard.add(InlineKeyboardButton(" Starter: ₽2600", callback_data="starter_annual"))
    keyboard.add(InlineKeyboardButton(" Premium: ₽5600", callback_data="premium_annual"))
    return keyboard

def premium_btn_weakly():
    keyboard = InlineKeyboardMarkup(row_width=3)
    item = InlineKeyboardButton("Месячная", callback_data="monthly")
    item1 = InlineKeyboardButton("Недельная", callback_data="weakly_o")
    item2 = InlineKeyboardButton("Годовая", callback_data="annual")
    keyboard.add(item, item1, item2)
    keyboard.add(InlineKeyboardButton(" Starter: ₽500", callback_data="starter_weakly"))
    keyboard.add(InlineKeyboardButton(" Premium: ₽1000", callback_data="premium_weakly"))
    return keyboard

@dp.message_handler(regexp="Премиум подписка")
async def process_premium(message: types.Message):
    msg = await bot.send_message(message.chat.id, """ Бот предлагает бесплатный дневной лимит в 10 запросов на создание текста и 5 запросов на работу с вашими изображениями в месяц для обеспечения оптимальной скорости и качества.

 Нужно больше? Тогда выберите одну из следующих доступных подписок, включающих дополнительную функциональность и расширенные лимиты:

 Starter:
— 100 сообщений в день GPT 3.5
— 5 сообщений GPT 4 + Turbo
— 8 моделей GPT 3.5
— 5 изображений в месяц
— Техническая поддержка от разработчиков 24/7

 Premium:
— 500 сообщений в день GPT 3.5
— 500 сообщений GPT 4 + Turbo
— 8 моделей GPT 3.5
— Зрение GPT 4 Vision
— 500 изображений в день DALL-E
— Работает в группах Telegram
— Создание аниме по фотографии
— Редактор изображений на основе ИИ
— Компьютерное зрение: распознование текста с фото, решение любых задач и экзаменационных билетов, любые запросы по тексту на фото.
— Голосовое  управление, распознавание голосовых сообщений и режим ответа голосом
— Возможность выбрать GPT личность для бота (50 видов)
— Помнит больше сообщений в истории чата для более качественного ответа
— Увеличенный х3 контекст и длина ответа бота
— Обновление бота до новых версий ChatGPT
— Техническая поддержка от разработчиков 24/7
— Больше нету раздражающей  рекламы""", reply_markup=premium_btn_monthly())

@dp.callback_query_handler(lambda call: call.data == "annual")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_annual())

@dp.callback_query_handler(lambda call: call.data == "monthly")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_monthly())

@dp.callback_query_handler(lambda call: call.data == "monthly")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_monthly())

@dp.callback_query_handler(lambda call: call.data == "monthly")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_monthly())

@dp.callback_query_handler(lambda call: call.data == "monthly_o")
async def callback_buy(call: types.CallbackQuery):
   await call.message.edit_reply_markup(reply_markup=premium_btn_annual())

@dp.callback_query_handler(lambda call: call.data == "annual_o")
async def callback_buy(call: types.CallbackQuery):
   await call.message.edit_reply_markup(reply_markup=premium_btn_monthly())

@dp.callback_query_handler(lambda call: call.data == "weakly")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_monthly())

@dp.callback_query_handler(lambda call: call.data == "weakly_o")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_weakly())
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
febday
@febday
Перед тем как помочь с вашей ошибкой, хотелось бы поинтересоваться. Для чего вы создали 3 функции (для отрисовки клавиатуры), если уже существуют эти 3 функции (выше). Вы их дублируете просто, в чём смысл?

Также, для чего вы создали 3 обработчика одной и той же кнопки ("monthly")

Ответ на ваш вопрос: Изначально вы выводите сообщение (функция "process_premium"), в котором используется клавиатура, которая создаётся в функции "premium_btn_monthly". При нажатие на кнопку "weakly" вы редактируете сообщение и отдаёте всю ту же клавиатуру, что и в исходном сообщение.

Наверное это будет выглядеть так. Я не знаю вашу логику, поэтому могу только гадать:
@dp.callback_query_handler(lambda call: call.data == "weakly")
async def callback_buy(call: types.CallbackQuery):
    await call.message.edit_reply_markup(reply_markup=premium_btn_weakly())


Читайте ошибку и свой код внимательно, в самой ошибке всё описано
Ответ написан
Ваш ответ на вопрос

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

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