@@ -537,7 +537,7 @@ def ws_hook(self, ws: VoiceWebSocket, msg: dict[str, Any]) -> None:
537537 old_data = self .user_ssrc_map .get (ssrc )
538538 old_speaking = (old_data or {}).get ("speaking" , SpeakingState .none )
539539
540- self ._dispatch_speaking_state (old_speaking , speaking , user )
540+ self .dispatch_speaking_state (old_speaking , speaking , user )
541541
542542 if old_data is None :
543543 self .user_ssrc_map [ssrc ]["speaking" ] = speaking
@@ -547,7 +547,14 @@ def ws_hook(self, ws: VoiceWebSocket, msg: dict[str, Any]) -> None:
547547 "speaking" : speaking ,
548548 }
549549
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 (
551558 self , before : SpeakingState , after : SpeakingState , uid : int
552559 ) -> None :
553560 resolved = self .get_user (uid )
@@ -560,7 +567,7 @@ def _dispatch_speaking_state(
560567
561568 futures = [
562569 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 )
564571 )
565572 for fil in sink ._filters
566573 ]
0 commit comments