diff --git a/src/Discord.Net.Core/Utils/Cacheable.cs b/src/Discord.Net.Core/Utils/Cacheable.cs
index 48af580d9..da6c660b8 100644
--- a/src/Discord.Net.Core/Utils/Cacheable.cs
+++ b/src/Discord.Net.Core/Utils/Cacheable.cs
@@ -41,6 +41,8 @@ namespace Discord
/// Downloads this entity to cache.
///
/// An awaitable Task containing the downloaded entity.
+ /// Thrown when used from a user account.
+ /// Thrown when the message is deleted.
public async Task DownloadAsync()
{
return await DownloadFunc();
@@ -50,6 +52,8 @@ namespace Discord
/// Returns the cached entity if it exists; otherwise downloads it.
///
/// An awaitable Task containing a cached or downloaded entity.
+ /// Thrown when used from a user account.
+ /// Thrown when the message is deleted and is not in cache.
public async Task GetOrDownloadAsync() => HasValue ? Value : await DownloadAsync();
}
}
\ No newline at end of file
diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs
index f06bad926..874062c56 100644
--- a/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs
+++ b/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Discord.Net;
namespace Discord.WebSocket
{
@@ -33,36 +34,36 @@ namespace Discord.WebSocket
remove { _messageReceivedEvent.Remove(value); }
}
private readonly AsyncEvent> _messageReceivedEvent = new AsyncEvent>();
- public event Func, ISocketMessageChannel, Task> MessageDeleted
+ public event Func, ISocketMessageChannel, Task> MessageDeleted
{
add { _messageDeletedEvent.Add(value); }
remove { _messageDeletedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, Task>> _messageDeletedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
- public event Func, SocketMessage, ISocketMessageChannel, Task> MessageUpdated
+ private readonly AsyncEvent, ISocketMessageChannel, Task>> _messageDeletedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
+ public event Func, SocketMessage, ISocketMessageChannel, Task> MessageUpdated
{
add { _messageUpdatedEvent.Add(value); }
remove { _messageUpdatedEvent.Remove(value); }
}
- private readonly AsyncEvent, SocketMessage, ISocketMessageChannel, Task>> _messageUpdatedEvent = new AsyncEvent, SocketMessage, ISocketMessageChannel, Task>>();
- public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionAdded
+ private readonly AsyncEvent, SocketMessage, ISocketMessageChannel, Task>> _messageUpdatedEvent = new AsyncEvent, SocketMessage, ISocketMessageChannel, Task>>();
+ public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionAdded
{
add { _reactionAddedEvent.Add(value); }
remove { _reactionAddedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
- public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionRemoved
+ private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
+ public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionRemoved
{
add { _reactionRemovedEvent.Add(value); }
remove { _reactionRemovedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
- public event Func, ISocketMessageChannel, Task> ReactionsCleared
+ private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
+ public event Func, ISocketMessageChannel, Task> ReactionsCleared
{
add { _reactionsClearedEvent.Add(value); }
remove { _reactionsClearedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, Task>> _reactionsClearedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
+ private readonly AsyncEvent, ISocketMessageChannel, Task>> _reactionsClearedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
//Roles
public event Func RoleCreated
diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs
index 03edeb7c0..313e661f3 100644
--- a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs
+++ b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs
@@ -59,36 +59,36 @@ namespace Discord.WebSocket
remove { _messageReceivedEvent.Remove(value); }
}
private readonly AsyncEvent> _messageReceivedEvent = new AsyncEvent>();
- public event Func, ISocketMessageChannel, Task> MessageDeleted
+ public event Func, ISocketMessageChannel, Task> MessageDeleted
{
add { _messageDeletedEvent.Add(value); }
remove { _messageDeletedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, Task>> _messageDeletedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
- public event Func, SocketMessage, ISocketMessageChannel, Task> MessageUpdated
+ private readonly AsyncEvent, ISocketMessageChannel, Task>> _messageDeletedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
+ public event Func, SocketMessage, ISocketMessageChannel, Task> MessageUpdated
{
add { _messageUpdatedEvent.Add(value); }
remove { _messageUpdatedEvent.Remove(value); }
}
- private readonly AsyncEvent, SocketMessage, ISocketMessageChannel, Task>> _messageUpdatedEvent = new AsyncEvent, SocketMessage, ISocketMessageChannel, Task>>();
- public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionAdded
+ private readonly AsyncEvent, SocketMessage, ISocketMessageChannel, Task>> _messageUpdatedEvent = new AsyncEvent, SocketMessage, ISocketMessageChannel, Task>>();
+ public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionAdded
{
add { _reactionAddedEvent.Add(value); }
remove { _reactionAddedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
- public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionRemoved
+ private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
+ public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionRemoved
{
add { _reactionRemovedEvent.Add(value); }
remove { _reactionRemovedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
- public event Func, ISocketMessageChannel, Task> ReactionsCleared
+ private readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>();
+ public event Func, ISocketMessageChannel, Task> ReactionsCleared
{
add { _reactionsClearedEvent.Add(value); }
remove { _reactionsClearedEvent.Remove(value); }
}
- private readonly AsyncEvent, ISocketMessageChannel, Task>> _reactionsClearedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
+ private readonly AsyncEvent, ISocketMessageChannel, Task>> _reactionsClearedEvent = new AsyncEvent, ISocketMessageChannel, Task>>();
//Roles
public event Func RoleCreated
diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs
index a40ec04e8..60ebeb535 100644
--- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs
+++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs
@@ -1292,7 +1292,7 @@ namespace Discord.WebSocket
after = SocketMessage.Create(this, State, author, channel, data);
}
- var cacheableBefore = new Cacheable(before, data.Id, async () => await channel.GetMessageAsync(data.Id) as SocketMessage);
+ var cacheableBefore = new Cacheable(before, data.Id, async () => await channel.GetMessageAsync(data.Id));
await _messageUpdatedEvent.InvokeAsync(cacheableBefore, after, channel).ConfigureAwait(false);
}
@@ -1318,7 +1318,7 @@ namespace Discord.WebSocket
}
var msg = SocketChannelHelper.RemoveMessage(channel, this, data.Id);
- var cacheable = new Cacheable(msg, data.Id, async () => await channel.GetMessageAsync(data.Id) as SocketUserMessage);
+ var cacheable = new Cacheable(msg, data.Id, async () => await channel.GetMessageAsync(data.Id));
await _messageDeletedEvent.InvokeAsync(cacheable, channel).ConfigureAwait(false);
}
@@ -1340,7 +1340,7 @@ namespace Discord.WebSocket
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly);
SocketReaction reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user));
- var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as SocketUserMessage);
+ var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage);
cachedMsg?.AddReaction(reaction);
@@ -1364,7 +1364,7 @@ namespace Discord.WebSocket
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly);
SocketReaction reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user));
- var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as SocketUserMessage);
+ var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage);
cachedMsg?.RemoveReaction(reaction);
@@ -1386,7 +1386,7 @@ namespace Discord.WebSocket
if (channel != null)
{
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
- var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as SocketUserMessage);
+ var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage);
cachedMsg?.ClearReactions();
@@ -1416,7 +1416,7 @@ namespace Discord.WebSocket
foreach (var id in data.Ids)
{
var msg = SocketChannelHelper.RemoveMessage(channel, this, id);
- var cacheable = new Cacheable(msg, id, async () => await channel.GetMessageAsync(id) as SocketMessage);
+ var cacheable = new Cacheable(msg, id, async () => await channel.GetMessageAsync(id));
await _messageDeletedEvent.InvokeAsync(cacheable, channel).ConfigureAwait(false);
}
}