| @@ -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(); | ||||
| } | } | ||||