mirror of
https://github.com/qwerinope/qweribot.git
synced 2025-12-19 01:01:39 +01:00
added type checking to chatwidget event sending, moved some minor stuff around
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { chatterApi, streamerId } from "..";
|
||||
import logger from "../lib/logger";
|
||||
import type { twitchEventData } from "./websockettypes";
|
||||
import chatWidget from "./www/index.html";
|
||||
|
||||
type badgeObject = {
|
||||
@@ -11,7 +12,7 @@ type badgeObject = {
|
||||
const port = Number(process.env.CHATWIDGET_PORT);
|
||||
if (isNaN(port)) { logger.enverr("CHATWIDGET_PORT"); process.exit(1); };
|
||||
|
||||
export default Bun.serve({
|
||||
const server = Bun.serve({
|
||||
port,
|
||||
fetch(request, server) {
|
||||
if (server.upgrade(request)) return;
|
||||
@@ -60,6 +61,10 @@ export default Bun.serve({
|
||||
development: true
|
||||
});
|
||||
|
||||
export async function sendTwitchEvent(event: twitchEventData) {
|
||||
server.publish('twitch', JSON.stringify(event));
|
||||
};
|
||||
|
||||
import { HelixChatBadgeSet } from "@twurple/api";
|
||||
|
||||
function parseRawBadges(returnobj: badgeObject, data: HelixChatBadgeSet[]) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { EventSubChannelChatMessageEvent, EventSubChannelChatMessageDeleteEvent } from "@twurple/eventsub-base";
|
||||
import chatwserver from ".";
|
||||
import { sendTwitchEvent } from ".";
|
||||
|
||||
export async function addMessageToChatWidget(msg: EventSubChannelChatMessageEvent) {
|
||||
chatwserver.publish('twitch', JSON.stringify({
|
||||
sendTwitchEvent({
|
||||
function: 'createMessage',
|
||||
messageParts: msg.messageParts,
|
||||
displayName: msg.chatterDisplayName,
|
||||
@@ -10,12 +10,12 @@ export async function addMessageToChatWidget(msg: EventSubChannelChatMessageEven
|
||||
chatterColor: msg.color,
|
||||
messageId: msg.messageId,
|
||||
badgeData: msg.badges
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
export async function deleteMessageFromChatWidget(msg: EventSubChannelChatMessageDeleteEvent) {
|
||||
chatwserver.publish('twitch', JSON.stringify({
|
||||
sendTwitchEvent({
|
||||
function: 'deleteMessage',
|
||||
messageId: msg.messageId
|
||||
}));
|
||||
})
|
||||
};
|
||||
|
||||
@@ -1,8 +1,25 @@
|
||||
export type createMessageEvent = { function: 'createMessage', messageParts: EventSubChatMessagePart[], messageId: string, displayName: string, chatterId: string, chatterColor: null | string, badgeData: string[] };
|
||||
export type deleteMessageEvent = { function: 'deleteMessage', messageId: string };
|
||||
export type serverNotificationEvent = { function: 'serverNotification', message: string };
|
||||
export type createMessageEvent = {
|
||||
function: 'createMessage';
|
||||
messageParts: EventSubChatMessagePart[];
|
||||
messageId: string;
|
||||
displayName: string;
|
||||
chatterId: string;
|
||||
chatterColor: null | string;
|
||||
badgeData: Record<string, string>;
|
||||
};
|
||||
|
||||
export type eventData = createMessageEvent | deleteMessageEvent | serverNotificationEvent;
|
||||
export type deleteMessageEvent = {
|
||||
function: 'deleteMessage';
|
||||
messageId: string;
|
||||
};
|
||||
export type serverNotificationEvent = {
|
||||
function: 'serverNotification';
|
||||
message: string;
|
||||
};
|
||||
|
||||
export type twitchEventData = createMessageEvent |
|
||||
deleteMessageEvent |
|
||||
serverNotificationEvent;
|
||||
|
||||
// The types below are taken straight from @twurple/eventsub-base
|
||||
// I would import this from the package, but that's impossible
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import './style.css';
|
||||
|
||||
const badges = await fetch(`http://${location.host}/getBadges`).then(data => data.json());
|
||||
|
||||
import { type createMessageEvent } from '../../websockettypes';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { type eventData } from "../../websockettypes";
|
||||
import './style.css';
|
||||
|
||||
import { type twitchEventData } from "../../websockettypes";
|
||||
import { parseMessage } from './createMessage';
|
||||
|
||||
const socket = new WebSocket(`ws://${location.host}`);
|
||||
@@ -12,7 +13,7 @@ socket.onopen = () => {
|
||||
};
|
||||
|
||||
socket.onmessage = event => {
|
||||
const data: eventData = JSON.parse(event.data);
|
||||
const data: twitchEventData = JSON.parse(event.data);
|
||||
switch (data.function) {
|
||||
case 'createMessage':
|
||||
const newMessageElement = parseMessage(data);
|
||||
|
||||
Reference in New Issue
Block a user