Skip to content

Commit dc371ca

Browse files
committed
feat: remove DANMU_MSG:4:0:2:2:2:0 judge
1 parent 9da40d1 commit dc371ca

File tree

5 files changed

+30
-76
lines changed

5 files changed

+30
-76
lines changed

pnpm-lock.yaml

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/listener/index.ts

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
HEARTBEAT, type AttentionChangeMsgHandler,
33
LIVE, type LiveStartMsgHandler,
44
PREPARING, type LiveStopMsgHandler,
5-
DANMU_MSG, DANMU_MSG_402220, type DanmuMsgHandler,
5+
DANMU_MSG, type DanmuMsgHandler,
66
GUARD_BUY, type GuardBuyHandler,
77
INTERACT_WORD, ENTRY_EFFECT, type UserActionMsgHandler,
88
LIKE_INFO_V3_UPDATE, type LikedChangeMsgHandler,
@@ -13,7 +13,7 @@ import {
1313
WATCHED_CHANGE, type WatchedChangeHandler,
1414
} from '../parser'
1515
import type { KeepLiveTCP, KeepLiveWS, Message as WSMessage } from 'tiny-bilibili-ws'
16-
import { normalizeDanmu, checkIsDuplicateDanmuMsg } from '../utils/message'
16+
import { normalizeDanmu } from '../utils/message'
1717

1818
export type MsgHandler = Partial<
1919
{
@@ -82,7 +82,7 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
8282
// LIVE
8383
if (handler[LIVE.handlerName] || rawHandlerNames.has(LIVE.eventName)) {
8484
rawHandlerNames.delete(LIVE.eventName)
85-
instance.on(LIVE.eventName, (data: WSMessage<any>) => {
85+
instance.on(LIVE.eventName as any, (data: WSMessage<any>) => {
8686
isHandleRaw && rawHandler[LIVE.eventName]?.(data.data)
8787
const parsedData = LIVE.parser(data.data)
8888
handler[LIVE.handlerName]?.(normalizeDanmu(LIVE.eventName, parsedData, data.data))
@@ -92,30 +92,20 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
9292
// PREPARING
9393
if (handler[PREPARING.handlerName] || rawHandlerNames.has(PREPARING.eventName)) {
9494
rawHandlerNames.delete(LIVE.eventName)
95-
instance.on(PREPARING.eventName, (data: WSMessage<any>) => {
95+
instance.on(PREPARING.eventName as any, (data: WSMessage<any>) => {
9696
isHandleRaw && rawHandler[PREPARING.eventName]?.(data.data)
9797
const parsedData = PREPARING.parser(data.data)
9898
handler[PREPARING.handlerName]?.(normalizeDanmu(PREPARING.eventName, parsedData, data.data))
9999
})
100100
}
101101

102102
// DANMU_MSG
103-
if (handler[DANMU_MSG.handlerName] || rawHandlerNames.has(DANMU_MSG.eventName) || rawHandlerNames.has(DANMU_MSG_402220.eventName)) {
103+
if (handler[DANMU_MSG.handlerName] || rawHandlerNames.has(DANMU_MSG.eventName)) {
104104
rawHandlerNames.delete(DANMU_MSG.eventName)
105-
rawHandlerNames.delete(DANMU_MSG_402220.eventName)
106-
const msgCallback = handler[DANMU_MSG.handlerName]!
107-
const handleDanmuMsg = (data: WSMessage<any>) => {
108-
const parsedData = DANMU_MSG.parser(data.data, roomId)
109-
if (checkIsDuplicateDanmuMsg(parsedData)) return
110-
msgCallback(normalizeDanmu(DANMU_MSG.eventName, parsedData, data.data))
111-
}
112105
instance.on(DANMU_MSG.eventName, (data: WSMessage<any>) => {
113106
isHandleRaw && rawHandler[DANMU_MSG.eventName]?.(data.data)
114-
handleDanmuMsg(data)
115-
})
116-
instance.on(DANMU_MSG_402220.eventName, (data: WSMessage<any>) => {
117-
isHandleRaw && rawHandler[DANMU_MSG_402220.eventName]?.(data.data)
118-
handleDanmuMsg(data)
107+
const parsedData = DANMU_MSG.parser(data.data, roomId)
108+
handler[DANMU_MSG.handlerName]?.(normalizeDanmu(DANMU_MSG.eventName, parsedData, data.data))
119109
})
120110
}
121111

@@ -168,7 +158,7 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
168158
// ROOM_CHANGE
169159
if (handler[ROOM_CHANGE.handlerName] || rawHandlerNames.has(ROOM_CHANGE.eventName)) {
170160
rawHandlerNames.delete(ROOM_CHANGE.eventName)
171-
instance.on(ROOM_CHANGE.eventName, (data: WSMessage<any>) => {
161+
instance.on(ROOM_CHANGE.eventName as any, (data: WSMessage<any>) => {
172162
isHandleRaw && rawHandler[ROOM_CHANGE.eventName]?.(data.data)
173163
const parsedData = ROOM_CHANGE.parser(data.data)
174164
handler[ROOM_CHANGE.handlerName]?.(normalizeDanmu(ROOM_CHANGE.eventName, parsedData, data.data))
@@ -208,7 +198,7 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
208198
// Rest raw events
209199
rawHandlerNames.forEach((eventName) => {
210200
console.log('rest', eventName)
211-
instance.on(eventName, (data: WSMessage<any>) => {
201+
instance.on(eventName as any, (data: WSMessage<any>) => {
212202
rawHandler[eventName](data.data)
213203
})
214204
})

src/parser/DANMU_MSG.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,6 @@ export const DANMU_MSG = {
6565
handlerName: 'onIncomeDanmu' as const,
6666
}
6767

68-
export const DANMU_MSG_402220 = {
69-
parser,
70-
eventName: 'DANMU_MSG:4:0:2:2:2:0' as const,
71-
handlerName: 'onIncomeDanmu' as const,
72-
}
73-
7468
export type Handler = {
7569
/** 收到普通弹幕消息 */
7670
onIncomeDanmu: (msg: Message<DanmuMsg>) => void

src/parser/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export { HEARTBEAT, type Handler as AttentionChangeMsgHandler, type AttentionChangeMsg } from './HEARTBEAT'
22
export { LIVE, type Handler as LiveStartMsgHandler, type LiveStartMsg } from './LIVE'
33
export { PREPARING, type Handler as LiveStopMsgHandler, type LiveEndMsg } from './PREPARING'
4-
export { DANMU_MSG, DANMU_MSG_402220, type Handler as DanmuMsgHandler, type DanmuMsg } from './DANMU_MSG'
4+
export { DANMU_MSG, type Handler as DanmuMsgHandler, type DanmuMsg } from './DANMU_MSG'
55
export { GUARD_BUY, type Handler as GuardBuyHandler, type GuardBuyMsg } from './GUARD_BUY'
66
export { INTERACT_WORD, ENTRY_EFFECT, type Handler as UserActionMsgHandler, type UserActionMsg } from './INTERACT_WORD_ENTRY_EFFECT'
77
export { LIKE_INFO_V3_UPDATE, type Handler as LikedChangeMsgHandler, type LikedChangeMsg } from './LIKE_INFO_V3_UPDATE'

src/utils/message.ts

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,4 @@
11
import type { Message } from '../types/app'
2-
import type { DanmuMsg } from '../parser'
3-
4-
type QueueItem = [number, string]
5-
class MsgQueue {
6-
private items: QueueItem[] = []
7-
push = (item: QueueItem) => {
8-
this.items.push(item)
9-
if (this.items.length > 10) {
10-
this.items.shift()
11-
}
12-
}
13-
has = ( [timestamp, content]: QueueItem ) => {
14-
return this.items.some(i => {
15-
const [queueTimestamp, queueContent] = i
16-
return Math.abs(timestamp - queueTimestamp) < 1200 && content === queueContent
17-
})
18-
}
19-
}
20-
21-
const msgQueue = new MsgQueue()
222

233
export const normalizeDanmu = <T>(msgType: string, body: T, rawBody: any): Message<T> => {
244
const timestamp = Date.now()
@@ -33,13 +13,3 @@ export const normalizeDanmu = <T>(msgType: string, body: T, rawBody: any): Messa
3313
raw: rawBody,
3414
}
3515
}
36-
37-
export const checkIsDuplicateDanmuMsg = (msg: DanmuMsg) => {
38-
const msgIdentifier = `${msg.user.uid}:${msg.content}`
39-
const queueItem: QueueItem = [msg.timestamp, msgIdentifier]
40-
if (msgQueue.has(queueItem)) {
41-
return true
42-
}
43-
msgQueue.push(queueItem)
44-
return false
45-
}

0 commit comments

Comments
 (0)