fix: danmaku template now uses event rules; rules apply instantly on save
- _on_danmaku renders via event_text(rules, 'danmaku', ...) like all other
events; hardcoded {uname}说、 {msg} format removed
- Drop message_format param from DanmakuHandler/DanmakuClient/server/main
- api_rules_post mutates the shared rules dict in place (clear+update)
instead of rebinding, so running handlers pick up new templates
immediately without restarting TTS
- UI save toast: '规则已保存并即时生效'
- Verified: custom template 卧槽!、是{uname}!、他说、 {msg} works;
save-then-next-danmaku uses new template without restart
This commit is contained in:
@@ -58,7 +58,6 @@ class TTSService:
|
||||
voice = config.get("voice", "f1")
|
||||
speed = config.get("speed", 100)
|
||||
self._volume = config.get("volume", 100)
|
||||
message_format = config.get("format", "{uname}\u8bf4\u3001 {msg}")
|
||||
convert_numbers = config.get("convert_numbers", True)
|
||||
self.current_config = config
|
||||
self.recent_messages = []
|
||||
@@ -71,7 +70,6 @@ class TTSService:
|
||||
self._danmaku_client = DanmakuClient(
|
||||
room_id=room_id, queue=self._queue,
|
||||
cookies=self._cookies, rules=event_rules,
|
||||
message_format=message_format,
|
||||
)
|
||||
await self._danmaku_client.start()
|
||||
self.running = True
|
||||
@@ -169,7 +167,6 @@ async def api_start(request: web.Request) -> web.Response:
|
||||
config.setdefault("voice", "f1")
|
||||
config.setdefault("speed", 100)
|
||||
config.setdefault("volume", 100)
|
||||
config.setdefault("format", "{uname}\u8bf4\u3001 {msg}")
|
||||
config.setdefault("convert_numbers", True)
|
||||
if tts_service.running:
|
||||
try:
|
||||
@@ -248,7 +245,6 @@ async def api_rules_get(request: web.Request) -> web.Response:
|
||||
|
||||
|
||||
async def api_rules_post(request: web.Request) -> web.Response:
|
||||
global event_rules
|
||||
try:
|
||||
new_rules = await request.json()
|
||||
except Exception:
|
||||
@@ -275,7 +271,11 @@ async def api_rules_post(request: web.Request) -> web.Response:
|
||||
save_rules(merged)
|
||||
except OSError as e:
|
||||
return web.json_response({"error": f"Failed to save rules: {e}"}, status=500)
|
||||
event_rules = merged
|
||||
|
||||
# Mutate in place so running handlers (which hold the same dict reference)
|
||||
# pick up the new rules immediately without restarting TTS.
|
||||
event_rules.clear()
|
||||
event_rules.update(merged)
|
||||
return web.json_response({"status": "saved", "rules": event_rules})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user