/// <inheritdoc />
    public async Task <Result> RespondAsync(IGuildMemberAdd ev, CancellationToken ct = default)
    {
        var getLogsChannelResult =
            await _guildApi.FindGuildChannelByName(ev.GuildID, _discordSettings.ChannelNames.LogsSpam);

        if (!getLogsChannelResult.IsSuccess)
        {
            return(Result.FromError(getLogsChannelResult.Error));
        }

        if (!ev.User.HasValue ||
            ev.User.Value is null ||
            ev.User.Value.IsBot.HasValue && ev.User.Value.IsBot.Value ||
            ev.User.Value.IsSystem.HasValue && ev.User.Value.IsSystem.Value
            )
        {
            return(Result.FromSuccess());
        }

        var user           = ev.User.Value;
        var iconUrl        = new Optional <string>();
        var embedThumbnail = new Optional <IEmbedThumbnail>();

        if (user.Avatar?.Value is not null)
        {
            var url = $"https://cdn.discordapp.com/avatars/{user.ID.Value}/{user.Avatar.Value}.png";
            iconUrl        = url;
            embedThumbnail = new EmbedThumbnail(url);
        }

        var embed = new Embed
        {
            Author      = new EmbedAuthor($"{user.Username}#{user.Discriminator}", $"https://discord.com/users/{user.ID}", iconUrl),
            Description = $":inbox_tray: <@{user.ID}> joined the server.",
            Thumbnail   = embedThumbnail,
            Colour      = _colourPalette.Green,
            Footer      = new EmbedFooter($"ID: {user.ID}"),
            Timestamp   = DateTimeOffset.UtcNow
        };
        var sendMessageResult =
            await _channelApi.CreateMessageAsync(getLogsChannelResult.Entity.ID, embeds : new[] { embed }, ct : ct);

        return(!sendMessageResult.IsSuccess
            ? Result.FromError(sendMessageResult)
            : Result.FromSuccess());
    }