示例#1
0
        private async Task OnMessageReceivedAsync(SocketMessage s)
        {
            if (!(s is SocketUserMessage msg))
            {
                return;
            }
            var context = new GatherCommandContext(discord, msg);
            var prefix  = await serviceProvider.GetRequiredService <GatherManager>().GetPrefixAsync(context.Channel.Id);

            var argPos          = 0;
            var hasStringPrefix = prefix != null && msg.HasStringPrefix(prefix, ref argPos);

            if (hasStringPrefix || msg.HasMentionPrefix(discord.CurrentUser, ref argPos))
            {
                //using (context.Channel.EnterTypingState())
                await ExecuteAsync(context, serviceProvider, argPos);
            }
        }
示例#2
0
        private async Task ResultAsync(GatherCommandContext context, IResult result)
        {
            if (result.IsSuccess)
            {
                return;
            }

            switch (result)
            {
            case ExecuteResult exr:
                await logger.LogAsync(LogSeverity.Error, "Commands", exr.Exception?.ToString() ?? exr.ErrorReason);

                break;

            default:
                await context.Channel.SendMessageAsync(result.ErrorReason);

                break;
            }
        }
示例#3
0
        public async Task ExecuteAsync(GatherCommandContext context, IServiceProvider provider, string input)
        {
            var result = await commands.ExecuteAsync(context, input, provider);

            await ResultAsync(context, result);
        }
示例#4
0
        public async Task ExecuteAsync(GatherCommandContext context, IServiceProvider provider, int argPos)
        {
            var result = await commands.ExecuteAsync(context, argPos, provider);

            await ResultAsync(context, result);
        }