lint: clean up bulk delete PR

This commit is contained in:
Christopher Felegy
2019-05-17 19:08:20 -04:00
parent dec353e57f
commit 03e6401d19
2 changed files with 20 additions and 5 deletions

View File

@@ -66,7 +66,7 @@ namespace Discord.WebSocket
internal WebSocketProvider WebSocketProvider { get; private set; } internal WebSocketProvider WebSocketProvider { get; private set; }
internal bool AlwaysDownloadUsers { get; private set; } internal bool AlwaysDownloadUsers { get; private set; }
internal int? HandlerTimeout { get; private set; } internal int? HandlerTimeout { get; private set; }
internal bool UseMessagesBulkDeletedOnly { get; private set; } internal bool? ExclusiveBulkDelete { get; private set; }
internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient;
/// <inheritdoc /> /// <inheritdoc />
@@ -129,7 +129,7 @@ namespace Discord.WebSocket
WebSocketProvider = config.WebSocketProvider; WebSocketProvider = config.WebSocketProvider;
AlwaysDownloadUsers = config.AlwaysDownloadUsers; AlwaysDownloadUsers = config.AlwaysDownloadUsers;
HandlerTimeout = config.HandlerTimeout; HandlerTimeout = config.HandlerTimeout;
UseMessagesBulkDeletedOnly = config.UseMessagesBulkDeletedOnly; ExclusiveBulkDelete = config.ExclusiveBulkDelete;
State = new ClientState(0, 0); State = new ClientState(0, 0);
Rest = new DiscordSocketRestClient(config, ApiClient); Rest = new DiscordSocketRestClient(config, ApiClient);
_heartbeatTimes = new ConcurrentQueue<long>(); _heartbeatTimes = new ConcurrentQueue<long>();
@@ -1357,6 +1357,14 @@ namespace Discord.WebSocket
{ {
await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE_BULK)").ConfigureAwait(false); await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE_BULK)").ConfigureAwait(false);
if (!ExclusiveBulkDelete.HasValue)
{
await _gatewayLogger.WarningAsync("A bulk delete event has been received, but the event handling behavior has not been set. " +
"To supress this message, set the ExclusiveBulkDelete configuration property. " +
"This message will appear only once.");
ExclusiveBulkDelete = false;
}
var data = (payload as JToken).ToObject<MessageDeleteBulkEvent>(_serializer); var data = (payload as JToken).ToObject<MessageDeleteBulkEvent>(_serializer);
if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel)
{ {
@@ -1375,7 +1383,7 @@ namespace Discord.WebSocket
var cacheable = new Cacheable<IMessage, ulong>(msg, id, isCached, async () => await channel.GetMessageAsync(id).ConfigureAwait(false)); var cacheable = new Cacheable<IMessage, ulong>(msg, id, isCached, async () => await channel.GetMessageAsync(id).ConfigureAwait(false));
cacheableList = cacheableList.Add(cacheable); cacheableList = cacheableList.Add(cacheable);
if (!UseMessagesBulkDeletedOnly) if (!ExclusiveBulkDelete ?? false) // this shouldn't happen, but we'll play it safe anyways
await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheable, channel).ConfigureAwait(false); await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheable, channel).ConfigureAwait(false);
} }

View File

@@ -107,9 +107,16 @@ namespace Discord.WebSocket
public int? HandlerTimeout { get; set; } = 3000; public int? HandlerTimeout { get; set; } = 3000;
/// <summary> /// <summary>
/// Gets or sets whether or not <see cref="Discord.WebSocket.BaseSocketClient.MessageDeleted"/> is fired for each message on bulk delete. /// Gets or sets the behavior for <see cref="BaseSocketClient.MessageDeleted"/> on bulk deletes.
///
/// If true, the <see cref="BaseSocketClient.MessageDeleted"/> event will not be raised for bulk deletes, and
/// only the <see cref="BaseSocketClient.MessagesBulkDeleted"/> will be raised.
///
/// If false, both events will be raised.
///
/// If unset, both events will be raised, but a warning will be logged when hooking into the bulk delete event.
/// </summary> /// </summary>
public bool UseMessagesBulkDeletedOnly { get; set; } = false; public bool? ExclusiveBulkDelete { get; set; } = null;
/// <summary> /// <summary>
/// Initializes a default configuration. /// Initializes a default configuration.