# - *- coding: utf- 8 - *- from aiogram import Router, Bot, F from aiogram.filters import StateFilter from aiogram.types import CallbackQuery, Message from tgbot.database import Settingsx, Userx from tgbot.keyboards.inline_admin import settings_status_finl, settings_finl from tgbot.utils.const_functions import ded from tgbot.utils.misc.bot_logging import bot_logger from tgbot.utils.misc.bot_models import FSM, ARS from tgbot.utils.misc_functions import send_admins, insert_tags router = Router(name=__name__) # Изменение данных @router.message(F.text == "🖍 Изменить данные") async def settings_data_edit(message: Message, bot: Bot, state: FSM, arSession: ARS): await state.clear() await message.answer( "🖍 Изменение данных бота", reply_markup=await settings_finl(), ) # Выключатели бота @router.message(F.text == "🕹 Выключатели") async def settings_status_edit(message: Message, bot: Bot, state: FSM, arSession: ARS): await state.clear() await message.answer( "🕹 Включение и выключение основных функций", reply_markup=await settings_status_finl(), ) ################################################################################ ################################## ВЫКЛЮЧАТЕЛИ ################################# # Включение/выключение тех работ @router.callback_query(F.data.startswith("settings_status_work:")) async def settings_status_work( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): get_status = call.data.split(":")[1] get_user = await Userx().get_required(user_id=call.from_user.id) await Settingsx().update(status_work=get_status) if get_status == "True": send_text = "🔴 Отправил бота на технические работы" else: send_text = "🟢 Вывел бота из технических работ" await send_admins( bot=bot, text=ded(f""" 👤 Администратор {get_user.user_name} {send_text} """), not_me=get_user.user_id, ) await call.message.edit_reply_markup(reply_markup=await settings_status_finl()) # Включение/выключение покупок @router.callback_query(F.data.startswith("settings_status_buy:")) async def settings_status_buy( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): get_status = call.data.split(":")[1] get_user = await Userx().get_required(user_id=call.from_user.id) await Settingsx().update(status_buy=get_status) if get_status == "True": send_text = "🟢 Включил покупки в боте" else: send_text = "🔴 Выключил покупки в боте" await send_admins( bot=bot, text=ded(f""" 👤 Администратор {get_user.user_name} {send_text} """), not_me=get_user.user_id, ) await call.message.edit_reply_markup(reply_markup=await settings_status_finl()) # Включение/выключение пополнений @router.callback_query(F.data.startswith("settings_status_refill:")) async def settings_status_refill( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): get_status = call.data.split(":")[1] get_user = await Userx().get_required(user_id=call.from_user.id) await Settingsx().update(status_refill=get_status) if get_status == "True": send_text = "🟢 Включил пополнения в боте" else: send_text = "🔴 Выключил пополнения в боте" await send_admins( bot, f"👤 Администратор {get_user.user_name}\n" f"{send_text}", not_me=get_user.user_id, ) await call.message.edit_reply_markup(reply_markup=await settings_status_finl()) # Включение/выключение уведомлений о покупках @router.callback_query(F.data.startswith("settings_notification_buy:")) async def settings_notification_buy( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): get_status = call.data.split(":")[1] get_user = await Userx().get_required(user_id=call.from_user.id) await Settingsx().update(notification_buy=get_status) if get_status == "True": send_text = "🟢 Включил уведомления о покупках в боте" else: send_text = "🔴 Выключил уведомления о покупках в боте" await send_admins( bot, f"👤 Администратор {get_user.user_name}\n" f"{send_text}", not_me=get_user.user_id, ) await call.message.edit_reply_markup(reply_markup=await settings_status_finl()) # Включение/выключение уведомлений о пополнениях @router.callback_query(F.data.startswith("settings_notification_refill:")) async def settings_notification_refill( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): get_status = call.data.split(":")[1] get_user = await Userx().get_required(user_id=call.from_user.id) await Settingsx().update(notification_refill=get_status) if get_status == "True": send_text = "🟢 Включил уведомления о пополнениях в боте" else: send_text = "🔴 Выключил уведомления о пополнениях в боте" await send_admins( bot, f"👤 Администратор {get_user.user_name}\n" f"{send_text}", not_me=get_user.user_id, ) await call.message.edit_reply_markup(reply_markup=await settings_status_finl()) ################################################################################ ############################### ИЗМЕНЕНИЕ ДАННЫХ ############################### # Изменение FAQ @router.callback_query(F.data == "settings_edit_faq") async def settings_faq_edit(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS): await state.clear() await state.set_state("here_settings_faq") await call.message.edit_text(ded(""" ❔ Введите новый текст для FAQ ❕ Вы можете использовать заготовленный синтаксис и HTML разметку: ▪️ {username} - логин пользоваля ▪️ {user_id} - айди пользователя ▪️ {firstname} - имя пользователя """)) # Изменение поддержки @router.callback_query(F.data == "settings_edit_support") async def settings_support_edit( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): await state.clear() await state.set_state("here_settings_support") await call.message.edit_text( "☎️ Отправьте юзернейм для поддержки\n" "❕ Юзернейм пользователя/бота/канала/чата", ) # Изменение отображения/скрытия категорий без товаров @router.callback_query(F.data.startswith("settings_edit_hide_category:")) async def settings_edit_hide_category( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): status = call.data.split(":")[1] await Settingsx().update(misc_hide_category=status) await call.message.edit_text( "🖍 Изменение данных бота", reply_markup=await settings_finl(), ) # Изменение отображения/скрытия позиций без товаров @router.callback_query(F.data.startswith("settings_edit_hide_position:")) async def settings_edit_hide_position( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): status = call.data.split(":")[1] await Settingsx().update(misc_hide_position=status) await call.message.edit_text( "🖍 Изменение данных бота", reply_markup=await settings_finl(), ) # Изменение метода добавления товаров @router.callback_query(F.data.startswith("settings_edit_method_prod:")) async def settings_edit_method_prod( call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS ): method = call.data.split(":")[1] await Settingsx().update(misc_method_prod=method) await call.message.edit_text( "🖍 Изменение данных бота", reply_markup=await settings_finl(), ) ################################################################################ ################################ ПРИНЯТИЕ ДАННЫХ ############################### # Принятие FAQ @router.message(F.text, StateFilter("here_settings_faq")) async def settings_faq_get(message: Message, bot: Bot, state: FSM, arSession: ARS): get_message = await insert_tags(message.from_user.id, message.text) try: await (await message.answer(get_message)).delete() except Exception: bot_logger.debug("Некорректная HTML-разметка FAQ", exc_info=True) return await message.answer( "❌ Ошибка синтаксиса HTML\n" "❔ Введите новый текст для FAQ", ) await state.clear() await Settingsx().update(misc_faq=message.text) await message.answer( "🖍 Изменение данных бота", reply_markup=await settings_finl(), ) # Принятие поддержки @router.message(F.text, StateFilter("here_settings_support")) async def settings_support_get(message: Message, bot: Bot, state: FSM, arSession: ARS): get_support = message.text if get_support.startswith("@"): get_support = get_support[1:] await Settingsx().update(misc_support=get_support) await state.clear() await message.answer( "🖍 Изменение данных бота", reply_markup=await settings_finl(), )