|
@@ -66,6 +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 new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; |
|
|
internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; |
|
|
/// <inheritdoc /> |
|
|
/// <inheritdoc /> |
|
@@ -128,6 +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; |
|
|
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>(); |
|
@@ -1365,13 +1367,19 @@ namespace Discord.WebSocket |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var cacheableList = ImmutableArray<Cacheable<IMessage, ulong>>.Empty; |
|
|
foreach (ulong id in data.Ids) |
|
|
foreach (ulong id in data.Ids) |
|
|
{ |
|
|
{ |
|
|
var msg = SocketChannelHelper.RemoveMessage(channel, this, id); |
|
|
var msg = SocketChannelHelper.RemoveMessage(channel, this, id); |
|
|
bool isCached = msg != null; |
|
|
bool isCached = msg != null; |
|
|
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)); |
|
|
await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheable, channel).ConfigureAwait(false); |
|
|
|
|
|
|
|
|
cacheableList = cacheableList.Add(cacheable); |
|
|
|
|
|
|
|
|
|
|
|
if (!UseMessagesBulkDeletedOnly) |
|
|
|
|
|
await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheable, channel).ConfigureAwait(false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
await TimedInvokeAsync(_messagesBulkDeletedEvent, nameof(MessagesBulkDeleted), cacheableList, channel).ConfigureAwait(false); |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|