public async Task KickUserAsync([RequireHigherHierarchyPrecondition][EnsureNotSelf] IUser user, [Remainder] string reason = "No reason provided.")
        {
            try
            {
                var dmChannel = await user.GetOrCreateDMChannelAsync();

                await dmChannel.SendMessageAsync("", false, new EmbedBuilder()
                {
                    Title = $"You were kicked from **{Context.Guild.Name}**",
                    Color = _moderation.GetColorFromInfractionType(InfractionType.Kick)
                }
                                                 .AddField($"Reason", reason)
                                                 .Build());
            }
            catch (Exception)
            {
                await ReplyAsync($"Could not dm user to notify him.");
            }

            var restUser   = await(await Context.Client.Rest.GetGuildAsync(Context.Guild.Id)).GetUserAsync(user.Id);
            var infraction = await _moderation.KickUserFromGuildAsync(restUser, Context.User.Id, reason);

            await ReplyAsync($"#{infraction.Id} | Kicked {user.Mention}.");
        }