RateLimitAttribute for interactions in Discord.Net using their preconditions.(count is now 1)(count is now 2)(30 seconds later)(30 seconds later)(any time later)(count is now 1)/cd command shows the cooldowns for each command per user.TimeSpan cannot be used directly. Instead, people use parameters specifying periods in seconds. Alternatively, a converter could be used with double period and enum TimeMeasure.IMemoryCache's AbsoluteExpiration simplifies caching implementation because it removes the rate limits right when they expire, but the keys there are strings and not generic types. Using System.Threading.RateLimiting, it’s hard to display the exact remaining time until the limit expires.