Refactor, rearrange, reimplement reactions; receive over gateway
This commit is contained in:
@@ -1304,6 +1304,54 @@ namespace Discord.WebSocket
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "MESSAGE_REACTION_ADD":
|
||||
{
|
||||
await _gatewayLogger.DebugAsync("Received Disbatch (MESSAGE_REACTION_ADD)").ConfigureAwait(false);
|
||||
|
||||
var data = (payload as JToken).ToObject<GatewayReaction>(_serializer);
|
||||
var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel;
|
||||
if (channel != null)
|
||||
{
|
||||
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
|
||||
SocketReaction reaction = new SocketReaction(data);
|
||||
if (cachedMsg != null)
|
||||
{
|
||||
cachedMsg.AddReaction(reaction);
|
||||
await _reactionAddedEvent.InvokeAsync(data.MessageId, cachedMsg, reaction).ConfigureAwait(false);
|
||||
}
|
||||
await _reactionAddedEvent.InvokeAsync(data.MessageId, Optional.Create<SocketUserMessage>(), reaction).ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
await _gatewayLogger.WarningAsync("MESSAGE_REACTION_ADD referenced an unknown channel.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "MESSAGE_REACTION_REMOVE":
|
||||
{
|
||||
await _gatewayLogger.DebugAsync("Received Disbatch (MESSAGE_REACTION_REMOVE)").ConfigureAwait(false);
|
||||
|
||||
var data = (payload as JToken).ToObject<GatewayReaction>(_serializer);
|
||||
var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel;
|
||||
if (channel != null)
|
||||
{
|
||||
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
|
||||
SocketReaction reaction = new SocketReaction(data);
|
||||
if (cachedMsg != null)
|
||||
{
|
||||
cachedMsg.RemoveReaction(reaction);
|
||||
await _reactionRemovedEvent.InvokeAsync(data.MessageId, cachedMsg, reaction).ConfigureAwait(false);
|
||||
}
|
||||
await _reactionRemovedEvent.InvokeAsync(data.MessageId, Optional.Create<SocketUserMessage>(), reaction).ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
await _gatewayLogger.WarningAsync("MESSAGE_REACTION_REMOVE referenced an unknown channel.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "MESSAGE_DELETE_BULK":
|
||||
{
|
||||
await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE_BULK)").ConfigureAwait(false);
|
||||
|
||||
Reference in New Issue
Block a user