Telezab/app/bot/utils/regions.py
UdoChudo ccb47d527f
All checks were successful
Build and Push Docker Images / build (push) Successful in 1m28s
refactor: modularize Telegram bot and add RabbitMQ client foundation
- Рефакторинг Telegram бота на модульную структуру для удобства поддержки и расширения
- Создан общий RabbitMQ клиент для Flask и Telegram компонентов
- Подготовлена базовая архитектура для будущего масштабирования и новых функций

Signed-off-by: UdoChudo <stream@udochudo.ru>
2025-06-16 09:08:46 +05:00

31 lines
1.3 KiB
Python

# app/bot/utils/regions.py
from typing import List, Dict
from app.models import Regions
def get_sorted_regions():
"""
Получить отсортированный список регионов (из базы, например).
"""
# Здесь предполагается, что вызывающий код находится в контексте Flask (app.app_context())
return Regions.query.filter(Regions.active == True).order_by(Regions.region_id).all()
def get_sorted_regions_plain() -> List[Dict[str, str]]:
regions = Regions.query.filter(Regions.active == True).order_by(Regions.region_id).all()
return [{"id": r.region_id, "name": r.region_name} for r in regions]
def format_regions_list(regions):
"""
Форматировать список регионов в удобочитаемый текст
"""
lines = []
for region in regions:
lines.append(f"{region.region_id}: {region.region_name}")
return "\n".join(lines)
def format_regions_list_marked(regions, subscribed_region_ids):
lines = []
for region in regions:
mark = "" if region.region_id in subscribed_region_ids else ""
lines.append(f"{mark} {region.region_id}: {region.region_name}")
return "\n".join(lines)