1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

отправка уведомлений в телеграм

This commit is contained in:
MoonTestUse1
2025-01-03 01:21:28 +06:00
parent 5e344210e8
commit cda77a47c4
3 changed files with 42 additions and 8 deletions

View File

@@ -1,3 +1,3 @@
DATABASE_URL=postgresql://postgres:postgres123@postgres/support_db
TELEGRAM_BOT_TOKEN=7677506032:AAHduD5EePz3bE23DKlo35KoOp2_9lZuS34
TELEGRAM_CHAT_ID=5057752127
DATABASE_URL=postgresql://postgres:postgres123@postgres/support_db
TELEGRAM_CHAT_ID=5057752127

View File

@@ -7,6 +7,8 @@ from ..models.request import Request, RequestStatus, RequestPriority
from ..schemas.request import RequestCreate, RequestResponse, RequestUpdate, RequestStatistics
from ..utils.auth import get_current_admin, get_current_employee
from sqlalchemy import func
from ..models.employee import Employee
from ..utils.telegram import notify_new_request
router = APIRouter()
@@ -39,7 +41,7 @@ def get_requests(
def create_request(
request: RequestCreate,
db: Session = Depends(get_db),
current_employee: dict = Depends(get_current_employee)
current_employee: Employee = Depends(get_current_employee)
):
"""Create new request"""
try:
@@ -47,14 +49,17 @@ def create_request(
title=request.title,
description=request.description,
priority=request.priority,
status=RequestStatus.NEW.value,
employee_id=current_employee["id"]
status=RequestStatus.NEW,
employee_id=current_employee.id
)
db.add(db_request)
db.commit()
db.refresh(db_request)
# Отправляем уведомление в Telegram
notify_new_request(db_request.id)
return request_to_dict(db_request)
except Exception as e:
db.rollback()
@@ -63,12 +68,12 @@ def create_request(
@router.get("/my", response_model=List[RequestResponse])
def get_employee_requests(
db: Session = Depends(get_db),
current_employee: dict = Depends(get_current_employee)
current_employee: Employee = Depends(get_current_employee)
):
"""Get employee's requests"""
try:
requests = db.query(Request).filter(
Request.employee_id == current_employee["id"]
Request.employee_id == current_employee.id
).all()
# Преобразуем объекты в словари до закрытия сессии

View File

@@ -3,11 +3,12 @@ import os
from fastapi import APIRouter, Request
from telebot import TeleBot
from telebot.types import Update
from ..models.request import RequestStatus
from ..models.request import RequestStatus, RequestPriority
from ..database import SessionLocal
from ..models.request import Request as DBRequest
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")
WEBHOOK_URL = "https://itformhelp.ru/telegram/webhook/"
WEBHOOK_PATH = "/telegram/webhook/"
@@ -37,6 +38,34 @@ def handle_message(message):
"""Handle all messages"""
bot.reply_to(message, "Я получил ваше сообщение и обязательно обработаю его!")
def format_priority(priority: str) -> str:
"""Format priority with emoji"""
priority_emoji = {
RequestPriority.LOW: "🟢",
RequestPriority.MEDIUM: "🟡",
RequestPriority.HIGH: "🔴"
}
return f"{priority_emoji.get(priority, '')} {priority.capitalize()}"
def notify_new_request(request_id: int):
"""Send notification about new request"""
try:
db = SessionLocal()
request = db.query(DBRequest).filter(DBRequest.id == request_id).first()
if request:
message = (
f"📋 <b>Новая заявка #{request.id}</b>\n\n"
f"📝 <b>Заголовок:</b> {request.title}\n"
f"👤 <b>Сотрудник:</b> {request.employee.last_name} {request.employee.first_name}\n"
f"❗ <b>Приоритет:</b> {format_priority(request.priority)}\n\n"
f"📄 <b>Описание:</b>\n{request.description}"
)
bot.send_message(TELEGRAM_CHAT_ID, message, parse_mode="HTML")
except Exception as e:
print(f"Error sending telegram notification: {e}")
finally:
db.close()
def notify_status_change(request_id: int, new_status: RequestStatus):
"""Notify user about request status change"""
try: