11import logging
2- from datetime import UTC , datetime
32
43from auth_lib .fastapi import UnionAuth
5- from fastapi import APIRouter , Depends , Request
4+ from fastapi import APIRouter , BackgroundTasks , Depends , Request
65from fastapi .responses import PlainTextResponse
76from fastapi_sqlalchemy import db
87from pydantic import BaseModel , ConfigDict
98
10- from social .models .group import VkChat , VkGroup
9+ from social .handlers_vk .base import process_event
10+ from social .models .group import VkGroup
1111from social .models .webhook_storage import WebhookStorage , WebhookSystems
1212from social .settings import get_settings
1313from social .utils .string import random_string
14+ from social .utils .vk_groups import create_vk_chat
1415
1516
1617router = APIRouter (prefix = "/vk" , tags = ['vk' ])
@@ -31,7 +32,7 @@ class VkGroupCreateResponse(BaseModel):
3132
3233
3334@router .post ('' , tags = ["webhooks" ])
34- async def vk_webhook (request : Request ) -> str :
35+ async def vk_webhook (request : Request , background_tasks : BackgroundTasks ) -> str :
3536 """Принимает любой POST запрос от VK"""
3637 request_data = await request .json ()
3738 logger .debug (request_data )
@@ -53,27 +54,8 @@ async def vk_webhook(request: Request) -> str:
5354 )
5455 db .session .commit ()
5556
56- if request_data .get ("type" ) == "message_new" :
57- # Получение сообщения в чате ВК
58- try :
59- peer_id = request_data ["object" ]["message" ]["peer_id" ]
60- obj = db .session .query (VkChat ).where (VkChat .peer_id == peer_id ).one_or_none ()
61- if obj is None :
62- # Надо будет добавлять название группы
63- # conversation = requests.post("https://api.vk.com/method/messages.getConversationsById", json={
64- # "peer_ids": peer_id,
65- # "group_id": 222099060,
66- # "access_token": settings.VK_BOT_TOKEN,
67- # "v": 5.199,
68- # })
69- # chat_title = conversation["response"]["items"][0]["chat_settings"]["title"]
70- obj = VkChat (chat_id = peer_id )
71- db .session .add (obj )
72- obj .last_active_ts = datetime .now (UTC )
73- db .session .commit ()
74- except Exception as exc :
75- logger .exception (exc )
76-
57+ background_tasks .add_task (create_vk_chat , request_data )
58+ background_tasks .add_task (process_event , request_data )
7759 return PlainTextResponse ('ok' )
7860
7961
0 commit comments