From 9384c57f43e826490fd7c6b70ab433e15b6bf720 Mon Sep 17 00:00:00 2001 From: minster586 <43217359+minster586@users.noreply.github.com> Date: Mon, 25 Aug 2025 01:16:23 -0400 Subject: [PATCH] sync from github --- README.md | 164 +-- chat.html | 172 +-- chatrd.sb | 1 + css/chatrd.css | 731 ++++++++++ css/settings.css | 715 +++++----- images/img-empty.png | Bin 0 -> 7419 bytes images/logo-speakerbot.png | Bin 0 -> 21931 bytes images/logo-streamerbot.png | Bin 0 -> 30881 bytes index.html | 1183 ++++++++++++----- js/chatrd.js | 680 ++++++++++ .../fourthwall/images/logo-fourthwall.svg | 12 + js/modules/fourthwall/module.css | 11 + js/modules/fourthwall/module.js | 291 ++++ js/modules/kick/images/badge-bot.svg | 1 + js/modules/kick/images/badge-broadcaster.svg | 1 + js/modules/kick/images/badge-founder.svg | 1 + js/modules/kick/images/badge-moderator.svg | 1 + js/modules/kick/images/badge-og.svg | 1 + js/modules/kick/images/badge-sidekick.svg | 1 + js/modules/kick/images/badge-sub_gifter.svg | 1 + js/modules/kick/images/badge-subscriber.svg | 1 + js/modules/kick/images/badge-verified.svg | 1 + js/modules/kick/images/badge-vip.svg | 1 + js/modules/kick/images/logo-kick.svg | 12 + js/modules/kick/module.css | 24 + js/modules/kick/module.js | 726 ++++++++++ js/modules/kofi/images/logo-kofi.svg | 38 + js/modules/kofi/module.css | 11 + js/modules/kofi/module.js | 192 +++ js/modules/patreon/images/logo-patreon.svg | 12 + js/modules/patreon/module.css | 3 + js/modules/patreon/module.js | 60 + .../images/logo-streamelements.svg | 82 ++ js/modules/streamelements/module.css | 3 + js/modules/streamelements/module.js | 57 + .../streamlabs/images/logo-streamlabs.svg | 14 + js/modules/streamlabs/module.css | 3 + js/modules/streamlabs/module.js | 59 + js/modules/tiktok/images/logo-tiktok.svg | 12 + js/modules/tiktok/module.css | 30 + js/modules/tiktok/module.js | 435 ++++++ .../tipeeestream/images/logo-tipeeestream.svg | 13 + js/modules/tipeeestream/module.css | 3 + js/modules/tipeeestream/module.js | 61 + js/modules/twitch/images/logo-twitch.svg | 17 + js/modules/twitch/module.css | 34 + js/modules/twitch/module.js | 765 +++++++++++ js/modules/youtube/images/logo-youtube.svg | 17 + js/modules/youtube/module.css | 57 + js/modules/youtube/module.js | 509 +++++++ js/sb.js | 67 + js/settings.js | 863 ++++++------ js/speakerbot.js | 139 ++ 53 files changed, 6941 insertions(+), 1347 deletions(-) create mode 100644 chatrd.sb create mode 100644 css/chatrd.css create mode 100644 images/img-empty.png create mode 100644 images/logo-speakerbot.png create mode 100644 images/logo-streamerbot.png create mode 100644 js/chatrd.js create mode 100644 js/modules/fourthwall/images/logo-fourthwall.svg create mode 100644 js/modules/fourthwall/module.css create mode 100644 js/modules/fourthwall/module.js create mode 100644 js/modules/kick/images/badge-bot.svg create mode 100644 js/modules/kick/images/badge-broadcaster.svg create mode 100644 js/modules/kick/images/badge-founder.svg create mode 100644 js/modules/kick/images/badge-moderator.svg create mode 100644 js/modules/kick/images/badge-og.svg create mode 100644 js/modules/kick/images/badge-sidekick.svg create mode 100644 js/modules/kick/images/badge-sub_gifter.svg create mode 100644 js/modules/kick/images/badge-subscriber.svg create mode 100644 js/modules/kick/images/badge-verified.svg create mode 100644 js/modules/kick/images/badge-vip.svg create mode 100644 js/modules/kick/images/logo-kick.svg create mode 100644 js/modules/kick/module.css create mode 100644 js/modules/kick/module.js create mode 100644 js/modules/kofi/images/logo-kofi.svg create mode 100644 js/modules/kofi/module.css create mode 100644 js/modules/kofi/module.js create mode 100644 js/modules/patreon/images/logo-patreon.svg create mode 100644 js/modules/patreon/module.css create mode 100644 js/modules/patreon/module.js create mode 100644 js/modules/streamelements/images/logo-streamelements.svg create mode 100644 js/modules/streamelements/module.css create mode 100644 js/modules/streamelements/module.js create mode 100644 js/modules/streamlabs/images/logo-streamlabs.svg create mode 100644 js/modules/streamlabs/module.css create mode 100644 js/modules/streamlabs/module.js create mode 100644 js/modules/tiktok/images/logo-tiktok.svg create mode 100644 js/modules/tiktok/module.css create mode 100644 js/modules/tiktok/module.js create mode 100644 js/modules/tipeeestream/images/logo-tipeeestream.svg create mode 100644 js/modules/tipeeestream/module.css create mode 100644 js/modules/tipeeestream/module.js create mode 100644 js/modules/twitch/images/logo-twitch.svg create mode 100644 js/modules/twitch/module.css create mode 100644 js/modules/twitch/module.js create mode 100644 js/modules/youtube/images/logo-youtube.svg create mode 100644 js/modules/youtube/module.css create mode 100644 js/modules/youtube/module.js create mode 100644 js/sb.js create mode 100644 js/speakerbot.js diff --git a/README.md b/README.md index a1d0ac2..6c04e14 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,37 @@ #  -ChatRD is a chat tool and/or overlay widget that unifies messages and events from **Twitch**, **YouTube**, **TikTok**, **Kick**, **Streamlabs**, **StreamElements**, **Patreon**, **TipeeeStream**, **Ko-Fi**, **Fourthwall** (and more to come). +ChatRD is a chat tool and/or overlay widget that unifies messages and events from **Twitch**, **YouTube**, **TikTok**, **Kick**, **Streamlabs**, **StreamElements**, **Patreon**, **TipeeeStream**, **Ko-Fi** and **Fourthwall**. - + ---- +## 🛠️ Setting it up -## 🚀 Features +Make sure your **Twitch**, **YouTube** and **Kick** accounts are connected on **Streamer.bot**. Also have **TikFinity Desktop App** installed and your account on **TikTok** setup. **BOTH APPS NEED TO RUN ON THE SAME PC**. -- 💬 **Multi-platform chat** -- 💬 **Multi-language events** -- 📊 **Events and Live stats** -- 🎨 **Customizable** -- 💾 **Saves your settings using localStorage and Streamer.Bot's Global Varaibles** +If you have both of these ready, follow these steps: ---- - -## 🛠️ Usage - -Make sure your **Twitch** and **YouTube** accounts are connected on **Streamer.Bot** and you have **TikFinity Desktop App** installed and set up to your account on **TikTok**. **BOTH APPS NEED TO RUN ON THE SAME PC**. - -### Streamer.Bot & TikFinity -1. On **Streamer.Bot**, go to **Server/Clients → WebSocket Server** and make sure it is running -2. Import the string inside the file [streamerbot-import.vortisrd](https://github.com/vortisrd/chatrd/blob/main/streamerbot-import.vortisrd) to your **Streamer.Bot** using the **Import** button at the top. -3. Go to **Server/Clients → WebSocket Client** and make sure the *TikFinity* WebSocket is connected. If not, right-click on it and check *Auto-Connect* and *Reconnect* before clicking on *Connect*. -4. Download [**TikFinity Desktop App**](https://tikfinity.zerody.one/) and make sure it's is opened and connected to your TikTok Account. +1. On **Streamer.bot**, import the file [chatrd.sb](https://github.com/vortisrd/chatrd/blob/main/chatrd.sb) to your **Streamer.bot**. +2. Go to **Server/Clients → WebSocket Server** and make sure it is running. 5. Open the [Settings Page](https://vortisrd.github.io/chatrd) in your browser. 6. Choose your desired options. 7. Click **"Copy URL"**. 8. Add the copied URL as a Browser Source in OBS. Or use it in your browser to read chat. 😊 9. For **Streamlabs**, **StreamElements**, **Patreon**, **TipeeeStream**, **Ko-Fi** and **Fourthwall**, you need to connect them to your Streamer.Bot account to their website. Follow the tutorial links in each section presented in the [Settings Page](https://vortisrd.github.io/chatrd). -### TikTok Chat Setup +--- + +## 🔊 Setting TTS with Speaker.Bot + +1. Go to **Settings → WebSocket Server**, click on *Start Server*. Make sure to also tick the *Auto-Start* checkbox. +2. Copy the IP and Port to ChatRD Speaker.bot fields. +3. Go to **Settings → Speech Engine** and add the TTS Service of your preference. (Sapi5 is the Windows default). +4. Go to **Settings → Voice Aliases**, give it a name and click **Add** right next to it. +5. In the Left Column, click on the **SpeakerBot** you just added and on the **Speak!** section, select the voice you want to use and click **Add**. (If you're using Sapi5, I recommend using *Microsoft Zira Desktop* as a voice). +6. Add the Alias name under the *Voice Alias* field on ChatRD. + +--- + +## 💬 Sending Messages to TikTok To send messages to **TikTok** using the *Chat Field*, you need to the following on **TikFinity**: 1. Make sure you're connected to your TikTok Account on **TikFinity**. If you're not, go to **Setup → TikTok Login** and click on *Login to TikTok*. @@ -43,52 +43,23 @@ To send messages to **TikTok** using the *Chat Field*, you need to the following  - -### Kick.Bot installation on Streamer.Bot - -1. First, [download Kick.Bot from Sehelitar's repo](https://github.com/Sehelitar/Kick.bot/releases/). -2. Unzip and copy the DLLs from **Kick.Bot** to the *dlls folder* inside **Streamer.Bot**. If it's not there, create one (name it "dlls", lowercase). -3. Import the action from *action.txt* file (inside the ZIP folder you just unzipped) to **Streamer.Bot**. -4. Close **Streamer.Bot** and open it again. After a few seconds, a window will appear asking you to login on *Kick*. -5. Done! 😊 - -If **Kick.Bot** stops sending events to ChatRD, delete it's dlls in the *dlls folder*, delete the imported **Kick.Bot** action and delete the *Streamer.bot.exe.WebView2* folder. After that, reinstall **Kick.Bot** using the above instructions. - - -#### ⚠️ KICK IS A BETA FEATURE! -Kick doesn't offer an API like Twitch does. It's not feasible for Streamer.Bot do it in an easy manner like Twitch, YouTube, Trovo, etc. - -[Kick.Bot](https://github.com/Sehelitar/Kick.bot/releases/) does an excelent job but there is some information missing on the payload from Kick, like *avatars*, *badges (gift sub, community, etc), viewership, etc*. And there will be some errors or some misinformation being shown. I tried my best to emulate these. - -I couldn't test every single outcome because it's not possible to simulate the events besides Chat. I followed [Kick.Bot's](https://github.com/Sehelitar/Kick.bot/releases/) documentation and hoped for the best. 🙏 - -Also, at any point either **Kick** or **Kick.Bot** might change their stuff, so please, **be patient!** 😊 - - ---- - -## 🔊 How to set TTS with Speaker.Bot - -### Speaker.Bot Setup -1. Go to **Settings → WebSocket Server**, click on *Start Server*. Make sure to also tick the *Auto-Start* checkbox. -2. Go to **Settings → Speech Engine** and add the TTS Service of your preference. (Sapi5 is the Windows default). -3. Go to **Settings → Voice Aliases**, name the voice *SpeakerBot* and click **Add** right next to it. -4. In the Left Column, click on the **SpeakerBot** you just added and on the **Speak!** section, select the voice you want to use and click **Add**. (If you're using Sapi5, I recommend using *Microsoft Zira Desktop* as a voice). - -### Streamer.Bot Setup -1. Import the [streamerbot-import.vortisrd](https://github.com/vortisrd/chatrd/blob/main/streamerbot-import.vortisrd) file to your **Streamer.Bot**. There's a new action that will handle the **Speaker.Bot** integration. -2. Go to **Integrations → Speaker.Bot**, click on *Connect*. Make sure to also tick the *Auto-Start* and *Auto-Connect* checkboxes. - --- ## 💻 Commands supported by the Chat Field **Commands for Twitch** - /me (message) +- /clip - /announce (message) +- /announceblue (message) +- /announcegreen (message) +- /announceorange (message) +- /announcepurple (message) - /clear - /slow (duration in seconds) - /slowoff +- /emoteonly +- /emoteonlyoff - /subscribers - /subscribersoff - /commercial (duration in seconds) @@ -103,80 +74,51 @@ Also, at any point either **Kick** or **Kick.Bot** might change their stuff, so - /shoutout (user) - /raid (user) - /unraid +- /settitle (stream title) +- /setgame (game name) **Commands for YouTube** -- /yt/title (title) -- /yt/description (description) +- /yt/title (stream title) - /yt/timeout (userID) (duration in seconds) - /yt/ban (userID) +**Commands for Kick** +- /kick/title (stream title) +- /kick/category (stream category title) +- /kick/timeout (user) (duration in seconds) +- /kick/untimeout (user) +- /kick/ban (user) (reason) +- /kick/unban (user) + **TikTok** -- TikTok commands are not supported yet. +- TikTok commands are not supported. -**Kick** -- Kick commands are not supported yet. - ---- - -## 📝 To-Do List - -- Trovo -- LivePix -- Tipa.Ai --- ## ❓ Frequently Asked Questions **- Can I use it to read my chat?** -R: Yes you can. You can open it on your browser, use it as a chat overlay and use it as a dock in OBS. +R: Yes you can. You can open it on your browser, use it as a chat overlay and/or use it as a dock in OBS. **- What about YouTube Members Emotes?** -R: YouTube doesn't expose their Partner Emojis to Streamer.Bot. All you can do is add the emojis manually in ChatRD. Please [read this](https://github.com/vortisrd/chatrd#about-youtube-membership-emojis). +R: YouTube doesn't expose their Membership/Partner Emojis to Streamer.bot. You would have to add them manually on ChatRD's Members Only Emotes section. + +What Casterlabs Caffeinated, Social Stream Ninja and Onecomme do to scrape the emotes won't work with the current way Streamer.Bot and my code works, so I had to choose between **making the user add them manually** or build a **server-sided executable (using NodeJS, Python or whatever) to read the chat as it's going or scrape the HTML code**. I don't want to add another executable on top of the user's flow, so it would be easier to use what it's currently available. **And no, I won't do any research based on what other tools do.** **- Can I set TTS to read only the events I want to read?** -R: ChatRD only reads either chats, events or both. If you want to filter the events, [I suggest you setup Speaker.Bot separately](https://github.com/vortisrd/chatrd?tab=readme-ov-file#about-speakerbot-tts-customization). +R: No. ChatRD sends either chats, events or both to Speaker.bot. **- TikTok events are not working anymore, what should I do?** -R: Make sure your TikFinity is connected to your account and you are live. Also go to **Server/Clients → WebSocket Client** and make sure the TikFinity WebSocket is connected. [Instructions here](https://github.com/vortisrd/chatrd#streamerbot--tikfinity). +R: Make sure your TikFinity is connected to your account and you are live. -**- Kick events are not working anymore, what should I do?** -R: Try reinstalling Kick.Bot [using the following methods](https://github.com/vortisrd/chatrd?tab=readme-ov-file#kickbot-installation-on-streamerbot). - -**- Where are my Kick sub badges? And the X or Y badges?** -R: At the moment of this post, the WebSocket I connect to show Kick's chat doesn't expose the Badges like Twitch does. Twitch mentions the badges and sends the URL, showing it [like this](https://i.imgur.com/xwg39hO.png). **Kick doesn't, showing on code [like this](https://i.imgur.com/OtMcDzI.png)**. You can see the person is subscribed and it's a sub gifter, but it doesn't show the specified badges. I did the best I could with the other badges. When Kick improves their API, I will revisit this later. +**- Kick events are not working or are taking too much time to show, what should I do?** +R: Kick's API is notoriously slow on their peak usage. It's been reported on [Streamer.bot](https://discord.streamer.bot/) Discord (check html-css-js section) that sometimes it could take up to 60 seconds for the responses to be relayed. I hope in the future they throw more money into their servers. **- Can you add other streaming/payment platforms?** -R: ChatRD uses Streamer.Bot to 95% of all platform iterations. *TikFinity* is perfectly integrated via WebSockets and *Kick.Bot* adds a decent integration. So if the platform has a decent WebSocket API (not WebHooks, those need a server to be usable) and/or has any integration with Streamer.Bot, please feel free to suggest it. Other than that, there are no plans to add more platforms. +R: ChatRD uses Streamer.Bot to 95% of all platform iterations. *TikFinity* is perfectly integrated via WebSockets. So if the platform has any integration with Streamer.bot or has a decent WebSocket API (not WebHooks), feel free to suggest it. Other than that, there are no plans to add more platforms. **- Can I customize it?** -R: If you mean visual styles, yes. [Read here](https://github.com/vortisrd/chatrd?tab=readme-ov-file#about-custom-styling). - - - ---- - -## **⚠️ DISCLAIMERS ⚠️** - -### About YouTube Membership Emojis -I tried to add member emotes but **that is currently impossible due to YouTube's API not exposing Members Emotes and with that, Streamer.Bot won't be able to show them.**. So I've added a way for the users to add them manually at the overlay, with the data saved as a Streamer.Bot Global Variable. - -What Casterlabs Caffeinated, Social Stream Ninja and Onecomme do to scrape the emotes won't work with the current way Streamer.Bot and my code works, so I had to choose between **making the user add them manually** or build a **server-sided executable (using NodeJS, Python or whatever) to read the chat as it's going or scrape the HTML code**. I don't want to add another executable on top of the user's flow, so it would be easier to use what it's currently available. **And no, I won't do any research based on what other tools do.** Tried to do that and wasted 1 week of my life doing it. - -When YouTube decide to expose their Partner Emotes on their API, I'll come back to this. - -### About Speaker.Bot TTS Customization -If you want to customize what events the TTS reads, like "I want it to read sub notifications but I don't want it to read bits", it's possible. But doing that means adding an extra TTS switch for every single event for all platforms, making the setup page almost triplicate in size and bloat the code. **I won't do that**. I want to keep it simple and contained. - -If you want to have TTS for events separately, I suggest you **Disable TTS Events** on ChatRD and setup Speaker.Bot with the things you want. 😊 - -### About Custom Styling -The safest way to customize ChatRD is open either the Chat or the Config in your browser and use [it's Dev Tools](https://i.imgur.com/Nirwz5R.png) to look for the tags, their classes, identifiers and then style in the way you want. **You need basic CSS knowledge for that**. - -After you finish it, paste the CSS inside the [Custom CSS field within Browser Source Property Window](https://i.imgur.com/BjvrV28.png). - -### About Support on Changing the Javascript or other Core Files -If you break it, you fix it. 😊 - +R: If you mean visual styles, you can add your own using the *Custom CSS* field in OBS's Browser Source Properties Window. You can use your browser Dev Tools to inspect the elements you want to change. **I won't provide support if you're planning to customize codes that could break ChatRD**. --- @@ -184,8 +126,8 @@ If you break it, you fix it. 😊 Made with ❤️ by **VortisRD** -🔗 [GitHub](https://github.com/vortisrd) • [Twitch](https://twitch.tv/vortisrd) • [YouTube](https://youtube.com/@vortisrd) • [TikTok](https://tiktok.com/@vortisrd) • [Kick](https://kick.com/vortisrd) • [Twitter / X](https://twitter.com/vortisrd) +🔗 [GitHub](https://github.com/vortisrd) • [Twitch](https://twitch.tv/vortisrd) • [YouTube](https://youtube.com/@vortisrd) • [Kick](https://kick.com/vortisrd) • [TikTok](https://tiktok.com/@vortisrd) • [Twitter / X](https://twitter.com/vortisrd) -Heavily inspired by [Nutty](https://nutty.gg) +Heavily inspired by [Nutty](https://nutty.gg). *Seriously, go give him some money!* -🔗 [GitHub](https://github.com/nuttylmao) • [Twitch](https://twitch.tv/nutty) • [YouTube](https://youtube.com/@nuttylmao) • [TikTok](https://tiktok.com/@nuttylmao) • [Twitter / X](https://x.com/nuttylmao) +🔗 [GitHub](https://github.com/nuttylmao) • [Twitch](https://twitch.tv/nutty) • [YouTube](https://youtube.com/@nuttylmao) • [Kick](https://kick.com/nutty) • [TikTok](https://tiktok.com/@nuttylmao) • [Twitter / X](https://x.com/nuttylmao) \ No newline at end of file diff --git a/chat.html b/chat.html index 4c5c515..61ec473 100644 --- a/chat.html +++ b/chat.html @@ -5,110 +5,128 @@