private async Task HandleCommandAsync(SocketMessage s) { var timer = new Stopwatch(); timer.Start(); var msg = s as SocketUserMessage; if (msg == null) { return; } var context = new SocketCommandContext(_client, msg); string prefix = await context.Guild.GetPrefixAsync(); int argPos = 0; bool hasStringPrefix = prefix == null ? false : msg.HasStringPrefix(prefix, ref argPos); if (hasStringPrefix || msg.HasMentionPrefix(_client.CurrentUser, ref argPos)) { var result = await _service.ExecuteAsync(context, argPos); timer.Stop(); if (!result.IsSuccess) { if (result is ExecuteResult r) { Console.WriteLine(r.Exception.ToString()); } else { await context.Channel.SendMessageAsync(result.ToString()); } } else { await context.LogAsync(timer.ElapsedMilliseconds); } } }