@@ -10,6 +10,7 @@ import {
10
10
ROOM_CHANGE , type RoomInfoChangeHandler ,
11
11
SEND_GIFT , type GiftHandler ,
12
12
SUPER_CHAT_MESSAGE , type SuperChatHandler ,
13
+ WARNING , CUT_OFF , type RoomWarnHandler ,
13
14
WATCHED_CHANGE , type WatchedChangeHandler ,
14
15
} from '../parser'
15
16
import type { KeepLiveTCP , KeepLiveWS , Message as WSMessage } from 'tiny-bilibili-ws'
@@ -37,10 +38,11 @@ export type MsgHandler = Partial<
37
38
& RoomInfoChangeHandler
38
39
& GiftHandler
39
40
& SuperChatHandler
41
+ & RoomWarnHandler
40
42
& WatchedChangeHandler
41
43
& {
42
44
/** 原始消息 */
43
- raw : Record < string , ( msg : any ) => void >
45
+ raw : Record < 'msg' | string , ( msg : any ) => void >
44
46
}
45
47
>
46
48
@@ -120,9 +122,11 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
120
122
}
121
123
122
124
// INTERACT_WORD, ENTRY_EFFECT, LIKE_INFO_V3_CLICK
123
- if ( handler [ INTERACT_WORD . handlerName ] || handler [ ENTRY_EFFECT . handlerName ] || rawHandlerNames . has ( INTERACT_WORD . eventName ) || rawHandlerNames . has ( ENTRY_EFFECT . eventName ) ) {
125
+ if ( handler [ INTERACT_WORD . handlerName ] || handler [ ENTRY_EFFECT . handlerName ] || handler [ LIKE_INFO_V3_CLICK . handlerName ] ||
126
+ rawHandlerNames . has ( INTERACT_WORD . eventName ) || rawHandlerNames . has ( ENTRY_EFFECT . eventName ) || rawHandlerNames . has ( LIKE_INFO_V3_CLICK . eventName ) ) {
124
127
rawHandlerNames . delete ( INTERACT_WORD . eventName )
125
128
rawHandlerNames . delete ( ENTRY_EFFECT . eventName )
129
+ rawHandlerNames . delete ( LIKE_INFO_V3_CLICK . eventName )
126
130
instance . on ( INTERACT_WORD . eventName , ( data : WSMessage < any > ) => {
127
131
isHandleRaw && rawHandler [ INTERACT_WORD . eventName ] ?.( data . data )
128
132
const parsedData = INTERACT_WORD . parser ( data . data , roomId )
@@ -190,6 +194,22 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
190
194
} )
191
195
}
192
196
197
+ // WARNING, CUT_OFF
198
+ if ( handler [ WARNING . handlerName ] || handler [ CUT_OFF . handlerName ] || rawHandlerNames . has ( WARNING . eventName ) || rawHandlerNames . has ( CUT_OFF . eventName ) ) {
199
+ rawHandlerNames . delete ( WARNING . eventName )
200
+ rawHandlerNames . delete ( CUT_OFF . eventName )
201
+ instance . on ( WARNING . eventName as any , ( data : WSMessage < any > ) => {
202
+ isHandleRaw && rawHandler [ WARNING . eventName ] ?.( data . data )
203
+ const parsedData = WARNING . parser ( data . data , roomId )
204
+ handler [ WARNING . handlerName ] ?.( normalizeDanmu ( WARNING . eventName , parsedData , data . data ) )
205
+ } )
206
+ instance . on ( CUT_OFF . eventName as any , ( data : WSMessage < any > ) => {
207
+ isHandleRaw && rawHandler [ CUT_OFF . eventName ] ?.( data . data )
208
+ const parsedData = CUT_OFF . parser ( data . data , roomId )
209
+ handler [ CUT_OFF . handlerName ] ?.( normalizeDanmu ( CUT_OFF . eventName , parsedData , data . data ) )
210
+ } )
211
+ }
212
+
193
213
// WATCHED_CHANGE
194
214
if ( handler [ WATCHED_CHANGE . handlerName ] || rawHandlerNames . has ( WATCHED_CHANGE . eventName ) ) {
195
215
rawHandlerNames . delete ( WATCHED_CHANGE . eventName )
0 commit comments