/// <summary> /// Deletes a roleplay and its associated channel, if any. /// </summary> /// <param name="roleplay">The roleplay.</param> /// <returns>A deletion result which may or may not have succeeded.</returns> public async Task <Result> DeleteRoleplayAsync(Roleplay roleplay) { if (!roleplay.DedicatedChannelID.HasValue) { return(await _roleplays.DeleteRoleplayAsync(roleplay)); } var deleteChannel = await _dedicatedChannels.DeleteChannelAsync(roleplay); if (!deleteChannel.IsSuccess) { return(deleteChannel); } return(await _roleplays.DeleteRoleplayAsync(roleplay)); }
public async Task DeleteRoleplayAsync ( [NotNull] [RequireEntityOwnerOrPermission(typeof(DeleteRoleplay), PermissionTarget.Other)] Roleplay roleplay ) { var deletionResult = await _roleplays.DeleteRoleplayAsync(roleplay); if (!deletionResult.IsSuccess) { await _feedback.SendErrorAsync(this.Context, deletionResult.ErrorReason); return; } if (!(roleplay.DedicatedChannelID is null)) { var deleteDedicatedChannelResult = await _roleplays.DeleteDedicatedRoleplayChannelAsync ( this.Context.Guild, roleplay ); if (!deleteDedicatedChannelResult.IsSuccess) { await _feedback.SendErrorAsync(this.Context, deleteDedicatedChannelResult.ErrorReason); return; } } var canReplyInChannelAfterDeletion = (long)this.Context.Channel.Id != roleplay.DedicatedChannelID; if (canReplyInChannelAfterDeletion) { await _feedback.SendConfirmationAsync(this.Context, $"Roleplay \"{roleplay.Name}\" deleted."); } else { var eb = _feedback.CreateEmbedBase(); eb.WithDescription($"Roleplay \"{roleplay.Name}\" deleted."); await _feedback.SendPrivateEmbedAsync(this.Context, this.Context.User, eb.Build(), false); } }