rdavydov / Twitch-Channel-Points-Miner-v2

A simple script that will watch a stream for you and earn the channel points.
GNU General Public License v3.0
1.1k stars 322 forks source link

Double up on a stream when collecting watch streaks? #526

Open qs-arno opened 1 month ago

qs-arno commented 1 month ago

Is your feature request related to a problem?

Sometimes, when the bot is running while I'm also interactively watching Twitch in a browser, things don't get farmed as desired...collecting "watch streaks" is one of those cases.

Twitch only considers two sessions to be "farmable" (for lack of a better term) at once. When the bot is running on its own that's fine, because it manages the two sessions. However, when you're also watching in a browser...that's a third session and it will "override" one of the bot's sessions.

Here's how that can lead to problems:

  1. Bot connection A ("Bot[A]") is watching Alice's stream
  2. Bot[B] is watching Bob's stream
  3. I pull up Twitch in my browser and start watching Carol's stream
  4. Twitch decides that Carol is "farmable", and demotes "Bob"
  5. The bot still thinks that Bob's stream is being farmed...but it never actually gets credit for being in the stream

The upshot of the above is that the bot thinks it's idling Alice and Bob, but in fact it's only idling Alice. You can suss this out by looking at the console logs while you're watching in a browser, and see that only one channel is redeeming points.

Proposed solution

What I propose is to change the stream selection algorithm for users who have watch streaks set as a priority. When a new channel comes online, both threads switch to that channel until one of them gets the WATCH_STREAK reward. This ensures that an active browser viewing session won't override the bot thread that's assigned to that channel. (I mean it will be overriding one of them, but since I don't think you could know which one...)

I'll concede that this only addresses the problem if you assume that the browser will be watching at most one channel at a time, but to me that seems like a valid enough use case to be worth doing. I mean, how many channels are you going to be actually watching at once? I know tons of people have multiple tabs open, but I'd imagine almost all of that is for farming purposes, or to help with their viewership, or whatever...which is being handled by the bot.

Alternatives you've considered

I'm not sure there is an alternative, other than constantly monitoring the console for channels coming online and interactively switching to them in your browser to make sure the watch streak gets captured.

Additional context

A quick update that would help with manually managing this situation would be to have the bot print which two streams it's currently farming, every time the status changes. That way, you could at least be able to see at a glance which two streams the bot thinks should be active, which you could cross-reference with the other log entries to see whether those streams have triggered a watch streak reward during the current session.

qs-arno commented 1 month ago

This happened again today; the watch streak reset on one of my channels, presumably because I was watching something in the browser and the bot connection responsible for that channel wasn't being counted by Twitch.

AdamSaketume26 commented 1 month ago

this happens to me too because the bot never refresh the watch token or try again it will keep watching even if the bot view doesnt count. there should be a retry system if no streak points earned after 15 minutes or watch points after 5 minutea

DanzoGit commented 1 month ago

I agree. I've lost my streaks a few times already. It's very frustrating to lose a 100+ streak.

qs-arno commented 2 weeks ago

Hello @AdamSaketume26, @DanzoGit, and anybody else that is interested in seeing this fixed: if you could, add a "thumbs-up" reaction to the original post. The maintainer has said they use that to help prioritize things to work on.