Readded IMessageChannel.TriggerTypingAsync

This commit is contained in:
RogueException
2016-10-06 04:24:24 -03:00
parent 98475302af
commit 472412e232
11 changed files with 28 additions and 9 deletions

View File

@@ -30,7 +30,9 @@ namespace Discord
/// <summary> Bulk deletes multiple messages. </summary> /// <summary> Bulk deletes multiple messages. </summary>
Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null); Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null);
/// <summary> Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds.</summary> /// <summary> Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds. </summary>
Task TriggerTypingAsync(RequestOptions options = null);
/// <summary> Continuously broadcasts the "user is typing" message to all users in this channel until the returned object is disposed. </summary>
IDisposable EnterTypingState(RequestOptions options = null); IDisposable EnterTypingState(RequestOptions options = null);
} }
} }

View File

@@ -4,7 +4,7 @@ namespace Discord.Extensions
{ {
public static class SnowflakeEntityExtensions public static class SnowflakeEntityExtensions
{ {
//TODO: C#7 Candidate for Extension Property. //TODO: C#7 Candidate for extension property.
public static DateTimeOffset GetCreatedAt(this ISnowflakeEntity entity) => DateTimeUtils.FromSnowflake(entity.Id); public static DateTimeOffset GetCreatedAt(this ISnowflakeEntity entity) => DateTimeUtils.FromSnowflake(entity.Id);
} }
} }

View File

@@ -204,7 +204,12 @@ namespace Discord.Rest
} }
//Typing //Typing
public static IDisposable EnterTypingState(IChannel channel, BaseDiscordClient client, public static async Task TriggerTypingAsync(IMessageChannel channel, BaseDiscordClient client,
RequestOptions options = null)
{
await client.ApiClient.TriggerTypingIndicatorAsync(channel.Id, options);
}
public static IDisposable EnterTypingState(IMessageChannel channel, BaseDiscordClient client,
RequestOptions options) RequestOptions options)
=> new TypingNotifier(client, channel, options); => new TypingNotifier(client, channel, options);
} }

View File

@@ -73,6 +73,8 @@ namespace Discord.Rest
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null) public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options); => ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null) public IDisposable EnterTypingState(RequestOptions options = null)
=> ChannelHelper.EnterTypingState(this, Discord, options); => ChannelHelper.EnterTypingState(this, Discord, options);

View File

@@ -86,6 +86,8 @@ namespace Discord.Rest
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null) public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options); => ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null) public IDisposable EnterTypingState(RequestOptions options = null)
=> ChannelHelper.EnterTypingState(this, Discord, options); => ChannelHelper.EnterTypingState(this, Discord, options);

View File

@@ -63,6 +63,8 @@ namespace Discord.Rest
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null) public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options); => ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null) public IDisposable EnterTypingState(RequestOptions options = null)
=> ChannelHelper.EnterTypingState(this, Discord, options); => ChannelHelper.EnterTypingState(this, Discord, options);

View File

@@ -8,14 +8,14 @@ namespace Discord.Rest
{ {
private readonly BaseDiscordClient _client; private readonly BaseDiscordClient _client;
private readonly CancellationTokenSource _cancelToken; private readonly CancellationTokenSource _cancelToken;
private readonly ulong _channelId; private readonly IMessageChannel _channel;
private readonly RequestOptions _options; private readonly RequestOptions _options;
public TypingNotifier(BaseDiscordClient discord, IChannel channel, RequestOptions options) public TypingNotifier(BaseDiscordClient discord, IMessageChannel channel, RequestOptions options)
{ {
_client = discord; _client = discord;
_cancelToken = new CancellationTokenSource(); _cancelToken = new CancellationTokenSource();
_channelId = channel.Id; _channel = channel;
_options = options; _options = options;
var _ = Run(); var _ = Run();
} }
@@ -29,7 +29,7 @@ namespace Discord.Rest
{ {
try try
{ {
await _client.ApiClient.TriggerTypingIndicatorAsync(_channelId); await _channel.TriggerTypingAsync(_options);
} }
catch { } catch { }
await Task.Delay(9750, token); await Task.Delay(9750, token);

View File

@@ -43,7 +43,7 @@ namespace Discord.WebSocket
public static void AddMessage(ISocketMessageChannel channel, DiscordSocketClient discord, public static void AddMessage(ISocketMessageChannel channel, DiscordSocketClient discord,
SocketMessage msg) SocketMessage msg)
{ {
//C#7 Candidate for pattern matching //TODO: C#7 Candidate for pattern matching
if (channel is SocketDMChannel) if (channel is SocketDMChannel)
(channel as SocketDMChannel).AddMessage(msg); (channel as SocketDMChannel).AddMessage(msg);
else if (channel is SocketGroupChannel) else if (channel is SocketGroupChannel)
@@ -56,7 +56,7 @@ namespace Discord.WebSocket
public static SocketMessage RemoveMessage(ISocketMessageChannel channel, DiscordSocketClient discord, public static SocketMessage RemoveMessage(ISocketMessageChannel channel, DiscordSocketClient discord,
ulong id) ulong id)
{ {
//C#7 Candidate for pattern matching //TODO: C#7 Candidate for pattern matching
if (channel is SocketDMChannel) if (channel is SocketDMChannel)
return (channel as SocketDMChannel).RemoveMessage(id); return (channel as SocketDMChannel).RemoveMessage(id);
else if (channel is SocketGroupChannel) else if (channel is SocketGroupChannel)

View File

@@ -76,6 +76,8 @@ namespace Discord.WebSocket
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null) public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options); => ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null) public IDisposable EnterTypingState(RequestOptions options = null)
=> ChannelHelper.EnterTypingState(this, Discord, options); => ChannelHelper.EnterTypingState(this, Discord, options);

View File

@@ -99,6 +99,8 @@ namespace Discord.WebSocket
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null) public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options); => ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null) public IDisposable EnterTypingState(RequestOptions options = null)
=> ChannelHelper.EnterTypingState(this, Discord, options); => ChannelHelper.EnterTypingState(this, Discord, options);

View File

@@ -82,6 +82,8 @@ namespace Discord.WebSocket
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null) public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options); => ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null) public IDisposable EnterTypingState(RequestOptions options = null)
=> ChannelHelper.EnterTypingState(this, Discord, options); => ChannelHelper.EnterTypingState(this, Discord, options);