@@ -537,7 +537,7 @@ def ws_hook(self, ws: VoiceWebSocket, msg: dict[str, Any]) -> None:
537
537
old_data = self .user_ssrc_map .get (ssrc )
538
538
old_speaking = (old_data or {}).get ("speaking" , SpeakingState .none )
539
539
540
- self ._dispatch_speaking_state (old_speaking , speaking , user )
540
+ self .dispatch_speaking_state (old_speaking , speaking , user )
541
541
542
542
if old_data is None :
543
543
self .user_ssrc_map [ssrc ]["speaking" ] = speaking
@@ -547,7 +547,14 @@ def ws_hook(self, ws: VoiceWebSocket, msg: dict[str, Any]) -> None:
547
547
"speaking" : speaking ,
548
548
}
549
549
550
- def _dispatch_speaking_state (
550
+ def dispatch_speaking_state (self , before : SpeakingState , after : SpeakingState , user_id : int ) -> None :
551
+ task = self .loop .create_task (
552
+ self ._dispatch_speaking_state (before , after , user_id ),
553
+ )
554
+ self .__sink_dispatch_task_set .add (task )
555
+ task .add_done_callback (self .__sink_dispatch_task_set .remove )
556
+
557
+ async def _dispatch_speaking_state (
551
558
self , before : SpeakingState , after : SpeakingState , uid : int
552
559
) -> None :
553
560
resolved = self .get_user (uid )
@@ -560,7 +567,7 @@ def _dispatch_speaking_state(
560
567
561
568
futures = [
562
569
self .loop .create_task (
563
- utils .maybe_coroutine (fil .filter_packet , sink , user , data )
570
+ utils .maybe_coroutine (fil .filter_speaking_state , sink , resolved , before , after )
564
571
)
565
572
for fil in sink ._filters
566
573
]
0 commit comments