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 } )); }
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()}"); } }