All checks were successful
Build and Push Docker Images / build (push) Successful in 1m28s
- Рефакторинг Telegram бота на модульную структуру для удобства поддержки и расширения - Создан общий RabbitMQ клиент для Flask и Telegram компонентов - Подготовлена базовая архитектура для будущего масштабирования и новых функций Signed-off-by: UdoChudo <stream@udochudo.ru>
40 lines
1.8 KiB
Python
40 lines
1.8 KiB
Python
from flask import Flask
|
|
from telebot import TeleBot, logger
|
|
from telebot.types import Message
|
|
from app.bot.constants import UserStates
|
|
from app.bot.keyboards.settings_menu import get_settings_menu
|
|
from app.bot.states import UserStateManager
|
|
from app.bot.utils.auth import auth
|
|
from app.models import Regions, Subscriptions
|
|
from app.bot.utils.regions import format_regions_list
|
|
|
|
def handle_my_subscriptions(message: Message, bot: TeleBot, app: Flask, state_manager: UserStateManager):
|
|
chat_id = message.chat.id
|
|
username = f"{message.from_user.username}" if message.from_user.username else "N/A"
|
|
if not auth(chat_id, app):
|
|
bot.send_message(chat_id, "❌Вы не авторизованы для использования этого бота.")
|
|
logger.warning(f"Неавторизованный пользователь {chat_id} @{username}")
|
|
state_manager.set_state(chat_id, UserStates.REGISTRATION)
|
|
return
|
|
|
|
with app.app_context():
|
|
user_regions = (
|
|
Regions.query
|
|
.with_entities(Regions.region_id, Regions.region_name)
|
|
.join(Subscriptions, Subscriptions.region_id == Regions.region_id)
|
|
.filter(
|
|
Subscriptions.chat_id == chat_id,
|
|
Subscriptions.active == True,
|
|
Subscriptions.skip == False
|
|
)
|
|
.order_by(Regions.region_id.asc())
|
|
.all()
|
|
)
|
|
|
|
if not user_regions:
|
|
bot.send_message(chat_id, "ℹ️Вы не подписаны ни на один регион.", reply_markup=get_settings_menu())
|
|
else:
|
|
regions_list = format_regions_list(user_regions)
|
|
bot.send_message(chat_id, f"ℹ️Ваши активные подписки:\n{regions_list}", reply_markup=get_settings_menu())
|
|
|