I’m trying to get a detailled view of the rate limiting system for whispers through IRCv3 on group chat servers.
So far, my experiments seem to indicate:
there is a burst limit at around ~3 whispers per second. Exceeding that sends a NOTICE whisper_limit_per_sec and drop the additional whispers.
there is burst limit of ~100 whispers per minute. Exceeding that sends a NOTICE whisper_limit_per_min and drops the additional whispers.
whisper_limit_per_sec is sometime received even when sending as low as 1 whisper per second. I guess this is due to some congestion that make multiple messages arrive together (network congestion?) or be processed together on the backend (GC?).
there doesn’t seem to be a temporary 8 hour IP ban when exceeding the limits (but I haven’t tried to pushed them that far…).
both limits seems to be enforced “per account” and NOT “per connection”, unlike the PRIVMSG limits on the regular TMI servers. Thus, there is no way to exceed the limits by opening multiple connections.
The last point is quite problematic for me, because it completely rules out using the whisper system for any bot feature on even medium-sized channels. I wonder if this restriction will be lift once the whisper system is moved to the new protocol (websockets?).
@brildum, did I get everything right? Any update on the limitations or the improvements further down the line on this feature? Much appreciated!
Those rate limits are correct (but are subject to change). We have planned changes for the whispers product that may have significant impact on 3rd party apps, which is why we have obscured and not made it as friendly as possible to developers (develop at your own risk).
We’d be happy to take your feedback so that in future iterations we have your use case in mind. Let us know what kind of things you’d develop with a perfect whisper system.
My use-case is a bot that allow you to play a one-on-one RPG-like game against other watchers in the same channel as you, or against bot-controlled monsters. The battle system is real-time, which means that for an actively fighting player, I’m looking at ~10 whisp per minute from the bot to this player. This means that even if I manage to dodge the whisper_limit_per_sec limit by queuing my whisps smartly, I won’t be able to support more than ~10 simultaneous players under the current whisper_limit_per_min limitations. This is way too low for someone operating a studio called LittleBigMMO
Ideally, I’d like to be able to enroll in a partner developer program that would lift all rate limitations on both the regular chat and whisper system (and maybe the web API ?), but would be subject to manual approval and then periodic scrutiny to avoid abuse. I think such system would be very beneficial to nurture the growing ecosystem around Twitch features, while avoiding to resort to ugly hacks such as opening thousands of TCP connections in order to support bot on many channels or huge channels. I remember there is already some manual validation for some features (I had to sign a agreement for integrating the streaming SDK in my game Gangs of Space for example…).
Not-so-ideally I could live with the whisper rate limiting being enforced “by connection” instead of “by account”, like it is currently done in the regular chat.
You’re probably better off buying a domain name and a very basic server, and linking the url, or a plugin, or other. Twitch chat isn’t intended to have full muds played via whispers and they have already stated they will not lift limits for anyone at this time.
@Erhune
I like your idea. When I was developing bots for IRC, the server also had a partner developer program, which had increased limits for privmsg/notice etc.
I personally think that it would help Twitch, if developers are able to program games without any spam for twitch. Yes, the chat is mainly for communication between streamer and viewer, but there are also some bots already which have games included like a heist.
Apart from games, whispers could also be used to improve the moderation of a channel.
For example can a moderator subscribe to notifications so he will get a whisper why a user got timed out/banned in a channel and for the duration.
My bot is for example tracking the duration a user is in a channel. Here I can use whispers, so a user can ask for his total duration and the answer will also be a whisper, which would result in less messages in the chat.
In general you can use whispers to communicate with special users more directly, which will reduce the amount of messages in the normal chat.
English is not my first language. Please forgive me for mistakes.