safetwitch/src/assets/messageParser.ts

47 lines
1.2 KiB
TypeScript
Raw Normal View History

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'
export function parseMessage(messageData: string, 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-04-10 00:19:39 -04:00
switch (message.type) {
case 'PRIVMSG': {
const tags = message.tags
const username = message.username
const data: ParsedMessage = {
type: 'PRIVMSG',
data: { message: message.message, username, tags }
2023-04-06 10:20:22 -04:00
}
2023-04-10 00:19:39 -04:00
const badges = getBadgesFromMessage(data, allBadges)
data.data.badges = badges
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
}