using Discord.Rest;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;
using Model = Discord.API.Message;
namespace Discord.WebSocket
{
///
/// Represents a WebSocket-based message.
///
public abstract class SocketMessage : SocketEntity, IMessage
{
private long _timestampTicks;
private readonly List _reactions = new List();
///
/// Gets the author of this message.
///
///
/// A WebSocket-based user object.
///
public SocketUser Author { get; }
///
/// Gets the source channel of the message.
///
///
/// A WebSocket-based message channel.
///
public ISocketMessageChannel Channel { get; }
///
public MessageSource Source { get; }
///
public string Content { get; private set; }
///
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
///
public virtual bool IsTTS => false;
///
public virtual bool IsPinned => false;
///
public virtual bool IsSuppressed => false;
///
public virtual DateTimeOffset? EditedTimestamp => null;
///
public MessageActivity Activity { get; private set; }
///
public MessageApplication Application { get; private set; }
///
public MessageReference Reference { get; private set; }
///
/// Returns all attachments included in this message.
///
///
/// Collection of attachments.
///
public virtual IReadOnlyCollection Attachments => ImmutableArray.Create();
///
/// Returns all embeds included in this message.
///
///
/// Collection of embed objects.
///
public virtual IReadOnlyCollection