private async Task HandleCommandAsync(SocketMessage arg) { SocketUserMessage Messeg = arg as SocketUserMessage; if (Messeg is null || Messeg.Author.IsBot) { return; } int argPos = 0; SocketCommandContext contex = new SocketCommandContext(_Client, Messeg); SLog logger = new SLog(contex); IResult result = null; if (Messeg.HasStringPrefix("sh!", ref argPos) || Messeg.HasStringPrefix("Sh!", ref argPos)) { result = await _Command.ExecuteAsync(contex, argPos, _UserService); } if (result == null) { return; } if (!result.IsSuccess) { switch (result.Error.Value) { case CommandError.BadArgCount: { logger.SetParam("BadArgCount", result.ErrorReason); contex.Channel.SendMessageAsync($"{contex.User.Mention}, неверные параметры команды").GetAwaiter(); break; } case CommandError.UnknownCommand: { logger.SetParam("UnknownCommand", result.ErrorReason); contex.Channel.SendMessageAsync($"{contex.User.Mention}, неизвестная команда").GetAwaiter(); Help(contex); break; } case CommandError.ObjectNotFound: { logger.SetParam("ObjectNotFound", result.ErrorReason); break; } case CommandError.ParseFailed: { logger.SetParam("ParseFailed", result.ErrorReason); break; } case CommandError.MultipleMatches: { logger.SetParam("MultipleMatches", result.ErrorReason); break; } case CommandError.UnmetPrecondition: { logger.SetParam("UnmetPrecondition", result.ErrorReason); contex.Channel.SendMessageAsync(result.ErrorReason).GetAwaiter(); break; } case CommandError.Exception: { logger.SetParam("Exception", result.ErrorReason); break; } case CommandError.Unsuccessful: { logger.SetParam("Unsuccessful", result.ErrorReason); break; } default: { logger.SetParam("Default", result.ErrorReason); break; } } logger.PrintLog(); } }