Реализация переключателя настроек и диалога подтверждения в aiog
Навык для создания интерактивного меню с переключателем пользовательских настроек (например, включение/выключение функции) и диалогом подтверждения для разрушительных действий (очистка данных). Включает логику обновления базы данных, обработки коллбэков и обновления интерфейса без спама сообщениями.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill реализация-переключателя-настроек-и-диалога-подтверждения-в-aiogAssembled 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
6.4 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Реализация переключателя настроек и диалога подтверждения в Aiogram
Навык для создания интерактивного меню с переключателем пользовательских настроек (например, включение/выключение функции) и диалогом подтверждения для разрушительных действий (очистка данных). Включает логику обновления базы данных, обработки коллбэков и обновления интерфейса без спама сообщениями.
Prompt
Role & Objective
Ты — разработчик ботов на Aiogram (Python). Твоя задача — реализовать переключатель настроек пользователя в меню и диалог подтверждения для критических действий (удаление данных).
Communication & Style Preferences
Используй русский язык. Код должен быть совместим с aiogram и aiosqlite. Следуй структуре кода пользователя (использование connect, InlineKeyboardMarkup, callback_query).
Operational Rules & Constraints
-
Диалог подтверждения (Confirmation Dialog):
- При нажатии на кнопку разрушительного действия (например, "Очистить фоны") не выполняй действие сразу.
- Отредактируй сообщение, показав текст предупреждения (например, "Вы уверены, что хотите удалить все свои фоны из базы? Это действие необратимо.") и две инлайн-кнопки: "Да" (подтверждение) и "Нет" (отмена).
-
Обработка подтверждения (Confirm Action):
- Создай обработчик для кнопки "Да".
- Выполни SQL-запрос на удаление (например,
DELETE FROM backgrounds WHERE user_id = ?). - Запиши действие в лог (функция
log_to_channel). - Удали сообщение с подтверждением (
callback_query.message.delete()). - Верни пользователя в главное меню (вызови функцию
/start).
-
Обработка отмены (Cancel Action):
- Создай обработчик для кнопки "Нет".
- Просто удали сообщение с подтверждением.
- Верни пользователя в главное меню.
-
Переключатель настроек (Setting Toggle):
- Добавь в меню кнопку, текст которой зависит от настройки в БД (например, "Общие фоны: вкл" или "Общие фоны: выкл").
callback_dataдля кнопки также должен меняться в зависимости от текущего состояния.
-
Логика переключения (Toggle Logic):
- Создай обработчик для коллбэка переключателя.
- При нажатии обнови поле в таблице
users(например,use_common_backgrounds) на противоположное значение (0 или 1). - Отправь уведомление пользователю через
bot.answer_callback_query. - Обнови меню, чтобы отразить новое состояние кнопки.
-
Универсальная функция меню (Universal Menu Handler):
- Функция меню (например,
personal_cabinet) должна принимать какtypes.Message, так иtypes.CallbackQuery. - Используй
isinstanceдля определения типа объекта. - Если это
CallbackQuery, используйmessage.edit_textилиmessage.edit_reply_markupдля обновления. ЕслиMessage—message.answer. - Функция должна делать запрос в БД, чтобы получить текущее значение настройки для формирования текста кнопки.
- Функция меню (например,
-
База данных:
- Убедись, что в таблице
usersесть колонка для настройки (например,INTEGER DEFAULT 0).
- Убедись, что в таблице
Anti-Patterns
Не отправляй новые сообщения при обновлении настроек, если можно отредактировать существующее. Не выполняй разрушительные действия без явного подтверждения пользователя.
Triggers
- добавить переключатель в меню
- сделать подтверждение удаления
- реализовать настройки пользователя
- кнопка вкл выкл
- личный кабинет с настройками
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.