2023-04-10 00:19:39 -04:00
|
|
|
import type { Badge, ParsedMessage } from './types'
|
2023-04-06 10:20:22 -04:00
|
|
|
import { getBadgesFromMessage } from './badges'
|
|
|
|
|
2023-07-19 20:26:43 -04:00
|
|
|
export function parseMessage(messageData: any, allBadges: Badge[]): ParsedMessage {
|
2023-04-10 00:19:39 -04:00
|
|
|
const message = JSON.parse(messageData)
|
2023-04-06 10:20:22 -04:00
|
|
|
|
2023-07-19 20:26:43 -04:00
|
|
|
if (message.type === undefined && message.cursor !== "") {
|
|
|
|
const data: ParsedMessage = {
|
|
|
|
type: 'PRIVMSG',
|
|
|
|
data: {
|
|
|
|
message: message.message,
|
|
|
|
username: message.messager.name,
|
|
|
|
badges: message.badges,
|
|
|
|
offset: message.offset,
|
|
|
|
color: message.messager.colorHex
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return data
|
|
|
|
}
|
|
|
|
|
2023-04-10 00:19:39 -04:00
|
|
|
switch (message.type) {
|
|
|
|
case 'PRIVMSG': {
|
|
|
|
const data: ParsedMessage = {
|
|
|
|
type: 'PRIVMSG',
|
2023-07-19 20:26:43 -04:00
|
|
|
data: {
|
|
|
|
message: message.message,
|
|
|
|
username: message.username,
|
|
|
|
color: message.tags.color,
|
|
|
|
badges: getBadgesFromMessage(message.tags, allBadges)
|
|
|
|
}
|
2023-04-06 10:20:22 -04:00
|
|
|
}
|
2023-04-10 00:19:39 -04:00
|
|
|
|
|
|
|
return data
|
|
|
|
}
|
|
|
|
case 'USERNOTICE': {
|
|
|
|
const username = message.tags.login
|
|
|
|
const resub = message.tags['msg-id'] === 'resub'
|
|
|
|
const months = parseInt(message.tags['msg-param-cumulative-months'])
|
|
|
|
return {
|
|
|
|
type: 'USERNOTICE',
|
|
|
|
data: { username, resub, months }
|
2023-04-06 10:20:22 -04:00
|
|
|
}
|
2023-04-10 00:19:39 -04:00
|
|
|
}
|
|
|
|
case 'CLEARMSG': {
|
|
|
|
return {
|
|
|
|
type: 'CLEARMSG',
|
|
|
|
data: {
|
|
|
|
username: message.tags['@login']
|
2023-04-06 10:20:22 -04:00
|
|
|
}
|
|
|
|
}
|
2023-04-10 00:19:39 -04:00
|
|
|
}
|
|
|
|
// Add more cases for other message types here
|
|
|
|
default: {
|
|
|
|
return {
|
|
|
|
type: 'UNKNOWN',
|
|
|
|
data: { message }
|
2023-04-06 10:20:22 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-04-10 00:19:39 -04:00
|
|
|
}
|