Skip to content

Commit 63d293f

Browse files
authored
Merge pull request #3501 from crowbartools/v5
5.66.1 Release
2 parents 9247657 + 7b9d28a commit 63d293f

14 files changed

Lines changed: 149 additions & 29 deletions

File tree

package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "firebotv5",
3-
"version": "5.66.0",
3+
"version": "5.66.1",
44
"description": "Powerful all-in-one bot for Twitch streamers.",
55
"main": "build/main.js",
66
"scripts": {
@@ -91,7 +91,7 @@
9191
"escape-html": "^1.0.3",
9292
"eventsource": "^1.0.7",
9393
"express": "^5.1.0",
94-
"expressionish": "github:SReject/expressionish#27f38753346b60c5a09d69ebe407bf70583eec2d",
94+
"expressionish": "github:SReject/expressionish#2e798f91c640384b0bf0b2b4bfa589d5e7ad2a51",
9595
"extra-life-ts": "^0.4.0",
9696
"firebot-nutjs": "github:crowbartools/firebot-nutjs#f52581d4c4426cf7f4dcc2b0d26cf56777e115f8",
9797
"form-data": "^4.0.5",

src/backend/chat/frontend-chat-helpers.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class FirebotFrontendChatHelpers {
2020
chatMessage: FirebotChatMessage
2121
): void {
2222
if (chatWidget.settings.delayMessages === true) {
23-
if (this._pendingMessageCache[chatWidget.id].some(m => m === chatMessage.id)) {
23+
if ((this._pendingMessageCache[chatWidget.id] ?? []).some(m => m === chatMessage.id)) {
2424
// Remove it from the pending list so we know we've taken care of it
2525
this._pendingMessageCache[chatWidget.id] = this._pendingMessageCache[chatWidget.id]
2626
.filter(m => m !== chatMessage.id);
@@ -85,16 +85,18 @@ class FirebotFrontendChatHelpers {
8585
const advancedChatWidgets = overlayWidgetConfigManager.getConfigsOfType<OverlayWidgetConfig<AdvancedChatWidgetSettings, ChatWidgetState>>("firebot:chat-advanced");
8686

8787
for (const chatWidget of [...chatWidgets, ...advancedChatWidgets]) {
88-
if (chatWidget.settings.delayMessages === true && chatWidget.settings.messageDelay) {
89-
this._pendingMessageCache[chatWidget.id] ??= [];
88+
if (!!chatWidget.active) {
89+
if (chatWidget.settings.delayMessages === true && chatWidget.settings.messageDelay) {
90+
this._pendingMessageCache[chatWidget.id] ??= [];
9091

91-
this._pendingMessageCache[chatWidget.id].push(chatMessage.id);
92+
this._pendingMessageCache[chatWidget.id].push(chatMessage.id);
9293

93-
setTimeout(() => {
94+
setTimeout(() => {
95+
this.sendChatMessageToChatWidget(chatWidget, chatMessage);
96+
}, chatWidget.settings.messageDelay * 1000);
97+
} else {
9498
this.sendChatMessageToChatWidget(chatWidget, chatMessage);
95-
}, chatWidget.settings.messageDelay * 1000);
96-
} else {
97-
this.sendChatMessageToChatWidget(chatWidget, chatMessage);
99+
}
98100
}
99101
}
100102
}

src/backend/crowbar-relay/crowbar-relay-websocket.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class CrowbarRelayWebSocket extends TypedEmitter<{
7474
});
7575

7676
this.ws.addEventListener("error", (err) => {
77-
logger.error("Crowbar Relay WebSocket errored", err);
77+
logger.error("Crowbar Relay WebSocket errored", err.message);
7878
});
7979

8080
this.ws.addEventListener("close", (closedEvent) => {

src/backend/effects/builtin/clips.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ const clip = {
373373

374374
videoElement = `
375375
<iframe style="border: none; ${styles}"
376-
src="${clipVideoUrl}&parent=${window.location.hostname}&autoplay=true"
376+
src="${clipVideoUrl}&parent=${window.location.hostname}&autoplay=true&muted=false"
377377
height="${height || screen.height}"
378378
width="${width || screen.width}"
379379
frameBorder=0

src/backend/effects/builtin/overlay-alert.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,10 @@ const effect: EffectType<OverlayAlertEffect> = {
277277
placeholder-text="Enter alert text"
278278
use-text-area="true"
279279
/>
280+
<div class="muted">
281+
If you would like to add HTML from a variable, you must wrap it inside of <code>$allowHtml</code> (e.g. <code>$allowHtml[$someOtherVariable]</code>).<br />
282+
<strong>WARNING:</strong> Be very careful doing this with untrusted or potentially harmful data, like chat messages.
283+
</div>
280284
<div class="mt-3">
281285
<font-options ng-model="effect.font" allow-alpha="true"></font-options>
282286
</div>
@@ -671,7 +675,11 @@ const effect: EffectType<OverlayAlertEffect> = {
671675
...event.trigger,
672676
effectOutputs: event.outputs
673677
},
674-
(token: string) => escapeHTML(token)
678+
(text, token) => {
679+
if (token.value !== "allowHtml") {
680+
return escapeHTML(text);
681+
}
682+
}
675683
);
676684
}
677685

src/backend/events/filters/builtin/twitch/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import sharedChat from "./shared-chat";
1818
import sharedTrain from "./shared-train";
1919
import streamCategory from "./stream-category";
2020
import subKind from "./sub-kind";
21+
import subMonths from "./sub-months";
2122
import subType from "./sub-type";
2223
import treasureTrain from "./treasure-train";
2324
import username from "./username";
@@ -43,6 +44,7 @@ export default [
4344
sharedTrain,
4445
streamCategory,
4546
subKind,
47+
subMonths,
4648
subType,
4749
treasureTrain,
4850
username
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { createNumberFilter } from "../../filter-factory";
2+
3+
const filter = createNumberFilter({
4+
id: "firebot:sub-months",
5+
name: "Months Subbed",
6+
description: "Filter by the total number of months the user has been subscribed",
7+
eventMetaKey: "totalMonths",
8+
events: [
9+
{ eventSourceId: "twitch", eventId: "sub" }
10+
]
11+
});
12+
13+
export default filter;

src/backend/logwrapper.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ class FrontendTransport extends Transport {
4646
log(info :TransformableInfo, callback: () => void) {
4747
setImmediate(() => this.emit("logged", info));
4848

49-
frontendCommunicator.send("logging", {
50-
message: info[Symbol.for("message")],
51-
meta: info[Symbol.for("splat")]
52-
});
49+
try {
50+
frontendCommunicator.send("logging", {
51+
message: info[Symbol.for("message")],
52+
meta: info[Symbol.for("splat")]
53+
});
54+
} catch { }
5355

5456
if (callback) {
5557
callback();
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type { ReplaceVariable } from "../../../../types/variables";
2+
3+
const allowHtmlVariable: ReplaceVariable = {
4+
definition: {
5+
handle: "allowHtml",
6+
usage: "allowHtml[$otherVariable]",
7+
description: "Allows HTML to be used in places where it's usually not allowed",
8+
categories: ["advanced"],
9+
possibleDataOutput: ["text"],
10+
hidden: true
11+
},
12+
evaluator: (trigger, arg: string) => arg
13+
};
14+
15+
export default allowHtmlVariable;

0 commit comments

Comments
 (0)