Spaces:
Runtime error
Runtime error
from aiogram import Router, F | |
from aiogram.types import Message, CallbackQuery | |
from aiogram.fsm.context import FSMContext | |
from app.database import requests as rq | |
from app.keyboards import admin_keyboards as kb | |
from app.states import AdminAddLeadmagnet, AdminStates | |
from app.middleware.authentification import admin_check | |
router = Router() | |
async def view_leadmagnets(message: Message): | |
if not await admin_check(message, {}): | |
await message.answer("У вас нет доступа к админ-панели") | |
return | |
await message.answer( | |
'Текущие лидмагниты. Нажмите для редактирования', | |
reply_markup=await kb.admin_keyboard_leadmagnets() | |
) | |
async def add_leadmagnet(callback: CallbackQuery, state: FSMContext): | |
await callback.answer('Добавляем лидмагнит') | |
await state.set_state(AdminAddLeadmagnet.admin_set_trigger) | |
await callback.message.answer('Введите кодовое слово (пожалуйста, не используйте "_" в названии!)') | |
async def add_trigger(message: Message, state: FSMContext): | |
await state.update_data(trigger=message.text) | |
await state.set_state(AdminAddLeadmagnet.admin_set_content) | |
await message.answer('Введите содержание лидмагнита ' | |
'(сообщение, которое получит пользователь после отправки кодового слова)') | |
async def add_content(message: Message, state: FSMContext): | |
await state.update_data(content=message.text) | |
await state.set_state(AdminAddLeadmagnet.admin_set_status) | |
await message.answer('Хотите ли Вы сделать данный лидмагнит активным? Активные лидмагниты будут тут же доступны для ' | |
'взаимодействия в пользовательском интерфейсе.', reply_markup=kb.yes_no_keyboard) | |
async def set_leadmagnet_status(message: Message, state: FSMContext): | |
await state.update_data(status=message.text) | |
data = await state.get_data() | |
await rq.add_leadmagnet(data['trigger'], data['content'], True if data['status'] == 'Да' else False) | |
await message.answer('Лидмагнит сохранен! Теперь можно отредактировать его, выбрав его в меню', | |
reply_markup=kb.admin_back) | |
await state.clear() | |
async def edit_leadmagnet(callback: CallbackQuery): | |
await callback.answer('') | |
leadmagnet = await rq.get_leadmagnet_info(callback.data.split('_')[2]) | |
await callback.message.answer(f'Триггер: {leadmagnet.trigger} \n\n' | |
f'Содержание: {leadmagnet.content}\n' | |
f'Активен? {leadmagnet.is_active}\n\n' | |
f'Что Вы хотите изменить?', | |
reply_markup=await kb.admin_change_leadmagnet(leadmagnet.trigger)) | |
async def begin_leadmagnet_edit(callback: CallbackQuery, state: FSMContext): | |
await callback.answer('') | |
await state.set_state(AdminStates.admin_edit_leadmagnet) | |
await state.update_data(leadmagnet=callback.data.split('_')[2]) | |
await state.update_data(parameter_changed=callback.data.split("_")[1]) | |
replace_dict = {'trigger': 'ый триггер', 'content': 'ое содержание'} | |
if callback.data.split("_")[1] != 'status': | |
await callback.message.answer(f'Введите нов{replace_dict[callback.data.split("_")[1]]} лидмагнита') | |
elif callback.data.split("_")[1] == 'status': | |
await callback.message.answer(f'Должен ли лидмагнит быть активным?', reply_markup=kb.yes_no_keyboard) | |
async def finish_leadmagnet_edit(message: Message, state: FSMContext): | |
await state.update_data(change=message.text) | |
data = await state.get_data() | |
await rq.edit_leadmagnet(data['leadmagnet'], data['parameter_changed'], True if data['change'] == 'Да' else False) | |
await message.answer(f'Информация была обновлена, можно вернуться на главную', reply_markup=kb.admin_back) | |
async def confirm_leadmagnet_deletion(callback: CallbackQuery, state: FSMContext): | |
await callback.answer('') | |
await state.set_state(AdminStates.admin_delete_leadmagnet) | |
await state.update_data(leadmagnet=callback.data.split("_")[1]) | |
await callback.message.answer(f'Вы уверены, что хотите удалить лидмагнит {callback.data.split("_")[1]}?', | |
reply_markup=kb.yes_no_keyboard) | |
async def delete_or_not_delete(message: Message, state: FSMContext): | |
if message.text == 'Нет': | |
await state.clear() | |
await message.answer('Тогда вернемся в меню :)', reply_markup=kb.admin_back) | |
if message.text == 'Да': | |
data = await state.get_data() | |
await rq.delete_leadmagnet(data['leadmagnet']) | |
await state.clear() | |
await message.answer('Лидмагнит был успешно удален! Можно вернуться в меню', reply_markup=kb.admin_back) | |
async def return_to_main(callback: CallbackQuery): | |
await callback.answer('Возвращаемся в меню') | |
await callback.message.answer('Здравствуйте! Что Вы хотите сделать?', reply_markup=kb.admin_main) |