@RiderMC

Инлайн-кнопки 2 раза пишут сообщение aiogram, как сделать, чтобы писало только одно?

@dp.callback_query(F.data == 'mails')
async def mailsss(callback: types.CallbackQuery):
    if callback.from_user.id == 234234234:
        await callback.message.answer(text='Сообщение админу будет')
    else:
        bln = cur.execute(f"""SELECT * FROM mails""")
        for row in bln:
            markup = InlineKeyboardBuilder()
            markup.row(types.InlineKeyboardButton(text=f'{row[1]}' + ' ' + str(row[4]) + ' ' + '₽', callback_data='mailrus'))
            await callback.message.answer(text=f'<b> Категория:</b> ✉️ Почты ✉️', parse_mode='HTML', reply_markup=markup.as_markup(row_width=1))


Когда нажимаешь кнопку "mails", то бот два раза пишет одно и тоже, хотя должен только одно сообщение отправлять:
66a08293861e3703547368.jpeg
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Дык сколько строк в таблице mails, столько раз и пишет. Вы же сами цикл сделали.
Ответ написан
@Madeezy
Надо сообщение отправлять вне цикла
UPD: и билдер надо вне цикла создавать
@dp.callback_query(F.data == 'mails')
async def mailsss(callback: types.CallbackQuery):
    if callback.from_user.id == 234234234:
        await callback.message.answer(text='Сообщение админу будет')
    else:
        bln = cur.execute(f"""SELECT * FROM mails""").fetchall()
        markup = InlineKeyboardBuilder()
        for row in bln:
            markup.row(types.InlineKeyboardButton(text=f'{row[1]}' + ' ' + str(row[4]) + ' ' + '₽', callback_data='mailrus'))
        await callback.message.answer(text=f'<b> Категория:</b> ✉️ Почты ✉️', parse_mode='HTML', reply_markup=markup.as_markup(row_width=1))
Ответ написан
Ваш ответ на вопрос

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

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