@RG5000

Можна ли в aiogram реализовать следующую функцию?

Можно ли в aiogram реализовать функцию гармошки для инлайновых кнопок?

Например, я нажимаю на Инлайновую кнопку1
63f5175249700726407015.jpeg

Выскакивает её содержимое. Например фотка с текстом.
63f5178147725928770612.jpeg

Потом я нажимаю снова на эту же Инлайновую кнопку1 и она сворачивается и её содержимое (фотка с текстом) скрывается или удаляется и всё возвращается в исходное положение как и было вначале.
63f517e5aa20e892170817.jpeg

Возможно ли это осуществить?
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
@Tim-developer
Извиняюсь, что так долго. Пишите, ecли будут вопросы

from aiogram import Dispatcher, Bot, executor
from aiogram.types import *


bot = Bot("TOKEN")
dp = Dispatcher(bot)


@dp.message_handler(text="Кнопка1")
async def main(message: Message):
    keyboard = InlineKeyboardMarkup(row_width=1)
    btn1 = InlineKeyboardButton(text="Инлайн кнопка1", callback_data="btn1")
    btn2 = InlineKeyboardButton(text="Инлайн кнопка2", callback_data="btn2")
    btn3 = InlineKeyboardButton(text="Инлайн кнопка3", callback_data="btn3")
    keyboard.add(btn1, btn2, btn3)
    await message.answer("Инлайновые кнопки Кнопки1", reply_markup=keyboard)


@dp.callback_query_handler(text="btn1")
async def btn1(call: CallbackQuery):
    photo = open("img.png", "rb")
    msg = await call.message.answer_photo(photo=photo, caption="Прикреплённый к фото текст кнопки 1")
    keyboard = call.message.reply_markup
    btn1 = InlineKeyboardButton(text="Инлайн кнопка1 (Свернуть)", callback_data=f"{msg.message_id}_btn1")
    keyboard["inline_keyboard"][0][0] = btn1
    await call.message.edit_reply_markup(keyboard)


@dp.callback_query_handler(text="btn2")
async def btn2(call: CallbackQuery):
    photo = open("img.png", "rb")
    msg = await call.message.answer_photo(photo=photo, caption="Прикреплённый к фото текст кнопки 2")
    keyboard = call.message.reply_markup
    btn2 = InlineKeyboardButton(text="Инлайн кнопка2 (Свернуть)", callback_data=f"{msg.message_id}_btn2")
    keyboard["inline_keyboard"][1][0] = btn2
    await call.message.edit_reply_markup(keyboard)


@dp.callback_query_handler(text="btn3")
async def btn3(call: CallbackQuery):
    photo = open("img.png", "rb")
    msg = await call.message.answer_photo(photo=photo, caption="Прикреплённый к фото текст кнопки 3")
    keyboard = call.message.reply_markup
    btn3 = InlineKeyboardButton(text="Инлайн кнопка2 (Свернуть)", callback_data=f"{msg.message_id}_btn3")
    keyboard["inline_keyboard"][2][0] = btn3
    await call.message.edit_reply_markup(keyboard)


@dp.callback_query_handler(regexp=r"[\d]+_btn1")
async def btn1_pthotodel(call: CallbackQuery):
    await bot.delete_message(call.message.chat.id, int(call.data.split("_")[0]))
    keyboard = call.message.reply_markup
    btn1 = InlineKeyboardButton(text="Инлайн кнопка1", callback_data="btn1")
    keyboard["inline_keyboard"][0][0] = btn1
    await call.message.edit_reply_markup(keyboard)


@dp.callback_query_handler(regexp=r"[\d]+_btn2")
async def btn1_pthotodel(call: CallbackQuery):
    await bot.delete_message(call.message.chat.id, int(call.data.split("_")[0]))
    keyboard = call.message.reply_markup
    btn2 = InlineKeyboardButton(text="Инлайн кнопка2", callback_data="btn2")
    keyboard["inline_keyboard"][1][0] = btn2
    await call.message.edit_reply_markup(keyboard)


@dp.callback_query_handler(regexp=r"[\d]+_btn3")
async def btn1_pthotodel(call: CallbackQuery):
    await bot.delete_message(call.message.chat.id, int(call.data.split("_")[0]))
    keyboard = call.message.reply_markup
    btn3 = InlineKeyboardButton(text="Инлайн кнопка3", callback_data="btn3")
    keyboard["inline_keyboard"][2][0] = btn3
    await call.message.edit_reply_markup(keyboard)


executor.start_polling(dp)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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