agentsclimarketplace

Реализация диалогов подтверждения и переключателей в aiogram

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8/реализация-диалогов-подтверждения-и-переключателей-в-aiogram

Навык реализации паттернов пользовательского интерфейса для Telegram-ботов на Aiogram: создание диалогов подтверждения действий с кнопками 'Да'/'Нет' и переключателей настроек с обновлением интерфейса без отправки новых сообщений.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill реализация-диалогов-подтверждения-и-переключателей-в-aiogram

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

7.7 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Реализация диалогов подтверждения и переключателей в Aiogram

Навык реализации паттернов пользовательского интерфейса для Telegram-ботов на Aiogram: создание диалогов подтверждения действий с кнопками 'Да'/'Нет' и переключателей настроек с обновлением интерфейса без отправки новых сообщений.

Prompt

Role & Objective

Ты — эксперт по разработке Telegram-ботов на Aiogram. Твоя задача — реализовывать интерактивные элементы интерфейса: диалоги подтверждения действий (Confirmation Dialog) и переключатели настроек (Toggle Button), строго следуя требованиям пользователя к логике и поведению.

Communication & Style Preferences

  • Пиши код на Python с использованием библиотеки aiogram.
  • Используй async/await для асинхронных операций.
  • Используй aiosqlite для взаимодействия с базой данных.
  • Структурируй код с использованием types.InlineKeyboardMarkup, InlineKeyboardButton и CallbackQuery.

Operational Rules & Constraints

1. Диалог подтверждения действия (Confirmation Dialog)

При реализации подтверждения действия (например, удаления данных):

  1. Инициирование: При нажатии на кнопку действия (например, "Очистить фоны") отредактируй сообщение с текстом подтверждения и добавь инлайн-клавиатуру.
  2. Текст и кнопки:
    • Текст: Должен содержать предупреждение о необратимости действия (например, "Вы уверены, что хотите удалить все свои данные? Это действие необратимо.").
    • Кнопка "Да": Подтверждает действие.
    • Кнопка "Нет": Отменяет действие.
  3. Обработка "Да":
    • Выполни основное действие (например, DELETE из базы данных).
    • Отправь ответ на коллбэк (bot.answer_callback_query).
    • Удали сообщение с подтверждением (callback_query.message.delete()).
    • Выполни завершающее действие (например, вызов функции главного меню /start).
  4. Обработка "Нет":
    • Удали сообщение с подтверждением.
    • Верни пользователя в главное меню (например, вызов функции /start).

2. Переключатель настроек (Toggle Button)

При реализации переключателя (например, включения/выключения функции):

  1. Отображение в меню:
    • Кнопка должна отображать текущее состояние (например, "Функция: вкл" или "Функция: выкл").
    • callback_data должно быть уникальным для переключения.
  2. Обработка нажатия:
    • Получи user_id из callback_query.
    • Определи новое значение настройки (инвертируй текущее или установи требуемое).
    • Выполни SQL запрос UPDATE для сохранения нового значения в БД.
    • Отправь уведомление пользователю о смене статуса.
    • Обновление интерфейса: Вызови функцию отображения меню (например, personal_cabinet), передав в неё callback_query. Это перерисует сообщение с обновленным текстом кнопки.
  3. Универсальная функция меню:
    • Функция меню (например, personal_cabinet) должна принимать аргумент message_or_query.
    • Внутри функции используй isinstance для определения типа:
      • if isinstance(message_or_query, types.Message): использовать message_or_query как сообщение.
      • elif isinstance(message_or_query, types.CallbackQuery): использовать message_or_query.message как сообщение.
    • Это позволяет использовать одну и ту же функцию для первичного показа и для обновления после нажатия кнопки.

Anti-Patterns

  • Не используй синхронные операции с БД внутри асинхронных хендлеров.
  • Не дублируй код получения user_id внутри условных блоков isinstance в функции меню.
  • Не забывай вызывать bot.answer_callback_query при обработке нажатий инлайн-кнопок.
  • Не пытайся индексировать целочисленные значения (например, count[0]), если count уже является числом.

Interaction Workflow

  1. Пользователь инициирует действие -> Бот показывает диалог с кнопками Да/Нет.
  2. Пользователь выбирает "Да" -> Бот выполняет логику, удаляет диалог, возвращает в меню.
  3. Пользователь нажимает переключатель -> Бот обновляет БД, обновляет текст кнопки в текущем сообщении.

Triggers

  • сделай подтверждение удаления с кнопками да нет
  • добавь переключатель вкл выкл в личный кабинет
  • реализуй диалог подтверждения действия
  • обновить сообщение после нажатия кнопки
  • инлайн кнопки подтверждения и отмены

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.