@@ -50,7 +50,7 @@ namespace Discord.Rest
/// <inheritdoc/>
public string Value { get; }
internal RestMessageComponentData(Model model, BaseDiscordClient discord)
internal RestMessageComponentData(Model model, BaseDiscordClient discord, IGuild guild )
{
CustomId = model.CustomId;
Type = model.ComponentType;
@@ -60,14 +60,23 @@ namespace Discord.Rest
if (model.Resolved.IsSpecified)
{
Users = model.Resolved.Value.Users.IsSpecified
? model.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray()
? model.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value))
.Concat(model.Resolved.Value.Members.IsSpecified
? model.Resolved.Value.Members.Value.Select(member => RestGuildUser.Create(discord, guild, member.Value))
: Array.Empty<RestGuildUser>()).ToImmutableArray()
: null;
}
Channels = model.Resolved.Value.Channels.IsSpecified
? model.Resolved.Value.Channels.Value.Select(channel => RestChannel.Create(discord, channel.Value)).ToImmutableArray()
: null;
Roles = model.Resolved.Value.Roles.IsSpecified
? model.Resolved.Value.Roles.Value.Select(role => RestRole.Create(discord, guild, role.Value)).ToImmutableArray()
: null;
}
}
internal RestMessageComponentData(IMessageComponent component, BaseDiscordClient discord)
internal RestMessageComponentData(IMessageComponent component, BaseDiscordClient discord, IGuild guild )
{
CustomId = component.CustomId;
Type = component.Type;
@@ -78,10 +87,22 @@ namespace Discord.Rest
if (component is API.SelectMenuComponent select)
{
Values = select.Values.GetValueOrDefault(null);
if (select.Resolved.IsSpecified)
{
Users = select.Resolved.Value.Users.IsSpecified
? select.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray()
? select.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value))
.Concat(select.Resolved.Value.Members.IsSpecified
? select.Resolved.Value.Members.Value.Select(member => RestGuildUser.Create(discord, guild, member.Value))
: Array.Empty<RestGuildUser>()).ToImmutableArray()
: null;
Channels = select.Resolved.Value.Channels.IsSpecified
? select.Resolved.Value.Channels.Value.Select(channel => RestChannel.Create(discord, channel.Value)).ToImmutableArray()
: null;
Roles = select.Resolved.Value.Roles.IsSpecified
? select.Resolved.Value.Roles.Value.Select(role => RestRole.Create(discord, guild, role.Value)).ToImmutableArray()
: null;
}
}