From 4a226392356377e7af4679697cecbda28aae5ff4 Mon Sep 17 00:00:00 2001 From: phroggster Date: Wed, 8 May 2024 18:51:40 -0500 Subject: [PATCH 01/15] Add a chatMessageTextOnly variable This is ideally suitable for Text-To-Speech messages and the like. It will filter out any URLs, and any emotes, so only the text from the chat message remains. I also have no clue how to properly get a firebot development environment setup (darn you font awesome, what am I doing wrong?), but it seems to be fully functional on twitch with every scenariou I could throw at it. --- .../chat/message/chat-message-text-only.ts | 36 +++++++++++++++++++ .../builtin/twitch/chat/message/index.ts | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts new file mode 100644 index 000000000..3bc8e6548 --- /dev/null +++ b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts @@ -0,0 +1,36 @@ +import { ReplaceVariable } from "../../../../../../types/variables"; +import { EffectTrigger } from "../../../../../../shared/effect-constants"; +import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; + +const triggers = {}; +triggers[EffectTrigger.MANUAL] = true; +triggers[EffectTrigger.COMMAND] = true; +triggers[EffectTrigger.EVENT] = [ + "twitch:chat-message", + "twitch:first-time-chat", + "firebot:highlight-message", + "twitch:viewer-arrived" +]; + +const model: ReplaceVariable = { + definition: { + handle: "chatMessageTextOnly", + description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", + triggers: triggers, + categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], + possibleDataOutput: [OutputDataType.TEXT] + }, + evaluator: (trigger) => { + let messageParts = []; + if (trigger.type === EffectTrigger.COMMAND) { + messageParts = trigger.metadata.chatMessage.parts; + } else if (trigger.type === EffectTrigger.EVENT) { + messageParts = trigger.metadata.eventData.chatMessage.parts; + } + + const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); + return textParts.join(" ").trim(); + } +}; + +export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 6e6b25350..24861e263 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,6 +1,7 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; +import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -13,6 +14,7 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, + chatMessageTextOnly, chatMessage, chatColor, From a4e0d1f3446a67607192e7a02a018c9ff31e1908 Mon Sep 17 00:00:00 2001 From: SReject Date: Sat, 29 Jun 2024 15:53:57 -0400 Subject: [PATCH 02/15] Revert "Feat: Add $chatMessageTextOnly variable" --- .../chat/message/chat-message-text-only.ts | 36 ------------------- .../builtin/twitch/chat/message/index.ts | 2 -- 2 files changed, 38 deletions(-) delete mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts deleted file mode 100644 index 3bc8e6548..000000000 --- a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ReplaceVariable } from "../../../../../../types/variables"; -import { EffectTrigger } from "../../../../../../shared/effect-constants"; -import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; - -const triggers = {}; -triggers[EffectTrigger.MANUAL] = true; -triggers[EffectTrigger.COMMAND] = true; -triggers[EffectTrigger.EVENT] = [ - "twitch:chat-message", - "twitch:first-time-chat", - "firebot:highlight-message", - "twitch:viewer-arrived" -]; - -const model: ReplaceVariable = { - definition: { - handle: "chatMessageTextOnly", - description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", - triggers: triggers, - categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], - possibleDataOutput: [OutputDataType.TEXT] - }, - evaluator: (trigger) => { - let messageParts = []; - if (trigger.type === EffectTrigger.COMMAND) { - messageParts = trigger.metadata.chatMessage.parts; - } else if (trigger.type === EffectTrigger.EVENT) { - messageParts = trigger.metadata.eventData.chatMessage.parts; - } - - const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); - return textParts.join(" ").trim(); - } -}; - -export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 24861e263..6e6b25350 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,7 +1,6 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; -import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -14,7 +13,6 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, - chatMessageTextOnly, chatMessage, chatColor, From 2245c58493b887f958e95a19d1dec2d956001622 Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Fri, 12 Jul 2024 17:27:47 -0400 Subject: [PATCH 03/15] `is-connected` file created --- .../builtin/obs/variables/is-connected.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/backend/integrations/builtin/obs/variables/is-connected.ts diff --git a/src/backend/integrations/builtin/obs/variables/is-connected.ts b/src/backend/integrations/builtin/obs/variables/is-connected.ts new file mode 100644 index 000000000..a2bfcc84e --- /dev/null +++ b/src/backend/integrations/builtin/obs/variables/is-connected.ts @@ -0,0 +1,15 @@ +import { ReplaceVariable } from "../../../../../types/variables"; +import { isRecording } from "../obs-remote"; + +export const IsConnectedVariable: ReplaceVariable = { + definition: { + handle: "obsIsConnected", + description: + "Returns 'true' if OBS is currently recording or 'false' if it is not.", + possibleDataOutput: ["text"] + }, + evaluator: async () => { + const recordState = await isRecording(); + return recordState ?? false; + } +}; From 041de94c057c11a598d0f3e5d427000f04b054a4 Mon Sep 17 00:00:00 2001 From: SReject Date: Sat, 29 Jun 2024 15:53:57 -0400 Subject: [PATCH 04/15] Revert "Feat: Add $chatMessageTextOnly variable" --- .../chat/message/chat-message-text-only.ts | 36 ------------------- .../builtin/twitch/chat/message/index.ts | 2 -- 2 files changed, 38 deletions(-) delete mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts deleted file mode 100644 index 3bc8e6548..000000000 --- a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ReplaceVariable } from "../../../../../../types/variables"; -import { EffectTrigger } from "../../../../../../shared/effect-constants"; -import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; - -const triggers = {}; -triggers[EffectTrigger.MANUAL] = true; -triggers[EffectTrigger.COMMAND] = true; -triggers[EffectTrigger.EVENT] = [ - "twitch:chat-message", - "twitch:first-time-chat", - "firebot:highlight-message", - "twitch:viewer-arrived" -]; - -const model: ReplaceVariable = { - definition: { - handle: "chatMessageTextOnly", - description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", - triggers: triggers, - categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], - possibleDataOutput: [OutputDataType.TEXT] - }, - evaluator: (trigger) => { - let messageParts = []; - if (trigger.type === EffectTrigger.COMMAND) { - messageParts = trigger.metadata.chatMessage.parts; - } else if (trigger.type === EffectTrigger.EVENT) { - messageParts = trigger.metadata.eventData.chatMessage.parts; - } - - const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); - return textParts.join(" ").trim(); - } -}; - -export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 24861e263..6e6b25350 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,7 +1,6 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; -import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -14,7 +13,6 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, - chatMessageTextOnly, chatMessage, chatColor, From 4c1d022c0c02e22c30b0eab43a95017f45e00510 Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Fri, 12 Jul 2024 17:27:47 -0400 Subject: [PATCH 05/15] `is-connected` file created --- .../builtin/obs/variables/is-connected.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/backend/integrations/builtin/obs/variables/is-connected.ts diff --git a/src/backend/integrations/builtin/obs/variables/is-connected.ts b/src/backend/integrations/builtin/obs/variables/is-connected.ts new file mode 100644 index 000000000..a2bfcc84e --- /dev/null +++ b/src/backend/integrations/builtin/obs/variables/is-connected.ts @@ -0,0 +1,15 @@ +import { ReplaceVariable } from "../../../../../types/variables"; +import { isRecording } from "../obs-remote"; + +export const IsConnectedVariable: ReplaceVariable = { + definition: { + handle: "obsIsConnected", + description: + "Returns 'true' if OBS is currently recording or 'false' if it is not.", + possibleDataOutput: ["text"] + }, + evaluator: async () => { + const recordState = await isRecording(); + return recordState ?? false; + } +}; From 846fe9e3b7376f0448f58d2aafb7f567eee08e8f Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Sun, 14 Jul 2024 20:45:08 -0400 Subject: [PATCH 06/15] Implemented `obsIsConnected` Replace Variable --- src/backend/integrations/builtin/obs/obs-integration.ts | 2 ++ src/backend/integrations/builtin/obs/obs-remote.ts | 4 ++++ .../integrations/builtin/obs/variables/is-connected.ts | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/backend/integrations/builtin/obs/obs-integration.ts b/src/backend/integrations/builtin/obs/obs-integration.ts index 91cbb46a9..208ea593e 100644 --- a/src/backend/integrations/builtin/obs/obs-integration.ts +++ b/src/backend/integrations/builtin/obs/obs-integration.ts @@ -41,6 +41,7 @@ import { SceneNameEventFilter } from "./filters/scene-name-filter"; import { SceneNameVariable } from "./variables/scene-name-variable"; import { SceneCollectionNameVariable } from "./variables/scene-collection-name"; +import { IsConnectedVariable } from "./variables/is-connected"; import { IsStreamingVariable } from "./variables/is-streaming"; import { IsRecordingVariable } from "./variables/is-recording"; import { ColorValueVariable } from "./variables/obs-color-value"; @@ -158,6 +159,7 @@ class ObsIntegration replaceVariableManager.registerReplaceVariable(SceneNameVariable); replaceVariableManager.registerReplaceVariable(SceneCollectionNameVariable); + replaceVariableManager.registerReplaceVariable(IsConnectedVariable); replaceVariableManager.registerReplaceVariable(IsStreamingVariable); replaceVariableManager.registerReplaceVariable(IsRecordingVariable); replaceVariableManager.registerReplaceVariable(ColorValueVariable); diff --git a/src/backend/integrations/builtin/obs/obs-remote.ts b/src/backend/integrations/builtin/obs/obs-remote.ts index 81a9032d7..85e554d28 100644 --- a/src/backend/integrations/builtin/obs/obs-remote.ts +++ b/src/backend/integrations/builtin/obs/obs-remote.ts @@ -968,6 +968,10 @@ export async function stopVirtualCam(): Promise { } } +export function isConnected(): boolean { + return connected; +} + export async function isStreaming(): Promise { let isRunning = false; if (!connected) { diff --git a/src/backend/integrations/builtin/obs/variables/is-connected.ts b/src/backend/integrations/builtin/obs/variables/is-connected.ts index a2bfcc84e..a291794d2 100644 --- a/src/backend/integrations/builtin/obs/variables/is-connected.ts +++ b/src/backend/integrations/builtin/obs/variables/is-connected.ts @@ -1,15 +1,15 @@ import { ReplaceVariable } from "../../../../../types/variables"; -import { isRecording } from "../obs-remote"; +import { isConnected } from "../obs-remote"; export const IsConnectedVariable: ReplaceVariable = { definition: { handle: "obsIsConnected", description: - "Returns 'true' if OBS is currently recording or 'false' if it is not.", + "Returns 'true' if OBS is currently connected or 'false' if it is not.", possibleDataOutput: ["text"] }, evaluator: async () => { - const recordState = await isRecording(); - return recordState ?? false; + const connectionState = isConnected(); + return connectionState ?? false; } }; From 8436397564b21baf7af078e0a3d0d52f5d6ab22e Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Sun, 14 Jul 2024 20:54:12 -0400 Subject: [PATCH 07/15] =?UTF-8?q?one-lined=20the=20isConnected=20function?= =?UTF-8?q?=20because=20I=20can,=20knowing=20full=20well=20it=20may=20brea?= =?UTF-8?q?k=20style=20guides=20and=20may=20need=20to=20be=20reverted=20?= =?UTF-8?q?=F0=9F=98=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/integrations/builtin/obs/obs-remote.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/backend/integrations/builtin/obs/obs-remote.ts b/src/backend/integrations/builtin/obs/obs-remote.ts index 85e554d28..c6c3480a0 100644 --- a/src/backend/integrations/builtin/obs/obs-remote.ts +++ b/src/backend/integrations/builtin/obs/obs-remote.ts @@ -968,9 +968,7 @@ export async function stopVirtualCam(): Promise { } } -export function isConnected(): boolean { - return connected; -} +export const isConnected = (): boolean => connected; export async function isStreaming(): Promise { let isRunning = false; From bcb166bb44f36716bc480be1aabf4aa2b35f666d Mon Sep 17 00:00:00 2001 From: SReject Date: Sat, 29 Jun 2024 15:53:57 -0400 Subject: [PATCH 08/15] Revert "Feat: Add $chatMessageTextOnly variable" --- .../chat/message/chat-message-text-only.ts | 36 ------------------- .../builtin/twitch/chat/message/index.ts | 2 -- 2 files changed, 38 deletions(-) delete mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts deleted file mode 100644 index 3bc8e6548..000000000 --- a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ReplaceVariable } from "../../../../../../types/variables"; -import { EffectTrigger } from "../../../../../../shared/effect-constants"; -import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; - -const triggers = {}; -triggers[EffectTrigger.MANUAL] = true; -triggers[EffectTrigger.COMMAND] = true; -triggers[EffectTrigger.EVENT] = [ - "twitch:chat-message", - "twitch:first-time-chat", - "firebot:highlight-message", - "twitch:viewer-arrived" -]; - -const model: ReplaceVariable = { - definition: { - handle: "chatMessageTextOnly", - description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", - triggers: triggers, - categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], - possibleDataOutput: [OutputDataType.TEXT] - }, - evaluator: (trigger) => { - let messageParts = []; - if (trigger.type === EffectTrigger.COMMAND) { - messageParts = trigger.metadata.chatMessage.parts; - } else if (trigger.type === EffectTrigger.EVENT) { - messageParts = trigger.metadata.eventData.chatMessage.parts; - } - - const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); - return textParts.join(" ").trim(); - } -}; - -export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 24861e263..6e6b25350 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,7 +1,6 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; -import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -14,7 +13,6 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, - chatMessageTextOnly, chatMessage, chatColor, From 3b66d9da572ae68259331c4fe11b693e75d0207b Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Fri, 12 Jul 2024 17:27:47 -0400 Subject: [PATCH 09/15] `is-connected` file created --- .../builtin/obs/variables/is-connected.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/backend/integrations/builtin/obs/variables/is-connected.ts diff --git a/src/backend/integrations/builtin/obs/variables/is-connected.ts b/src/backend/integrations/builtin/obs/variables/is-connected.ts new file mode 100644 index 000000000..a2bfcc84e --- /dev/null +++ b/src/backend/integrations/builtin/obs/variables/is-connected.ts @@ -0,0 +1,15 @@ +import { ReplaceVariable } from "../../../../../types/variables"; +import { isRecording } from "../obs-remote"; + +export const IsConnectedVariable: ReplaceVariable = { + definition: { + handle: "obsIsConnected", + description: + "Returns 'true' if OBS is currently recording or 'false' if it is not.", + possibleDataOutput: ["text"] + }, + evaluator: async () => { + const recordState = await isRecording(); + return recordState ?? false; + } +}; From 2ecfcb41ed71fbc7e09f9ddacc15cd1db481f8da Mon Sep 17 00:00:00 2001 From: phroggster Date: Wed, 8 May 2024 18:51:40 -0500 Subject: [PATCH 10/15] Add a chatMessageTextOnly variable This is ideally suitable for Text-To-Speech messages and the like. It will filter out any URLs, and any emotes, so only the text from the chat message remains. I also have no clue how to properly get a firebot development environment setup (darn you font awesome, what am I doing wrong?), but it seems to be fully functional on twitch with every scenariou I could throw at it. --- .../chat/message/chat-message-text-only.ts | 36 +++++++++++++++++++ .../builtin/twitch/chat/message/index.ts | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts new file mode 100644 index 000000000..3bc8e6548 --- /dev/null +++ b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts @@ -0,0 +1,36 @@ +import { ReplaceVariable } from "../../../../../../types/variables"; +import { EffectTrigger } from "../../../../../../shared/effect-constants"; +import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; + +const triggers = {}; +triggers[EffectTrigger.MANUAL] = true; +triggers[EffectTrigger.COMMAND] = true; +triggers[EffectTrigger.EVENT] = [ + "twitch:chat-message", + "twitch:first-time-chat", + "firebot:highlight-message", + "twitch:viewer-arrived" +]; + +const model: ReplaceVariable = { + definition: { + handle: "chatMessageTextOnly", + description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", + triggers: triggers, + categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], + possibleDataOutput: [OutputDataType.TEXT] + }, + evaluator: (trigger) => { + let messageParts = []; + if (trigger.type === EffectTrigger.COMMAND) { + messageParts = trigger.metadata.chatMessage.parts; + } else if (trigger.type === EffectTrigger.EVENT) { + messageParts = trigger.metadata.eventData.chatMessage.parts; + } + + const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); + return textParts.join(" ").trim(); + } +}; + +export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 6e6b25350..24861e263 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,6 +1,7 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; +import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -13,6 +14,7 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, + chatMessageTextOnly, chatMessage, chatColor, From db87109bc57a93100231cb2733a93e62a706813c Mon Sep 17 00:00:00 2001 From: SReject Date: Sat, 29 Jun 2024 15:53:57 -0400 Subject: [PATCH 11/15] Revert "Feat: Add $chatMessageTextOnly variable" --- .../chat/message/chat-message-text-only.ts | 36 ------------------- .../builtin/twitch/chat/message/index.ts | 2 -- 2 files changed, 38 deletions(-) delete mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts deleted file mode 100644 index 3bc8e6548..000000000 --- a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ReplaceVariable } from "../../../../../../types/variables"; -import { EffectTrigger } from "../../../../../../shared/effect-constants"; -import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; - -const triggers = {}; -triggers[EffectTrigger.MANUAL] = true; -triggers[EffectTrigger.COMMAND] = true; -triggers[EffectTrigger.EVENT] = [ - "twitch:chat-message", - "twitch:first-time-chat", - "firebot:highlight-message", - "twitch:viewer-arrived" -]; - -const model: ReplaceVariable = { - definition: { - handle: "chatMessageTextOnly", - description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", - triggers: triggers, - categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], - possibleDataOutput: [OutputDataType.TEXT] - }, - evaluator: (trigger) => { - let messageParts = []; - if (trigger.type === EffectTrigger.COMMAND) { - messageParts = trigger.metadata.chatMessage.parts; - } else if (trigger.type === EffectTrigger.EVENT) { - messageParts = trigger.metadata.eventData.chatMessage.parts; - } - - const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); - return textParts.join(" ").trim(); - } -}; - -export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 24861e263..6e6b25350 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,7 +1,6 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; -import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -14,7 +13,6 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, - chatMessageTextOnly, chatMessage, chatColor, From f00a7825dd00c1bff3309926ed42008870904719 Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Sun, 14 Jul 2024 20:45:08 -0400 Subject: [PATCH 12/15] Implemented `obsIsConnected` Replace Variable --- src/backend/integrations/builtin/obs/obs-integration.ts | 2 ++ src/backend/integrations/builtin/obs/obs-remote.ts | 4 ++++ .../integrations/builtin/obs/variables/is-connected.ts | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/backend/integrations/builtin/obs/obs-integration.ts b/src/backend/integrations/builtin/obs/obs-integration.ts index 91cbb46a9..208ea593e 100644 --- a/src/backend/integrations/builtin/obs/obs-integration.ts +++ b/src/backend/integrations/builtin/obs/obs-integration.ts @@ -41,6 +41,7 @@ import { SceneNameEventFilter } from "./filters/scene-name-filter"; import { SceneNameVariable } from "./variables/scene-name-variable"; import { SceneCollectionNameVariable } from "./variables/scene-collection-name"; +import { IsConnectedVariable } from "./variables/is-connected"; import { IsStreamingVariable } from "./variables/is-streaming"; import { IsRecordingVariable } from "./variables/is-recording"; import { ColorValueVariable } from "./variables/obs-color-value"; @@ -158,6 +159,7 @@ class ObsIntegration replaceVariableManager.registerReplaceVariable(SceneNameVariable); replaceVariableManager.registerReplaceVariable(SceneCollectionNameVariable); + replaceVariableManager.registerReplaceVariable(IsConnectedVariable); replaceVariableManager.registerReplaceVariable(IsStreamingVariable); replaceVariableManager.registerReplaceVariable(IsRecordingVariable); replaceVariableManager.registerReplaceVariable(ColorValueVariable); diff --git a/src/backend/integrations/builtin/obs/obs-remote.ts b/src/backend/integrations/builtin/obs/obs-remote.ts index 81a9032d7..85e554d28 100644 --- a/src/backend/integrations/builtin/obs/obs-remote.ts +++ b/src/backend/integrations/builtin/obs/obs-remote.ts @@ -968,6 +968,10 @@ export async function stopVirtualCam(): Promise { } } +export function isConnected(): boolean { + return connected; +} + export async function isStreaming(): Promise { let isRunning = false; if (!connected) { diff --git a/src/backend/integrations/builtin/obs/variables/is-connected.ts b/src/backend/integrations/builtin/obs/variables/is-connected.ts index a2bfcc84e..a291794d2 100644 --- a/src/backend/integrations/builtin/obs/variables/is-connected.ts +++ b/src/backend/integrations/builtin/obs/variables/is-connected.ts @@ -1,15 +1,15 @@ import { ReplaceVariable } from "../../../../../types/variables"; -import { isRecording } from "../obs-remote"; +import { isConnected } from "../obs-remote"; export const IsConnectedVariable: ReplaceVariable = { definition: { handle: "obsIsConnected", description: - "Returns 'true' if OBS is currently recording or 'false' if it is not.", + "Returns 'true' if OBS is currently connected or 'false' if it is not.", possibleDataOutput: ["text"] }, evaluator: async () => { - const recordState = await isRecording(); - return recordState ?? false; + const connectionState = isConnected(); + return connectionState ?? false; } }; From c5e058400f83d6ca8732c880974b31e4d6d61fd0 Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Sun, 14 Jul 2024 20:54:12 -0400 Subject: [PATCH 13/15] =?UTF-8?q?one-lined=20the=20isConnected=20function?= =?UTF-8?q?=20because=20I=20can,=20knowing=20full=20well=20it=20may=20brea?= =?UTF-8?q?k=20style=20guides=20and=20may=20need=20to=20be=20reverted=20?= =?UTF-8?q?=F0=9F=98=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/integrations/builtin/obs/obs-remote.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/backend/integrations/builtin/obs/obs-remote.ts b/src/backend/integrations/builtin/obs/obs-remote.ts index 85e554d28..c6c3480a0 100644 --- a/src/backend/integrations/builtin/obs/obs-remote.ts +++ b/src/backend/integrations/builtin/obs/obs-remote.ts @@ -968,9 +968,7 @@ export async function stopVirtualCam(): Promise { } } -export function isConnected(): boolean { - return connected; -} +export const isConnected = (): boolean => connected; export async function isStreaming(): Promise { let isRunning = false; From 1e680bdce9e3a35425c643fe9082bd6e8bfab0ff Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Sun, 14 Jul 2024 21:01:14 -0400 Subject: [PATCH 14/15] Merge conflict resolution --- .../chat/message/chat-message-text-only.ts | 36 +++++++++++++++++++ .../builtin/twitch/chat/message/index.ts | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts diff --git a/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts new file mode 100644 index 000000000..3bc8e6548 --- /dev/null +++ b/src/backend/variables/builtin/twitch/chat/message/chat-message-text-only.ts @@ -0,0 +1,36 @@ +import { ReplaceVariable } from "../../../../../../types/variables"; +import { EffectTrigger } from "../../../../../../shared/effect-constants"; +import { OutputDataType, VariableCategory } from "../../../../../../shared/variable-constants"; + +const triggers = {}; +triggers[EffectTrigger.MANUAL] = true; +triggers[EffectTrigger.COMMAND] = true; +triggers[EffectTrigger.EVENT] = [ + "twitch:chat-message", + "twitch:first-time-chat", + "firebot:highlight-message", + "twitch:viewer-arrived" +]; + +const model: ReplaceVariable = { + definition: { + handle: "chatMessageTextOnly", + description: "Outputs the chat message from the associated command or event, with any emotes or URLs trimmed out", + triggers: triggers, + categories: [VariableCategory.COMMON, VariableCategory.TRIGGER], + possibleDataOutput: [OutputDataType.TEXT] + }, + evaluator: (trigger) => { + let messageParts = []; + if (trigger.type === EffectTrigger.COMMAND) { + messageParts = trigger.metadata.chatMessage.parts; + } else if (trigger.type === EffectTrigger.EVENT) { + messageParts = trigger.metadata.eventData.chatMessage.parts; + } + + const textParts = messageParts.filter(p => p.type === "text").map(p => p.text); + return textParts.join(" ").trim(); + } +}; + +export default model; \ No newline at end of file diff --git a/src/backend/variables/builtin/twitch/chat/message/index.ts b/src/backend/variables/builtin/twitch/chat/message/index.ts index 6e6b25350..24861e263 100644 --- a/src/backend/variables/builtin/twitch/chat/message/index.ts +++ b/src/backend/variables/builtin/twitch/chat/message/index.ts @@ -1,6 +1,7 @@ import chatMessageAnimatedEmoteUrls from './chat-message-animated-emote-urls'; import chatMessageEmoteNames from './chat-message-emote-names'; import chatMessageEmoteUrls from './chat-message-emote-urls'; +import chatMessageTextOnly from './chat-message-text-only'; import chatMessage from './chat-message'; import chatColor from './chat-user-color'; @@ -13,6 +14,7 @@ export default [ chatMessageAnimatedEmoteUrls, chatMessageEmoteNames, chatMessageEmoteUrls, + chatMessageTextOnly, chatMessage, chatColor, From 60620a8a28a3c3d9553eaa7303d64e4608849419 Mon Sep 17 00:00:00 2001 From: Izzy Deane Date: Sun, 14 Jul 2024 21:12:23 -0400 Subject: [PATCH 15/15] Comment Resolution --- .../integrations/builtin/obs/variables/is-connected.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/backend/integrations/builtin/obs/variables/is-connected.ts b/src/backend/integrations/builtin/obs/variables/is-connected.ts index a291794d2..9587e9e12 100644 --- a/src/backend/integrations/builtin/obs/variables/is-connected.ts +++ b/src/backend/integrations/builtin/obs/variables/is-connected.ts @@ -4,12 +4,10 @@ import { isConnected } from "../obs-remote"; export const IsConnectedVariable: ReplaceVariable = { definition: { handle: "obsIsConnected", - description: - "Returns 'true' if OBS is currently connected or 'false' if it is not.", + description: "Returns 'true' if OBS is currently connected or 'false' if it is not.", possibleDataOutput: ["text"] }, evaluator: async () => { - const connectionState = isConnected(); - return connectionState ?? false; + return isConnected() ?? false; } };