feature: adjust the ratelimit for reactions (#1108)
* feature: adjust the ratelimit for reactions allows users to add reactions quickly * fix: don't force DEBUG_LIMITS * fix: undefined behavior using DateTime on intel architerctures it's fine * fix: ensure add/del rxn ends up in the same bucket
This commit is contained in:
@@ -580,6 +580,7 @@ namespace Discord.API
|
||||
var ids = new BucketIds(channelId: channelId);
|
||||
return await SendJsonAsync<Message>("PATCH", () => $"channels/{channelId}/messages/{messageId}", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public async Task AddReactionAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null)
|
||||
{
|
||||
Preconditions.NotEqual(channelId, 0, nameof(channelId));
|
||||
@@ -587,10 +588,13 @@ namespace Discord.API
|
||||
Preconditions.NotNullOrWhitespace(emoji, nameof(emoji));
|
||||
|
||||
options = RequestOptions.CreateOrClone(options);
|
||||
options.IsReactionBucket = true;
|
||||
|
||||
var ids = new BucketIds(channelId: channelId);
|
||||
|
||||
await SendAsync("PUT", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/@me", ids, options: options).ConfigureAwait(false);
|
||||
// @me is non-const to fool the ratelimiter, otherwise it will put add/remove in separate buckets
|
||||
var me = "@me";
|
||||
await SendAsync("PUT", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{me}", ids, options: options).ConfigureAwait(false);
|
||||
}
|
||||
public async Task RemoveReactionAsync(ulong channelId, ulong messageId, ulong userId, string emoji, RequestOptions options = null)
|
||||
{
|
||||
@@ -599,10 +603,12 @@ namespace Discord.API
|
||||
Preconditions.NotNullOrWhitespace(emoji, nameof(emoji));
|
||||
|
||||
options = RequestOptions.CreateOrClone(options);
|
||||
options.IsReactionBucket = true;
|
||||
|
||||
var ids = new BucketIds(channelId: channelId);
|
||||
|
||||
await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{userId}", ids, options: options).ConfigureAwait(false);
|
||||
var user = CurrentUserId.HasValue ? (userId == CurrentUserId.Value ? "@me" : userId.ToString()) : userId.ToString();
|
||||
await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{user}", ids, options: options).ConfigureAwait(false);
|
||||
}
|
||||
public async Task RemoveAllReactionsAsync(ulong channelId, ulong messageId, RequestOptions options = null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user