public async Task BanUserAsync([RequireHigherHierarchyPrecondition][EnsureNotSelf] IUser user, [Remainder] string reason = "No reason provided.")
        {
            var time = ParseTimeSpanFromString(ref reason);

            if (string.IsNullOrEmpty(reason))
            {
                reason = "No reason provided.";
            }

            try
            {
                var dmChannel = await user.GetOrCreateDMChannelAsync();

                var embed = new EmbedBuilder()
                {
                    Title = $"You were banned from **{Context.Guild.Name}**",
                    Color = _moderation.GetColorFromInfractionType(InfractionType.Ban)
                }
                .AddField($"Reason", reason, true);

                if (time.TotalMilliseconds > 1000)
                {
                    embed.AddField("Duration", time.Humanize(3, minUnit: TimeUnit.Second));
                }

                await dmChannel.SendMessageAsync("", false, embed.Build());
            }
            catch (Exception)
            {
                await ReplyAsync($"Could not dm user to notify him.");
            }

            var infraction = await _moderation.BanUserFromGuildAsync(user, Context.Guild.Id, Context.User.Id, reason, time, 7);

            if (time.TotalMilliseconds < 1000)
            {
                await ReplyAsync($"#{infraction.Id} | Banned {user.Mention}.");
            }
            else
            {
                await ReplyAsync($"#{infraction.Id} | Banned {user.Mention} for {time.Humanize()}");
            }
        }