lint: clean up bulk delete PR
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user