private async Task SendResponse(CompiledRule rule, ISocketMessageChannel channel) { var msg = rule.GetRandomMessage(); if (msg == null) { return; } // looks as if the bot is typing var isTypingState = channel.EnterTypingState(); // calculate some average typing speed // float kph = 15000; // 15k keystrokes per hour // float kpm = kph / 60; // keystrokes per minute // float kps = kpm / 60; // keystrokes per second. float keysPerSec = 6.0f; float timeToWait = (1f / keysPerSec) * msg.Length; await Task.Delay(TimeSpan.FromSeconds(timeToWait)); isTypingState.Dispose(); msg = placeholderHandler.Replace(msg, this); await channel.SendMessageAsync(msg); }