private void AddOrUpdateRateLimit(ulong messageId, ulong userId) { _cache.AddOrUpdate(CacheId.StarboardUserMessageReactCountId(messageId, userId), new CacheItem(1, _userRatelimitTtl), (id, item) => { int amount = (int)item.Content; return(new CacheItem(amount + 1, _userRatelimitTtl)); // Let's refresh the TTL on update }); }
private bool UserRateLimitReached(ulong messageId, ulong userId) { var reactCount = _cache.Get <int>(CacheId.StarboardUserMessageReactCountId(messageId, userId)); if (reactCount.HasValue && reactCount.Some() >= 2) { return(true); } return(false); }