
com.github.twitch4j.chat.util.TwitchChatLimitHelper Maven / Gradle / Ivy
package com.github.twitch4j.chat.util;
import io.github.bucket4j.Bandwidth;
import io.github.bucket4j.Bucket;
import io.github.bucket4j.Bucket4j;
import io.github.bucket4j.local.LocalBucketBuilder;
import lombok.experimental.UtilityClass;
import java.time.Duration;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* Utility class for retrieving standard rate limits for {@link com.github.twitch4j.chat.TwitchChat}
*
* @see Official documentation
*/
@UtilityClass
public class TwitchChatLimitHelper {
/**
* Users sending commands or messages to channels in which they do not have Moderator or Operator status
*/
public final Bandwidth USER_MESSAGE_LIMIT = Bandwidth.simple(20, Duration.ofSeconds(30));
/**
* Users sending commands or messages to channels in which they have Moderator or Operator status
*/
public final Bandwidth MOD_MESSAGE_LIMIT = Bandwidth.simple(100, Duration.ofSeconds(30));
/**
* Known bots
*/
public final Bandwidth KNOWN_MESSAGE_LIMIT = Bandwidth.simple(50, Duration.ofSeconds(30));
/**
* Verified bots
*/
public final Bandwidth VERIFIED_MESSAGE_LIMIT = Bandwidth.simple(7500, Duration.ofSeconds(30));
/**
* Users (not bots)
*/
public final List USER_WHISPER_LIMIT = Collections.unmodifiableList(
Arrays.asList(
Bandwidth.simple(100, Duration.ofSeconds(60)),
Bandwidth.simple(3, Duration.ofSeconds(1))
)
);
/**
* Known bots
*/
public final List KNOWN_WHISPER_LIMIT = Collections.unmodifiableList(
Arrays.asList(
Bandwidth.simple(200, Duration.ofSeconds(60)),
Bandwidth.simple(10, Duration.ofSeconds(1))
)
);
/**
* Verified bots
*/
public final List VERIFIED_WHISPER_LIMIT = Collections.unmodifiableList(
Arrays.asList(
Bandwidth.simple(1200, Duration.ofSeconds(60)),
Bandwidth.simple(20, Duration.ofSeconds(1))
)
);
public Bucket createBucket(Bandwidth limit) {
return Bucket4j.builder().addLimit(limit).build();
}
public Bucket createBucket(Bandwidth... limits) {
LocalBucketBuilder builder = Bucket4j.builder();
for (Bandwidth limit : limits) {
builder.addLimit(limit);
}
return builder.build();
}
public Bucket createBucket(Iterable limits) {
LocalBucketBuilder builder = Bucket4j.builder();
for (Bandwidth limit : limits) {
builder.addLimit(limit);
}
return builder.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy