Browse Source

maybe working rest part?

pull/2507/head
Misha133 2 years ago
parent
commit
ac997a9d8c
4 changed files with 30 additions and 9 deletions
  1. +1
    -1
      src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs
  2. +26
    -5
      src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs
  3. +1
    -1
      src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs
  4. +2
    -2
      src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs

+ 1
- 1
src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs View File

@@ -34,7 +34,7 @@ namespace Discord.Rest
? (DataModel)model.Data.Value ? (DataModel)model.Data.Value
: null; : null;


Data = new RestMessageComponentData(dataModel, client);
Data = new RestMessageComponentData(dataModel, client, Guild);
} }


internal new static async Task<RestMessageComponent> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) internal new static async Task<RestMessageComponent> CreateAsync(DiscordRestClient client, Model model, bool doApiCall)


+ 26
- 5
src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs View File

@@ -50,7 +50,7 @@ namespace Discord.Rest
/// <inheritdoc/> /// <inheritdoc/>
public string Value { get; } public string Value { get; }


internal RestMessageComponentData(Model model, BaseDiscordClient discord)
internal RestMessageComponentData(Model model, BaseDiscordClient discord, IGuild guild)
{ {
CustomId = model.CustomId; CustomId = model.CustomId;
Type = model.ComponentType; Type = model.ComponentType;
@@ -60,14 +60,23 @@ namespace Discord.Rest
if (model.Resolved.IsSpecified) if (model.Resolved.IsSpecified)
{ {
Users = model.Resolved.Value.Users.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; : 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; CustomId = component.CustomId;
Type = component.Type; Type = component.Type;
@@ -78,10 +87,22 @@ namespace Discord.Rest
if (component is API.SelectMenuComponent select) if (component is API.SelectMenuComponent select)
{ {
Values = select.Values.GetValueOrDefault(null); Values = select.Values.GetValueOrDefault(null);

if (select.Resolved.IsSpecified) if (select.Resolved.IsSpecified)
{ {
Users = select.Resolved.Value.Users.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; : null;
} }
} }


+ 1
- 1
src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs View File

@@ -23,7 +23,7 @@ namespace Discord.Rest
? (DataModel)model.Data.Value ? (DataModel)model.Data.Value
: null; : null;


Data = new RestModalData(dataModel, client);
Data = new RestModalData(dataModel, client, Guild);
} }


internal new static async Task<RestModal> CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall) internal new static async Task<RestModal> CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall)


+ 2
- 2
src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs View File

@@ -22,12 +22,12 @@ namespace Discord.Rest


IReadOnlyCollection<IComponentInteractionData> IModalInteractionData.Components => Components; IReadOnlyCollection<IComponentInteractionData> IModalInteractionData.Components => Components;


internal RestModalData(Model model, BaseDiscordClient discord)
internal RestModalData(Model model, BaseDiscordClient discord, IGuild guild)
{ {
CustomId = model.CustomId; CustomId = model.CustomId;
Components = model.Components Components = model.Components
.SelectMany(x => x.Components) .SelectMany(x => x.Components)
.Select(x => new RestMessageComponentData(x, discord))
.Select(x => new RestMessageComponentData(x, discord, guild))
.ToArray(); .ToArray();
} }
} }


Loading…
Cancel
Save