fixes, alerts/chatwidget websocket error handling, make chatterbot have the new bot badge

This commit is contained in:
2025-09-01 00:31:27 +02:00
parent e3f04bfe07
commit 4317c079b1
4 changed files with 21 additions and 16 deletions

View File

@@ -42,9 +42,9 @@ for (const [name, item] of Array.from(items)) {
export default commands;
export { basecommands };
import { singleUserMode, chatterApi, chatterId, streamerId } from "main";
import { chatterApi, chatterId, streamerId } from "main";
/** Helper function to send a message to the stream */
export const sendMessage = async (message: string, replyParentMessageId?: string) => {
singleUserMode ? await chatterApi.chat.sendChatMessage(streamerId, message, { replyParentMessageId }) : chatterApi.asUser(chatterId, async newapi => newapi.chat.sendChatMessage(streamerId, message, { replyParentMessageId }));
await chatterApi.chat.sendChatMessageAsApp(chatterId, streamerId, message, { replyParentMessageId })
};

View File

@@ -43,7 +43,7 @@ export type cheerEventRecord = {
export type cheerRecord = {
id?: string;
user?: string;
user: string;
amount: number;
};

View File

@@ -7,7 +7,7 @@ import { addInvuln } from "lib/invuln";
import { redis } from "bun";
const CHATTERINTENTS = ["user:read:chat", "user:write:chat", "user:bot"];
const STREAMERINTENTS = ["user:read:chat", "moderation:read", "channel:manage:moderators", "moderator:manage:banned_users", "bits:read", "channel:moderate"];
const STREAMERINTENTS = ["channel:bot", "user:read:chat", "moderation:read", "channel:manage:moderators", "moderator:manage:banned_users", "bits:read", "channel:moderate"];
export const singleUserMode = process.env.CHATTER_IS_STREAMER === 'true';
export const chatterId = process.env.CHATTER_ID ?? "";

View File

@@ -28,18 +28,23 @@ export default Bun.serve({
},
websocket: {
message(ws, omessage) {
const message = JSON.parse(omessage.toString()) as serverInstruction;
if (!message.type) return;
switch (message.type) {
case 'subscribe':
if (!message.target) return;
const target = message.target.toLowerCase();
ws.subscribe(message.target);
ws.send(JSON.stringify({
function: 'serverNotification',
message: `Successfully subscribed to ${target} events`
} as serverNotificationEvent)); // Both alerts and chatwidget eventsub subscriptions have the notification field
break;
try {
const message = JSON.parse(omessage.toString()) as serverInstruction;
if (!message.type) return;
switch (message.type) {
case 'subscribe':
if (!message.target) return;
const target = message.target.toLowerCase();
ws.subscribe(message.target);
ws.send(JSON.stringify({
function: 'serverNotification',
message: `Successfully subscribed to ${target} events`
} as serverNotificationEvent)); // Both alerts and chatwidget eventsub subscriptions have the notification field
break;
};
} catch (e) {
ws.send('Incorrect instruction. Closing websocket connection');
ws.close();
};
},
close(ws) {