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