[Feature] Add MessageCallData (#2934)
This commit is contained in:
@@ -226,6 +226,11 @@ namespace Discord
|
||||
/// </returns>
|
||||
MessageRoleSubscriptionData RoleSubscriptionData { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the call data of the message.
|
||||
/// </summary>
|
||||
MessageCallData? CallData { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Adds a reaction to this message.
|
||||
/// </summary>
|
||||
|
||||
25
src/Discord.Net.Core/Entities/Messages/MessageCallData.cs
Normal file
25
src/Discord.Net.Core/Entities/Messages/MessageCallData.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
|
||||
namespace Discord;
|
||||
|
||||
/// <summary>
|
||||
/// Represents the call data of a message.
|
||||
/// </summary>
|
||||
public readonly struct MessageCallData
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the participants of the call.
|
||||
/// </summary>
|
||||
public readonly ulong[] Participants;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the timestamp when the call ended. This is <see langword="null"/> if the call is still ongoing.
|
||||
/// </summary>
|
||||
public readonly DateTimeOffset? EndedTimestamp;
|
||||
|
||||
internal MessageCallData(ulong[] participants, DateTimeOffset? endedTimestamp)
|
||||
{
|
||||
Participants = participants;
|
||||
EndedTimestamp = endedTimestamp;
|
||||
}
|
||||
}
|
||||
@@ -104,4 +104,7 @@ internal class Message
|
||||
|
||||
[JsonProperty("poll")]
|
||||
public Optional<Poll> Poll { get; set; }
|
||||
|
||||
[JsonProperty("call")]
|
||||
public Optional<MessageCallData> Call { get; set; }
|
||||
}
|
||||
|
||||
13
src/Discord.Net.Rest/API/Common/MessageCallData.cs
Normal file
13
src/Discord.Net.Rest/API/Common/MessageCallData.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
|
||||
namespace Discord.API;
|
||||
|
||||
internal class MessageCallData
|
||||
{
|
||||
[JsonProperty("ended_timestamp")]
|
||||
public Optional<DateTimeOffset> EndedTimestamp { get; set; }
|
||||
|
||||
[JsonProperty("participants")]
|
||||
public ulong[] Participants { get; set; }
|
||||
}
|
||||
@@ -93,6 +93,9 @@ namespace Discord.Rest
|
||||
/// <inheritdoc />
|
||||
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public MessageCallData? CallData { get; private set; }
|
||||
|
||||
/// <inheritdoc cref="IMessage.Components"/>
|
||||
public IReadOnlyCollection<ActionRowComponent> Components { get; private set; }
|
||||
/// <summary>
|
||||
@@ -272,6 +275,9 @@ namespace Discord.Rest
|
||||
|
||||
if (model.Thread.IsSpecified)
|
||||
Thread = RestThreadChannel.Create(Discord, new RestGuild(Discord, model.Thread.Value.GuildId.Value), model.Thread.Value);
|
||||
|
||||
if (model.Call.IsSpecified)
|
||||
CallData = new MessageCallData(model.Call.Value.Participants, model.Call.Value.EndedTimestamp.ToNullable());
|
||||
}
|
||||
/// <inheritdoc />
|
||||
public async Task UpdateAsync(RequestOptions options = null)
|
||||
|
||||
@@ -87,6 +87,9 @@ namespace Discord.WebSocket
|
||||
/// <inheritdoc />
|
||||
IThreadChannel IMessage.Thread => Thread;
|
||||
|
||||
/// <inheritdoc />
|
||||
public MessageCallData? CallData { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Returns all attachments included in this message.
|
||||
/// </summary>
|
||||
@@ -299,6 +302,9 @@ namespace Discord.WebSocket
|
||||
SocketGuild guild = (Channel as SocketGuildChannel)?.Guild;
|
||||
Thread = guild?.AddOrUpdateChannel(state, model.Thread.Value) as SocketThreadChannel;
|
||||
}
|
||||
|
||||
if (model.Call.IsSpecified)
|
||||
CallData = new MessageCallData(model.Call.Value.Participants, model.Call.Value.EndedTimestamp.ToNullable());
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
Reference in New Issue
Block a user