jaw-sh / stream-nexus

Unified multicast stream chat overlay.
25 stars 8 forks source link

Kick: Filter duplicate messages #19

Closed cohlexyz closed 8 months ago

cohlexyz commented 8 months ago

https://github.com/jaw-sh/stream-nexus/assets/142505474/4435aa37-2b06-42e6-9769-f61b85e315df

It might be a better idea to generalize this for all platforms but spamming seems to only be an issue on Kick because it has those stupid emote buttons that people constantly press.

y-a-t-s commented 8 months ago

Nice work; I like the way you check for duplicates.

After last Friday's stream, I wrote something similar (#15) on the server end with admittedly naive checks that wasn't merged for other reasons. From what I understand, Josh wants something like a combo counter that counts occurrences of specific emotes and retroactively edits a line for it like "pogchamp x20". He says he has "a bit more aggressive" of an idea for how to do it, but I don't know anything more than that.

I was working on an issue to propose better feature tracking so we know what to work on and share ideas, perhaps using the projects tab or just simple issues. The projects tab uses issues anyway, but I like the organization. I like that PRs can be associated to issues because it's not easy to go hunting through closed ones, particularly when the project gets bigger over time.

As an aside: A frontend script will certainly be necessary for the counter. However, the server has a lot of useful features that could make checking for dupes easier and a bit more efficient. It stores the last 100 messages in a HashMap, each keyed to their specific UUID. I like this especially because it's a lot easier to store a set of UUIDs we can check history with instead of entire messages. We could have the server send back something simple over the open socket like an object with a bool for each UUID, indicating if we should include the message.

cohlexyz commented 8 months ago

I guess if he already has an idea of how to do it, we don't really need this PR. I assume he wants to filter the messages once the chat overlay receives them and then combine them into something like this:

image

I've also seen some overlays display the combos separately instead of inline in the chat but the former is probably easier.

Keeping track of features via the projects tab would help prevent multiple people working on the same thing.