AutoSkill Реализация переключателя настроек и диалога подтверждения в Aiogram
Навык для создания интерактивного меню с переключателем пользовательских настроек (например, включение/выключение функции) и диалогом подтверждения для разрушительных действий (очистка данных). Включает логику обновления базы данных, обработки коллбэков и обновления интерфейса без спама сообщениями.
git clone https://github.com/ECNU-ICALK/AutoSkill
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/реализация-переключателя-настроек-и-диалога-подтверждения-в-aiog" ~/.claude/skills/ecnu-icalk-autoskill-aiogram-864e22 && rm -rf "$T"
SkillBank/ConvSkill/english_gpt4_8_GLM4.7/реализация-переключателя-настроек-и-диалога-подтверждения-в-aiog/SKILL.mdРеализация переключателя настроек и диалога подтверждения в 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
) на противоположное значение (0 или 1).use_common_backgrounds - Отправь уведомление пользователю через
.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
- добавить переключатель в меню
- сделать подтверждение удаления
- реализовать настройки пользователя
- кнопка вкл выкл
- личный кабинет с настройками