Readded IMessageChannel.TriggerTypingAsync
This commit is contained in:
@@ -30,7 +30,9 @@ namespace Discord
|
||||
/// <summary> Bulk deletes multiple messages. </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace Discord.Extensions
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +204,12 @@ namespace Discord.Rest
|
||||
}
|
||||
|
||||
//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)
|
||||
=> new TypingNotifier(client, channel, options);
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@ namespace Discord.Rest
|
||||
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
|
||||
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
|
||||
|
||||
public Task TriggerTypingAsync(RequestOptions options = null)
|
||||
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
|
||||
public IDisposable EnterTypingState(RequestOptions options = null)
|
||||
=> ChannelHelper.EnterTypingState(this, Discord, options);
|
||||
|
||||
|
||||
@@ -86,6 +86,8 @@ namespace Discord.Rest
|
||||
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
|
||||
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
|
||||
|
||||
public Task TriggerTypingAsync(RequestOptions options = null)
|
||||
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
|
||||
public IDisposable EnterTypingState(RequestOptions options = null)
|
||||
=> ChannelHelper.EnterTypingState(this, Discord, options);
|
||||
|
||||
|
||||
@@ -63,6 +63,8 @@ namespace Discord.Rest
|
||||
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
|
||||
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
|
||||
|
||||
public Task TriggerTypingAsync(RequestOptions options = null)
|
||||
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
|
||||
public IDisposable EnterTypingState(RequestOptions options = null)
|
||||
=> ChannelHelper.EnterTypingState(this, Discord, options);
|
||||
|
||||
|
||||
@@ -8,14 +8,14 @@ namespace Discord.Rest
|
||||
{
|
||||
private readonly BaseDiscordClient _client;
|
||||
private readonly CancellationTokenSource _cancelToken;
|
||||
private readonly ulong _channelId;
|
||||
private readonly IMessageChannel _channel;
|
||||
private readonly RequestOptions _options;
|
||||
|
||||
public TypingNotifier(BaseDiscordClient discord, IChannel channel, RequestOptions options)
|
||||
public TypingNotifier(BaseDiscordClient discord, IMessageChannel channel, RequestOptions options)
|
||||
{
|
||||
_client = discord;
|
||||
_cancelToken = new CancellationTokenSource();
|
||||
_channelId = channel.Id;
|
||||
_channel = channel;
|
||||
_options = options;
|
||||
var _ = Run();
|
||||
}
|
||||
@@ -29,7 +29,7 @@ namespace Discord.Rest
|
||||
{
|
||||
try
|
||||
{
|
||||
await _client.ApiClient.TriggerTypingIndicatorAsync(_channelId);
|
||||
await _channel.TriggerTypingAsync(_options);
|
||||
}
|
||||
catch { }
|
||||
await Task.Delay(9750, token);
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Discord.WebSocket
|
||||
public static void AddMessage(ISocketMessageChannel channel, DiscordSocketClient discord,
|
||||
SocketMessage msg)
|
||||
{
|
||||
//C#7 Candidate for pattern matching
|
||||
//TODO: C#7 Candidate for pattern matching
|
||||
if (channel is SocketDMChannel)
|
||||
(channel as SocketDMChannel).AddMessage(msg);
|
||||
else if (channel is SocketGroupChannel)
|
||||
@@ -56,7 +56,7 @@ namespace Discord.WebSocket
|
||||
public static SocketMessage RemoveMessage(ISocketMessageChannel channel, DiscordSocketClient discord,
|
||||
ulong id)
|
||||
{
|
||||
//C#7 Candidate for pattern matching
|
||||
//TODO: C#7 Candidate for pattern matching
|
||||
if (channel is SocketDMChannel)
|
||||
return (channel as SocketDMChannel).RemoveMessage(id);
|
||||
else if (channel is SocketGroupChannel)
|
||||
|
||||
@@ -76,6 +76,8 @@ namespace Discord.WebSocket
|
||||
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
|
||||
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
|
||||
|
||||
public Task TriggerTypingAsync(RequestOptions options = null)
|
||||
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
|
||||
public IDisposable EnterTypingState(RequestOptions options = null)
|
||||
=> ChannelHelper.EnterTypingState(this, Discord, options);
|
||||
|
||||
|
||||
@@ -99,6 +99,8 @@ namespace Discord.WebSocket
|
||||
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
|
||||
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
|
||||
|
||||
public Task TriggerTypingAsync(RequestOptions options = null)
|
||||
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
|
||||
public IDisposable EnterTypingState(RequestOptions options = null)
|
||||
=> ChannelHelper.EnterTypingState(this, Discord, options);
|
||||
|
||||
|
||||
@@ -82,6 +82,8 @@ namespace Discord.WebSocket
|
||||
public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)
|
||||
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages, options);
|
||||
|
||||
public Task TriggerTypingAsync(RequestOptions options = null)
|
||||
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
|
||||
public IDisposable EnterTypingState(RequestOptions options = null)
|
||||
=> ChannelHelper.EnterTypingState(this, Discord, options);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user