Browse Source

changes1

pull/2507/head
Misha133 2 years ago
parent
commit
7f773d957c
5 changed files with 36 additions and 11 deletions
  1. +1
    -1
      src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs
  2. +28
    -4
      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
  5. +4
    -3
      src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.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);
Data = new RestMessageComponentData(dataModel, client);
} }


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)


+ 28
- 4
src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs View File

@@ -1,8 +1,12 @@
using Discord.API;

using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;

using Model = Discord.API.MessageComponentInteractionData; using Model = Discord.API.MessageComponentInteractionData;


namespace Discord.Rest namespace Discord.Rest
@@ -10,7 +14,7 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Represents data for a <see cref="RestMessageComponent"/>. /// Represents data for a <see cref="RestMessageComponent"/>.
/// </summary> /// </summary>
public class RestMessageComponentData : IComponentInteractionData, IDiscordInteractionData
public class RestMessageComponentData : IComponentInteractionData
{ {
/// <inheritdoc/> /// <inheritdoc/>
public string CustomId { get; } public string CustomId { get; }
@@ -23,8 +27,10 @@ namespace Discord.Rest


/// <inheritdoc cref="IComponentInteractionData.Channels"/>/> /// <inheritdoc cref="IComponentInteractionData.Channels"/>/>
public IReadOnlyCollection<RestChannel> Channels { get; } public IReadOnlyCollection<RestChannel> Channels { get; }

/// <inheritdoc cref="IComponentInteractionData.Users"/>/> /// <inheritdoc cref="IComponentInteractionData.Users"/>/>
public IReadOnlyCollection<RestUser> Users { get; } public IReadOnlyCollection<RestUser> Users { get; }

/// <inheritdoc cref="IComponentInteractionData.Roles"/>/> /// <inheritdoc cref="IComponentInteractionData.Roles"/>/>
public IReadOnlyCollection<RestRole> Roles { get; } public IReadOnlyCollection<RestRole> Roles { get; }


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


internal RestMessageComponentData(Model model)
internal RestMessageComponentData(Model model, BaseDiscordClient discord)
{ {
CustomId = model.CustomId; CustomId = model.CustomId;
Type = model.ComponentType; Type = model.ComponentType;
Values = model.Values.GetValueOrDefault(); Values = model.Values.GetValueOrDefault();
Value = model.Value.GetValueOrDefault();

if (model.Resolved.IsSpecified)
{
Users = model.Resolved.Value.Users.IsSpecified
? model.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray()
: null;
}


} }


internal RestMessageComponentData(IMessageComponent component)
internal RestMessageComponentData(IMessageComponent component, BaseDiscordClient discord)
{ {
CustomId = component.CustomId; CustomId = component.CustomId;
Type = component.Type; Type = component.Type;
@@ -60,7 +76,15 @@ namespace Discord.Rest
Value = textInput.Value.Value; Value = textInput.Value.Value;


if (component is API.SelectMenuComponent select) if (component is API.SelectMenuComponent select)
Values = select.Values.Value;
{
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()
: 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);
Data = new RestModalData(dataModel, client);
} }


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)
internal RestModalData(Model model, BaseDiscordClient discord)
{ {
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))
.Select(x => new RestMessageComponentData(x, discord))
.ToArray(); .ToArray();
} }
} }


+ 4
- 3
src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs View File

@@ -48,9 +48,10 @@ namespace Discord.WebSocket
? (component as API.TextInputComponent).Value.Value ? (component as API.TextInputComponent).Value.Value
: null; : null;


Values = component.Type.IsSelectType()
? (component as API.SelectMenuComponent).Values.Value
: null;
if (component is API.SelectMenuComponent select)
{
Values = select.Values.GetValueOrDefault(null);
}
} }
} }
} }

Loading…
Cancel
Save