import type { Badge, ParsedMessage } from './types' import { getBadgesFromMessage } from './badges' export function parseMessage(messageData: any, allBadges: Badge[]): ParsedMessage { const message = JSON.parse(messageData) 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 } switch (message.type) { case 'PRIVMSG': { const data: ParsedMessage = { type: 'PRIVMSG', data: { message: message.message, username: message.username, color: message.tags.color, badges: getBadgesFromMessage(message.tags, allBadges) } } 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 } } } case 'CLEARMSG': { return { type: 'CLEARMSG', data: { username: message.tags['@login'] } } } // Add more cases for other message types here default: { return { type: 'UNKNOWN', data: { message } } } } }