aiozab/routers/commands/setting_commands.py
2025-02-23 12:05:49 +05:00

76 lines
3.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from aiogram import Router, types, F
from aiogram.fsm.context import FSMContext
from aiogram.fsm.state import StatesGroup, State
from utils.get_regions import get_sorted_regions
from utils.subscribe import handle_subscribe, handle_unsubscribe, get_user_subscriptions
from utils.show_settings_menu import show_settings_menu
from .base_commands import is_whitelist
router = Router(name=__name__)
@router.message(F.text == "Настройки")
async def handle_settings_menu(message: types.Message):
chat_id = message.chat.id
whitelist = await is_whitelist(chat_id)
if not whitelist:
text = "Вы неавторизованы для использования бота."
await message.answer(text=text)
return
# await SubscriptionState.waiting_for_action.set() # Устанавливаем состояние ожидания выбора действия
await message.answer("Выберите действие", reply_markup=show_settings_menu(chat_id))
@router.message(F.text == "Подписаться")
async def subscribe_command(message: types.Message,):
chat_id = message.chat.id
whitelist = await is_whitelist(chat_id)
if not whitelist:
text = "Вы неавторизованы для использования бота."
await message.answer(text=text)
# await state.clear() # Завершаем состояние, если пользователь не авторизован
return
# await SubscriptionState.choosing_regions.set() # Переходим в состояние ожидания ввода номеров регионов
region_list = await get_sorted_regions()
text = (f"Отправьте номер или номера регионов, на которые хотите подписаться (через запятую):\n"
f"{region_list}\n"
f"Напишите 'отмена' для отмены.")
await message.answer(text=text, reply_markup=types.ReplyKeyboardRemove())
@router.message(F.text == "Отписаться")
async def unsubscribe_command(message: types.Message):
chat_id = message.chat.id
if not await is_whitelist(chat_id):
text = "Вы неавторизованы для использования бота."
await message.answer(text=text)
# await state.clear() # Завершаем состояние, если пользователь не авторизован
return
await handle_unsubscribe(chat_id)
await message.answer("Вы успешно отписались от всех регионов.", reply_markup=show_settings_menu(chat_id))
# await state.clear() # Завершаем состояние после выполнения действия
@router.message(F.text == "Мои подписки")
async def my_subscriptions_command(message: types.Message):
chat_id = message.chat.id
if not await is_whitelist(chat_id):
text = "Вы неавторизованы для использования бота."
await message.answer(text=text)
# await state.clear() # Завершаем состояние, если пользователь не авторизован
return
# Логика для отображения подписок пользователя
subscriptions = await get_user_subscriptions(chat_id)
if subscriptions:
text = "Ваши подписки:\n" + "\n".join(f"{sub.region_id}: {sub.region_name}" for sub in subscriptions)
else:
text = "У вас нет активных подписок."
await message.answer(text=text, reply_markup=show_settings_menu(chat_id))
# await state.clear() # Завершаем состояние после выполнения действия