Skip to content

[Feature Request] Channel configurations based on subscription status #101

@seth-rah

Description

@seth-rah

Summary

I have Robot running in a friends channel, but they don't maintain an active subscription for the Robot on their channel, it's mostly just gift subs that come in.

On my end I tried to make some channel specific emotes that relied on the subscription at the start, but after time this slowly turned into a case of messages only sometimes having access to the emotes.

robot/example.toml

Lines 140 to 141 in 74c6842

[twitch.bocchi.emotes]
'btw make sure to stretch, hydrate, and take care of yourself <3' = 1

Having a channel config that's only used while Robot is subscribed to the channel would help alleviate issues like this.

[twitch.bocchi.subscribed.emotes] or [twitch.bocchi.subscribed.effects] from the config as an example. although, I'm mostly just interested in the emotes aspect.

What I wouldn't know is how this would work with alongside existing configs that aren't subscriber only.
Do you combine them, or use it based on a configuration that only allows 1 variant based on subscription status.

This request is config specific, as the emotes in the configuration aren't influencing the learning process and would reduce scope.


Open thoughts / Scope Creep / Rambling

Not intended for this request, but I have a hard time not sharing details that might be useful to consider.
Sometimes ideas or future considerations like this can help shape the implementation of the topic above to avoid later refactors.

Something that's worth considering at a later stage is tracking whether a string learned in a message is a Twitch channel emote or a word.
If the value is an emote, it can be linked to the channel that owns it.

This could then be used to help Robot filter spoken words if applied to Robot's config. Alternatively Robot could gain access to a list of all emotes they have access towards, and cycle through available emotes when writing a message that has a part it knows is linked to an emote.

Example:

Robot learns Bocchi loves being with friends ${emote}

Robot thinks Ryo has many friends ${emote}

Robot pulls emotes they have access to, and replaces ${emote}

This could be applied to the config format to pull a random emote from the list of emotes Robot has access to instead of targeting a specific one when created.

[twitch.bocchi.emotes]
'btw make sure to stretch, hydrate, and take care of yourself ${emote}' = 1

Tracking emote access I'm not too sure about. Maybe writing a record when a subscription activates could work?

If it's a gift sub, track the expiry date. If it's a recurring subscription, check the renewal date. Each sub registered or renewed does a refresh on existing subscription records to validate whether dates are still correct, or if they need to be adjusted / removed.
Potentially this could also validate whether learned emotes are still available in the channel that owns them.

Probably not smart to check subscription status before each message to avoid flooding network requests.

Another question or maybe configuration would be to allow pulling from all available Twitch channel emotes instead of only "learned" emotes. Which could increase the visibility of under-utilised emotes in a channel.

I don't think BTTV / 7TV / FFZ should be considered just yet. As those extensions are third party in this context it would create a lot of maintenance alongside it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions