safetwitch/src/assets/messageParser.ts

48 lines
1.3 KiB
TypeScript
Raw Normal View History

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