@@ -79,7 +79,12 @@ namespace Discord.Rest | |||||
: null; | : null; | ||||
Channels = model.Resolved.Value.Channels.IsSpecified | Channels = model.Resolved.Value.Channels.IsSpecified | ||||
? model.Resolved.Value.Channels.Value.Select(channel => RestChannel.Create(discord, channel.Value)).ToImmutableArray() | |||||
? model.Resolved.Value.Channels.Value.Select(channel => | |||||
{ | |||||
if (channel.Value.Type is ChannelType.DM) | |||||
return RestDMChannel.Create(discord, channel.Value); | |||||
return RestChannel.Create(discord, channel.Value); | |||||
}).ToImmutableArray() | |||||
: Array.Empty<RestChannel>(); | : Array.Empty<RestChannel>(); | ||||
Roles = model.Resolved.Value.Roles.IsSpecified | Roles = model.Resolved.Value.Roles.IsSpecified | ||||
@@ -35,7 +35,7 @@ namespace Discord.WebSocket | |||||
? (DataModel)model.Data.Value | ? (DataModel)model.Data.Value | ||||
: null; | : null; | ||||
Data = new SocketMessageComponentData(dataModel, client, client.State, client.Guilds.FirstOrDefault(x => x.Id == model.GuildId.GetValueOrDefault())); | |||||
Data = new SocketMessageComponentData(dataModel, client, client.State, client.Guilds.FirstOrDefault(x => x.Id == model.GuildId.GetValueOrDefault()), model.User.GetValueOrDefault()); | |||||
} | } | ||||
internal new static SocketMessageComponent Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel, SocketUser user) | internal new static SocketMessageComponent Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel, SocketUser user) | ||||
@@ -53,7 +53,7 @@ namespace Discord.WebSocket | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public string Value { get; } | public string Value { get; } | ||||
internal SocketMessageComponentData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild) | |||||
internal SocketMessageComponentData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild, API.User dmUser) | |||||
{ | { | ||||
CustomId = model.CustomId; | CustomId = model.CustomId; | ||||
Type = model.ComponentType; | Type = model.ComponentType; | ||||
@@ -79,7 +79,7 @@ namespace Discord.WebSocket | |||||
channel => | channel => | ||||
{ | { | ||||
if (channel.Value.Type is ChannelType.DM) | if (channel.Value.Type is ChannelType.DM) | ||||
return SocketDMChannel.Create(discord, state, channel.Value); | |||||
return SocketDMChannel.Create(discord, state, channel.Value.Id, dmUser); | |||||
return (SocketChannel)SocketGuildChannel.Create(guild, state, channel.Value); | return (SocketChannel)SocketGuildChannel.Create(guild, state, channel.Value); | ||||
}).ToImmutableArray() | }).ToImmutableArray() | ||||
: null; | : null; | ||||
@@ -90,7 +90,7 @@ namespace Discord.WebSocket | |||||
} | } | ||||
} | } | ||||
internal SocketMessageComponentData(IMessageComponent component, DiscordSocketClient discord, ClientState state, SocketGuild guild) | |||||
internal SocketMessageComponentData(IMessageComponent component, DiscordSocketClient discord, ClientState state, SocketGuild guild, API.User dmUser) | |||||
{ | { | ||||
CustomId = component.CustomId; | CustomId = component.CustomId; | ||||
Type = component.Type; | Type = component.Type; | ||||
@@ -122,7 +122,7 @@ namespace Discord.WebSocket | |||||
channel => | channel => | ||||
{ | { | ||||
if (channel.Value.Type is ChannelType.DM) | if (channel.Value.Type is ChannelType.DM) | ||||
return SocketDMChannel.Create(discord, state, channel.Value); | |||||
return SocketDMChannel.Create(discord, state, channel.Value.Id, dmUser); | |||||
return (SocketChannel)SocketGuildChannel.Create(guild, state, channel.Value); | return (SocketChannel)SocketGuildChannel.Create(guild, state, channel.Value); | ||||
}).ToImmutableArray() | }).ToImmutableArray() | ||||
: null; | : null; | ||||
@@ -28,7 +28,7 @@ namespace Discord.WebSocket | |||||
? (DataModel)model.Data.Value | ? (DataModel)model.Data.Value | ||||
: null; | : null; | ||||
Data = new SocketModalData(dataModel, client, client.State, client.Guilds.FirstOrDefault(x => x.Id == model.GuildId.GetValueOrDefault())); | |||||
Data = new SocketModalData(dataModel, client, client.State, client.State.GetGuild(model.GuildId.GetValueOrDefault()), model.User.GetValueOrDefault()); | |||||
} | } | ||||
internal new static SocketModal Create(DiscordSocketClient client, ModelBase model, ISocketMessageChannel channel, SocketUser user) | internal new static SocketModal Create(DiscordSocketClient client, ModelBase model, ISocketMessageChannel channel, SocketUser user) | ||||
@@ -22,12 +22,12 @@ namespace Discord.WebSocket | |||||
/// </summary> | /// </summary> | ||||
public IReadOnlyCollection<SocketMessageComponentData> Components { get; } | public IReadOnlyCollection<SocketMessageComponentData> Components { get; } | ||||
internal SocketModalData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild) | |||||
internal SocketModalData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild, API.User dmUser) | |||||
{ | { | ||||
CustomId = model.CustomId; | CustomId = model.CustomId; | ||||
Components = model.Components | Components = model.Components | ||||
.SelectMany(x => x.Components) | .SelectMany(x => x.Components) | ||||
.Select(x => new SocketMessageComponentData(x, discord, state, guild)) | |||||
.Select(x => new SocketMessageComponentData(x, discord, state, guild, dmUser)) | |||||
.ToArray(); | .ToArray(); | ||||
} | } | ||||