예제 #1
0
        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();
            }
        }