Added message acknowledgement

This commit is contained in:
RogueException
2015-10-07 14:02:42 -03:00
parent 9f5360bc6f
commit 6781a0f233
4 changed files with 22 additions and 10 deletions

View File

@@ -19,6 +19,7 @@
public static string ChannelMessages(string channelId) => $"channels/{channelId}/messages";
public static string ChannelMessages(string channelId, int limit) => $"channels/{channelId}/messages?limit={limit}";
public static string ChannelMessage(string channelId, string msgId) => $"channels/{channelId}/messages/{msgId}";
public static string ChannelMessageAck(string channelId, string msgId) => $"channels/{channelId}/messages/{msgId}/ack";
public static string ChannelInvites(string channelId) => $"channels/{channelId}/invites";
public static string ChannelPermission(string channelId, string userOrRoleId) => $"channels/{channelId}/permissions/{userOrRoleId}";
@@ -44,7 +45,6 @@
public const string VoiceIce = "voice/ice";
public const string StatusActiveMaintenance = "scheduled-maintenances/active.json";
public const string StatusUnresolvedMaintenance = "scheduled-maintenances/unresolved.json";
public const string StatusUpcomingMaintenance = "scheduled-maintenances/upcoming.json";
}
}

View File

@@ -105,10 +105,6 @@ namespace Discord
}
//Incidents
public Task<GetIncidentsResponse> GetUnresolvedIncidents()
{
return _rest.Get<GetIncidentsResponse>(Endpoints.StatusUnresolvedMaintenance);
}
public Task<GetIncidentsResponse> GetActiveIncidents()
{
return _rest.Get<GetIncidentsResponse>(Endpoints.StatusActiveMaintenance);
@@ -207,7 +203,14 @@ namespace Discord
var request = new EditMessageRequest { Content = message, Mentions = mentions };
return _rest.Patch<EditMessageResponse>(Endpoints.ChannelMessage(channelId, messageId), request);
}
public Task SendIsTyping(string channelId)
public Task AckMessage(string messageId, string channelId)
{
if (messageId == null) throw new ArgumentNullException(nameof(messageId));
if (channelId == null) throw new ArgumentNullException(nameof(channelId));
return _rest.Post(Endpoints.ChannelMessageAck(channelId, messageId));
}
public Task SendIsTyping(string channelId)
{
if (channelId == null) throw new ArgumentNullException(nameof(channelId));

View File

@@ -534,15 +534,17 @@ namespace Discord
var data = e.Payload.ToObject<MessageCreateEvent>(_serializer);
Message msg = null;
bool wasLocal = _config.UseMessageQueue && data.Author.Id == CurrentUserId && data.Nonce != null;
if (wasLocal)
bool isAuthor = data.Author.Id == CurrentUserId;
bool hasFinishedSending = false;
if (_config.UseMessageQueue && isAuthor && data.Nonce != null)
{
msg = _messages.Remap("nonce" + data.Nonce, data.Id);
if (msg != null)
{
msg.IsQueued = false;
msg.Id = data.Id;
}
hasFinishedSending = true;
}
}
if (msg == null)
@@ -564,7 +566,11 @@ namespace Discord
member.UpdateActivity(data.Timestamp);
}
}
if (wasLocal)
if (_config.AckMessages && isAuthor)
await _api.AckMessage(data.Id, data.ChannelId);
if (hasFinishedSending)
RaiseMessageSent(msg);
RaiseMessageCreated(msg);
}

View File

@@ -63,6 +63,9 @@ namespace Discord
/// <summary> (Experimental) Maintains the LastActivity property for users, showing when they last made an action (sent message, joined server, typed, etc). </summary>
public bool TrackActivity { get { return _trackActivity; } set { SetValue(ref _trackActivity, value); } }
private bool _trackActivity = true;
/// <summary> (Experimental) Acknowledges all incoming messages so that they appear read. </summary>
public bool AckMessages { get { return _ackMessages; } set { SetValue(ref _ackMessages, value); } }
private bool _ackMessages = false;
//Internals
internal bool VoiceOnly { get { return _voiceOnly; } set { SetValue(ref _voiceOnly, value); } }