public async Task <IResult> ExportRoleplayAsync
    (
        [RequireEntityOwner]
        [AutocompleteProvider("roleplay::owned")]
        Roleplay roleplay,
        ExportFormat format = ExportFormat.PDF
    )
    {
        IRoleplayExporter exporter;

        switch (format)
        {
        case ExportFormat.PDF:
        {
            exporter = new PDFRoleplayExporter();
            break;
        }

        case ExportFormat.Plaintext:
        {
            exporter = new PlaintextRoleplayExporter();
            break;
        }

        default:
        {
            return(Result.FromError
                   (
                       new UserError("That export format hasn't been implemented yet.")
                   ));
        }
        }

        var send = await _feedback.SendContextualNeutralAsync("Compiling the roleplay...");

        if (!send.IsSuccess)
        {
            return(Result <FeedbackMessage> .FromError(send));
        }

        using var output = await exporter.ExportAsync(_services, roleplay);

        var fileData = new FileData
                       (
            $"{output.Title}.{output.Format.GetFileExtension()}",
            output.Data
                       );

        return(await _channelAPI.CreateMessageAsync
               (
                   _context.ChannelID,
                   attachments : new List <OneOf <FileData, IPartialAttachment> > {
            fileData
        }
               ));
    }
Esempio n. 2
0
        public async Task ExportRoleplayAsync
        (
            [NotNull]
            [RequireEntityOwnerOrPermission(typeof(ExportRoleplay), PermissionTarget.Other)]
            Roleplay roleplay,
            [OverrideTypeReader(typeof(HumanizerEnumTypeReader <ExportFormat>))]
            ExportFormat format = ExportFormat.PDF
        )
        {
            IRoleplayExporter exporter;

            switch (format)
            {
            case ExportFormat.PDF:
            {
                exporter = new PDFRoleplayExporter(this.Context.Guild);
                break;
            }

            case ExportFormat.Plaintext:
            {
                exporter = new PlaintextRoleplayExporter(this.Context.Guild);
                break;
            }

            default:
            {
                await _feedback.SendErrorAsync(this.Context, "That export format hasn't been implemented yet.");

                return;
            }
            }

            await _feedback.SendConfirmationAsync(this.Context, "Compiling the roleplay...");

            using (var output = await exporter.ExportAsync(roleplay))
            {
                await this.Context.Channel.SendFileAsync(output.Data, $"{output.Title}.{output.Format.GetFileExtension()}");
            }
        }