Files
backend-v1/core/apps/chat/tasks/message.py
xoliqberdiyev a973da91f5 fix
2026-04-17 18:24:59 +05:00

45 lines
1.2 KiB
Python

from asgiref.sync import async_to_sync
from channels.layers import get_channel_layer
from celery import shared_task
from core.apps.chat.models import ChatmessageModel
@shared_task
def send_message_to_chat(message_id, file_url):
try:
message = ChatmessageModel.objects.get(id=message_id)
except ChatmessageModel.DoesNotExist:
return "Not found"
channel_layer = get_channel_layer()
if channel_layer is None:
return
sender_obj = message.sender
if sender_obj:
full_name = sender_obj.get_full_name().strip() or str(sender_obj.phone)
sender_data = {
"id": sender_obj.id,
"full_name": full_name,
"role": sender_obj.role,
}
else:
sender_data = None
# file_url = request.build_absolute_uri(message.file.url) if message.file else None
async_to_sync(channel_layer.group_send)(
f"chat_room_{message.room_id}",
{
"type": "chat_message",
"id": message.id,
"message_type": message.message_type,
"text": message.text,
"file_url": file_url,
"sender": sender_data,
"created_at": message.created_at.isoformat(),
},
)