public static Embed ToErrorEmbed <T>(this CommandResult <T> result)
        {
            var eb = new ErrorEmbedBuilder()
                     .WithErrorMessage(result.FailureReason !);

            return(eb.Build());
        }
Пример #2
0
        public async Task ViewAsync(int applicationId)
        {
            var query = new GetById.Query {
                Id = applicationId
            };
            var app = await _mediator.Send(query);

            if (app is null)
            {
                var errorEmbed = new ErrorEmbedBuilder()
                                 .WithErrorMessage($"Application with ID `{applicationId}` does not exist.")
                                 .Build();
                await Context.Channel.SendEmbedAsync(errorEmbed);

                return;
            }

            var embed = new EmbedBuilder()
                        .AddField($"{app.AppStatus.ToString().ToUpper()}: Application by {app.AuthorName}",
                                  $"Author's Discord ID: {app.AuthorDiscordId}\nApplication ID: {app.AppId}")
                        .AddField("Provided details",
                                  string.IsNullOrWhiteSpace(app.MessageContent)
                        ? "*Player did not provide any details.*"
                        : app.MessageContent)
                        .AddField("Link to original message", app.MessageUrl)
                        .WithThumbnailUrl(app.ImageUrl)
                        .WithFooter($"Applied at {app.AppTime}")
                        .WithApplicationStatusColour(app.AppStatus)
                        .Build();

            await Context.Channel.SendEmbedAsync(embed);
        }
Пример #3
0
        private async Task BotMessageReceivedAsync(SocketMessage message)
        {
            if (message.Author.IsBot)
            {
                return;
            }

            if (!(message is SocketUserMessage userMessage))
            {
                return;
            }

            var argPos = 0;

            if (userMessage.Channel.Name.Equals(_config.ChannelNames.MemberApps) && message.Attachments.Count != 0)
            {
                var channel = userMessage.Channel;

                using (var scope = Services.CreateScope())
                {
                    var mediator = scope.ServiceProvider.GetRequiredService <IMediator>();
                    await mediator.Send(new CreateFromUserMsg.Command {
                        UserMessage = userMessage
                    });
                }

                await channel.SendMessageAsync(
                    "Your application has been submitted and you will be pinged once it has been processed.");

                return;
            }

            if (!userMessage.HasCharPrefix(_config.Prefix, ref argPos))
            {
                return;
            }

            _botService.ExecuteHandlerAsynchronously(
                handler: (client) =>
            {
                var context = new SocketCommandContext(client, userMessage);
                return(_commandService.ExecuteAsync(context, argPos, _provider));
            },
                callback: async(result) =>
            {
                if (result.IsSuccess)
                {
                    return;
                }

                if (result.Error == CommandError.UnknownCommand)
                {
                    return;
                }

                if (result.Error.HasValue)
                {
                    var embed = new ErrorEmbedBuilder()
                                .WithErrorMessage($"{result.Error.Value}; {result.ErrorReason}")
                                .Build();
                    await message.Channel.SendEmbedAsync(embed);
                }
            });
        }