Esempio n. 1
0
    /// <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));
    }
Esempio n. 2
0
        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);
            }
        }