Greeting without global Greeting


#1

Sorry if this feature is already here but it is possible to have special users greeted but not all?
So i can set a list oder group to be greetet? Would be nice for example if there is a message in chat when a moderator of your channel joins the chat oder it can be set to subscribers to show the chat that he went in and is supporting you? Just as examples.

Best regards


#2

Users can set a personalised greeting for themselves, using !greeting enable [Your message here], and !greeting disable to remove it. This doesn’t let you set it for them, but will let them set it themselves. You can set permissions and a cost on this as you like.

I’ve aliased it and set it to subscriber only. If you want to manually set them yourself, then at the moment you’d need to edit the database table directly.

I think that this is something being looked at for a revamp, allowing us to set other people’s messages ourselves, or at least to see a list of what all the custom welcomes are, but that’s not currently a thing.


#3

Thanks for the reply. But personal greetings means that global greeting hast do be actived doesn’t it?
So it would greet every person coming in the chat which most of the users do not want and leave.


#4

I didn’t think it needed to, though I might be wrong. Might have to wait for a dev to comment. I think they separated the two previously, so that wasn’t a requirement, but I can’t remember.


#5

iirc the greeting system on here has a toggle for each user that allows them to use none, the global default, or a custom one. By default it shouldn’t greet a user.


#6

So, here is the deal with greetings.

We have it on a choke chain to delay greetings in a queue to not cause issues with chat rate limits. What does this mean? It means that to not clog normal messages and timeout operations, a queue is created that will produce a greeting every 15 seconds. So, if you have 30 subscribers and moderators join, it will take 7.5 minutes for them to be announced. Lets go to a large channel where a person has hundreds of subscribers and, the math gets a lot worth. Especially on busy channels.

Additionally, due to Twitch the following can happen as well with greetings:

  1. They can be up to 5 minutes late after they join the channel due to the way that the JOIN event is sent or
  2. They may never get greeted because Twitch sometimes doesn’t send the JOIN event.

We do not have it auto-greet people because there was input from users saying, “I don’t like wanting to lurk and being called out.” If people want to be greeted, they can enable the feature for themselves. If they don’t want to be greeted, then they don’t enable it.

If you want to force certain people to be greeted, you can force a line into the database on their behalf. You could also add a subcommand to greeting to do this, something like this, but I didn’t test it, it just seems correct:

            if (action.equalsIgnoreCase('forceon')) {
                if (args[1] === undefined) {
                    $.say('Specify a victim to force a greeting onto.');
                    return;
                }
                var victim = args[1];
                message = args.splice(2).join(' ');

                if (!message) {
                    $.say($.whisperPrefix(sender) + $.lang.get('greetingsystem.generalusage.other'));
                    return;
                }

                if (message.equalsIgnoreCase('default')) {
                    $.inidb.set('greeting', victim, defaultJoinMessage);
                } else {
                    $.inidb.set('greeting', victim, message);
                }
                $.say($.whisperPrefix(sender) + 'Greeting for ' + victim + ' forced to: ' + $.inidb.get('greeting', victim));
            }     
  
            if (action.equalsIgnoreCase('forceoff')) {
                if (args[1] === undefined) {
                    $.say('Specify a victim to remove a greeting from.');
                    return;
                }
                var victim = args[1];
                $.inidb.del('greeting', victim);
                $.say('Removed greeting from ' + victim);
            }
  

Later in the code…

        $.registerChatSubcommand('greeting', 'forceon', 1);
        $.registerChatSubcommand('greeting', 'forceoff', 1);

#7

Thank you for the fast replay and a possible solution for this.


#8

I still have my greetings system that batches users when multiple join at the same time. It’s basically done, I just haven’t had time to test it or add it to the panel.

If you want to play around with it, feel free to do so.
greetingsSystem.js (7.2 KB)