forked from erp-dev/erp
feat: big
This commit is contained in:
36
mission/notifications.py
Normal file
36
mission/notifications.py
Normal file
@@ -0,0 +1,36 @@
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def enqueue_mission_created_speech(*, mission) -> None:
|
||||
if not getattr(settings, "SPEECH_ENABLED", True):
|
||||
return
|
||||
if not getattr(settings, "MISSION_SPEECH_NOTIFY_ENABLED", True):
|
||||
return
|
||||
|
||||
category = getattr(mission, "category", None)
|
||||
if not getattr(category, "speech_enabled", False):
|
||||
return
|
||||
|
||||
text = _build_mission_created_speech_text(mission=mission)
|
||||
try:
|
||||
from mission.tasks import notify_mission_speech
|
||||
|
||||
notify_mission_speech.delay(text=text)
|
||||
except Exception:
|
||||
logger.exception("[mission.notifications] 投递任务语音播报任务失败(已忽略)")
|
||||
|
||||
|
||||
def _build_mission_created_speech_text(*, mission) -> str:
|
||||
category_name = getattr(getattr(mission, "category", None), "name", "任务") or "任务"
|
||||
creator_name = getattr(getattr(mission, "creator", None), "name", "") or ""
|
||||
prefix = f"{creator_name}创建了" if creator_name else "创建了"
|
||||
description = (getattr(mission, "description", "") or "").strip()
|
||||
if len(description) > 60:
|
||||
description = f"{description[:60]}..."
|
||||
if description:
|
||||
return f"{prefix}{category_name}任务,{description}"
|
||||
return f"{prefix}{category_name}任务"
|
||||
Reference in New Issue
Block a user