Continue AI features and improve protocol support

This commit is contained in:
2026-02-15 16:57:32 +00:00
parent 2d3b8fdac6
commit 85e97e895d
62 changed files with 5472 additions and 441 deletions

View File

@@ -2,11 +2,11 @@ from asgiref.sync import async_to_sync
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db import transaction
from django.http import HttpResponse
from django.utils import timezone as dj_timezone
from mixins.views import ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate
from rest_framework import status
from rest_framework.views import APIView
from core.clients import signalapi
from core.forms import QueueForm
from core.models import Message, QueuedMessage
from core.util import logs
@@ -28,22 +28,18 @@ class AcceptMessageAPI(LoginRequiredMixin, APIView):
except QueuedMessage.DoesNotExist:
return HttpResponse(status=status.HTTP_404_NOT_FOUND)
if queued.session.identifier.service != "signal":
log.warning(
"Queue accept failed: unsupported service '%s' for queued message %s",
queued.session.identifier.service,
queued.id,
)
return HttpResponse(status=status.HTTP_400_BAD_REQUEST)
ts = async_to_sync(signalapi.send_message_raw)(
queued.session.identifier.identifier,
ts = async_to_sync(queued.session.identifier.send)(
queued.text or "",
[],
)
if not ts:
log.error("Queue accept send failed for queued message %s", queued.id)
return HttpResponse(status=status.HTTP_502_BAD_GATEWAY)
sent_ts = (
int(ts)
if (ts is not None and not isinstance(ts, bool))
else int(dj_timezone.now().timestamp() * 1000)
)
with transaction.atomic():
Message.objects.create(
@@ -51,7 +47,9 @@ class AcceptMessageAPI(LoginRequiredMixin, APIView):
session=queued.session,
custom_author=queued.custom_author or "BOT",
text=queued.text,
ts=ts,
ts=sent_ts,
delivered_ts=sent_ts,
read_source_service=queued.session.identifier.service,
)
queued.delete()