public async Task BlacklistAsync(CommandContext ctx,
                                         [Description("Guild of which blacklisted status to change.")] DiscordGuild guild,
                                         [Description("Whether the user should be blacklisted.")] bool blacklisted,
                                         [RemainingText, Description("Reason why this user is blacklisted.")] string reason = null)
        {
            var gid   = (long)guild.Id;
            var block = this.Database.EntityBlacklist.SingleOrDefault(x => x.Id == gid && x.Kind == DatabaseEntityKind.Guild);

            if (blacklisted && block == null)
            {
                block = new DatabaseBlacklistedEntity
                {
                    Id     = gid,
                    Kind   = DatabaseEntityKind.Guild,
                    Reason = reason,
                    Since  = DateTime.UtcNow
                };
                this.Database.EntityBlacklist.Add(block);
            }
            else if (!blacklisted && block != null)
            {
                this.Database.EntityBlacklist.Remove(block);
            }

            await this.Database.SaveChangesAsync();

            await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":msokhand:")} Guild {Formatter.Bold(Formatter.Sanitize(guild.Name))} is {(blacklisted ? "now blacklisted" : "no longer blacklisted")}.");
        }
        public async Task BlacklistAsync(CommandContext ctx,
                                         [Description("User whose blacklisted status to change.")] DiscordUser user,
                                         [Description("Whether the user should be blacklisted.")] bool blacklisted,
                                         [RemainingText, Description("Reason why this user is blacklisted.")] string reason = null)
        {
            var uid   = (long)user.Id;
            var block = this.Database.EntityBlacklist.SingleOrDefault(x => x.Id == uid && x.Kind == DatabaseEntityKind.User);

            if (blacklisted && block == null)
            {
                block = new DatabaseBlacklistedEntity
                {
                    Id     = uid,
                    Kind   = DatabaseEntityKind.User,
                    Reason = reason,
                    Since  = DateTime.UtcNow
                };
                this.Database.EntityBlacklist.Add(block);
            }
            else if (!blacklisted && block != null)
            {
                this.Database.EntityBlacklist.Remove(block);
            }

            await this.Database.SaveChangesAsync();

            await ctx.RespondAsync($"{DiscordEmoji.FromName(ctx.Client, ":msokhand:")} User {user.Mention} is {(blacklisted ? "now blacklisted" : "no longer blacklisted")}.");
        }