@yurij123

Как убрать inline клавиатуру aiogram?

Работаю с aiogram. Не могу решить проблему с инлайновой клавиатурой. Подскажите пожалуйста, как убрать инлайн кнопки, после нажатия на одну из них. Подскажите максимально простой способ.
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardRemove, \
    ReplyKeyboardMarkup, KeyboardButton, \
    InlineKeyboardMarkup, InlineKeyboardButton

TOKEN = "****"

bot = Bot(token=TOKEN)

dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def answer(message: types.Message):
    btn1 = KeyboardButton('Привет')
    markup1 = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True).add(btn1)
    await message.reply('Привет', reply_markup=markup1)


@dp.message_handler(content_types=['text'])
async def chat(message: types.Message):
    if message.text == 'Привет':
        btn3 = InlineKeyboardButton('Отлично!', callback_data='good')
        btn4 = InlineKeyboardButton('Не очень!', callback_data='bad')
        markup2 = InlineKeyboardMarkup(row_width=2, one_time_keyboard=True).add(btn3, btn4)
        await message.reply('Привет, как дела?', reply_markup=markup2)


    else:
        await message.reply('Извините, но я не понимаю!')





if __name__ == '__main__':
    executor.start_polling(dp)
  • Вопрос задан
  • 8958 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dragonz1
@dp.callback_query_handler(text="тут название твоей callback_data")
async def call_main_menu(call: CallbackQuery):
await bot.delete_message(chat_id=call.from_user.id, message_id=call.message.message_id)
Ответ написан
@SashaN69
Школота
Можно просто удалять сообщение
import asyncio
from contextlib import suppress

from aiogram import types
from aiogram.utils.exceptions import (MessageToEditNotFound, MessageCantBeEdited, MessageCantBeDeleted,
                                      MessageToDeleteNotFound)

async def delete_message(message: types.Message, sleep_time: int = 0):
    await asyncio.sleep(sleep_time)
    with suppress(MessageCantBeDeleted, MessageToDeleteNotFound):
        await message.delete()


msg = await message.reply("Я удалюсь через 30 секунд")
    asyncio.create_task(delete_message(msg, 30)
Ответ написан
Комментировать
@tmutarakan
Вместо удаления можно отредактировать в сообщении параметр reply_markup
@dp.callback_query_handler(text="тут название твоей callback_data")
async def call_main_menu(call: CallbackQuery):
    await bot.edit_message_reply_markup(
        chat_id=callback_query.from_user.id,
        message_id=callback_query.message.message_id, 
        reply_markup=None
    )
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы