@@ -14,6 +14,7 @@ namespace Discord | |||||
/// <summary> Sends a file to this text channel, with an optional caption. </summary> | /// <summary> Sends a file to this text channel, with an optional caption. </summary> | ||||
Task<IUserMessage> SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, RequestOptions options = null); | Task<IUserMessage> SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, RequestOptions options = null); | ||||
ulong? LastMessageId { get; } | |||||
/// <summary> Gets a message from this message channel with the given id, or null if not found. </summary> | /// <summary> Gets a message from this message channel with the given id, or null if not found. </summary> | ||||
Task<IMessage> GetMessageAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); | Task<IMessage> GetMessageAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); | ||||
/// <summary> Gets the last N messages from this message channel. </summary> | /// <summary> Gets the last N messages from this message channel. </summary> | ||||
@@ -14,6 +14,7 @@ namespace Discord.Rest | |||||
{ | { | ||||
public RestUser CurrentUser { get; private set; } | public RestUser CurrentUser { get; private set; } | ||||
public RestUser Recipient { get; private set; } | public RestUser Recipient { get; private set; } | ||||
public ulong? LastMessageId { get; private set; } | |||||
public IReadOnlyCollection<RestUser> Users => ImmutableArray.Create(CurrentUser, Recipient); | public IReadOnlyCollection<RestUser> Users => ImmutableArray.Create(CurrentUser, Recipient); | ||||
@@ -32,6 +33,7 @@ namespace Discord.Rest | |||||
internal override void Update(Model model) | internal override void Update(Model model) | ||||
{ | { | ||||
Recipient.Update(model.Recipients.Value[0]); | Recipient.Update(model.Recipients.Value[0]); | ||||
LastMessageId = model.LastMessageId; | |||||
} | } | ||||
public override async Task UpdateAsync(RequestOptions options = null) | public override async Task UpdateAsync(RequestOptions options = null) | ||||
@@ -16,6 +16,7 @@ namespace Discord.Rest | |||||
private ImmutableDictionary<ulong, RestGroupUser> _users; | private ImmutableDictionary<ulong, RestGroupUser> _users; | ||||
public string Name { get; private set; } | public string Name { get; private set; } | ||||
public ulong? LastMessageId { get; private set; } | |||||
public IReadOnlyCollection<RestGroupUser> Users => _users.ToReadOnlyCollection(); | public IReadOnlyCollection<RestGroupUser> Users => _users.ToReadOnlyCollection(); | ||||
public IReadOnlyCollection<RestGroupUser> Recipients | public IReadOnlyCollection<RestGroupUser> Recipients | ||||
@@ -40,6 +41,8 @@ namespace Discord.Rest | |||||
if (model.Recipients.IsSpecified) | if (model.Recipients.IsSpecified) | ||||
UpdateUsers(model.Recipients.Value); | UpdateUsers(model.Recipients.Value); | ||||
LastMessageId = model.LastMessageId; | |||||
} | } | ||||
internal void UpdateUsers(API.User[] models) | internal void UpdateUsers(API.User[] models) | ||||
{ | { | ||||
@@ -13,6 +13,7 @@ namespace Discord.Rest | |||||
public class RestTextChannel : RestGuildChannel, IRestMessageChannel, ITextChannel | public class RestTextChannel : RestGuildChannel, IRestMessageChannel, ITextChannel | ||||
{ | { | ||||
public string Topic { get; private set; } | public string Topic { get; private set; } | ||||
public ulong? LastMessageId { get; private set; } | |||||
public string Mention => MentionUtils.MentionChannel(Id); | public string Mention => MentionUtils.MentionChannel(Id); | ||||
@@ -31,6 +32,7 @@ namespace Discord.Rest | |||||
base.Update(model); | base.Update(model); | ||||
Topic = model.Topic.Value; | Topic = model.Topic.Value; | ||||
LastMessageId = model.LastMessageId; | |||||
} | } | ||||
public async Task ModifyAsync(Action<ModifyTextChannelParams> func, RequestOptions options = null) | public async Task ModifyAsync(Action<ModifyTextChannelParams> func, RequestOptions options = null) | ||||
@@ -12,6 +12,7 @@ namespace Discord.Rest | |||||
{ | { | ||||
public DateTimeOffset CreatedAt => DateTimeUtils.FromSnowflake(Id); | public DateTimeOffset CreatedAt => DateTimeUtils.FromSnowflake(Id); | ||||
public string Mention => MentionUtils.MentionChannel(Id); | public string Mention => MentionUtils.MentionChannel(Id); | ||||
public ulong? LastMessageId { get; private set; } | |||||
internal RestVirtualMessageChannel(BaseDiscordClient discord, ulong id) | internal RestVirtualMessageChannel(BaseDiscordClient discord, ulong id) | ||||
: base(discord, id) | : base(discord, id) | ||||
@@ -12,6 +12,7 @@ namespace Discord.Rpc | |||||
public class RpcDMChannel : RpcChannel, IRpcMessageChannel, IRpcPrivateChannel, IDMChannel | public class RpcDMChannel : RpcChannel, IRpcMessageChannel, IRpcPrivateChannel, IDMChannel | ||||
{ | { | ||||
public IReadOnlyCollection<RpcMessage> CachedMessages { get; private set; } | public IReadOnlyCollection<RpcMessage> CachedMessages { get; private set; } | ||||
public ulong? LastMessageId { get { throw new NotSupportedException(); } } | |||||
internal RpcDMChannel(DiscordRpcClient discord, ulong id) | internal RpcDMChannel(DiscordRpcClient discord, ulong id) | ||||
: base(discord, id) | : base(discord, id) | ||||
@@ -13,6 +13,7 @@ namespace Discord.Rpc | |||||
{ | { | ||||
public IReadOnlyCollection<RpcMessage> CachedMessages { get; private set; } | public IReadOnlyCollection<RpcMessage> CachedMessages { get; private set; } | ||||
public IReadOnlyCollection<RpcVoiceState> VoiceStates { get; private set; } | public IReadOnlyCollection<RpcVoiceState> VoiceStates { get; private set; } | ||||
public ulong? LastMessageId { get { throw new NotSupportedException(); } } | |||||
internal RpcGroupChannel(DiscordRpcClient discord, ulong id) | internal RpcGroupChannel(DiscordRpcClient discord, ulong id) | ||||
: base(discord, id) | : base(discord, id) | ||||
@@ -15,6 +15,7 @@ namespace Discord.Rpc | |||||
public class RpcTextChannel : RpcGuildChannel, IRpcMessageChannel, ITextChannel | public class RpcTextChannel : RpcGuildChannel, IRpcMessageChannel, ITextChannel | ||||
{ | { | ||||
public IReadOnlyCollection<RpcMessage> CachedMessages { get; private set; } | public IReadOnlyCollection<RpcMessage> CachedMessages { get; private set; } | ||||
public ulong? LastMessageId { get { throw new NotSupportedException(); } } | |||||
public string Mention => MentionUtils.MentionChannel(Id); | public string Mention => MentionUtils.MentionChannel(Id); | ||||
@@ -16,6 +16,7 @@ namespace Discord.WebSocket | |||||
private readonly MessageCache _messages; | private readonly MessageCache _messages; | ||||
public SocketUser Recipient { get; private set; } | public SocketUser Recipient { get; private set; } | ||||
public ulong? LastMessageId { get; private set; } | |||||
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); | public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); | ||||
public new IReadOnlyCollection<SocketUser> Users => ImmutableArray.Create(Discord.CurrentUser, Recipient); | public new IReadOnlyCollection<SocketUser> Users => ImmutableArray.Create(Discord.CurrentUser, Recipient); | ||||
@@ -36,6 +37,7 @@ namespace Discord.WebSocket | |||||
internal override void Update(ClientState state, Model model) | internal override void Update(ClientState state, Model model) | ||||
{ | { | ||||
Recipient.Update(state, model.Recipients.Value[0]); | Recipient.Update(state, model.Recipients.Value[0]); | ||||
LastMessageId = model.LastMessageId; | |||||
} | } | ||||
public Task CloseAsync(RequestOptions options = null) | public Task CloseAsync(RequestOptions options = null) | ||||
@@ -23,6 +23,7 @@ namespace Discord.WebSocket | |||||
private ConcurrentDictionary<ulong, SocketVoiceState> _voiceStates; | private ConcurrentDictionary<ulong, SocketVoiceState> _voiceStates; | ||||
public string Name { get; private set; } | public string Name { get; private set; } | ||||
public ulong? LastMessageId { get; private set; } | |||||
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); | public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); | ||||
public new IReadOnlyCollection<SocketGroupUser> Users => _users.ToReadOnlyCollection(); | public new IReadOnlyCollection<SocketGroupUser> Users => _users.ToReadOnlyCollection(); | ||||
@@ -52,6 +53,8 @@ namespace Discord.WebSocket | |||||
if (model.Recipients.IsSpecified) | if (model.Recipients.IsSpecified) | ||||
UpdateUsers(state, model.Recipients.Value); | UpdateUsers(state, model.Recipients.Value); | ||||
LastMessageId = model.LastMessageId; | |||||
} | } | ||||
private void UpdateUsers(ClientState state, UserModel[] models) | private void UpdateUsers(ClientState state, UserModel[] models) | ||||
{ | { | ||||
@@ -17,6 +17,7 @@ namespace Discord.WebSocket | |||||
private readonly MessageCache _messages; | private readonly MessageCache _messages; | ||||
public string Topic { get; private set; } | public string Topic { get; private set; } | ||||
public ulong? LastMessageId { get; private set; } | |||||
public string Mention => MentionUtils.MentionChannel(Id); | public string Mention => MentionUtils.MentionChannel(Id); | ||||
public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); | public IReadOnlyCollection<SocketMessage> CachedMessages => _messages?.Messages ?? ImmutableArray.Create<SocketMessage>(); | ||||
@@ -42,6 +43,7 @@ namespace Discord.WebSocket | |||||
base.Update(state, model); | base.Update(state, model); | ||||
Topic = model.Topic.Value; | Topic = model.Topic.Value; | ||||
LastMessageId = model.LastMessageId; | |||||
} | } | ||||
public Task ModifyAsync(Action<ModifyTextChannelParams> func, RequestOptions options = null) | public Task ModifyAsync(Action<ModifyTextChannelParams> func, RequestOptions options = null) | ||||