From 7da8f2c403ffc8b421a5e931ee6cf5430b8f34dd Mon Sep 17 00:00:00 2001
From: Toastie <toastie@toastiet0ast.com>
Date: Tue, 5 Nov 2024 16:11:05 +1300
Subject: [PATCH] added timely boost bonus to gambling.yml .betstats renamed to
 .gamblestats/.gs added .betstats, .betstats <game> and .betstats <user>
 <game?> command which shows you your stats for gambling commands

---
 EllieBot.sln                                  |    4 +-
 migrate.ps1                                   |    8 -
 src/EllieBot/Db/EllieContext.cs               |   74 +-
 .../20241105024753_betstats.Designer.cs       | 3902 +++++++++
 .../PostgreSql/20241105024753_betstats.cs     |   48 +
 .../PostgreSqlContextModelSnapshot.cs         | 7071 +++++++++--------
 .../20241105024653_betstats.Designer.cs       | 3011 +++++++
 .../Sqlite/20241105024653_betstats.cs         |   47 +
 .../Sqlite/EllieSqliteContextModelSnapshot.cs | 5356 ++++++-------
 .../AnimalRacing/AnimalRacingCommands.cs      |    4 +-
 src/EllieBot/Modules/Gambling/Gambling.cs     |  146 +-
 .../Modules/Gambling/GamblingConfig.cs        |   26 +-
 .../Modules/Gambling/GamblingConfigService.cs |    8 +-
 .../Gambling/_common/NewGamblingService.cs    |    4 +-
 src/EllieBot/_common/Currency/ITxTracker.cs   |    4 +-
 .../Services/Currency/CurrencyService.cs      |    4 +-
 .../Services/Currency/GamblingTxTracker.cs    |  270 +-
 src/EllieBot/data/aliases.yml                 |    4 +
 src/EllieBot/data/gambling.yml                |   11 +-
 src/EllieBot/migrate.ps1                      |    8 +
 .../EllieBot/remove-migrations.ps1            |    0
 21 files changed, 13690 insertions(+), 6320 deletions(-)
 delete mode 100644 migrate.ps1
 create mode 100644 src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.Designer.cs
 create mode 100644 src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.cs
 create mode 100644 src/EllieBot/Migrations/Sqlite/20241105024653_betstats.Designer.cs
 create mode 100644 src/EllieBot/Migrations/Sqlite/20241105024653_betstats.cs
 create mode 100644 src/EllieBot/migrate.ps1
 rename remove-migrations.ps1 => src/EllieBot/remove-migrations.ps1 (100%)

diff --git a/EllieBot.sln b/EllieBot.sln
index 0d4b7ec..47179ff 100644
--- a/EllieBot.sln
+++ b/EllieBot.sln
@@ -11,9 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 		Dockerfile = Dockerfile
 		ellie-menu.ps1 = ellie-menu.ps1
 		LICENSE = LICENSE
-		migrate.ps1 = migrate.ps1
 		README.md = README.md
-		remove-migrations.ps1 = remove-migrations.ps1
 	EndProjectSection
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EllieBot", "src\EllieBot\EllieBot.csproj", "{4D9001F7-B3E8-48FE-97AA-CFD36DA65A64}"
@@ -30,7 +28,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ellie.Marmalade", "src\Elli
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EllieBot.Voice", "src\EllieBot.Voice\EllieBot.Voice.csproj", "{1D93CE3C-80B4-49C7-A9A2-99988920AAEC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EllieBot.GrpcApiBase", "src\EllieBot.GrpcApiBase\EllieBot.GrpcApiBase.csproj", "{3B71F0BF-AE6C-480C-AB88-FCE23EDC7D91}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EllieBot.GrpcApiBase", "src\EllieBot.GrpcApiBase\EllieBot.GrpcApiBase.csproj", "{3B71F0BF-AE6C-480C-AB88-FCE23EDC7D91}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/migrate.ps1 b/migrate.ps1
deleted file mode 100644
index 8a930a3..0000000
--- a/migrate.ps1
+++ /dev/null
@@ -1,8 +0,0 @@
-if ($args.Length -eq 0) {
-  Write-Host "Please provide a migration name." -ForegroundColor Red
-}
-else {
-  $migrationName = $args[0]
-  dotnet ef migrations add $migrationName -o Migrations/Mysql -c SqliteContext -p src/EllieBot/EllieBot.csproj
-  dotnet ef migrations add $migrationName -o Migrations/PostgreSql -c PostgreSqlContext -p src/EllieBot/EllieBot.csproj
-}
\ No newline at end of file
diff --git a/src/EllieBot/Db/EllieContext.cs b/src/EllieBot/Db/EllieContext.cs
index c12c0e6..347e1a7 100644
--- a/src/EllieBot/Db/EllieContext.cs
+++ b/src/EllieBot/Db/EllieContext.cs
@@ -62,6 +62,7 @@ public abstract class EllieContext : DbContext
     public DbSet<ArchivedTodoListModel> TodosArchive { get; set; }
     public DbSet<HoneypotChannel> HoneyPotChannels { get; set; }
 
+
     // public DbSet<GuildColors> GuildColors { get; set; }
 
 
@@ -73,7 +74,16 @@ public abstract class EllieContext : DbContext
 
     protected override void OnModelCreating(ModelBuilder modelBuilder)
     {
-        #region Flag Translate
+        #region UserBetStats
+
+        modelBuilder.Entity<UserBetStats>()
+                    .HasIndex(x => new { x.UserId, x.Game })
+                    .IsUnique();
+
+
+        #endregion
+
+        #region Flag Translate 
 
         modelBuilder.Entity<FlagTranslateChannel>()
                     .HasIndex(x => new { x.GuildId, x.ChannelId })
@@ -85,12 +95,12 @@ public abstract class EllieContext : DbContext
 
         modelBuilder.Entity<NCPixel>()
                     .HasAlternateKey(x => x.Position);
-        
+
         modelBuilder.Entity<NCPixel>()
                     .HasIndex(x => x.OwnerId);
 
         #endregion
-        
+
         #region QUOTES
 
         var quoteEntity = modelBuilder.Entity<Quote>();
@@ -307,10 +317,10 @@ public abstract class EllieContext : DbContext
         var selfassignableRolesEntity = modelBuilder.Entity<SelfAssignedRole>();
 
         selfassignableRolesEntity.HasIndex(s => new
-                                 {
-                                     s.GuildId,
-                                     s.RoleId
-                                 })
+        {
+            s.GuildId,
+            s.RoleId
+        })
                                  .IsUnique();
 
         selfassignableRolesEntity.Property(x => x.Group).HasDefaultValue(0);
@@ -384,10 +394,10 @@ public abstract class EllieContext : DbContext
 
         var xps = modelBuilder.Entity<UserXpStats>();
         xps.HasIndex(x => new
-           {
-               x.UserId,
-               x.GuildId
-           })
+        {
+            x.UserId,
+            x.GuildId
+        })
            .IsUnique();
 
         xps.HasIndex(x => x.UserId);
@@ -433,9 +443,9 @@ public abstract class EllieContext : DbContext
           .OnDelete(DeleteBehavior.SetNull);
 
         ci.HasIndex(x => new
-          {
-              x.Name
-          })
+        {
+            x.Name
+        })
           .IsUnique();
 
         #endregion
@@ -554,10 +564,10 @@ public abstract class EllieContext : DbContext
                .IsUnique(false);
 
             rr2.HasIndex(x => new
-               {
-                   x.MessageId,
-                   x.Emote
-               })
+            {
+                x.MessageId,
+                x.Emote
+            })
                .IsUnique();
         });
 
@@ -632,11 +642,11 @@ public abstract class EllieContext : DbContext
             {
                 // user can own only one of each item
                 x.HasIndex(model => new
-                 {
-                     model.UserId,
-                     model.ItemType,
-                     model.ItemKey
-                 })
+                {
+                    model.UserId,
+                    model.ItemType,
+                    model.ItemKey
+                })
                  .IsUnique();
             });
 
@@ -661,10 +671,10 @@ public abstract class EllieContext : DbContext
         #region Sticky Roles
 
         modelBuilder.Entity<StickyRole>(sr => sr.HasIndex(x => new
-                                                {
-                                                    x.GuildId,
-                                                    x.UserId
-                                                })
+        {
+            x.GuildId,
+            x.UserId
+        })
                                                 .IsUnique());
 
         #endregion
@@ -709,10 +719,10 @@ public abstract class EllieContext : DbContext
 
         modelBuilder
             .Entity<GreetSettings>(gs => gs.HasIndex(x => new
-                                           {
-                                               x.GuildId,
-                                               x.GreetType
-                                           })
+            {
+                x.GuildId,
+                x.GreetType
+            })
                                            .IsUnique());
 
         modelBuilder.Entity<GreetSettings>(gs =>
@@ -720,7 +730,7 @@ public abstract class EllieContext : DbContext
             gs
                 .Property(x => x.IsEnabled)
                 .HasDefaultValue(false);
-            
+
             gs
                 .Property(x => x.AutoDeleteTimer)
                 .HasDefaultValue(0);
diff --git a/src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.Designer.cs b/src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.Designer.cs
new file mode 100644
index 0000000..685e80e
--- /dev/null
+++ b/src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.Designer.cs
@@ -0,0 +1,3902 @@
+// <auto-generated />
+using System;
+using EllieBot.Db;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace EllieBot.Migrations.PostgreSql
+{
+    [DbContext(typeof(PostgreSqlContext))]
+    [Migration("20241105024753_betstats")]
+    partial class betstats
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "8.0.8")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Action")
+                        .HasColumnType("integer")
+                        .HasColumnName("action");
+
+                    b.Property<int>("ActionDurationMinutes")
+                        .HasColumnType("integer")
+                        .HasColumnName("actiondurationminutes");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<TimeSpan>("MinAge")
+                        .HasColumnType("interval")
+                        .HasColumnName("minage");
+
+                    b.Property<decimal?>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_antialtsetting");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_antialtsetting_guildconfigid");
+
+                    b.ToTable("antialtsetting", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Action")
+                        .HasColumnType("integer")
+                        .HasColumnName("action");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("PunishDuration")
+                        .HasColumnType("integer")
+                        .HasColumnName("punishduration");
+
+                    b.Property<int>("Seconds")
+                        .HasColumnType("integer")
+                        .HasColumnName("seconds");
+
+                    b.Property<int>("UserThreshold")
+                        .HasColumnType("integer")
+                        .HasColumnName("userthreshold");
+
+                    b.HasKey("Id")
+                        .HasName("pk_antiraidsetting");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_antiraidsetting_guildconfigid");
+
+                    b.ToTable("antiraidsetting", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("AntiSpamSettingId")
+                        .HasColumnType("integer")
+                        .HasColumnName("antispamsettingid");
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.HasKey("Id")
+                        .HasName("pk_antispamignore");
+
+                    b.HasIndex("AntiSpamSettingId")
+                        .HasDatabaseName("ix_antispamignore_antispamsettingid");
+
+                    b.ToTable("antispamignore", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Action")
+                        .HasColumnType("integer")
+                        .HasColumnName("action");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("MessageThreshold")
+                        .HasColumnType("integer")
+                        .HasColumnName("messagethreshold");
+
+                    b.Property<int>("MuteTime")
+                        .HasColumnType("integer")
+                        .HasColumnName("mutetime");
+
+                    b.Property<decimal?>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_antispamsetting");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_antispamsetting_guildconfigid");
+
+                    b.ToTable("antispamsetting", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_todosarchive");
+
+                    b.ToTable("todosarchive", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoCommand", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<string>("ChannelName")
+                        .HasColumnType("text")
+                        .HasColumnName("channelname");
+
+                    b.Property<string>("CommandText")
+                        .HasColumnType("text")
+                        .HasColumnName("commandtext");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal?>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("GuildName")
+                        .HasColumnType("text")
+                        .HasColumnName("guildname");
+
+                    b.Property<int>("Interval")
+                        .HasColumnType("integer")
+                        .HasColumnName("interval");
+
+                    b.Property<decimal?>("VoiceChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("voicechannelid");
+
+                    b.Property<string>("VoiceChannelName")
+                        .HasColumnType("text")
+                        .HasColumnName("voicechannelname");
+
+                    b.HasKey("Id")
+                        .HasName("pk_autocommands");
+
+                    b.ToTable("autocommands", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoPublishChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_autopublishchannel");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_autopublishchannel_guildid");
+
+                    b.ToTable("autopublishchannel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<bool>("AutoDelete")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodelete");
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_autotranslatechannels");
+
+                    b.HasIndex("ChannelId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_autotranslatechannels_channelid");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_autotranslatechannels_guildid");
+
+                    b.ToTable("autotranslatechannels", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("ChannelId")
+                        .HasColumnType("integer")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Source")
+                        .HasColumnType("text")
+                        .HasColumnName("source");
+
+                    b.Property<string>("Target")
+                        .HasColumnType("text")
+                        .HasColumnName("target");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_autotranslateusers");
+
+                    b.HasAlternateKey("ChannelId", "UserId")
+                        .HasName("ak_autotranslateusers_channelid_userid");
+
+                    b.ToTable("autotranslateusers", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.BanTemplate", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int?>("PruneDays")
+                        .HasColumnType("integer")
+                        .HasColumnName("prunedays");
+
+                    b.Property<string>("Text")
+                        .HasColumnType("text")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_bantemplates");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_bantemplates_guildid");
+
+                    b.ToTable("bantemplates", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.BankUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("Balance")
+                        .HasColumnType("bigint")
+                        .HasColumnName("balance");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_bankusers");
+
+                    b.HasIndex("UserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_bankusers_userid");
+
+                    b.ToTable("bankusers", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.BlacklistEntry", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("ItemId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("itemid");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_blacklist");
+
+                    b.ToTable("blacklist", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("integer")
+                        .HasColumnName("clubid");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("userid");
+
+                    b.HasKey("ClubId", "UserId")
+                        .HasName("pk_clubapplicants");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_clubapplicants_userid");
+
+                    b.ToTable("clubapplicants", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("integer")
+                        .HasColumnName("clubid");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("userid");
+
+                    b.HasKey("ClubId", "UserId")
+                        .HasName("pk_clubbans");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_clubbans_userid");
+
+                    b.ToTable("clubbans", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("text")
+                        .HasColumnName("description");
+
+                    b.Property<string>("ImageUrl")
+                        .HasColumnType("text")
+                        .HasColumnName("imageurl");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(20)
+                        .HasColumnType("character varying(20)")
+                        .HasColumnName("name");
+
+                    b.Property<int?>("OwnerId")
+                        .HasColumnType("integer")
+                        .HasColumnName("ownerid");
+
+                    b.Property<int>("Xp")
+                        .HasColumnType("integer")
+                        .HasColumnName("xp");
+
+                    b.HasKey("Id")
+                        .HasName("pk_clubs");
+
+                    b.HasIndex("Name")
+                        .IsUnique()
+                        .HasDatabaseName("ix_clubs_name");
+
+                    b.HasIndex("OwnerId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_clubs_ownerid");
+
+                    b.ToTable("clubs", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Mapping")
+                        .HasColumnType("text")
+                        .HasColumnName("mapping");
+
+                    b.Property<string>("Trigger")
+                        .HasColumnType("text")
+                        .HasColumnName("trigger");
+
+                    b.HasKey("Id")
+                        .HasName("pk_commandalias");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_commandalias_guildconfigid");
+
+                    b.ToTable("commandalias", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("CommandName")
+                        .HasColumnType("text")
+                        .HasColumnName("commandname");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("Seconds")
+                        .HasColumnType("integer")
+                        .HasColumnName("seconds");
+
+                    b.HasKey("Id")
+                        .HasName("pk_commandcooldown");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_commandcooldown_guildconfigid");
+
+                    b.ToTable("commandcooldown", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CurrencyTransaction", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("Amount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("amount");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Extra")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("extra");
+
+                    b.Property<string>("Note")
+                        .HasColumnType("text")
+                        .HasColumnName("note");
+
+                    b.Property<decimal?>("OtherId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("otherid")
+                        .HasDefaultValueSql("NULL");
+
+                    b.Property<string>("Type")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("type");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_currencytransactions");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_currencytransactions_userid");
+
+                    b.ToTable("currencytransactions", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<bool>("State")
+                        .HasColumnType("boolean")
+                        .HasColumnName("state");
+
+                    b.HasKey("Id")
+                        .HasName("pk_delmsgoncmdchannel");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_delmsgoncmdchannel_guildconfigid");
+
+                    b.ToTable("delmsgoncmdchannel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordPermOverride", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Command")
+                        .HasColumnType("text")
+                        .HasColumnName("command");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal?>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal>("Perm")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("perm");
+
+                    b.HasKey("Id")
+                        .HasName("pk_discordpermoverrides");
+
+                    b.HasIndex("GuildId", "Command")
+                        .IsUnique()
+                        .HasDatabaseName("ix_discordpermoverrides_guildid_command");
+
+                    b.ToTable("discordpermoverrides", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("AvatarId")
+                        .HasColumnType("text")
+                        .HasColumnName("avatarid");
+
+                    b.Property<int?>("ClubId")
+                        .HasColumnType("integer")
+                        .HasColumnName("clubid");
+
+                    b.Property<long>("CurrencyAmount")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasDefaultValue(0L)
+                        .HasColumnName("currencyamount");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsClubAdmin")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("boolean")
+                        .HasDefaultValue(false)
+                        .HasColumnName("isclubadmin");
+
+                    b.Property<int>("NotifyOnLevelUp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(0)
+                        .HasColumnName("notifyonlevelup");
+
+                    b.Property<long>("TotalXp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasDefaultValue(0L)
+                        .HasColumnName("totalxp");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_discorduser");
+
+                    b.HasAlternateKey("UserId")
+                        .HasName("ak_discorduser_userid");
+
+                    b.HasIndex("ClubId")
+                        .HasDatabaseName("ix_discorduser_clubid");
+
+                    b.HasIndex("CurrencyAmount")
+                        .HasDatabaseName("ix_discorduser_currencyamount");
+
+                    b.HasIndex("TotalXp")
+                        .HasDatabaseName("ix_discorduser_totalxp");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_discorduser_userid");
+
+                    b.HasIndex("Username")
+                        .HasDatabaseName("ix_discorduser_username");
+
+                    b.ToTable("discorduser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.EllieExpression", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<bool>("AllowTarget")
+                        .HasColumnType("boolean")
+                        .HasColumnName("allowtarget");
+
+                    b.Property<bool>("AutoDeleteTrigger")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodeletetrigger");
+
+                    b.Property<bool>("ContainsAnywhere")
+                        .HasColumnType("boolean")
+                        .HasColumnName("containsanywhere");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("DmResponse")
+                        .HasColumnType("boolean")
+                        .HasColumnName("dmresponse");
+
+                    b.Property<decimal?>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Reactions")
+                        .HasColumnType("text")
+                        .HasColumnName("reactions");
+
+                    b.Property<string>("Response")
+                        .HasColumnType("text")
+                        .HasColumnName("response");
+
+                    b.Property<string>("Trigger")
+                        .HasColumnType("text")
+                        .HasColumnName("trigger");
+
+                    b.HasKey("Id")
+                        .HasName("pk_expressions");
+
+                    b.ToTable("expressions", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("ItemId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("itemid");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("integer")
+                        .HasColumnName("itemtype");
+
+                    b.Property<int?>("XpSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("xpsettingsid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_excludeditem");
+
+                    b.HasIndex("XpSettingsId")
+                        .HasDatabaseName("ix_excludeditem_xpsettingsid");
+
+                    b.ToTable("excludeditem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<string>("Url")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("url");
+
+                    b.HasKey("Id")
+                        .HasName("pk_feedsub");
+
+                    b.HasAlternateKey("GuildConfigId", "Url")
+                        .HasName("ak_feedsub_guildconfigid_url");
+
+                    b.ToTable("feedsub", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filterchannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filterchannelid_guildconfigid");
+
+                    b.ToTable("filterchannelid", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filterlinkschannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
+
+                    b.ToTable("filterlinkschannelid", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filterwordschannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
+
+                    b.ToTable("filterwordschannelid", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Word")
+                        .HasColumnType("text")
+                        .HasColumnName("word");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filteredword");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filteredword_guildconfigid");
+
+                    b.ToTable("filteredword", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FlagTranslateChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_flagtranslatechannel");
+
+                    b.HasIndex("GuildId", "ChannelId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_flagtranslatechannel_guildid_channelid");
+
+                    b.ToTable("flagtranslatechannel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_followedstream");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_followedstream_guildconfigid");
+
+                    b.ToTable("followedstream", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_gcchannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_gcchannelid_guildconfigid");
+
+                    b.ToTable("gcchannelid", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("Bet")
+                        .HasColumnType("numeric")
+                        .HasColumnName("bet");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Feature")
+                        .HasColumnType("text")
+                        .HasColumnName("feature");
+
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("numeric")
+                        .HasColumnName("paidout");
+
+                    b.HasKey("Id")
+                        .HasName("pk_gamblingstats");
+
+                    b.HasIndex("Feature")
+                        .IsUnique()
+                        .HasDatabaseName("ix_gamblingstats_feature");
+
+                    b.ToTable("gamblingstats", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime>("EndsAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("endsat");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_giveawaymodel");
+
+                    b.ToTable("giveawaymodel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("GiveawayId")
+                        .HasColumnType("integer")
+                        .HasColumnName("giveawayid");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_giveawayuser");
+
+                    b.HasIndex("GiveawayId", "UserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
+
+                    b.ToTable("giveawayuser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int>("Number")
+                        .HasColumnType("integer")
+                        .HasColumnName("number");
+
+                    b.HasKey("Id")
+                        .HasName("pk_groupname");
+
+                    b.HasIndex("GuildConfigId", "Number")
+                        .IsUnique()
+                        .HasDatabaseName("ix_groupname_guildconfigid_number");
+
+                    b.ToTable("groupname", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("AutoAssignRoleIds")
+                        .HasColumnType("text")
+                        .HasColumnName("autoassignroleids");
+
+                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodeleteselfassignedrolemessages");
+
+                    b.Property<bool>("CleverbotEnabled")
+                        .HasColumnType("boolean")
+                        .HasColumnName("cleverbotenabled");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("DeleteMessageOnCommand")
+                        .HasColumnType("boolean")
+                        .HasColumnName("deletemessageoncommand");
+
+                    b.Property<bool>("DeleteStreamOnlineMessage")
+                        .HasColumnType("boolean")
+                        .HasColumnName("deletestreamonlinemessage");
+
+                    b.Property<bool>("DisableGlobalExpressions")
+                        .HasColumnType("boolean")
+                        .HasColumnName("disableglobalexpressions");
+
+                    b.Property<bool>("ExclusiveSelfAssignedRoles")
+                        .HasColumnType("boolean")
+                        .HasColumnName("exclusiveselfassignedroles");
+
+                    b.Property<bool>("FilterInvites")
+                        .HasColumnType("boolean")
+                        .HasColumnName("filterinvites");
+
+                    b.Property<bool>("FilterLinks")
+                        .HasColumnType("boolean")
+                        .HasColumnName("filterlinks");
+
+                    b.Property<bool>("FilterWords")
+                        .HasColumnType("boolean")
+                        .HasColumnName("filterwords");
+
+                    b.Property<decimal?>("GameVoiceChannel")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("gamevoicechannel");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Locale")
+                        .HasColumnType("text")
+                        .HasColumnName("locale");
+
+                    b.Property<string>("MuteRoleName")
+                        .HasColumnType("text")
+                        .HasColumnName("muterolename");
+
+                    b.Property<bool>("NotifyStreamOffline")
+                        .HasColumnType("boolean")
+                        .HasColumnName("notifystreamoffline");
+
+                    b.Property<string>("PermissionRole")
+                        .HasColumnType("text")
+                        .HasColumnName("permissionrole");
+
+                    b.Property<string>("Prefix")
+                        .HasColumnType("text")
+                        .HasColumnName("prefix");
+
+                    b.Property<bool>("StickyRoles")
+                        .HasColumnType("boolean")
+                        .HasColumnName("stickyroles");
+
+                    b.Property<string>("TimeZoneId")
+                        .HasColumnType("text")
+                        .HasColumnName("timezoneid");
+
+                    b.Property<bool>("VerboseErrors")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("boolean")
+                        .HasDefaultValue(true)
+                        .HasColumnName("verboseerrors");
+
+                    b.Property<bool>("VerbosePermissions")
+                        .HasColumnType("boolean")
+                        .HasColumnName("verbosepermissions");
+
+                    b.Property<int>("WarnExpireAction")
+                        .HasColumnType("integer")
+                        .HasColumnName("warnexpireaction");
+
+                    b.Property<int>("WarnExpireHours")
+                        .HasColumnType("integer")
+                        .HasColumnName("warnexpirehours");
+
+                    b.Property<bool>("WarningsInitialized")
+                        .HasColumnType("boolean")
+                        .HasColumnName("warningsinitialized");
+
+                    b.HasKey("Id")
+                        .HasName("pk_guildconfigs");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_guildconfigs_guildid");
+
+                    b.HasIndex("WarnExpireHours")
+                        .HasDatabaseName("ix_guildconfigs_warnexpirehours");
+
+                    b.ToTable("guildconfigs", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
+                {
+                    b.Property<decimal>("GuildId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.HasKey("GuildId")
+                        .HasName("pk_honeypotchannels");
+
+                    b.ToTable("honeypotchannels", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("integer")
+                        .HasColumnName("itemtype");
+
+                    b.Property<decimal>("LogItemId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logitemid");
+
+                    b.Property<int>("LogSettingId")
+                        .HasColumnType("integer")
+                        .HasColumnName("logsettingid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_ignoredlogchannels");
+
+                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                        .IsUnique()
+                        .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
+
+                    b.ToTable("ignoredlogchannels", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_imageonlychannels");
+
+                    b.HasIndex("ChannelId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_imageonlychannels_channelid");
+
+                    b.ToTable("imageonlychannels", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal?>("ChannelCreatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelcreatedid");
+
+                    b.Property<decimal?>("ChannelDestroyedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channeldestroyedid");
+
+                    b.Property<decimal?>("ChannelUpdatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelupdatedid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal?>("LogOtherId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logotherid");
+
+                    b.Property<decimal?>("LogUserPresenceId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("loguserpresenceid");
+
+                    b.Property<decimal?>("LogVoicePresenceId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logvoicepresenceid");
+
+                    b.Property<decimal?>("LogVoicePresenceTTSId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logvoicepresencettsid");
+
+                    b.Property<decimal?>("LogWarnsId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logwarnsid");
+
+                    b.Property<decimal?>("MessageDeletedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messagedeletedid");
+
+                    b.Property<decimal?>("MessageUpdatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageupdatedid");
+
+                    b.Property<decimal?>("ThreadCreatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("threadcreatedid");
+
+                    b.Property<decimal?>("ThreadDeletedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("threaddeletedid");
+
+                    b.Property<decimal?>("UserBannedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userbannedid");
+
+                    b.Property<decimal?>("UserJoinedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userjoinedid");
+
+                    b.Property<decimal?>("UserLeftId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userleftid");
+
+                    b.Property<decimal?>("UserMutedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("usermutedid");
+
+                    b.Property<decimal?>("UserUnbannedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userunbannedid");
+
+                    b.Property<decimal?>("UserUpdatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userupdatedid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_logsettings");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_logsettings_guildid");
+
+                    b.ToTable("logsettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<bool>("AutoDisconnect")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodisconnect");
+
+                    b.Property<bool>("AutoPlay")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autoplay");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal?>("MusicChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("musicchannelid");
+
+                    b.Property<int>("PlayerRepeat")
+                        .HasColumnType("integer")
+                        .HasColumnName("playerrepeat");
+
+                    b.Property<int>("QualityPreset")
+                        .HasColumnType("integer")
+                        .HasColumnName("qualitypreset");
+
+                    b.Property<int>("Volume")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(100)
+                        .HasColumnName("volume");
+
+                    b.HasKey("Id")
+                        .HasName("pk_musicplayersettings");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_musicplayersettings_guildid");
+
+                    b.ToTable("musicplayersettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Author")
+                        .HasColumnType("text")
+                        .HasColumnName("author");
+
+                    b.Property<decimal>("AuthorId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("authorid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.HasKey("Id")
+                        .HasName("pk_musicplaylists");
+
+                    b.ToTable("musicplaylists", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_muteduserid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_muteduserid_guildconfigid");
+
+                    b.ToTable("muteduserid", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.NCPixel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("Color")
+                        .HasColumnType("bigint")
+                        .HasColumnName("color");
+
+                    b.Property<decimal>("OwnerId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("ownerid");
+
+                    b.Property<int>("Position")
+                        .HasColumnType("integer")
+                        .HasColumnName("position");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("bigint")
+                        .HasColumnName("price");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("character varying(256)")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_ncpixel");
+
+                    b.HasAlternateKey("Position")
+                        .HasName("ak_ncpixel_position");
+
+                    b.HasIndex("OwnerId")
+                        .HasDatabaseName("ix_ncpixel_ownerid");
+
+                    b.ToTable("ncpixel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
+                {
+                    b.Property<decimal>("UserId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<int>("AmountCents")
+                        .HasColumnType("integer")
+                        .HasColumnName("amountcents");
+
+                    b.Property<DateTime>("LastCharge")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("lastcharge");
+
+                    b.Property<string>("UniquePlatformUserId")
+                        .HasColumnType("text")
+                        .HasColumnName("uniqueplatformuserid");
+
+                    b.Property<DateTime>("ValidThru")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("validthru");
+
+                    b.HasKey("UserId")
+                        .HasName("pk_patrons");
+
+                    b.HasIndex("UniquePlatformUserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_patrons_uniqueplatformuserid");
+
+                    b.ToTable("patrons", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("integer")
+                        .HasColumnName("index");
+
+                    b.Property<bool>("IsCustomCommand")
+                        .HasColumnType("boolean")
+                        .HasColumnName("iscustomcommand");
+
+                    b.Property<int>("PrimaryTarget")
+                        .HasColumnType("integer")
+                        .HasColumnName("primarytarget");
+
+                    b.Property<decimal>("PrimaryTargetId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("primarytargetid");
+
+                    b.Property<int>("SecondaryTarget")
+                        .HasColumnType("integer")
+                        .HasColumnName("secondarytarget");
+
+                    b.Property<string>("SecondaryTargetName")
+                        .HasColumnType("text")
+                        .HasColumnName("secondarytargetname");
+
+                    b.Property<bool>("State")
+                        .HasColumnType("boolean")
+                        .HasColumnName("state");
+
+                    b.HasKey("Id")
+                        .HasName("pk_permissions");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_permissions_guildconfigid");
+
+                    b.ToTable("permissions", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("Amount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("amount");
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("text")
+                        .HasColumnName("password");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_plantedcurrency");
+
+                    b.HasIndex("ChannelId")
+                        .HasDatabaseName("ix_plantedcurrency_channelid");
+
+                    b.HasIndex("MessageId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_plantedcurrency_messageid");
+
+                    b.ToTable("plantedcurrency", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("MusicPlaylistId")
+                        .HasColumnType("integer")
+                        .HasColumnName("musicplaylistid");
+
+                    b.Property<string>("Provider")
+                        .HasColumnType("text")
+                        .HasColumnName("provider");
+
+                    b.Property<int>("ProviderType")
+                        .HasColumnType("integer")
+                        .HasColumnName("providertype");
+
+                    b.Property<string>("Query")
+                        .HasColumnType("text")
+                        .HasColumnName("query");
+
+                    b.Property<string>("Title")
+                        .HasColumnType("text")
+                        .HasColumnName("title");
+
+                    b.Property<string>("Uri")
+                        .HasColumnType("text")
+                        .HasColumnName("uri");
+
+                    b.HasKey("Id")
+                        .HasName("pk_playlistsong");
+
+                    b.HasIndex("MusicPlaylistId")
+                        .HasDatabaseName("ix_playlistsong_musicplaylistid");
+
+                    b.ToTable("playlistsong", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("AuthorId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("authorid");
+
+                    b.Property<string>("AuthorName")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("authorname");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Keyword")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("keyword");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_quotes");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_quotes_guildid");
+
+                    b.HasIndex("Keyword")
+                        .HasDatabaseName("ix_quotes_keyword");
+
+                    b.ToTable("quotes", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Emote")
+                        .HasMaxLength(100)
+                        .HasColumnType("character varying(100)")
+                        .HasColumnName("emote");
+
+                    b.Property<int>("Group")
+                        .HasColumnType("integer")
+                        .HasColumnName("group");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("LevelReq")
+                        .HasColumnType("integer")
+                        .HasColumnName("levelreq");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_reactionroles");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_reactionroles_guildid");
+
+                    b.HasIndex("MessageId", "Emote")
+                        .IsUnique()
+                        .HasDatabaseName("ix_reactionroles_messageid_emote");
+
+                    b.ToTable("reactionroles", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsPrivate")
+                        .HasColumnType("boolean")
+                        .HasColumnName("isprivate");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<decimal>("ServerId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("serverid");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<DateTime>("When")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("when");
+
+                    b.HasKey("Id")
+                        .HasName("pk_reminders");
+
+                    b.HasIndex("When")
+                        .HasDatabaseName("ix_reminders_when");
+
+                    b.ToTable("reminders", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<TimeSpan>("Interval")
+                        .HasColumnType("interval")
+                        .HasColumnName("interval");
+
+                    b.Property<decimal?>("LastMessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("lastmessageid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<bool>("NoRedundant")
+                        .HasColumnType("boolean")
+                        .HasColumnName("noredundant");
+
+                    b.Property<TimeSpan?>("StartTimeOfDay")
+                        .HasColumnType("interval")
+                        .HasColumnName("starttimeofday");
+
+                    b.HasKey("Id")
+                        .HasName("pk_repeaters");
+
+                    b.ToTable("repeaters", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("AmountRewardedThisMonth")
+                        .HasColumnType("bigint")
+                        .HasColumnName("amountrewardedthismonth");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<DateTime>("LastReward")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("lastreward");
+
+                    b.Property<string>("PlatformUserId")
+                        .HasColumnType("text")
+                        .HasColumnName("platformuserid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_rewardedusers");
+
+                    b.HasIndex("PlatformUserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_rewardedusers_platformuserid");
+
+                    b.ToTable("rewardedusers", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Status")
+                        .HasColumnType("text")
+                        .HasColumnName("status");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_rotatingstatus");
+
+                    b.ToTable("rotatingstatus", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("Group")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(0)
+                        .HasColumnName("group");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("LevelRequirement")
+                        .HasColumnType("integer")
+                        .HasColumnName("levelrequirement");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_selfassignableroles");
+
+                    b.HasIndex("GuildId", "RoleId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
+
+                    b.ToTable("selfassignableroles", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("AuthorId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("authorid");
+
+                    b.Property<string>("Command")
+                        .HasColumnType("text")
+                        .HasColumnName("command");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("integer")
+                        .HasColumnName("index");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("integer")
+                        .HasColumnName("price");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<string>("RoleName")
+                        .HasColumnType("text")
+                        .HasColumnName("rolename");
+
+                    b.Property<decimal?>("RoleRequirement")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("rolerequirement");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_shopentry");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_shopentry_guildconfigid");
+
+                    b.ToTable("shopentry", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("ShopEntryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("shopentryid");
+
+                    b.Property<string>("Text")
+                        .HasColumnType("text")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_shopentryitem");
+
+                    b.HasIndex("ShopEntryId")
+                        .HasDatabaseName("ix_shopentryitem_shopentryid");
+
+                    b.ToTable("shopentryitem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_slowmodeignoredrole");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
+
+                    b.ToTable("slowmodeignoredrole", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_slowmodeignoreduser");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
+
+                    b.ToTable("slowmodeignoreduser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("RoleIds")
+                        .HasColumnType("text")
+                        .HasColumnName("roleids");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_stickyroles");
+
+                    b.HasIndex("GuildId", "UserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_stickyroles_guildid_userid");
+
+                    b.ToTable("stickyroles", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamonlinemessages");
+
+                    b.ToTable("streamonlinemessages", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("streamrolesettingsid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamroleblacklisteduser");
+
+                    b.HasIndex("StreamRoleSettingsId")
+                        .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
+
+                    b.ToTable("streamroleblacklisteduser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("AddRoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("addroleid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("Enabled")
+                        .HasColumnType("boolean")
+                        .HasColumnName("enabled");
+
+                    b.Property<decimal>("FromRoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("fromroleid");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Keyword")
+                        .HasColumnType("text")
+                        .HasColumnName("keyword");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamrolesettings");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_streamrolesettings_guildconfigid");
+
+                    b.ToTable("streamrolesettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("streamrolesettingsid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamrolewhitelisteduser");
+
+                    b.HasIndex("StreamRoleSettingsId")
+                        .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
+
+                    b.ToTable("streamrolewhitelisteduser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("ArchiveId")
+                        .HasColumnType("integer")
+                        .HasColumnName("archiveid");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsDone")
+                        .HasColumnType("boolean")
+                        .HasColumnName("isdone");
+
+                    b.Property<string>("Todo")
+                        .HasColumnType("text")
+                        .HasColumnName("todo");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_todos");
+
+                    b.HasIndex("ArchiveId")
+                        .HasDatabaseName("ix_todos_archiveid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_todos_userid");
+
+                    b.ToTable("todos", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("unbanat");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_unbantimer");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_unbantimer_guildconfigid");
+
+                    b.ToTable("unbantimer", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<DateTime>("UnmuteAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("unmuteat");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_unmutetimer");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_unmutetimer_guildconfigid");
+
+                    b.ToTable("unmutetimer", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("unbanat");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_unroletimer");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_unroletimer_guildconfigid");
+
+                    b.ToTable("unroletimer", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("AwardedXp")
+                        .HasColumnType("bigint")
+                        .HasColumnName("awardedxp");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("NotifyOnLevelUp")
+                        .HasColumnType("integer")
+                        .HasColumnName("notifyonlevelup");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<long>("Xp")
+                        .HasColumnType("bigint")
+                        .HasColumnName("xp");
+
+                    b.HasKey("Id")
+                        .HasName("pk_userxpstats");
+
+                    b.HasIndex("AwardedXp")
+                        .HasDatabaseName("ix_userxpstats_awardedxp");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_userxpstats_guildid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_userxpstats_userid");
+
+                    b.HasIndex("Xp")
+                        .HasDatabaseName("ix_userxpstats_xp");
+
+                    b.HasIndex("UserId", "GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_userxpstats_userid_guildid");
+
+                    b.ToTable("userxpstats", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<decimal>("VoiceChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("voicechannelid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_vcroleinfo");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_vcroleinfo_guildconfigid");
+
+                    b.ToTable("vcroleinfo", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("AffinityId")
+                        .HasColumnType("integer")
+                        .HasColumnName("affinityid");
+
+                    b.Property<int?>("ClaimerId")
+                        .HasColumnType("integer")
+                        .HasColumnName("claimerid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("bigint")
+                        .HasColumnName("price");
+
+                    b.Property<int>("WaifuId")
+                        .HasColumnType("integer")
+                        .HasColumnName("waifuid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_waifuinfo");
+
+                    b.HasIndex("AffinityId")
+                        .HasDatabaseName("ix_waifuinfo_affinityid");
+
+                    b.HasIndex("ClaimerId")
+                        .HasDatabaseName("ix_waifuinfo_claimerid");
+
+                    b.HasIndex("Price")
+                        .HasDatabaseName("ix_waifuinfo_price");
+
+                    b.HasIndex("WaifuId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_waifuinfo_waifuid");
+
+                    b.ToTable("waifuinfo", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("ItemEmoji")
+                        .HasColumnType("text")
+                        .HasColumnName("itememoji");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int?>("WaifuInfoId")
+                        .HasColumnType("integer")
+                        .HasColumnName("waifuinfoid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_waifuitem");
+
+                    b.HasIndex("WaifuInfoId")
+                        .HasDatabaseName("ix_waifuitem_waifuinfoid");
+
+                    b.ToTable("waifuitem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("NewId")
+                        .HasColumnType("integer")
+                        .HasColumnName("newid");
+
+                    b.Property<int?>("OldId")
+                        .HasColumnType("integer")
+                        .HasColumnName("oldid");
+
+                    b.Property<int>("UpdateType")
+                        .HasColumnType("integer")
+                        .HasColumnName("updatetype");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_waifuupdates");
+
+                    b.HasIndex("NewId")
+                        .HasDatabaseName("ix_waifuupdates_newid");
+
+                    b.HasIndex("OldId")
+                        .HasDatabaseName("ix_waifuupdates_oldid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_waifuupdates_userid");
+
+                    b.ToTable("waifuupdates", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("Forgiven")
+                        .HasColumnType("boolean")
+                        .HasColumnName("forgiven");
+
+                    b.Property<string>("ForgivenBy")
+                        .HasColumnType("text")
+                        .HasColumnName("forgivenby");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Moderator")
+                        .HasColumnType("text")
+                        .HasColumnName("moderator");
+
+                    b.Property<string>("Reason")
+                        .HasColumnType("text")
+                        .HasColumnName("reason");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<long>("Weight")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasDefaultValue(1L)
+                        .HasColumnName("weight");
+
+                    b.HasKey("Id")
+                        .HasName("pk_warnings");
+
+                    b.HasIndex("DateAdded")
+                        .HasDatabaseName("ix_warnings_dateadded");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_warnings_guildid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_warnings_userid");
+
+                    b.ToTable("warnings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Count")
+                        .HasColumnType("integer")
+                        .HasColumnName("count");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("Punishment")
+                        .HasColumnType("integer")
+                        .HasColumnName("punishment");
+
+                    b.Property<decimal?>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<int>("Time")
+                        .HasColumnType("integer")
+                        .HasColumnName("time");
+
+                    b.HasKey("Id")
+                        .HasName("pk_warningpunishment");
+
+                    b.HasAlternateKey("GuildId", "Count")
+                        .HasName("ak_warningpunishment_guildid_count");
+
+                    b.ToTable("warningpunishment", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Amount")
+                        .HasColumnType("integer")
+                        .HasColumnName("amount");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("integer")
+                        .HasColumnName("level");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("xpsettingsid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xpcurrencyreward");
+
+                    b.HasIndex("XpSettingsId")
+                        .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
+
+                    b.ToTable("xpcurrencyreward", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("integer")
+                        .HasColumnName("level");
+
+                    b.Property<bool>("Remove")
+                        .HasColumnType("boolean")
+                        .HasColumnName("remove");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("xpsettingsid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xprolereward");
+
+                    b.HasIndex("XpSettingsId", "Level")
+                        .IsUnique()
+                        .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
+
+                    b.ToTable("xprolereward", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<bool>("ServerExcluded")
+                        .HasColumnType("boolean")
+                        .HasColumnName("serverexcluded");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xpsettings");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_xpsettings_guildconfigid");
+
+                    b.ToTable("xpsettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsUsing")
+                        .HasColumnType("boolean")
+                        .HasColumnName("isusing");
+
+                    b.Property<string>("ItemKey")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("itemkey");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("integer")
+                        .HasColumnName("itemtype");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xpshopowneditem");
+
+                    b.HasIndex("UserId", "ItemType", "ItemKey")
+                        .IsUnique()
+                        .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
+
+                    b.ToTable("xpshopowneditem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("AutoDeleteTimer")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(0)
+                        .HasColumnName("autodeletetimer");
+
+                    b.Property<decimal?>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<int>("GreetType")
+                        .HasColumnType("integer")
+                        .HasColumnName("greettype");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<bool>("IsEnabled")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("boolean")
+                        .HasDefaultValue(false)
+                        .HasColumnName("isenabled");
+
+                    b.Property<string>("MessageText")
+                        .HasColumnType("text")
+                        .HasColumnName("messagetext");
+
+                    b.HasKey("Id")
+                        .HasName("pk_greetsettings");
+
+                    b.HasIndex("GuildId", "GreetType")
+                        .IsUnique()
+                        .HasDatabaseName("ix_greetsettings_guildid_greettype");
+
+                    b.ToTable("greetsettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Services.UserBetStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Game")
+                        .HasColumnType("integer")
+                        .HasColumnName("game");
+
+                    b.Property<long>("LoseCount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("losecount");
+
+                    b.Property<long>("MaxBet")
+                        .HasColumnType("bigint")
+                        .HasColumnName("maxbet");
+
+                    b.Property<long>("MaxWin")
+                        .HasColumnType("bigint")
+                        .HasColumnName("maxwin");
+
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("numeric")
+                        .HasColumnName("paidout");
+
+                    b.Property<decimal>("TotalBet")
+                        .HasColumnType("numeric")
+                        .HasColumnName("totalbet");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<long>("WinCount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("wincount");
+
+                    b.HasKey("Id")
+                        .HasName("pk_userbetstats");
+
+                    b.HasIndex("UserId", "Game")
+                        .IsUnique()
+                        .HasDatabaseName("ix_userbetstats_userid_game");
+
+                    b.ToTable("userbetstats", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiAltSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiAltSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_antialtsetting_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiRaidSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiRaidSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_antiraidsetting_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AntiSpamSetting", null)
+                        .WithMany("IgnoredChannels")
+                        .HasForeignKey("AntiSpamSettingId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_antispamignore_antispamsetting_antispamsettingid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiSpamSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiSpamSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_antispamsetting_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                        .WithMany("Users")
+                        .HasForeignKey("ChannelId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_autotranslateusers_autotranslatechannels_channelid");
+
+                    b.Navigation("Channel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Applicants")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubapplicants_clubs_clubid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubapplicants_discorduser_userid");
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Bans")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubbans_clubs_clubid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubbans_discorduser_userid");
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                        .OnDelete(DeleteBehavior.SetNull)
+                        .HasConstraintName("fk_clubs_discorduser_ownerid");
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandAliases")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_commandalias_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandCooldowns")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_commandcooldown_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("DelMsgOnCmdChannels")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_delmsgoncmdchannel_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Members")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.NoAction)
+                        .HasConstraintName("fk_discorduser_clubs_clubid");
+
+                    b.Navigation("Club");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("ExclusionList")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_excludeditem_xpsettings_xpsettingsid");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("FeedSubs")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_feedsub_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterInvitesChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filterchannelid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterLinksChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filterlinkschannelid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterWordsChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filterwordschannelid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilteredWords")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filteredword_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FollowedStreams")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_followedstream_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("GenerateCurrencyChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_gcchannelid_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GiveawayModel", null)
+                        .WithMany("Participants")
+                        .HasForeignKey("GiveawayId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_giveawayuser_giveawaymodel_giveawayid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("SelfAssignableRoleGroupNames")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_groupname_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                        .WithMany("LogIgnores")
+                        .HasForeignKey("LogSettingId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_ignoredlogchannels_logsettings_logsettingid");
+
+                    b.Navigation("LogSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("MutedUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_muteduserid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("Permissions")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_permissions_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.MusicPlaylist", null)
+                        .WithMany("Songs")
+                        .HasForeignKey("MusicPlaylistId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_playlistsong_musicplaylists_musicplaylistid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("ShopEntries")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_shopentry_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ShopEntry", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ShopEntryId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_shopentryitem_shopentry_shopentryid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredRoles")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_slowmodeignoredrole_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_slowmodeignoreduser_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Blacklist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_streamroleblacklisteduser_streamrolesettings_streamrolesett~");
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("StreamRole")
+                        .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_streamrolesettings_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Whitelist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_streamrolewhitelisteduser_streamrolesettings_streamrolesett~");
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ArchiveId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_todos_todosarchive_archiveid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnbanTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_unbantimer_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnmuteTimers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_unmutetimer_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnroleTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_unroletimer_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("VcRoleInfos")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_vcroleinfo_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Affinity")
+                        .WithMany()
+                        .HasForeignKey("AffinityId")
+                        .HasConstraintName("fk_waifuinfo_discorduser_affinityid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
+                        .WithMany()
+                        .HasForeignKey("ClaimerId")
+                        .HasConstraintName("fk_waifuinfo_discorduser_claimerid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_waifuinfo_discorduser_waifuid");
+
+                    b.Navigation("Affinity");
+
+                    b.Navigation("Claimer");
+
+                    b.Navigation("Waifu");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                        .WithMany("Items")
+                        .HasForeignKey("WaifuInfoId")
+                        .HasConstraintName("fk_waifuitem_waifuinfo_waifuinfoid");
+
+                    b.Navigation("WaifuInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "New")
+                        .WithMany()
+                        .HasForeignKey("NewId")
+                        .HasConstraintName("fk_waifuupdates_discorduser_newid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
+                        .WithMany()
+                        .HasForeignKey("OldId")
+                        .HasConstraintName("fk_waifuupdates_discorduser_oldid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_waifuupdates_discorduser_userid");
+
+                    b.Navigation("New");
+
+                    b.Navigation("Old");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("CurrencyRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_xpcurrencyreward_xpsettings_xpsettingsid");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("RoleRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_xprolereward_xpsettings_xpsettingsid");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("XpSettings")
+                        .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_xpsettings_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.Navigation("IgnoredChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
+                {
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.Navigation("Applicants");
+
+                    b.Navigation("Bans");
+
+                    b.Navigation("Members");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
+                {
+                    b.Navigation("Participants");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
+                {
+                    b.Navigation("AntiAltSetting");
+
+                    b.Navigation("AntiRaidSetting");
+
+                    b.Navigation("AntiSpamSetting");
+
+                    b.Navigation("CommandAliases");
+
+                    b.Navigation("CommandCooldowns");
+
+                    b.Navigation("DelMsgOnCmdChannels");
+
+                    b.Navigation("FeedSubs");
+
+                    b.Navigation("FilterInvitesChannelIds");
+
+                    b.Navigation("FilterLinksChannelIds");
+
+                    b.Navigation("FilterWordsChannelIds");
+
+                    b.Navigation("FilteredWords");
+
+                    b.Navigation("FollowedStreams");
+
+                    b.Navigation("GenerateCurrencyChannelIds");
+
+                    b.Navigation("MutedUsers");
+
+                    b.Navigation("Permissions");
+
+                    b.Navigation("SelfAssignableRoleGroupNames");
+
+                    b.Navigation("ShopEntries");
+
+                    b.Navigation("SlowmodeIgnoredRoles");
+
+                    b.Navigation("SlowmodeIgnoredUsers");
+
+                    b.Navigation("StreamRole");
+
+                    b.Navigation("UnbanTimer");
+
+                    b.Navigation("UnmuteTimers");
+
+                    b.Navigation("UnroleTimer");
+
+                    b.Navigation("VcRoleInfos");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
+                {
+                    b.Navigation("LogIgnores");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
+                {
+                    b.Navigation("Songs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.Navigation("Blacklist");
+
+                    b.Navigation("Whitelist");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.Navigation("CurrencyRewards");
+
+                    b.Navigation("ExclusionList");
+
+                    b.Navigation("RoleRewards");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.cs b/src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.cs
new file mode 100644
index 0000000..91a9dde
--- /dev/null
+++ b/src/EllieBot/Migrations/PostgreSql/20241105024753_betstats.cs
@@ -0,0 +1,48 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace EllieBot.Migrations.PostgreSql
+{
+    /// <inheritdoc />
+    public partial class betstats : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "userbetstats",
+                columns: table => new
+                {
+                    id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    userid = table.Column<decimal>(type: "numeric(20,0)", nullable: false),
+                    game = table.Column<int>(type: "integer", nullable: false),
+                    wincount = table.Column<long>(type: "bigint", nullable: false),
+                    losecount = table.Column<long>(type: "bigint", nullable: false),
+                    totalbet = table.Column<decimal>(type: "numeric", nullable: false),
+                    paidout = table.Column<decimal>(type: "numeric", nullable: false),
+                    maxwin = table.Column<long>(type: "bigint", nullable: false),
+                    maxbet = table.Column<long>(type: "bigint", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_userbetstats", x => x.id);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "ix_userbetstats_userid_game",
+                table: "userbetstats",
+                columns: new[] { "userid", "game" },
+                unique: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "userbetstats");
+        }
+    }
+}
diff --git a/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs b/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
index fc81310..8752f30 100644
--- a/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
+++ b/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
@@ -1,9 +1,9 @@
 // <auto-generated />
 using System;
+using EllieBot.Db;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore.Infrastructure;
 using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using EllieBot.Db;
 using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
 
 #nullable disable
@@ -23,3825 +23,3876 @@ namespace EllieBot.Migrations.PostgreSql
             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<int>("Action")
-                    .HasColumnType("integer")
-                    .HasColumnName("action");
+                    b.Property<int>("Action")
+                        .HasColumnType("integer")
+                        .HasColumnName("action");
 
-                b.Property<int>("ActionDurationMinutes")
-                    .HasColumnType("integer")
-                    .HasColumnName("actiondurationminutes");
+                    b.Property<int>("ActionDurationMinutes")
+                        .HasColumnType("integer")
+                        .HasColumnName("actiondurationminutes");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-                b.Property<TimeSpan>("MinAge")
-                    .HasColumnType("interval")
-                    .HasColumnName("minage");
+                    b.Property<TimeSpan>("MinAge")
+                        .HasColumnType("interval")
+                        .HasColumnName("minage");
 
-                b.Property<decimal?>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
+                    b.Property<decimal?>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
 
-                b.HasKey("Id")
-                    .HasName("pk_antialtsetting");
+                    b.HasKey("Id")
+                        .HasName("pk_antialtsetting");
 
-                b.HasIndex("GuildConfigId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_antialtsetting_guildconfigid");
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_antialtsetting_guildconfigid");
 
-                b.ToTable("antialtsetting", (string)null);
-            });
+                    b.ToTable("antialtsetting", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<int>("Action")
-                    .HasColumnType("integer")
-                    .HasColumnName("action");
+                    b.Property<int>("Action")
+                        .HasColumnType("integer")
+                        .HasColumnName("action");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-                b.Property<int>("PunishDuration")
-                    .HasColumnType("integer")
-                    .HasColumnName("punishduration");
+                    b.Property<int>("PunishDuration")
+                        .HasColumnType("integer")
+                        .HasColumnName("punishduration");
 
-                b.Property<int>("Seconds")
-                    .HasColumnType("integer")
-                    .HasColumnName("seconds");
+                    b.Property<int>("Seconds")
+                        .HasColumnType("integer")
+                        .HasColumnName("seconds");
 
-                b.Property<int>("UserThreshold")
-                    .HasColumnType("integer")
-                    .HasColumnName("userthreshold");
+                    b.Property<int>("UserThreshold")
+                        .HasColumnType("integer")
+                        .HasColumnName("userthreshold");
 
-                b.HasKey("Id")
-                    .HasName("pk_antiraidsetting");
+                    b.HasKey("Id")
+                        .HasName("pk_antiraidsetting");
 
-                b.HasIndex("GuildConfigId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_antiraidsetting_guildconfigid");
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_antiraidsetting_guildconfigid");
 
-                b.ToTable("antiraidsetting", (string)null);
-            });
+                    b.ToTable("antiraidsetting", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<int?>("AntiSpamSettingId")
-                    .HasColumnType("integer")
-                    .HasColumnName("antispamsettingid");
+                    b.Property<int?>("AntiSpamSettingId")
+                        .HasColumnType("integer")
+                        .HasColumnName("antispamsettingid");
 
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.HasKey("Id")
-                    .HasName("pk_antispamignore");
+                    b.HasKey("Id")
+                        .HasName("pk_antispamignore");
 
-                b.HasIndex("AntiSpamSettingId")
-                    .HasDatabaseName("ix_antispamignore_antispamsettingid");
+                    b.HasIndex("AntiSpamSettingId")
+                        .HasDatabaseName("ix_antispamignore_antispamsettingid");
 
-                b.ToTable("antispamignore", (string)null);
-            });
+                    b.ToTable("antispamignore", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<int>("Action")
-                    .HasColumnType("integer")
-                    .HasColumnName("action");
+                    b.Property<int>("Action")
+                        .HasColumnType("integer")
+                        .HasColumnName("action");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-                b.Property<int>("MessageThreshold")
-                    .HasColumnType("integer")
-                    .HasColumnName("messagethreshold");
+                    b.Property<int>("MessageThreshold")
+                        .HasColumnType("integer")
+                        .HasColumnName("messagethreshold");
 
-                b.Property<int>("MuteTime")
-                    .HasColumnType("integer")
-                    .HasColumnName("mutetime");
+                    b.Property<int>("MuteTime")
+                        .HasColumnType("integer")
+                        .HasColumnName("mutetime");
 
-                b.Property<decimal?>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
+                    b.Property<decimal?>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
 
-                b.HasKey("Id")
-                    .HasName("pk_antispamsetting");
+                    b.HasKey("Id")
+                        .HasName("pk_antispamsetting");
 
-                b.HasIndex("GuildConfigId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_antispamsetting_guildconfigid");
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_antispamsetting_guildconfigid");
 
-                b.ToTable("antispamsetting", (string)null);
-            });
+                    b.ToTable("antispamsetting", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
 
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
 
-                b.HasKey("Id")
-                    .HasName("pk_todosarchive");
+                    b.HasKey("Id")
+                        .HasName("pk_todosarchive");
 
-                b.ToTable("todosarchive", (string)null);
-            });
+                    b.ToTable("todosarchive", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoCommand", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
 
-                b.Property<string>("ChannelName")
-                    .HasColumnType("text")
-                    .HasColumnName("channelname");
+                    b.Property<string>("ChannelName")
+                        .HasColumnType("text")
+                        .HasColumnName("channelname");
 
-                b.Property<string>("CommandText")
-                    .HasColumnType("text")
-                    .HasColumnName("commandtext");
+                    b.Property<string>("CommandText")
+                        .HasColumnType("text")
+                        .HasColumnName("commandtext");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal?>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
+                    b.Property<decimal?>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.Property<string>("GuildName")
-                    .HasColumnType("text")
-                    .HasColumnName("guildname");
+                    b.Property<string>("GuildName")
+                        .HasColumnType("text")
+                        .HasColumnName("guildname");
 
-                b.Property<int>("Interval")
-                    .HasColumnType("integer")
-                    .HasColumnName("interval");
+                    b.Property<int>("Interval")
+                        .HasColumnType("integer")
+                        .HasColumnName("interval");
 
-                b.Property<decimal?>("VoiceChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("voicechannelid");
+                    b.Property<decimal?>("VoiceChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("voicechannelid");
 
-                b.Property<string>("VoiceChannelName")
-                    .HasColumnType("text")
-                    .HasColumnName("voicechannelname");
+                    b.Property<string>("VoiceChannelName")
+                        .HasColumnType("text")
+                        .HasColumnName("voicechannelname");
 
-                b.HasKey("Id")
-                    .HasName("pk_autocommands");
+                    b.HasKey("Id")
+                        .HasName("pk_autocommands");
 
-                b.ToTable("autocommands", (string)null);
-            });
+                    b.ToTable("autocommands", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoPublishChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.HasKey("Id")
-                    .HasName("pk_autopublishchannel");
+                    b.HasKey("Id")
+                        .HasName("pk_autopublishchannel");
 
-                b.HasIndex("GuildId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_autopublishchannel_guildid");
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_autopublishchannel_guildid");
 
-                b.ToTable("autopublishchannel", (string)null);
-            });
+                    b.ToTable("autopublishchannel", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<bool>("AutoDelete")
-                    .HasColumnType("boolean")
-                    .HasColumnName("autodelete");
+                    b.Property<bool>("AutoDelete")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodelete");
 
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.HasKey("Id")
-                    .HasName("pk_autotranslatechannels");
+                    b.HasKey("Id")
+                        .HasName("pk_autotranslatechannels");
 
-                b.HasIndex("ChannelId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_autotranslatechannels_channelid");
+                    b.HasIndex("ChannelId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_autotranslatechannels_channelid");
 
-                b.HasIndex("GuildId")
-                    .HasDatabaseName("ix_autotranslatechannels_guildid");
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_autotranslatechannels_guildid");
 
-                b.ToTable("autotranslatechannels", (string)null);
-            });
+                    b.ToTable("autotranslatechannels", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<int>("ChannelId")
-                    .HasColumnType("integer")
-                    .HasColumnName("channelid");
+                    b.Property<int>("ChannelId")
+                        .HasColumnType("integer")
+                        .HasColumnName("channelid");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<string>("Source")
-                    .HasColumnType("text")
-                    .HasColumnName("source");
+                    b.Property<string>("Source")
+                        .HasColumnType("text")
+                        .HasColumnName("source");
 
-                b.Property<string>("Target")
-                    .HasColumnType("text")
-                    .HasColumnName("target");
+                    b.Property<string>("Target")
+                        .HasColumnType("text")
+                        .HasColumnName("target");
 
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
 
-                b.HasKey("Id")
-                    .HasName("pk_autotranslateusers");
+                    b.HasKey("Id")
+                        .HasName("pk_autotranslateusers");
 
-                b.HasAlternateKey("ChannelId", "UserId")
-                    .HasName("ak_autotranslateusers_channelid_userid");
+                    b.HasAlternateKey("ChannelId", "UserId")
+                        .HasName("ak_autotranslateusers_channelid_userid");
 
-                b.ToTable("autotranslateusers", (string)null);
-            });
+                    b.ToTable("autotranslateusers", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.BanTemplate", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.Property<int?>("PruneDays")
-                    .HasColumnType("integer")
-                    .HasColumnName("prunedays");
+                    b.Property<int?>("PruneDays")
+                        .HasColumnType("integer")
+                        .HasColumnName("prunedays");
 
-                b.Property<string>("Text")
-                    .HasColumnType("text")
-                    .HasColumnName("text");
+                    b.Property<string>("Text")
+                        .HasColumnType("text")
+                        .HasColumnName("text");
 
-                b.HasKey("Id")
-                    .HasName("pk_bantemplates");
+                    b.HasKey("Id")
+                        .HasName("pk_bantemplates");
 
-                b.HasIndex("GuildId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_bantemplates_guildid");
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_bantemplates_guildid");
 
-                b.ToTable("bantemplates", (string)null);
-            });
+                    b.ToTable("bantemplates", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.BankUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<long>("Balance")
-                    .HasColumnType("bigint")
-                    .HasColumnName("balance");
+                    b.Property<long>("Balance")
+                        .HasColumnType("bigint")
+                        .HasColumnName("balance");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
 
-                b.HasKey("Id")
-                    .HasName("pk_bankusers");
+                    b.HasKey("Id")
+                        .HasName("pk_bankusers");
 
-                b.HasIndex("UserId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_bankusers_userid");
+                    b.HasIndex("UserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_bankusers_userid");
 
-                b.ToTable("bankusers", (string)null);
-            });
+                    b.ToTable("bankusers", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.BlacklistEntry", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal>("ItemId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("itemid");
+                    b.Property<decimal>("ItemId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("itemid");
 
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
 
-                b.HasKey("Id")
-                    .HasName("pk_blacklist");
+                    b.HasKey("Id")
+                        .HasName("pk_blacklist");
 
-                b.ToTable("blacklist", (string)null);
-            });
+                    b.ToTable("blacklist", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
-            {
-                b.Property<int>("ClubId")
-                    .HasColumnType("integer")
-                    .HasColumnName("clubid");
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("integer")
+                        .HasColumnName("clubid");
 
-                b.Property<int>("UserId")
-                    .HasColumnType("integer")
-                    .HasColumnName("userid");
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("userid");
 
-                b.HasKey("ClubId", "UserId")
-                    .HasName("pk_clubapplicants");
+                    b.HasKey("ClubId", "UserId")
+                        .HasName("pk_clubapplicants");
 
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_clubapplicants_userid");
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_clubapplicants_userid");
 
-                b.ToTable("clubapplicants", (string)null);
-            });
+                    b.ToTable("clubapplicants", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
-            {
-                b.Property<int>("ClubId")
-                    .HasColumnType("integer")
-                    .HasColumnName("clubid");
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("integer")
+                        .HasColumnName("clubid");
 
-                b.Property<int>("UserId")
-                    .HasColumnType("integer")
-                    .HasColumnName("userid");
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("userid");
 
-                b.HasKey("ClubId", "UserId")
-                    .HasName("pk_clubbans");
+                    b.HasKey("ClubId", "UserId")
+                        .HasName("pk_clubbans");
 
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_clubbans_userid");
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_clubbans_userid");
 
-                b.ToTable("clubbans", (string)null);
-            });
+                    b.ToTable("clubbans", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<string>("Description")
-                    .HasColumnType("text")
-                    .HasColumnName("description");
+                    b.Property<string>("Description")
+                        .HasColumnType("text")
+                        .HasColumnName("description");
 
-                b.Property<string>("ImageUrl")
-                    .HasColumnType("text")
-                    .HasColumnName("imageurl");
+                    b.Property<string>("ImageUrl")
+                        .HasColumnType("text")
+                        .HasColumnName("imageurl");
 
-                b.Property<string>("Name")
-                    .HasMaxLength(20)
-                    .HasColumnType("character varying(20)")
-                    .HasColumnName("name");
+                    b.Property<string>("Name")
+                        .HasMaxLength(20)
+                        .HasColumnType("character varying(20)")
+                        .HasColumnName("name");
 
-                b.Property<int?>("OwnerId")
-                    .HasColumnType("integer")
-                    .HasColumnName("ownerid");
+                    b.Property<int?>("OwnerId")
+                        .HasColumnType("integer")
+                        .HasColumnName("ownerid");
 
-                b.Property<int>("Xp")
-                    .HasColumnType("integer")
-                    .HasColumnName("xp");
+                    b.Property<int>("Xp")
+                        .HasColumnType("integer")
+                        .HasColumnName("xp");
 
-                b.HasKey("Id")
-                    .HasName("pk_clubs");
+                    b.HasKey("Id")
+                        .HasName("pk_clubs");
 
-                b.HasIndex("Name")
-                    .IsUnique()
-                    .HasDatabaseName("ix_clubs_name");
+                    b.HasIndex("Name")
+                        .IsUnique()
+                        .HasDatabaseName("ix_clubs_name");
 
-                b.HasIndex("OwnerId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_clubs_ownerid");
+                    b.HasIndex("OwnerId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_clubs_ownerid");
 
-                b.ToTable("clubs", (string)null);
-            });
+                    b.ToTable("clubs", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-                b.Property<string>("Mapping")
-                    .HasColumnType("text")
-                    .HasColumnName("mapping");
+                    b.Property<string>("Mapping")
+                        .HasColumnType("text")
+                        .HasColumnName("mapping");
 
-                b.Property<string>("Trigger")
-                    .HasColumnType("text")
-                    .HasColumnName("trigger");
+                    b.Property<string>("Trigger")
+                        .HasColumnType("text")
+                        .HasColumnName("trigger");
 
-                b.HasKey("Id")
-                    .HasName("pk_commandalias");
+                    b.HasKey("Id")
+                        .HasName("pk_commandalias");
 
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_commandalias_guildconfigid");
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_commandalias_guildconfigid");
 
-                b.ToTable("commandalias", (string)null);
-            });
+                    b.ToTable("commandalias", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<string>("CommandName")
-                    .HasColumnType("text")
-                    .HasColumnName("commandname");
+                    b.Property<string>("CommandName")
+                        .HasColumnType("text")
+                        .HasColumnName("commandname");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-                b.Property<int>("Seconds")
-                    .HasColumnType("integer")
-                    .HasColumnName("seconds");
+                    b.Property<int>("Seconds")
+                        .HasColumnType("integer")
+                        .HasColumnName("seconds");
 
-                b.HasKey("Id")
-                    .HasName("pk_commandcooldown");
+                    b.HasKey("Id")
+                        .HasName("pk_commandcooldown");
 
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_commandcooldown_guildconfigid");
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_commandcooldown_guildconfigid");
 
-                b.ToTable("commandcooldown", (string)null);
-            });
+                    b.ToTable("commandcooldown", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.CurrencyTransaction", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<long>("Amount")
-                    .HasColumnType("bigint")
-                    .HasColumnName("amount");
+                    b.Property<long>("Amount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("amount");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<string>("Extra")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("extra");
+                    b.Property<string>("Extra")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("extra");
 
-                b.Property<string>("Note")
-                    .HasColumnType("text")
-                    .HasColumnName("note");
+                    b.Property<string>("Note")
+                        .HasColumnType("text")
+                        .HasColumnName("note");
 
-                b.Property<decimal?>("OtherId")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("otherid")
-                    .HasDefaultValueSql("NULL");
+                    b.Property<decimal?>("OtherId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("otherid")
+                        .HasDefaultValueSql("NULL");
 
-                b.Property<string>("Type")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("type");
+                    b.Property<string>("Type")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("type");
 
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
 
-                b.HasKey("Id")
-                    .HasName("pk_currencytransactions");
+                    b.HasKey("Id")
+                        .HasName("pk_currencytransactions");
 
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_currencytransactions_userid");
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_currencytransactions_userid");
 
-                b.ToTable("currencytransactions", (string)null);
-            });
+                    b.ToTable("currencytransactions", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-                b.Property<bool>("State")
-                    .HasColumnType("boolean")
-                    .HasColumnName("state");
+                    b.Property<bool>("State")
+                        .HasColumnType("boolean")
+                        .HasColumnName("state");
 
-                b.HasKey("Id")
-                    .HasName("pk_delmsgoncmdchannel");
+                    b.HasKey("Id")
+                        .HasName("pk_delmsgoncmdchannel");
 
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_delmsgoncmdchannel_guildconfigid");
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_delmsgoncmdchannel_guildconfigid");
 
-                b.ToTable("delmsgoncmdchannel", (string)null);
-            });
+                    b.ToTable("delmsgoncmdchannel", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.DiscordPermOverride", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<string>("Command")
-                    .HasColumnType("text")
-                    .HasColumnName("command");
+                    b.Property<string>("Command")
+                        .HasColumnType("text")
+                        .HasColumnName("command");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<decimal?>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
+                    b.Property<decimal?>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.Property<decimal>("Perm")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("perm");
+                    b.Property<decimal>("Perm")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("perm");
 
-                b.HasKey("Id")
-                    .HasName("pk_discordpermoverrides");
+                    b.HasKey("Id")
+                        .HasName("pk_discordpermoverrides");
 
-                b.HasIndex("GuildId", "Command")
-                    .IsUnique()
-                    .HasDatabaseName("ix_discordpermoverrides_guildid_command");
+                    b.HasIndex("GuildId", "Command")
+                        .IsUnique()
+                        .HasDatabaseName("ix_discordpermoverrides_guildid_command");
 
-                b.ToTable("discordpermoverrides", (string)null);
-            });
+                    b.ToTable("discordpermoverrides", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<string>("AvatarId")
-                    .HasColumnType("text")
-                    .HasColumnName("avatarid");
+                    b.Property<string>("AvatarId")
+                        .HasColumnType("text")
+                        .HasColumnName("avatarid");
 
-                b.Property<int?>("ClubId")
-                    .HasColumnType("integer")
-                    .HasColumnName("clubid");
+                    b.Property<int?>("ClubId")
+                        .HasColumnType("integer")
+                        .HasColumnName("clubid");
 
-                b.Property<long>("CurrencyAmount")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("bigint")
-                    .HasDefaultValue(0L)
-                    .HasColumnName("currencyamount");
+                    b.Property<long>("CurrencyAmount")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasDefaultValue(0L)
+                        .HasColumnName("currencyamount");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<bool>("IsClubAdmin")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("boolean")
-                    .HasDefaultValue(false)
-                    .HasColumnName("isclubadmin");
+                    b.Property<bool>("IsClubAdmin")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("boolean")
+                        .HasDefaultValue(false)
+                        .HasColumnName("isclubadmin");
 
-                b.Property<int>("NotifyOnLevelUp")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasDefaultValue(0)
-                    .HasColumnName("notifyonlevelup");
+                    b.Property<int>("NotifyOnLevelUp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(0)
+                        .HasColumnName("notifyonlevelup");
 
-                b.Property<long>("TotalXp")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("bigint")
-                    .HasDefaultValue(0L)
-                    .HasColumnName("totalxp");
+                    b.Property<long>("TotalXp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasDefaultValue(0L)
+                        .HasColumnName("totalxp");
 
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
 
-                b.Property<string>("Username")
-                    .HasColumnType("text")
-                    .HasColumnName("username");
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
 
-                b.HasKey("Id")
-                    .HasName("pk_discorduser");
+                    b.HasKey("Id")
+                        .HasName("pk_discorduser");
 
-                b.HasAlternateKey("UserId")
-                    .HasName("ak_discorduser_userid");
+                    b.HasAlternateKey("UserId")
+                        .HasName("ak_discorduser_userid");
 
-                b.HasIndex("ClubId")
-                    .HasDatabaseName("ix_discorduser_clubid");
+                    b.HasIndex("ClubId")
+                        .HasDatabaseName("ix_discorduser_clubid");
 
-                b.HasIndex("CurrencyAmount")
-                    .HasDatabaseName("ix_discorduser_currencyamount");
+                    b.HasIndex("CurrencyAmount")
+                        .HasDatabaseName("ix_discorduser_currencyamount");
 
-                b.HasIndex("TotalXp")
-                    .HasDatabaseName("ix_discorduser_totalxp");
+                    b.HasIndex("TotalXp")
+                        .HasDatabaseName("ix_discorduser_totalxp");
 
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_discorduser_userid");
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_discorduser_userid");
 
-                b.HasIndex("Username")
-                    .HasDatabaseName("ix_discorduser_username");
+                    b.HasIndex("Username")
+                        .HasDatabaseName("ix_discorduser_username");
 
-                b.ToTable("discorduser", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("ItemId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("itemid");
-
-                b.Property<int>("ItemType")
-                    .HasColumnType("integer")
-                    .HasColumnName("itemtype");
-
-                b.Property<int?>("XpSettingsId")
-                    .HasColumnType("integer")
-                    .HasColumnName("xpsettingsid");
-
-                b.HasKey("Id")
-                    .HasName("pk_excludeditem");
-
-                b.HasIndex("XpSettingsId")
-                    .HasDatabaseName("ix_excludeditem_xpsettingsid");
-
-                b.ToTable("excludeditem", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<string>("Message")
-                    .HasColumnType("text")
-                    .HasColumnName("message");
-
-                b.Property<string>("Url")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("url");
-
-                b.HasKey("Id")
-                    .HasName("pk_feedsub");
-
-                b.HasAlternateKey("GuildConfigId", "Url")
-                    .HasName("ak_feedsub_guildconfigid_url");
-
-                b.ToTable("feedsub", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.HasKey("Id")
-                    .HasName("pk_filterchannelid");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_filterchannelid_guildconfigid");
-
-                b.ToTable("filterchannelid", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.HasKey("Id")
-                    .HasName("pk_filterlinkschannelid");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
-
-                b.ToTable("filterlinkschannelid", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.HasKey("Id")
-                    .HasName("pk_filterwordschannelid");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
-
-                b.ToTable("filterwordschannelid", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<string>("Word")
-                    .HasColumnType("text")
-                    .HasColumnName("word");
-
-                b.HasKey("Id")
-                    .HasName("pk_filteredword");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_filteredword_guildconfigid");
-
-                b.ToTable("filteredword", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FlagTranslateChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.HasKey("Id")
-                    .HasName("pk_flagtranslatechannel");
-
-                b.HasIndex("GuildId", "ChannelId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_flagtranslatechannel_guildid_channelid");
-
-                b.ToTable("flagtranslatechannel", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<string>("Message")
-                    .HasColumnType("text")
-                    .HasColumnName("message");
-
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
-
-                b.Property<string>("Username")
-                    .HasColumnType("text")
-                    .HasColumnName("username");
-
-                b.HasKey("Id")
-                    .HasName("pk_followedstream");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_followedstream_guildconfigid");
-
-                b.ToTable("followedstream", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.HasKey("Id")
-                    .HasName("pk_gcchannelid");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_gcchannelid_guildconfigid");
-
-                b.ToTable("gcchannelid", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("Bet")
-                    .HasColumnType("numeric")
-                    .HasColumnName("bet");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<string>("Feature")
-                    .HasColumnType("text")
-                    .HasColumnName("feature");
-
-                b.Property<decimal>("PaidOut")
-                    .HasColumnType("numeric")
-                    .HasColumnName("paidout");
-
-                b.HasKey("Id")
-                    .HasName("pk_gamblingstats");
-
-                b.HasIndex("Feature")
-                    .IsUnique()
-                    .HasDatabaseName("ix_gamblingstats_feature");
-
-                b.ToTable("gamblingstats", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime>("EndsAt")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("endsat");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<string>("Message")
-                    .HasColumnType("text")
-                    .HasColumnName("message");
-
-                b.Property<decimal>("MessageId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("messageid");
-
-                b.HasKey("Id")
-                    .HasName("pk_giveawaymodel");
-
-                b.ToTable("giveawaymodel", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<int>("GiveawayId")
-                    .HasColumnType("integer")
-                    .HasColumnName("giveawayid");
-
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_giveawayuser");
-
-                b.HasIndex("GiveawayId", "UserId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
-
-                b.ToTable("giveawayuser", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
-
-                b.Property<int>("Number")
-                    .HasColumnType("integer")
-                    .HasColumnName("number");
-
-                b.HasKey("Id")
-                    .HasName("pk_groupname");
-
-                b.HasIndex("GuildConfigId", "Number")
-                    .IsUnique()
-                    .HasDatabaseName("ix_groupname_guildconfigid_number");
-
-                b.ToTable("groupname", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<string>("AutoAssignRoleIds")
-                    .HasColumnType("text")
-                    .HasColumnName("autoassignroleids");
-
-                b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
-                    .HasColumnType("boolean")
-                    .HasColumnName("autodeleteselfassignedrolemessages");
-
-                b.Property<bool>("CleverbotEnabled")
-                    .HasColumnType("boolean")
-                    .HasColumnName("cleverbotenabled");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<bool>("DeleteMessageOnCommand")
-                    .HasColumnType("boolean")
-                    .HasColumnName("deletemessageoncommand");
-
-                b.Property<bool>("DeleteStreamOnlineMessage")
-                    .HasColumnType("boolean")
-                    .HasColumnName("deletestreamonlinemessage");
-
-                b.Property<bool>("DisableGlobalExpressions")
-                    .HasColumnType("boolean")
-                    .HasColumnName("disableglobalexpressions");
-
-                b.Property<bool>("ExclusiveSelfAssignedRoles")
-                    .HasColumnType("boolean")
-                    .HasColumnName("exclusiveselfassignedroles");
-
-                b.Property<bool>("FilterInvites")
-                    .HasColumnType("boolean")
-                    .HasColumnName("filterinvites");
-
-                b.Property<bool>("FilterLinks")
-                    .HasColumnType("boolean")
-                    .HasColumnName("filterlinks");
-
-                b.Property<bool>("FilterWords")
-                    .HasColumnType("boolean")
-                    .HasColumnName("filterwords");
-
-                b.Property<decimal?>("GameVoiceChannel")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("gamevoicechannel");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<string>("Locale")
-                    .HasColumnType("text")
-                    .HasColumnName("locale");
-
-                b.Property<string>("MuteRoleName")
-                    .HasColumnType("text")
-                    .HasColumnName("muterolename");
-
-                b.Property<bool>("NotifyStreamOffline")
-                    .HasColumnType("boolean")
-                    .HasColumnName("notifystreamoffline");
-
-                b.Property<string>("PermissionRole")
-                    .HasColumnType("text")
-                    .HasColumnName("permissionrole");
-
-                b.Property<string>("Prefix")
-                    .HasColumnType("text")
-                    .HasColumnName("prefix");
-
-                b.Property<bool>("StickyRoles")
-                    .HasColumnType("boolean")
-                    .HasColumnName("stickyroles");
-
-                b.Property<string>("TimeZoneId")
-                    .HasColumnType("text")
-                    .HasColumnName("timezoneid");
-
-                b.Property<bool>("VerboseErrors")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("boolean")
-                    .HasDefaultValue(true)
-                    .HasColumnName("verboseerrors");
-
-                b.Property<bool>("VerbosePermissions")
-                    .HasColumnType("boolean")
-                    .HasColumnName("verbosepermissions");
-
-                b.Property<int>("WarnExpireAction")
-                    .HasColumnType("integer")
-                    .HasColumnName("warnexpireaction");
-
-                b.Property<int>("WarnExpireHours")
-                    .HasColumnType("integer")
-                    .HasColumnName("warnexpirehours");
-
-                b.Property<bool>("WarningsInitialized")
-                    .HasColumnType("boolean")
-                    .HasColumnName("warningsinitialized");
-
-                b.HasKey("Id")
-                    .HasName("pk_guildconfigs");
-
-                b.HasIndex("GuildId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_guildconfigs_guildid");
-
-                b.HasIndex("WarnExpireHours")
-                    .HasDatabaseName("ix_guildconfigs_warnexpirehours");
-
-                b.ToTable("guildconfigs", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
-            {
-                b.Property<decimal>("GuildId")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.HasKey("GuildId")
-                    .HasName("pk_honeypotchannels");
-
-                b.ToTable("honeypotchannels", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("ItemType")
-                    .HasColumnType("integer")
-                    .HasColumnName("itemtype");
-
-                b.Property<decimal>("LogItemId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("logitemid");
-
-                b.Property<int>("LogSettingId")
-                    .HasColumnType("integer")
-                    .HasColumnName("logsettingid");
-
-                b.HasKey("Id")
-                    .HasName("pk_ignoredlogchannels");
-
-                b.HasIndex("LogSettingId", "LogItemId", "ItemType")
-                    .IsUnique()
-                    .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
-
-                b.ToTable("ignoredlogchannels", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
-
-                b.HasKey("Id")
-                    .HasName("pk_imageonlychannels");
-
-                b.HasIndex("ChannelId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_imageonlychannels_channelid");
-
-                b.ToTable("imageonlychannels", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal?>("ChannelCreatedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelcreatedid");
-
-                b.Property<decimal?>("ChannelDestroyedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channeldestroyedid");
-
-                b.Property<decimal?>("ChannelUpdatedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelupdatedid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<decimal?>("LogOtherId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("logotherid");
-
-                b.Property<decimal?>("LogUserPresenceId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("loguserpresenceid");
-
-                b.Property<decimal?>("LogVoicePresenceId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("logvoicepresenceid");
-
-                b.Property<decimal?>("LogVoicePresenceTTSId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("logvoicepresencettsid");
-
-                b.Property<decimal?>("LogWarnsId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("logwarnsid");
-
-                b.Property<decimal?>("MessageDeletedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("messagedeletedid");
-
-                b.Property<decimal?>("MessageUpdatedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("messageupdatedid");
-
-                b.Property<decimal?>("ThreadCreatedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("threadcreatedid");
-
-                b.Property<decimal?>("ThreadDeletedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("threaddeletedid");
-
-                b.Property<decimal?>("UserBannedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userbannedid");
-
-                b.Property<decimal?>("UserJoinedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userjoinedid");
-
-                b.Property<decimal?>("UserLeftId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userleftid");
-
-                b.Property<decimal?>("UserMutedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("usermutedid");
-
-                b.Property<decimal?>("UserUnbannedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userunbannedid");
-
-                b.Property<decimal?>("UserUpdatedId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userupdatedid");
-
-                b.HasKey("Id")
-                    .HasName("pk_logsettings");
-
-                b.HasIndex("GuildId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_logsettings_guildid");
-
-                b.ToTable("logsettings", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<bool>("AutoDisconnect")
-                    .HasColumnType("boolean")
-                    .HasColumnName("autodisconnect");
-
-                b.Property<bool>("AutoPlay")
-                    .HasColumnType("boolean")
-                    .HasColumnName("autoplay");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<decimal?>("MusicChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("musicchannelid");
-
-                b.Property<int>("PlayerRepeat")
-                    .HasColumnType("integer")
-                    .HasColumnName("playerrepeat");
-
-                b.Property<int>("QualityPreset")
-                    .HasColumnType("integer")
-                    .HasColumnName("qualitypreset");
-
-                b.Property<int>("Volume")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasDefaultValue(100)
-                    .HasColumnName("volume");
-
-                b.HasKey("Id")
-                    .HasName("pk_musicplayersettings");
-
-                b.HasIndex("GuildId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_musicplayersettings_guildid");
-
-                b.ToTable("musicplayersettings", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<string>("Author")
-                    .HasColumnType("text")
-                    .HasColumnName("author");
-
-                b.Property<decimal>("AuthorId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("authorid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
-
-                b.HasKey("Id")
-                    .HasName("pk_musicplaylists");
-
-                b.ToTable("musicplaylists", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_muteduserid");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_muteduserid_guildconfigid");
-
-                b.ToTable("muteduserid", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.NCPixel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<long>("Color")
-                    .HasColumnType("bigint")
-                    .HasColumnName("color");
-
-                b.Property<decimal>("OwnerId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("ownerid");
-
-                b.Property<int>("Position")
-                    .HasColumnType("integer")
-                    .HasColumnName("position");
-
-                b.Property<long>("Price")
-                    .HasColumnType("bigint")
-                    .HasColumnName("price");
-
-                b.Property<string>("Text")
-                    .IsRequired()
-                    .HasMaxLength(256)
-                    .HasColumnType("character varying(256)")
-                    .HasColumnName("text");
-
-                b.HasKey("Id")
-                    .HasName("pk_ncpixel");
-
-                b.HasAlternateKey("Position")
-                    .HasName("ak_ncpixel_position");
-
-                b.HasIndex("OwnerId")
-                    .HasDatabaseName("ix_ncpixel_ownerid");
-
-                b.ToTable("ncpixel", (string)null);
-            });
+                    b.ToTable("discorduser", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.EllieExpression", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Property<bool>("AllowTarget")
-                    .HasColumnType("boolean")
-                    .HasColumnName("allowtarget");
+                    b.Property<bool>("AllowTarget")
+                        .HasColumnType("boolean")
+                        .HasColumnName("allowtarget");
 
-                b.Property<bool>("AutoDeleteTrigger")
-                    .HasColumnType("boolean")
-                    .HasColumnName("autodeletetrigger");
+                    b.Property<bool>("AutoDeleteTrigger")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodeletetrigger");
 
-                b.Property<bool>("ContainsAnywhere")
-                    .HasColumnType("boolean")
-                    .HasColumnName("containsanywhere");
+                    b.Property<bool>("ContainsAnywhere")
+                        .HasColumnType("boolean")
+                        .HasColumnName("containsanywhere");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Property<bool>("DmResponse")
-                    .HasColumnType("boolean")
-                    .HasColumnName("dmresponse");
+                    b.Property<bool>("DmResponse")
+                        .HasColumnType("boolean")
+                        .HasColumnName("dmresponse");
 
-                b.Property<decimal?>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
+                    b.Property<decimal?>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.Property<string>("Reactions")
-                    .HasColumnType("text")
-                    .HasColumnName("reactions");
+                    b.Property<string>("Reactions")
+                        .HasColumnType("text")
+                        .HasColumnName("reactions");
 
-                b.Property<string>("Response")
-                    .HasColumnType("text")
-                    .HasColumnName("response");
+                    b.Property<string>("Response")
+                        .HasColumnType("text")
+                        .HasColumnName("response");
 
-                b.Property<string>("Trigger")
-                    .HasColumnType("text")
-                    .HasColumnName("trigger");
+                    b.Property<string>("Trigger")
+                        .HasColumnType("text")
+                        .HasColumnName("trigger");
 
-                b.HasKey("Id")
-                    .HasName("pk_expressions");
+                    b.HasKey("Id")
+                        .HasName("pk_expressions");
 
-                b.ToTable("expressions", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
-            {
-                b.Property<decimal>("UserId")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.Property<int>("AmountCents")
-                    .HasColumnType("integer")
-                    .HasColumnName("amountcents");
-
-                b.Property<DateTime>("LastCharge")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("lastcharge");
-
-                b.Property<string>("UniquePlatformUserId")
-                    .HasColumnType("text")
-                    .HasColumnName("uniqueplatformuserid");
-
-                b.Property<DateTime>("ValidThru")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("validthru");
-
-                b.HasKey("UserId")
-                    .HasName("pk_patrons");
-
-                b.HasIndex("UniquePlatformUserId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_patrons_uniqueplatformuserid");
-
-                b.ToTable("patrons", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<int>("Index")
-                    .HasColumnType("integer")
-                    .HasColumnName("index");
-
-                b.Property<bool>("IsCustomCommand")
-                    .HasColumnType("boolean")
-                    .HasColumnName("iscustomcommand");
-
-                b.Property<int>("PrimaryTarget")
-                    .HasColumnType("integer")
-                    .HasColumnName("primarytarget");
-
-                b.Property<decimal>("PrimaryTargetId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("primarytargetid");
-
-                b.Property<int>("SecondaryTarget")
-                    .HasColumnType("integer")
-                    .HasColumnName("secondarytarget");
-
-                b.Property<string>("SecondaryTargetName")
-                    .HasColumnType("text")
-                    .HasColumnName("secondarytargetname");
-
-                b.Property<bool>("State")
-                    .HasColumnType("boolean")
-                    .HasColumnName("state");
-
-                b.HasKey("Id")
-                    .HasName("pk_permissions");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_permissions_guildconfigid");
-
-                b.ToTable("permissions", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<long>("Amount")
-                    .HasColumnType("bigint")
-                    .HasColumnName("amount");
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<decimal>("MessageId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("messageid");
-
-                b.Property<string>("Password")
-                    .HasColumnType("text")
-                    .HasColumnName("password");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_plantedcurrency");
-
-                b.HasIndex("ChannelId")
-                    .HasDatabaseName("ix_plantedcurrency_channelid");
-
-                b.HasIndex("MessageId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_plantedcurrency_messageid");
-
-                b.ToTable("plantedcurrency", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("MusicPlaylistId")
-                    .HasColumnType("integer")
-                    .HasColumnName("musicplaylistid");
-
-                b.Property<string>("Provider")
-                    .HasColumnType("text")
-                    .HasColumnName("provider");
-
-                b.Property<int>("ProviderType")
-                    .HasColumnType("integer")
-                    .HasColumnName("providertype");
-
-                b.Property<string>("Query")
-                    .HasColumnType("text")
-                    .HasColumnName("query");
-
-                b.Property<string>("Title")
-                    .HasColumnType("text")
-                    .HasColumnName("title");
-
-                b.Property<string>("Uri")
-                    .HasColumnType("text")
-                    .HasColumnName("uri");
-
-                b.HasKey("Id")
-                    .HasName("pk_playlistsong");
-
-                b.HasIndex("MusicPlaylistId")
-                    .HasDatabaseName("ix_playlistsong_musicplaylistid");
-
-                b.ToTable("playlistsong", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("AuthorId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("authorid");
-
-                b.Property<string>("AuthorName")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("authorname");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<string>("Keyword")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("keyword");
-
-                b.Property<string>("Text")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("text");
-
-                b.HasKey("Id")
-                    .HasName("pk_quotes");
-
-                b.HasIndex("GuildId")
-                    .HasDatabaseName("ix_quotes_guildid");
-
-                b.HasIndex("Keyword")
-                    .HasDatabaseName("ix_quotes_keyword");
-
-                b.ToTable("quotes", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<string>("Emote")
-                    .HasMaxLength(100)
-                    .HasColumnType("character varying(100)")
-                    .HasColumnName("emote");
-
-                b.Property<int>("Group")
-                    .HasColumnType("integer")
-                    .HasColumnName("group");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<int>("LevelReq")
-                    .HasColumnType("integer")
-                    .HasColumnName("levelreq");
-
-                b.Property<decimal>("MessageId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("messageid");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.HasKey("Id")
-                    .HasName("pk_reactionroles");
-
-                b.HasIndex("GuildId")
-                    .HasDatabaseName("ix_reactionroles_guildid");
-
-                b.HasIndex("MessageId", "Emote")
-                    .IsUnique()
-                    .HasDatabaseName("ix_reactionroles_messageid_emote");
-
-                b.ToTable("reactionroles", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<bool>("IsPrivate")
-                    .HasColumnType("boolean")
-                    .HasColumnName("isprivate");
-
-                b.Property<string>("Message")
-                    .HasColumnType("text")
-                    .HasColumnName("message");
-
-                b.Property<decimal>("ServerId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("serverid");
-
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.Property<DateTime>("When")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("when");
-
-                b.HasKey("Id")
-                    .HasName("pk_reminders");
-
-                b.HasIndex("When")
-                    .HasDatabaseName("ix_reminders_when");
-
-                b.ToTable("reminders", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<TimeSpan>("Interval")
-                    .HasColumnType("interval")
-                    .HasColumnName("interval");
-
-                b.Property<decimal?>("LastMessageId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("lastmessageid");
-
-                b.Property<string>("Message")
-                    .HasColumnType("text")
-                    .HasColumnName("message");
-
-                b.Property<bool>("NoRedundant")
-                    .HasColumnType("boolean")
-                    .HasColumnName("noredundant");
-
-                b.Property<TimeSpan?>("StartTimeOfDay")
-                    .HasColumnType("interval")
-                    .HasColumnName("starttimeofday");
-
-                b.HasKey("Id")
-                    .HasName("pk_repeaters");
-
-                b.ToTable("repeaters", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<long>("AmountRewardedThisMonth")
-                    .HasColumnType("bigint")
-                    .HasColumnName("amountrewardedthismonth");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<DateTime>("LastReward")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("lastreward");
-
-                b.Property<string>("PlatformUserId")
-                    .HasColumnType("text")
-                    .HasColumnName("platformuserid");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_rewardedusers");
-
-                b.HasIndex("PlatformUserId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_rewardedusers_platformuserid");
-
-                b.ToTable("rewardedusers", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<string>("Status")
-                    .HasColumnType("text")
-                    .HasColumnName("status");
-
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
-
-                b.HasKey("Id")
-                    .HasName("pk_rotatingstatus");
-
-                b.ToTable("rotatingstatus", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("Group")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasDefaultValue(0)
-                    .HasColumnName("group");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<int>("LevelRequirement")
-                    .HasColumnType("integer")
-                    .HasColumnName("levelrequirement");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.HasKey("Id")
-                    .HasName("pk_selfassignableroles");
-
-                b.HasIndex("GuildId", "RoleId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
-
-                b.ToTable("selfassignableroles", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("AuthorId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("authorid");
-
-                b.Property<string>("Command")
-                    .HasColumnType("text")
-                    .HasColumnName("command");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<int>("Index")
-                    .HasColumnType("integer")
-                    .HasColumnName("index");
-
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
-
-                b.Property<int>("Price")
-                    .HasColumnType("integer")
-                    .HasColumnName("price");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.Property<string>("RoleName")
-                    .HasColumnType("text")
-                    .HasColumnName("rolename");
-
-                b.Property<decimal?>("RoleRequirement")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("rolerequirement");
-
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
-
-                b.HasKey("Id")
-                    .HasName("pk_shopentry");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_shopentry_guildconfigid");
-
-                b.ToTable("shopentry", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("ShopEntryId")
-                    .HasColumnType("integer")
-                    .HasColumnName("shopentryid");
-
-                b.Property<string>("Text")
-                    .HasColumnType("text")
-                    .HasColumnName("text");
-
-                b.HasKey("Id")
-                    .HasName("pk_shopentryitem");
-
-                b.HasIndex("ShopEntryId")
-                    .HasDatabaseName("ix_shopentryitem_shopentryid");
-
-                b.ToTable("shopentryitem", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.HasKey("Id")
-                    .HasName("pk_slowmodeignoredrole");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
-
-                b.ToTable("slowmodeignoredrole", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_slowmodeignoreduser");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
-
-                b.ToTable("slowmodeignoreduser", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<string>("RoleIds")
-                    .HasColumnType("text")
-                    .HasColumnName("roleids");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_stickyroles");
-
-                b.HasIndex("GuildId", "UserId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_stickyroles_guildid_userid");
-
-                b.ToTable("stickyroles", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("MessageId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("messageid");
-
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
-
-                b.Property<int>("Type")
-                    .HasColumnType("integer")
-                    .HasColumnName("type");
-
-                b.HasKey("Id")
-                    .HasName("pk_streamonlinemessages");
-
-                b.ToTable("streamonlinemessages", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("StreamRoleSettingsId")
-                    .HasColumnType("integer")
-                    .HasColumnName("streamrolesettingsid");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.Property<string>("Username")
-                    .HasColumnType("text")
-                    .HasColumnName("username");
-
-                b.HasKey("Id")
-                    .HasName("pk_streamroleblacklisteduser");
-
-                b.HasIndex("StreamRoleSettingsId")
-                    .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
-
-                b.ToTable("streamroleblacklisteduser", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<decimal>("AddRoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("addroleid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<bool>("Enabled")
-                    .HasColumnType("boolean")
-                    .HasColumnName("enabled");
-
-                b.Property<decimal>("FromRoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("fromroleid");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<string>("Keyword")
-                    .HasColumnType("text")
-                    .HasColumnName("keyword");
-
-                b.HasKey("Id")
-                    .HasName("pk_streamrolesettings");
-
-                b.HasIndex("GuildConfigId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_streamrolesettings_guildconfigid");
-
-                b.ToTable("streamrolesettings", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("StreamRoleSettingsId")
-                    .HasColumnType("integer")
-                    .HasColumnName("streamrolesettingsid");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.Property<string>("Username")
-                    .HasColumnType("text")
-                    .HasColumnName("username");
-
-                b.HasKey("Id")
-                    .HasName("pk_streamrolewhitelisteduser");
-
-                b.HasIndex("StreamRoleSettingsId")
-                    .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
-
-                b.ToTable("streamrolewhitelisteduser", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<int?>("ArchiveId")
-                    .HasColumnType("integer")
-                    .HasColumnName("archiveid");
-
-                b.Property<DateTime>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<bool>("IsDone")
-                    .HasColumnType("boolean")
-                    .HasColumnName("isdone");
-
-                b.Property<string>("Todo")
-                    .HasColumnType("text")
-                    .HasColumnName("todo");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_todos");
-
-                b.HasIndex("ArchiveId")
-                    .HasDatabaseName("ix_todos_archiveid");
-
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_todos_userid");
-
-                b.ToTable("todos", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<DateTime>("UnbanAt")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("unbanat");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_unbantimer");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_unbantimer_guildconfigid");
-
-                b.ToTable("unbantimer", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<DateTime>("UnmuteAt")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("unmuteat");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_unmutetimer");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_unmutetimer_guildconfigid");
-
-                b.ToTable("unmutetimer", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.Property<DateTime>("UnbanAt")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("unbanat");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_unroletimer");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_unroletimer_guildconfigid");
-
-                b.ToTable("unroletimer", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<long>("AwardedXp")
-                    .HasColumnType("bigint")
-                    .HasColumnName("awardedxp");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<int>("NotifyOnLevelUp")
-                    .HasColumnType("integer")
-                    .HasColumnName("notifyonlevelup");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.Property<long>("Xp")
-                    .HasColumnType("bigint")
-                    .HasColumnName("xp");
-
-                b.HasKey("Id")
-                    .HasName("pk_userxpstats");
-
-                b.HasIndex("AwardedXp")
-                    .HasDatabaseName("ix_userxpstats_awardedxp");
-
-                b.HasIndex("GuildId")
-                    .HasDatabaseName("ix_userxpstats_guildid");
-
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_userxpstats_userid");
-
-                b.HasIndex("Xp")
-                    .HasDatabaseName("ix_userxpstats_xp");
-
-                b.HasIndex("UserId", "GuildId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_userxpstats_userid_guildid");
-
-                b.ToTable("userxpstats", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.Property<decimal>("VoiceChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("voicechannelid");
-
-                b.HasKey("Id")
-                    .HasName("pk_vcroleinfo");
-
-                b.HasIndex("GuildConfigId")
-                    .HasDatabaseName("ix_vcroleinfo_guildconfigid");
-
-                b.ToTable("vcroleinfo", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<int?>("AffinityId")
-                    .HasColumnType("integer")
-                    .HasColumnName("affinityid");
-
-                b.Property<int?>("ClaimerId")
-                    .HasColumnType("integer")
-                    .HasColumnName("claimerid");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<long>("Price")
-                    .HasColumnType("bigint")
-                    .HasColumnName("price");
-
-                b.Property<int>("WaifuId")
-                    .HasColumnType("integer")
-                    .HasColumnName("waifuid");
-
-                b.HasKey("Id")
-                    .HasName("pk_waifuinfo");
-
-                b.HasIndex("AffinityId")
-                    .HasDatabaseName("ix_waifuinfo_affinityid");
-
-                b.HasIndex("ClaimerId")
-                    .HasDatabaseName("ix_waifuinfo_claimerid");
-
-                b.HasIndex("Price")
-                    .HasDatabaseName("ix_waifuinfo_price");
-
-                b.HasIndex("WaifuId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_waifuinfo_waifuid");
-
-                b.ToTable("waifuinfo", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<string>("ItemEmoji")
-                    .HasColumnType("text")
-                    .HasColumnName("itememoji");
-
-                b.Property<string>("Name")
-                    .HasColumnType("text")
-                    .HasColumnName("name");
-
-                b.Property<int?>("WaifuInfoId")
-                    .HasColumnType("integer")
-                    .HasColumnName("waifuinfoid");
-
-                b.HasKey("Id")
-                    .HasName("pk_waifuitem");
-
-                b.HasIndex("WaifuInfoId")
-                    .HasDatabaseName("ix_waifuitem_waifuinfoid");
-
-                b.ToTable("waifuitem", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int?>("NewId")
-                    .HasColumnType("integer")
-                    .HasColumnName("newid");
-
-                b.Property<int?>("OldId")
-                    .HasColumnType("integer")
-                    .HasColumnName("oldid");
-
-                b.Property<int>("UpdateType")
-                    .HasColumnType("integer")
-                    .HasColumnName("updatetype");
-
-                b.Property<int>("UserId")
-                    .HasColumnType("integer")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_waifuupdates");
-
-                b.HasIndex("NewId")
-                    .HasDatabaseName("ix_waifuupdates_newid");
-
-                b.HasIndex("OldId")
-                    .HasDatabaseName("ix_waifuupdates_oldid");
-
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_waifuupdates_userid");
-
-                b.ToTable("waifuupdates", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<bool>("Forgiven")
-                    .HasColumnType("boolean")
-                    .HasColumnName("forgiven");
-
-                b.Property<string>("ForgivenBy")
-                    .HasColumnType("text")
-                    .HasColumnName("forgivenby");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<string>("Moderator")
-                    .HasColumnType("text")
-                    .HasColumnName("moderator");
-
-                b.Property<string>("Reason")
-                    .HasColumnType("text")
-                    .HasColumnName("reason");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.Property<long>("Weight")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("bigint")
-                    .HasDefaultValue(1L)
-                    .HasColumnName("weight");
-
-                b.HasKey("Id")
-                    .HasName("pk_warnings");
-
-                b.HasIndex("DateAdded")
-                    .HasDatabaseName("ix_warnings_dateadded");
-
-                b.HasIndex("GuildId")
-                    .HasDatabaseName("ix_warnings_guildid");
-
-                b.HasIndex("UserId")
-                    .HasDatabaseName("ix_warnings_userid");
-
-                b.ToTable("warnings", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<int>("Count")
-                    .HasColumnType("integer")
-                    .HasColumnName("count");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<int>("Punishment")
-                    .HasColumnType("integer")
-                    .HasColumnName("punishment");
-
-                b.Property<decimal?>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.Property<int>("Time")
-                    .HasColumnType("integer")
-                    .HasColumnName("time");
-
-                b.HasKey("Id")
-                    .HasName("pk_warningpunishment");
-
-                b.HasAlternateKey("GuildId", "Count")
-                    .HasName("ak_warningpunishment_guildid_count");
-
-                b.ToTable("warningpunishment", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<int>("Amount")
-                    .HasColumnType("integer")
-                    .HasColumnName("amount");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("Level")
-                    .HasColumnType("integer")
-                    .HasColumnName("level");
-
-                b.Property<int>("XpSettingsId")
-                    .HasColumnType("integer")
-                    .HasColumnName("xpsettingsid");
-
-                b.HasKey("Id")
-                    .HasName("pk_xpcurrencyreward");
-
-                b.HasIndex("XpSettingsId")
-                    .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
-
-                b.ToTable("xpcurrencyreward", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("Level")
-                    .HasColumnType("integer")
-                    .HasColumnName("level");
-
-                b.Property<bool>("Remove")
-                    .HasColumnType("boolean")
-                    .HasColumnName("remove");
-
-                b.Property<decimal>("RoleId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("roleid");
-
-                b.Property<int>("XpSettingsId")
-                    .HasColumnType("integer")
-                    .HasColumnName("xpsettingsid");
-
-                b.HasKey("Id")
-                    .HasName("pk_xprolereward");
-
-                b.HasIndex("XpSettingsId", "Level")
-                    .IsUnique()
-                    .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
-
-                b.ToTable("xprolereward", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("integer")
-                    .HasColumnName("guildconfigid");
-
-                b.Property<bool>("ServerExcluded")
-                    .HasColumnType("boolean")
-                    .HasColumnName("serverexcluded");
-
-                b.HasKey("Id")
-                    .HasName("pk_xpsettings");
-
-                b.HasIndex("GuildConfigId")
-                    .IsUnique()
-                    .HasDatabaseName("ix_xpsettings_guildconfigid");
-
-                b.ToTable("xpsettings", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("timestamp without time zone")
-                    .HasColumnName("dateadded");
-
-                b.Property<bool>("IsUsing")
-                    .HasColumnType("boolean")
-                    .HasColumnName("isusing");
-
-                b.Property<string>("ItemKey")
-                    .IsRequired()
-                    .HasColumnType("text")
-                    .HasColumnName("itemkey");
-
-                b.Property<int>("ItemType")
-                    .HasColumnType("integer")
-                    .HasColumnName("itemtype");
-
-                b.Property<decimal>("UserId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("userid");
-
-                b.HasKey("Id")
-                    .HasName("pk_xpshopowneditem");
-
-                b.HasIndex("UserId", "ItemType", "ItemKey")
-                    .IsUnique()
-                    .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
-
-                b.ToTable("xpshopowneditem", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasColumnName("id");
-
-                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
-
-                b.Property<int>("AutoDeleteTimer")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("integer")
-                    .HasDefaultValue(0)
-                    .HasColumnName("autodeletetimer");
-
-                b.Property<decimal?>("ChannelId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("channelid");
-
-                b.Property<int>("GreetType")
-                    .HasColumnType("integer")
-                    .HasColumnName("greettype");
-
-                b.Property<decimal>("GuildId")
-                    .HasColumnType("numeric(20,0)")
-                    .HasColumnName("guildid");
-
-                b.Property<bool>("IsEnabled")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("boolean")
-                    .HasDefaultValue(false)
-                    .HasColumnName("isenabled");
-
-                b.Property<string>("MessageText")
-                    .HasColumnType("text")
-                    .HasColumnName("messagetext");
-
-                b.HasKey("Id")
-                    .HasName("pk_greetsettings");
-
-                b.HasIndex("GuildId", "GreetType")
-                    .IsUnique()
-                    .HasDatabaseName("ix_greetsettings_guildid_greettype");
-
-                b.ToTable("greetsettings", (string)null);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithOne("AntiAltSetting")
-                    .HasForeignKey("EllieBot.Db.Models.AntiAltSetting", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_antialtsetting_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithOne("AntiRaidSetting")
-                    .HasForeignKey("EllieBot.Db.Models.AntiRaidSetting", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_antiraidsetting_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.AntiSpamSetting", null)
-                    .WithMany("IgnoredChannels")
-                    .HasForeignKey("AntiSpamSettingId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_antispamignore_antispamsetting_antispamsettingid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithOne("AntiSpamSetting")
-                    .HasForeignKey("EllieBot.Db.Models.AntiSpamSetting", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_antispamsetting_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
-                    .WithMany("Users")
-                    .HasForeignKey("ChannelId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_autotranslateusers_autotranslatechannels_channelid");
-
-                b.Navigation("Channel");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
-                    .WithMany("Applicants")
-                    .HasForeignKey("ClubId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_clubapplicants_clubs_clubid");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
-                    .WithMany()
-                    .HasForeignKey("UserId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_clubapplicants_discorduser_userid");
-
-                b.Navigation("Club");
-
-                b.Navigation("User");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
-                    .WithMany("Bans")
-                    .HasForeignKey("ClubId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_clubbans_clubs_clubid");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
-                    .WithMany()
-                    .HasForeignKey("UserId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_clubbans_discorduser_userid");
-
-                b.Navigation("Club");
-
-                b.Navigation("User");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
-                    .WithOne()
-                    .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
-                    .OnDelete(DeleteBehavior.SetNull)
-                    .HasConstraintName("fk_clubs_discorduser_ownerid");
-
-                b.Navigation("Owner");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("CommandAliases")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_commandalias_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("CommandCooldowns")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_commandcooldown_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("DelMsgOnCmdChannels")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_delmsgoncmdchannel_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
-                    .WithMany("Members")
-                    .HasForeignKey("ClubId")
-                    .OnDelete(DeleteBehavior.NoAction)
-                    .HasConstraintName("fk_discorduser_clubs_clubid");
-
-                b.Navigation("Club");
-            });
+                    b.ToTable("expressions", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                    .WithMany("ExclusionList")
-                    .HasForeignKey("XpSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_excludeditem_xpsettings_xpsettingsid");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                b.Navigation("XpSettings");
-            });
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("ItemId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("itemid");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("integer")
+                        .HasColumnName("itemtype");
+
+                    b.Property<int?>("XpSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("xpsettingsid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_excludeditem");
+
+                    b.HasIndex("XpSettingsId")
+                        .HasDatabaseName("ix_excludeditem_xpsettingsid");
+
+                    b.ToTable("excludeditem", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithMany("FeedSubs")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_feedsub_guildconfigs_guildconfigid");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                b.Navigation("GuildConfig");
-            });
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<string>("Url")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("url");
+
+                    b.HasKey("Id")
+                        .HasName("pk_feedsub");
+
+                    b.HasAlternateKey("GuildConfigId", "Url")
+                        .HasName("ak_feedsub_guildconfigid_url");
+
+                    b.ToTable("feedsub", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilterInvitesChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_filterchannelid_guildconfigs_guildconfigid");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filterchannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filterchannelid_guildconfigid");
+
+                    b.ToTable("filterchannelid", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilterLinksChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_filterlinkschannelid_guildconfigs_guildconfigid");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filterlinkschannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
+
+                    b.ToTable("filterlinkschannelid", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilterWordsChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_filterwordschannelid_guildconfigs_guildconfigid");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filterwordschannelid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
+
+                    b.ToTable("filterwordschannelid", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilteredWords")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_filteredword_guildconfigs_guildconfigid");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Word")
+                        .HasColumnType("text")
+                        .HasColumnName("word");
+
+                    b.HasKey("Id")
+                        .HasName("pk_filteredword");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_filteredword_guildconfigid");
+
+                    b.ToTable("filteredword", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FlagTranslateChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_flagtranslatechannel");
+
+                    b.HasIndex("GuildId", "ChannelId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_flagtranslatechannel_guildid_channelid");
+
+                    b.ToTable("flagtranslatechannel", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FollowedStreams")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_followedstream_guildconfigs_guildconfigid");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_followedstream");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_followedstream_guildconfigid");
+
+                    b.ToTable("followedstream", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithMany("GenerateCurrencyChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_gcchannelid_guildconfigs_guildconfigid");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                b.Navigation("GuildConfig");
-            });
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GiveawayModel", null)
-                    .WithMany("Participants")
-                    .HasForeignKey("GiveawayId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_giveawayuser_giveawaymodel_giveawayid");
-            });
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
 
-            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithMany("SelfAssignableRoleGroupNames")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_groupname_guildconfigs_guildconfigid");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Navigation("GuildConfig");
-            });
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
 
-            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
-                    .WithMany("LogIgnores")
-                    .HasForeignKey("LogSettingId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_ignoredlogchannels_logsettings_logsettingid");
+                    b.HasKey("Id")
+                        .HasName("pk_gcchannelid");
 
-                b.Navigation("LogSetting");
-            });
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_gcchannelid_guildconfigid");
 
-            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("MutedUsers")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_muteduserid_guildconfigs_guildconfigid");
-            });
+                    b.ToTable("gcchannelid", (string)null);
+                });
 
-            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("Permissions")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_permissions_guildconfigs_guildconfigid");
-            });
+            modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.MusicPlaylist", null)
-                    .WithMany("Songs")
-                    .HasForeignKey("MusicPlaylistId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_playlistsong_musicplaylists_musicplaylistid");
-            });
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("ShopEntries")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_shopentry_guildconfigs_guildconfigid");
-            });
+                    b.Property<decimal>("Bet")
+                        .HasColumnType("numeric")
+                        .HasColumnName("bet");
 
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ShopEntry", null)
-                    .WithMany("Items")
-                    .HasForeignKey("ShopEntryId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_shopentryitem_shopentry_shopentryid");
-            });
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("SlowmodeIgnoredRoles")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_slowmodeignoredrole_guildconfigs_guildconfigid");
-            });
+                    b.Property<string>("Feature")
+                        .HasColumnType("text")
+                        .HasColumnName("feature");
 
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("SlowmodeIgnoredUsers")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_slowmodeignoreduser_guildconfigs_guildconfigid");
-            });
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("numeric")
+                        .HasColumnName("paidout");
 
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
-                    .WithMany("Blacklist")
-                    .HasForeignKey("StreamRoleSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_streamroleblacklisteduser_streamrolesettings_streamrolesett~");
+                    b.HasKey("Id")
+                        .HasName("pk_gamblingstats");
 
-                b.Navigation("StreamRoleSettings");
-            });
+                    b.HasIndex("Feature")
+                        .IsUnique()
+                        .HasDatabaseName("ix_gamblingstats_feature");
 
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithOne("StreamRole")
-                    .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_streamrolesettings_guildconfigs_guildconfigid");
-
-                b.Navigation("GuildConfig");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
-                    .WithMany("Whitelist")
-                    .HasForeignKey("StreamRoleSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_streamrolewhitelisteduser_streamrolesettings_streamrolesett~");
-
-                b.Navigation("StreamRoleSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
-                    .WithMany("Items")
-                    .HasForeignKey("ArchiveId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_todos_todosarchive_archiveid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("UnbanTimer")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_unbantimer_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("UnmuteTimers")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_unmutetimer_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("UnroleTimer")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_unroletimer_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("VcRoleInfos")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .HasConstraintName("fk_vcroleinfo_guildconfigs_guildconfigid");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Affinity")
-                    .WithMany()
-                    .HasForeignKey("AffinityId")
-                    .HasConstraintName("fk_waifuinfo_discorduser_affinityid");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
-                    .WithMany()
-                    .HasForeignKey("ClaimerId")
-                    .HasConstraintName("fk_waifuinfo_discorduser_claimerid");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
-                    .WithOne()
-                    .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_waifuinfo_discorduser_waifuid");
-
-                b.Navigation("Affinity");
-
-                b.Navigation("Claimer");
-
-                b.Navigation("Waifu");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
-                    .WithMany("Items")
-                    .HasForeignKey("WaifuInfoId")
-                    .HasConstraintName("fk_waifuitem_waifuinfo_waifuinfoid");
-
-                b.Navigation("WaifuInfo");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "New")
-                    .WithMany()
-                    .HasForeignKey("NewId")
-                    .HasConstraintName("fk_waifuupdates_discorduser_newid");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
-                    .WithMany()
-                    .HasForeignKey("OldId")
-                    .HasConstraintName("fk_waifuupdates_discorduser_oldid");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
-                    .WithMany()
-                    .HasForeignKey("UserId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_waifuupdates_discorduser_userid");
-
-                b.Navigation("New");
-
-                b.Navigation("Old");
-
-                b.Navigation("User");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                    .WithMany("CurrencyRewards")
-                    .HasForeignKey("XpSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_xpcurrencyreward_xpsettings_xpsettingsid");
-
-                b.Navigation("XpSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                    .WithMany("RoleRewards")
-                    .HasForeignKey("XpSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_xprolereward_xpsettings_xpsettingsid");
-
-                b.Navigation("XpSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithOne("XpSettings")
-                    .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired()
-                    .HasConstraintName("fk_xpsettings_guildconfigs_guildconfigid");
-
-                b.Navigation("GuildConfig");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-            {
-                b.Navigation("IgnoredChannels");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-            {
-                b.Navigation("Items");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-            {
-                b.Navigation("Users");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-            {
-                b.Navigation("Applicants");
-
-                b.Navigation("Bans");
-
-                b.Navigation("Members");
-            });
+                    b.ToTable("gamblingstats", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-            {
-                b.Navigation("Participants");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime>("EndsAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("endsat");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_giveawaymodel");
+
+                    b.ToTable("giveawaymodel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("GiveawayId")
+                        .HasColumnType("integer")
+                        .HasColumnName("giveawayid");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_giveawayuser");
+
+                    b.HasIndex("GiveawayId", "UserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
+
+                    b.ToTable("giveawayuser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int>("Number")
+                        .HasColumnType("integer")
+                        .HasColumnName("number");
+
+                    b.HasKey("Id")
+                        .HasName("pk_groupname");
+
+                    b.HasIndex("GuildConfigId", "Number")
+                        .IsUnique()
+                        .HasDatabaseName("ix_groupname_guildconfigid_number");
+
+                    b.ToTable("groupname", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-            {
-                b.Navigation("AntiAltSetting");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                b.Navigation("AntiRaidSetting");
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Navigation("AntiSpamSetting");
+                    b.Property<string>("AutoAssignRoleIds")
+                        .HasColumnType("text")
+                        .HasColumnName("autoassignroleids");
 
-                b.Navigation("CommandAliases");
+                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodeleteselfassignedrolemessages");
 
-                b.Navigation("CommandCooldowns");
+                    b.Property<bool>("CleverbotEnabled")
+                        .HasColumnType("boolean")
+                        .HasColumnName("cleverbotenabled");
 
-                b.Navigation("DelMsgOnCmdChannels");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
 
-                b.Navigation("FeedSubs");
+                    b.Property<bool>("DeleteMessageOnCommand")
+                        .HasColumnType("boolean")
+                        .HasColumnName("deletemessageoncommand");
 
-                b.Navigation("FilterInvitesChannelIds");
+                    b.Property<bool>("DeleteStreamOnlineMessage")
+                        .HasColumnType("boolean")
+                        .HasColumnName("deletestreamonlinemessage");
 
-                b.Navigation("FilterLinksChannelIds");
+                    b.Property<bool>("DisableGlobalExpressions")
+                        .HasColumnType("boolean")
+                        .HasColumnName("disableglobalexpressions");
 
-                b.Navigation("FilterWordsChannelIds");
+                    b.Property<bool>("ExclusiveSelfAssignedRoles")
+                        .HasColumnType("boolean")
+                        .HasColumnName("exclusiveselfassignedroles");
 
-                b.Navigation("FilteredWords");
+                    b.Property<bool>("FilterInvites")
+                        .HasColumnType("boolean")
+                        .HasColumnName("filterinvites");
 
-                b.Navigation("FollowedStreams");
+                    b.Property<bool>("FilterLinks")
+                        .HasColumnType("boolean")
+                        .HasColumnName("filterlinks");
 
-                b.Navigation("GenerateCurrencyChannelIds");
+                    b.Property<bool>("FilterWords")
+                        .HasColumnType("boolean")
+                        .HasColumnName("filterwords");
 
-                b.Navigation("MutedUsers");
+                    b.Property<decimal?>("GameVoiceChannel")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("gamevoicechannel");
 
-                b.Navigation("Permissions");
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
 
-                b.Navigation("SelfAssignableRoleGroupNames");
+                    b.Property<string>("Locale")
+                        .HasColumnType("text")
+                        .HasColumnName("locale");
 
-                b.Navigation("ShopEntries");
+                    b.Property<string>("MuteRoleName")
+                        .HasColumnType("text")
+                        .HasColumnName("muterolename");
 
-                b.Navigation("SlowmodeIgnoredRoles");
+                    b.Property<bool>("NotifyStreamOffline")
+                        .HasColumnType("boolean")
+                        .HasColumnName("notifystreamoffline");
 
-                b.Navigation("SlowmodeIgnoredUsers");
+                    b.Property<string>("PermissionRole")
+                        .HasColumnType("text")
+                        .HasColumnName("permissionrole");
 
-                b.Navigation("StreamRole");
+                    b.Property<string>("Prefix")
+                        .HasColumnType("text")
+                        .HasColumnName("prefix");
 
-                b.Navigation("UnbanTimer");
+                    b.Property<bool>("StickyRoles")
+                        .HasColumnType("boolean")
+                        .HasColumnName("stickyroles");
 
-                b.Navigation("UnmuteTimers");
+                    b.Property<string>("TimeZoneId")
+                        .HasColumnType("text")
+                        .HasColumnName("timezoneid");
 
-                b.Navigation("UnroleTimer");
+                    b.Property<bool>("VerboseErrors")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("boolean")
+                        .HasDefaultValue(true)
+                        .HasColumnName("verboseerrors");
 
-                b.Navigation("VcRoleInfos");
+                    b.Property<bool>("VerbosePermissions")
+                        .HasColumnType("boolean")
+                        .HasColumnName("verbosepermissions");
 
-                b.Navigation("XpSettings");
-            });
+                    b.Property<int>("WarnExpireAction")
+                        .HasColumnType("integer")
+                        .HasColumnName("warnexpireaction");
+
+                    b.Property<int>("WarnExpireHours")
+                        .HasColumnType("integer")
+                        .HasColumnName("warnexpirehours");
+
+                    b.Property<bool>("WarningsInitialized")
+                        .HasColumnType("boolean")
+                        .HasColumnName("warningsinitialized");
+
+                    b.HasKey("Id")
+                        .HasName("pk_guildconfigs");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_guildconfigs_guildid");
+
+                    b.HasIndex("WarnExpireHours")
+                        .HasDatabaseName("ix_guildconfigs_warnexpirehours");
+
+                    b.ToTable("guildconfigs", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
+                {
+                    b.Property<decimal>("GuildId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.HasKey("GuildId")
+                        .HasName("pk_honeypotchannels");
+
+                    b.ToTable("honeypotchannels", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("integer")
+                        .HasColumnName("itemtype");
+
+                    b.Property<decimal>("LogItemId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logitemid");
+
+                    b.Property<int>("LogSettingId")
+                        .HasColumnType("integer")
+                        .HasColumnName("logsettingid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_ignoredlogchannels");
+
+                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                        .IsUnique()
+                        .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
+
+                    b.ToTable("ignoredlogchannels", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_imageonlychannels");
+
+                    b.HasIndex("ChannelId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_imageonlychannels_channelid");
+
+                    b.ToTable("imageonlychannels", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-            {
-                b.Navigation("LogIgnores");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal?>("ChannelCreatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelcreatedid");
+
+                    b.Property<decimal?>("ChannelDestroyedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channeldestroyedid");
+
+                    b.Property<decimal?>("ChannelUpdatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelupdatedid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal?>("LogOtherId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logotherid");
+
+                    b.Property<decimal?>("LogUserPresenceId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("loguserpresenceid");
+
+                    b.Property<decimal?>("LogVoicePresenceId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logvoicepresenceid");
+
+                    b.Property<decimal?>("LogVoicePresenceTTSId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logvoicepresencettsid");
+
+                    b.Property<decimal?>("LogWarnsId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("logwarnsid");
+
+                    b.Property<decimal?>("MessageDeletedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messagedeletedid");
+
+                    b.Property<decimal?>("MessageUpdatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageupdatedid");
+
+                    b.Property<decimal?>("ThreadCreatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("threadcreatedid");
+
+                    b.Property<decimal?>("ThreadDeletedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("threaddeletedid");
+
+                    b.Property<decimal?>("UserBannedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userbannedid");
+
+                    b.Property<decimal?>("UserJoinedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userjoinedid");
+
+                    b.Property<decimal?>("UserLeftId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userleftid");
+
+                    b.Property<decimal?>("UserMutedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("usermutedid");
+
+                    b.Property<decimal?>("UserUnbannedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userunbannedid");
+
+                    b.Property<decimal?>("UserUpdatedId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userupdatedid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_logsettings");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_logsettings_guildid");
+
+                    b.ToTable("logsettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<bool>("AutoDisconnect")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autodisconnect");
+
+                    b.Property<bool>("AutoPlay")
+                        .HasColumnType("boolean")
+                        .HasColumnName("autoplay");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal?>("MusicChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("musicchannelid");
+
+                    b.Property<int>("PlayerRepeat")
+                        .HasColumnType("integer")
+                        .HasColumnName("playerrepeat");
+
+                    b.Property<int>("QualityPreset")
+                        .HasColumnType("integer")
+                        .HasColumnName("qualitypreset");
+
+                    b.Property<int>("Volume")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(100)
+                        .HasColumnName("volume");
+
+                    b.HasKey("Id")
+                        .HasName("pk_musicplayersettings");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_musicplayersettings_guildid");
+
+                    b.ToTable("musicplayersettings", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-            {
-                b.Navigation("Songs");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Author")
+                        .HasColumnType("text")
+                        .HasColumnName("author");
+
+                    b.Property<decimal>("AuthorId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("authorid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.HasKey("Id")
+                        .HasName("pk_musicplaylists");
+
+                    b.ToTable("musicplaylists", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_muteduserid");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_muteduserid_guildconfigid");
+
+                    b.ToTable("muteduserid", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.NCPixel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("Color")
+                        .HasColumnType("bigint")
+                        .HasColumnName("color");
+
+                    b.Property<decimal>("OwnerId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("ownerid");
+
+                    b.Property<int>("Position")
+                        .HasColumnType("integer")
+                        .HasColumnName("position");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("bigint")
+                        .HasColumnName("price");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("character varying(256)")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_ncpixel");
+
+                    b.HasAlternateKey("Position")
+                        .HasName("ak_ncpixel_position");
+
+                    b.HasIndex("OwnerId")
+                        .HasDatabaseName("ix_ncpixel_ownerid");
+
+                    b.ToTable("ncpixel", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
+                {
+                    b.Property<decimal>("UserId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<int>("AmountCents")
+                        .HasColumnType("integer")
+                        .HasColumnName("amountcents");
+
+                    b.Property<DateTime>("LastCharge")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("lastcharge");
+
+                    b.Property<string>("UniquePlatformUserId")
+                        .HasColumnType("text")
+                        .HasColumnName("uniqueplatformuserid");
+
+                    b.Property<DateTime>("ValidThru")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("validthru");
+
+                    b.HasKey("UserId")
+                        .HasName("pk_patrons");
+
+                    b.HasIndex("UniquePlatformUserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_patrons_uniqueplatformuserid");
+
+                    b.ToTable("patrons", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("integer")
+                        .HasColumnName("index");
+
+                    b.Property<bool>("IsCustomCommand")
+                        .HasColumnType("boolean")
+                        .HasColumnName("iscustomcommand");
+
+                    b.Property<int>("PrimaryTarget")
+                        .HasColumnType("integer")
+                        .HasColumnName("primarytarget");
+
+                    b.Property<decimal>("PrimaryTargetId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("primarytargetid");
+
+                    b.Property<int>("SecondaryTarget")
+                        .HasColumnType("integer")
+                        .HasColumnName("secondarytarget");
+
+                    b.Property<string>("SecondaryTargetName")
+                        .HasColumnType("text")
+                        .HasColumnName("secondarytargetname");
+
+                    b.Property<bool>("State")
+                        .HasColumnType("boolean")
+                        .HasColumnName("state");
+
+                    b.HasKey("Id")
+                        .HasName("pk_permissions");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_permissions_guildconfigid");
+
+                    b.ToTable("permissions", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("Amount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("amount");
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("text")
+                        .HasColumnName("password");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_plantedcurrency");
+
+                    b.HasIndex("ChannelId")
+                        .HasDatabaseName("ix_plantedcurrency_channelid");
+
+                    b.HasIndex("MessageId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_plantedcurrency_messageid");
+
+                    b.ToTable("plantedcurrency", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("MusicPlaylistId")
+                        .HasColumnType("integer")
+                        .HasColumnName("musicplaylistid");
+
+                    b.Property<string>("Provider")
+                        .HasColumnType("text")
+                        .HasColumnName("provider");
+
+                    b.Property<int>("ProviderType")
+                        .HasColumnType("integer")
+                        .HasColumnName("providertype");
+
+                    b.Property<string>("Query")
+                        .HasColumnType("text")
+                        .HasColumnName("query");
+
+                    b.Property<string>("Title")
+                        .HasColumnType("text")
+                        .HasColumnName("title");
+
+                    b.Property<string>("Uri")
+                        .HasColumnType("text")
+                        .HasColumnName("uri");
+
+                    b.HasKey("Id")
+                        .HasName("pk_playlistsong");
+
+                    b.HasIndex("MusicPlaylistId")
+                        .HasDatabaseName("ix_playlistsong_musicplaylistid");
+
+                    b.ToTable("playlistsong", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("AuthorId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("authorid");
+
+                    b.Property<string>("AuthorName")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("authorname");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Keyword")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("keyword");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_quotes");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_quotes_guildid");
+
+                    b.HasIndex("Keyword")
+                        .HasDatabaseName("ix_quotes_keyword");
+
+                    b.ToTable("quotes", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Emote")
+                        .HasMaxLength(100)
+                        .HasColumnType("character varying(100)")
+                        .HasColumnName("emote");
+
+                    b.Property<int>("Group")
+                        .HasColumnType("integer")
+                        .HasColumnName("group");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("LevelReq")
+                        .HasColumnType("integer")
+                        .HasColumnName("levelreq");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_reactionroles");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_reactionroles_guildid");
+
+                    b.HasIndex("MessageId", "Emote")
+                        .IsUnique()
+                        .HasDatabaseName("ix_reactionroles_messageid_emote");
+
+                    b.ToTable("reactionroles", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsPrivate")
+                        .HasColumnType("boolean")
+                        .HasColumnName("isprivate");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<decimal>("ServerId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("serverid");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<DateTime>("When")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("when");
+
+                    b.HasKey("Id")
+                        .HasName("pk_reminders");
+
+                    b.HasIndex("When")
+                        .HasDatabaseName("ix_reminders_when");
+
+                    b.ToTable("reminders", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<TimeSpan>("Interval")
+                        .HasColumnType("interval")
+                        .HasColumnName("interval");
+
+                    b.Property<decimal?>("LastMessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("lastmessageid");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("text")
+                        .HasColumnName("message");
+
+                    b.Property<bool>("NoRedundant")
+                        .HasColumnType("boolean")
+                        .HasColumnName("noredundant");
+
+                    b.Property<TimeSpan?>("StartTimeOfDay")
+                        .HasColumnType("interval")
+                        .HasColumnName("starttimeofday");
+
+                    b.HasKey("Id")
+                        .HasName("pk_repeaters");
+
+                    b.ToTable("repeaters", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("AmountRewardedThisMonth")
+                        .HasColumnType("bigint")
+                        .HasColumnName("amountrewardedthismonth");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<DateTime>("LastReward")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("lastreward");
+
+                    b.Property<string>("PlatformUserId")
+                        .HasColumnType("text")
+                        .HasColumnName("platformuserid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_rewardedusers");
+
+                    b.HasIndex("PlatformUserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_rewardedusers_platformuserid");
+
+                    b.ToTable("rewardedusers", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("Status")
+                        .HasColumnType("text")
+                        .HasColumnName("status");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_rotatingstatus");
+
+                    b.ToTable("rotatingstatus", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("Group")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(0)
+                        .HasColumnName("group");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("LevelRequirement")
+                        .HasColumnType("integer")
+                        .HasColumnName("levelrequirement");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_selfassignableroles");
+
+                    b.HasIndex("GuildId", "RoleId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
+
+                    b.ToTable("selfassignableroles", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-            {
-                b.Navigation("Items");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("AuthorId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("authorid");
+
+                    b.Property<string>("Command")
+                        .HasColumnType("text")
+                        .HasColumnName("command");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("integer")
+                        .HasColumnName("index");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("integer")
+                        .HasColumnName("price");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<string>("RoleName")
+                        .HasColumnType("text")
+                        .HasColumnName("rolename");
+
+                    b.Property<decimal?>("RoleRequirement")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("rolerequirement");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_shopentry");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_shopentry_guildconfigid");
+
+                    b.ToTable("shopentry", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("ShopEntryId")
+                        .HasColumnType("integer")
+                        .HasColumnName("shopentryid");
+
+                    b.Property<string>("Text")
+                        .HasColumnType("text")
+                        .HasColumnName("text");
+
+                    b.HasKey("Id")
+                        .HasName("pk_shopentryitem");
+
+                    b.HasIndex("ShopEntryId")
+                        .HasDatabaseName("ix_shopentryitem_shopentryid");
+
+                    b.ToTable("shopentryitem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_slowmodeignoredrole");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
+
+                    b.ToTable("slowmodeignoredrole", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_slowmodeignoreduser");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
+
+                    b.ToTable("slowmodeignoreduser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("RoleIds")
+                        .HasColumnType("text")
+                        .HasColumnName("roleids");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_stickyroles");
+
+                    b.HasIndex("GuildId", "UserId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_stickyroles_guildid_userid");
+
+                    b.ToTable("stickyroles", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("MessageId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("messageid");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("integer")
+                        .HasColumnName("type");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamonlinemessages");
+
+                    b.ToTable("streamonlinemessages", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("streamrolesettingsid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamroleblacklisteduser");
+
+                    b.HasIndex("StreamRoleSettingsId")
+                        .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
+
+                    b.ToTable("streamroleblacklisteduser", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-            {
-                b.Navigation("Blacklist");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                b.Navigation("Whitelist");
-            });
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<decimal>("AddRoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("addroleid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("Enabled")
+                        .HasColumnType("boolean")
+                        .HasColumnName("enabled");
+
+                    b.Property<decimal>("FromRoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("fromroleid");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<string>("Keyword")
+                        .HasColumnType("text")
+                        .HasColumnName("keyword");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamrolesettings");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_streamrolesettings_guildconfigid");
+
+                    b.ToTable("streamrolesettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("streamrolesettingsid");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("text")
+                        .HasColumnName("username");
+
+                    b.HasKey("Id")
+                        .HasName("pk_streamrolewhitelisteduser");
+
+                    b.HasIndex("StreamRoleSettingsId")
+                        .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
+
+                    b.ToTable("streamrolewhitelisteduser", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("ArchiveId")
+                        .HasColumnType("integer")
+                        .HasColumnName("archiveid");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsDone")
+                        .HasColumnType("boolean")
+                        .HasColumnName("isdone");
+
+                    b.Property<string>("Todo")
+                        .HasColumnType("text")
+                        .HasColumnName("todo");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_todos");
+
+                    b.HasIndex("ArchiveId")
+                        .HasDatabaseName("ix_todos_archiveid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_todos_userid");
+
+                    b.ToTable("todos", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("unbanat");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_unbantimer");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_unbantimer_guildconfigid");
+
+                    b.ToTable("unbantimer", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<DateTime>("UnmuteAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("unmuteat");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_unmutetimer");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_unmutetimer_guildconfigid");
+
+                    b.ToTable("unmutetimer", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("unbanat");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_unroletimer");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_unroletimer_guildconfigid");
+
+                    b.ToTable("unroletimer", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<long>("AwardedXp")
+                        .HasColumnType("bigint")
+                        .HasColumnName("awardedxp");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("NotifyOnLevelUp")
+                        .HasColumnType("integer")
+                        .HasColumnName("notifyonlevelup");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<long>("Xp")
+                        .HasColumnType("bigint")
+                        .HasColumnName("xp");
+
+                    b.HasKey("Id")
+                        .HasName("pk_userxpstats");
+
+                    b.HasIndex("AwardedXp")
+                        .HasDatabaseName("ix_userxpstats_awardedxp");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_userxpstats_guildid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_userxpstats_userid");
+
+                    b.HasIndex("Xp")
+                        .HasDatabaseName("ix_userxpstats_xp");
+
+                    b.HasIndex("UserId", "GuildId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_userxpstats_userid_guildid");
+
+                    b.ToTable("userxpstats", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<decimal>("VoiceChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("voicechannelid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_vcroleinfo");
+
+                    b.HasIndex("GuildConfigId")
+                        .HasDatabaseName("ix_vcroleinfo_guildconfigid");
+
+                    b.ToTable("vcroleinfo", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-            {
-                b.Navigation("Items");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("AffinityId")
+                        .HasColumnType("integer")
+                        .HasColumnName("affinityid");
+
+                    b.Property<int?>("ClaimerId")
+                        .HasColumnType("integer")
+                        .HasColumnName("claimerid");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("bigint")
+                        .HasColumnName("price");
+
+                    b.Property<int>("WaifuId")
+                        .HasColumnType("integer")
+                        .HasColumnName("waifuid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_waifuinfo");
+
+                    b.HasIndex("AffinityId")
+                        .HasDatabaseName("ix_waifuinfo_affinityid");
+
+                    b.HasIndex("ClaimerId")
+                        .HasDatabaseName("ix_waifuinfo_claimerid");
+
+                    b.HasIndex("Price")
+                        .HasDatabaseName("ix_waifuinfo_price");
+
+                    b.HasIndex("WaifuId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_waifuinfo_waifuid");
+
+                    b.ToTable("waifuinfo", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<string>("ItemEmoji")
+                        .HasColumnType("text")
+                        .HasColumnName("itememoji");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.Property<int?>("WaifuInfoId")
+                        .HasColumnType("integer")
+                        .HasColumnName("waifuinfoid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_waifuitem");
+
+                    b.HasIndex("WaifuInfoId")
+                        .HasDatabaseName("ix_waifuitem_waifuinfoid");
+
+                    b.ToTable("waifuitem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int?>("NewId")
+                        .HasColumnType("integer")
+                        .HasColumnName("newid");
+
+                    b.Property<int?>("OldId")
+                        .HasColumnType("integer")
+                        .HasColumnName("oldid");
+
+                    b.Property<int>("UpdateType")
+                        .HasColumnType("integer")
+                        .HasColumnName("updatetype");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_waifuupdates");
+
+                    b.HasIndex("NewId")
+                        .HasDatabaseName("ix_waifuupdates_newid");
+
+                    b.HasIndex("OldId")
+                        .HasDatabaseName("ix_waifuupdates_oldid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_waifuupdates_userid");
+
+                    b.ToTable("waifuupdates", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("Forgiven")
+                        .HasColumnType("boolean")
+                        .HasColumnName("forgiven");
+
+                    b.Property<string>("ForgivenBy")
+                        .HasColumnType("text")
+                        .HasColumnName("forgivenby");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<string>("Moderator")
+                        .HasColumnType("text")
+                        .HasColumnName("moderator");
+
+                    b.Property<string>("Reason")
+                        .HasColumnType("text")
+                        .HasColumnName("reason");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<long>("Weight")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasDefaultValue(1L)
+                        .HasColumnName("weight");
+
+                    b.HasKey("Id")
+                        .HasName("pk_warnings");
+
+                    b.HasIndex("DateAdded")
+                        .HasDatabaseName("ix_warnings_dateadded");
+
+                    b.HasIndex("GuildId")
+                        .HasDatabaseName("ix_warnings_guildid");
+
+                    b.HasIndex("UserId")
+                        .HasDatabaseName("ix_warnings_userid");
+
+                    b.ToTable("warnings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Count")
+                        .HasColumnType("integer")
+                        .HasColumnName("count");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<int>("Punishment")
+                        .HasColumnType("integer")
+                        .HasColumnName("punishment");
+
+                    b.Property<decimal?>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<int>("Time")
+                        .HasColumnType("integer")
+                        .HasColumnName("time");
+
+                    b.HasKey("Id")
+                        .HasName("pk_warningpunishment");
+
+                    b.HasAlternateKey("GuildId", "Count")
+                        .HasName("ak_warningpunishment_guildid_count");
+
+                    b.ToTable("warningpunishment", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Amount")
+                        .HasColumnType("integer")
+                        .HasColumnName("amount");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("integer")
+                        .HasColumnName("level");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("xpsettingsid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xpcurrencyreward");
+
+                    b.HasIndex("XpSettingsId")
+                        .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
+
+                    b.ToTable("xpcurrencyreward", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("integer")
+                        .HasColumnName("level");
+
+                    b.Property<bool>("Remove")
+                        .HasColumnType("boolean")
+                        .HasColumnName("remove");
+
+                    b.Property<decimal>("RoleId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("roleid");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("integer")
+                        .HasColumnName("xpsettingsid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xprolereward");
+
+                    b.HasIndex("XpSettingsId", "Level")
+                        .IsUnique()
+                        .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
+
+                    b.ToTable("xprolereward", (string)null);
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-            {
-                b.Navigation("CurrencyRewards");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
 
-                b.Navigation("ExclusionList");
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
-                b.Navigation("RoleRewards");
-            });
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("integer")
+                        .HasColumnName("guildconfigid");
+
+                    b.Property<bool>("ServerExcluded")
+                        .HasColumnType("boolean")
+                        .HasColumnName("serverexcluded");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xpsettings");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique()
+                        .HasDatabaseName("ix_xpsettings_guildconfigid");
+
+                    b.ToTable("xpsettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("timestamp without time zone")
+                        .HasColumnName("dateadded");
+
+                    b.Property<bool>("IsUsing")
+                        .HasColumnType("boolean")
+                        .HasColumnName("isusing");
+
+                    b.Property<string>("ItemKey")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("itemkey");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("integer")
+                        .HasColumnName("itemtype");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.HasKey("Id")
+                        .HasName("pk_xpshopowneditem");
+
+                    b.HasIndex("UserId", "ItemType", "ItemKey")
+                        .IsUnique()
+                        .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
+
+                    b.ToTable("xpshopowneditem", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("AutoDeleteTimer")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasDefaultValue(0)
+                        .HasColumnName("autodeletetimer");
+
+                    b.Property<decimal?>("ChannelId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("channelid");
+
+                    b.Property<int>("GreetType")
+                        .HasColumnType("integer")
+                        .HasColumnName("greettype");
+
+                    b.Property<decimal>("GuildId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("guildid");
+
+                    b.Property<bool>("IsEnabled")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("boolean")
+                        .HasDefaultValue(false)
+                        .HasColumnName("isenabled");
+
+                    b.Property<string>("MessageText")
+                        .HasColumnType("text")
+                        .HasColumnName("messagetext");
+
+                    b.HasKey("Id")
+                        .HasName("pk_greetsettings");
+
+                    b.HasIndex("GuildId", "GreetType")
+                        .IsUnique()
+                        .HasDatabaseName("ix_greetsettings_guildid_greettype");
+
+                    b.ToTable("greetsettings", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Services.UserBetStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Game")
+                        .HasColumnType("integer")
+                        .HasColumnName("game");
+
+                    b.Property<long>("LoseCount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("losecount");
+
+                    b.Property<long>("MaxBet")
+                        .HasColumnType("bigint")
+                        .HasColumnName("maxbet");
+
+                    b.Property<long>("MaxWin")
+                        .HasColumnType("bigint")
+                        .HasColumnName("maxwin");
+
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("numeric")
+                        .HasColumnName("paidout");
+
+                    b.Property<decimal>("TotalBet")
+                        .HasColumnType("numeric")
+                        .HasColumnName("totalbet");
+
+                    b.Property<decimal>("UserId")
+                        .HasColumnType("numeric(20,0)")
+                        .HasColumnName("userid");
+
+                    b.Property<long>("WinCount")
+                        .HasColumnType("bigint")
+                        .HasColumnName("wincount");
+
+                    b.HasKey("Id")
+                        .HasName("pk_userbetstats");
+
+                    b.HasIndex("UserId", "Game")
+                        .IsUnique()
+                        .HasDatabaseName("ix_userbetstats_userid_game");
+
+                    b.ToTable("userbetstats", (string)null);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiAltSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiAltSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_antialtsetting_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiRaidSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiRaidSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_antiraidsetting_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AntiSpamSetting", null)
+                        .WithMany("IgnoredChannels")
+                        .HasForeignKey("AntiSpamSettingId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_antispamignore_antispamsetting_antispamsettingid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiSpamSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiSpamSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_antispamsetting_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                        .WithMany("Users")
+                        .HasForeignKey("ChannelId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_autotranslateusers_autotranslatechannels_channelid");
+
+                    b.Navigation("Channel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Applicants")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubapplicants_clubs_clubid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubapplicants_discorduser_userid");
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Bans")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubbans_clubs_clubid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_clubbans_discorduser_userid");
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                        .OnDelete(DeleteBehavior.SetNull)
+                        .HasConstraintName("fk_clubs_discorduser_ownerid");
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandAliases")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_commandalias_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandCooldowns")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_commandcooldown_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("DelMsgOnCmdChannels")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_delmsgoncmdchannel_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Members")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.NoAction)
+                        .HasConstraintName("fk_discorduser_clubs_clubid");
+
+                    b.Navigation("Club");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("ExclusionList")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_excludeditem_xpsettings_xpsettingsid");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("FeedSubs")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_feedsub_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterInvitesChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filterchannelid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterLinksChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filterlinkschannelid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterWordsChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filterwordschannelid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilteredWords")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_filteredword_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FollowedStreams")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_followedstream_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("GenerateCurrencyChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_gcchannelid_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GiveawayModel", null)
+                        .WithMany("Participants")
+                        .HasForeignKey("GiveawayId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_giveawayuser_giveawaymodel_giveawayid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("SelfAssignableRoleGroupNames")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_groupname_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                        .WithMany("LogIgnores")
+                        .HasForeignKey("LogSettingId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_ignoredlogchannels_logsettings_logsettingid");
+
+                    b.Navigation("LogSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("MutedUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_muteduserid_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("Permissions")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_permissions_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.MusicPlaylist", null)
+                        .WithMany("Songs")
+                        .HasForeignKey("MusicPlaylistId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_playlistsong_musicplaylists_musicplaylistid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("ShopEntries")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_shopentry_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ShopEntry", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ShopEntryId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_shopentryitem_shopentry_shopentryid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredRoles")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_slowmodeignoredrole_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_slowmodeignoreduser_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Blacklist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_streamroleblacklisteduser_streamrolesettings_streamrolesett~");
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("StreamRole")
+                        .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_streamrolesettings_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Whitelist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_streamrolewhitelisteduser_streamrolesettings_streamrolesett~");
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ArchiveId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_todos_todosarchive_archiveid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnbanTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_unbantimer_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnmuteTimers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_unmutetimer_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnroleTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_unroletimer_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("VcRoleInfos")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .HasConstraintName("fk_vcroleinfo_guildconfigs_guildconfigid");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Affinity")
+                        .WithMany()
+                        .HasForeignKey("AffinityId")
+                        .HasConstraintName("fk_waifuinfo_discorduser_affinityid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
+                        .WithMany()
+                        .HasForeignKey("ClaimerId")
+                        .HasConstraintName("fk_waifuinfo_discorduser_claimerid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_waifuinfo_discorduser_waifuid");
+
+                    b.Navigation("Affinity");
+
+                    b.Navigation("Claimer");
+
+                    b.Navigation("Waifu");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                        .WithMany("Items")
+                        .HasForeignKey("WaifuInfoId")
+                        .HasConstraintName("fk_waifuitem_waifuinfo_waifuinfoid");
+
+                    b.Navigation("WaifuInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "New")
+                        .WithMany()
+                        .HasForeignKey("NewId")
+                        .HasConstraintName("fk_waifuupdates_discorduser_newid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
+                        .WithMany()
+                        .HasForeignKey("OldId")
+                        .HasConstraintName("fk_waifuupdates_discorduser_oldid");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_waifuupdates_discorduser_userid");
+
+                    b.Navigation("New");
+
+                    b.Navigation("Old");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("CurrencyRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_xpcurrencyreward_xpsettings_xpsettingsid");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("RoleRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_xprolereward_xpsettings_xpsettingsid");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("XpSettings")
+                        .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("fk_xpsettings_guildconfigs_guildconfigid");
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.Navigation("IgnoredChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
+                {
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.Navigation("Applicants");
+
+                    b.Navigation("Bans");
+
+                    b.Navigation("Members");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
+                {
+                    b.Navigation("Participants");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
+                {
+                    b.Navigation("AntiAltSetting");
+
+                    b.Navigation("AntiRaidSetting");
+
+                    b.Navigation("AntiSpamSetting");
+
+                    b.Navigation("CommandAliases");
+
+                    b.Navigation("CommandCooldowns");
+
+                    b.Navigation("DelMsgOnCmdChannels");
+
+                    b.Navigation("FeedSubs");
+
+                    b.Navigation("FilterInvitesChannelIds");
+
+                    b.Navigation("FilterLinksChannelIds");
+
+                    b.Navigation("FilterWordsChannelIds");
+
+                    b.Navigation("FilteredWords");
+
+                    b.Navigation("FollowedStreams");
+
+                    b.Navigation("GenerateCurrencyChannelIds");
+
+                    b.Navigation("MutedUsers");
+
+                    b.Navigation("Permissions");
+
+                    b.Navigation("SelfAssignableRoleGroupNames");
+
+                    b.Navigation("ShopEntries");
+
+                    b.Navigation("SlowmodeIgnoredRoles");
+
+                    b.Navigation("SlowmodeIgnoredUsers");
+
+                    b.Navigation("StreamRole");
+
+                    b.Navigation("UnbanTimer");
+
+                    b.Navigation("UnmuteTimers");
+
+                    b.Navigation("UnroleTimer");
+
+                    b.Navigation("VcRoleInfos");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
+                {
+                    b.Navigation("LogIgnores");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
+                {
+                    b.Navigation("Songs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.Navigation("Blacklist");
+
+                    b.Navigation("Whitelist");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.Navigation("CurrencyRewards");
+
+                    b.Navigation("ExclusionList");
+
+                    b.Navigation("RoleRewards");
+                });
 #pragma warning restore 612, 618
         }
     }
diff --git a/src/EllieBot/Migrations/Sqlite/20241105024653_betstats.Designer.cs b/src/EllieBot/Migrations/Sqlite/20241105024653_betstats.Designer.cs
new file mode 100644
index 0000000..3151283
--- /dev/null
+++ b/src/EllieBot/Migrations/Sqlite/20241105024653_betstats.Designer.cs
@@ -0,0 +1,3011 @@
+// <auto-generated />
+using System;
+using EllieBot.Db;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace EllieBot.Migrations
+{
+    [DbContext(typeof(SqliteContext))]
+    [Migration("20241105024653_betstats")]
+    partial class betstats
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder.HasAnnotation("ProductVersion", "8.0.8");
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Action")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("ActionDurationMinutes")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<TimeSpan>("MinAge")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("AntiAltSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Action")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("PunishDuration")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Seconds")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UserThreshold")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("AntiRaidSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("AntiSpamSettingId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AntiSpamSettingId");
+
+                    b.ToTable("AntiSpamIgnore");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Action")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("MessageThreshold")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("MuteTime")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("AntiSpamSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("TodosArchive");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoCommand", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("ChannelName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("CommandText")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("GuildName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Interval")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("VoiceChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("VoiceChannelName")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("AutoCommands");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoPublishChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.ToTable("AutoPublishChannel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AutoDelete")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ChannelId")
+                        .IsUnique();
+
+                    b.HasIndex("GuildId");
+
+                    b.ToTable("AutoTranslateChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Source")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Target")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("ChannelId", "UserId");
+
+                    b.ToTable("AutoTranslateUsers");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.BanTemplate", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("PruneDays")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Text")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.ToTable("BanTemplates");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.BankUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Balance")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("BankUsers");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.BlacklistEntry", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("ItemId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Blacklist");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("ClubId", "UserId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("ClubApplicants");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("ClubId", "UserId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("ClubBans");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ImageUrl")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(20)
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("OwnerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Xp")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("Name")
+                        .IsUnique();
+
+                    b.HasIndex("OwnerId")
+                        .IsUnique();
+
+                    b.ToTable("Clubs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Mapping")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Trigger")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("CommandAlias");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("CommandName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Seconds")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("CommandCooldown");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CurrencyTransaction", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Amount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Extra")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Note")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("OtherId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValueSql("NULL");
+
+                    b.Property<string>("Type")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("CurrencyTransactions");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("State")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("DelMsgOnCmdChannel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordPermOverride", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Command")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("Perm")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "Command")
+                        .IsUnique();
+
+                    b.ToTable("DiscordPermOverrides");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("AvatarId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("ClubId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("CurrencyAmount")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0L);
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsClubAdmin")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(false);
+
+                    b.Property<int>("NotifyOnLevelUp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0);
+
+                    b.Property<long>("TotalXp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0L);
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("UserId");
+
+                    b.HasIndex("ClubId");
+
+                    b.HasIndex("CurrencyAmount");
+
+                    b.HasIndex("TotalXp");
+
+                    b.HasIndex("UserId");
+
+                    b.HasIndex("Username");
+
+                    b.ToTable("DiscordUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.EllieExpression", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AllowTarget")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AutoDeleteTrigger")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("ContainsAnywhere")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("DmResponse")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Reactions")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Response")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Trigger")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Expressions");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("ItemId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("XpSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("XpSettingsId");
+
+                    b.ToTable("ExcludedItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Url")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("GuildConfigId", "Url");
+
+                    b.ToTable("FeedSub");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilterChannelId");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilterLinksChannelId");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilterWordsChannelId");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Word")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilteredWord");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FlagTranslateChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "ChannelId")
+                        .IsUnique();
+
+                    b.ToTable("FlagTranslateChannel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FollowedStream");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("GCChannelId");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<decimal>("Bet")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Feature")
+                        .HasColumnType("TEXT");
+
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("Feature")
+                        .IsUnique();
+
+                    b.ToTable("GamblingStats");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("EndsAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("GiveawayModel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GiveawayId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GiveawayId", "UserId")
+                        .IsUnique();
+
+                    b.ToTable("GiveawayUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Number")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId", "Number")
+                        .IsUnique();
+
+                    b.ToTable("GroupName");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("AutoAssignRoleIds")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("CleverbotEnabled")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("DeleteMessageOnCommand")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("DeleteStreamOnlineMessage")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("DisableGlobalExpressions")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("ExclusiveSelfAssignedRoles")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("FilterInvites")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("FilterLinks")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("FilterWords")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("GameVoiceChannel")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Locale")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("MuteRoleName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("NotifyStreamOffline")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("PermissionRole")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Prefix")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("StickyRoles")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("TimeZoneId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("VerboseErrors")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(true);
+
+                    b.Property<bool>("VerbosePermissions")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("WarnExpireAction")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("WarnExpireHours")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("WarningsInitialized")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.HasIndex("WarnExpireHours");
+
+                    b.ToTable("GuildConfigs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
+                {
+                    b.Property<ulong>("GuildId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("GuildId");
+
+                    b.ToTable("HoneyPotChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("LogItemId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("LogSettingId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                        .IsUnique();
+
+                    b.ToTable("IgnoredLogChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ChannelId")
+                        .IsUnique();
+
+                    b.ToTable("ImageOnlyChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ChannelCreatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ChannelDestroyedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ChannelUpdatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogOtherId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogUserPresenceId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogVoicePresenceId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogVoicePresenceTTSId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogWarnsId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("MessageDeletedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("MessageUpdatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ThreadCreatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ThreadDeletedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserBannedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserJoinedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserLeftId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserMutedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserUnbannedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserUpdatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.ToTable("LogSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AutoDisconnect")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AutoPlay")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("MusicChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("PlayerRepeat")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("QualityPreset")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Volume")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(100);
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.ToTable("MusicPlayerSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Author")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("AuthorId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("MusicPlaylists");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("MutedUserId");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.NCPixel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<uint>("Color")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("OwnerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Position")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("Position");
+
+                    b.HasIndex("OwnerId");
+
+                    b.ToTable("NCPixel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
+                {
+                    b.Property<ulong>("UserId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("AmountCents")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("LastCharge")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("UniquePlatformUserId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime>("ValidThru")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("UserId");
+
+                    b.HasIndex("UniquePlatformUserId")
+                        .IsUnique();
+
+                    b.ToTable("Patrons");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("IsCustomCommand")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("PrimaryTarget")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("PrimaryTargetId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("SecondaryTarget")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("SecondaryTargetName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("State")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("Permissions");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Amount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ChannelId");
+
+                    b.HasIndex("MessageId")
+                        .IsUnique();
+
+                    b.ToTable("PlantedCurrency");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("MusicPlaylistId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Provider")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("ProviderType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Query")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Title")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Uri")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MusicPlaylistId");
+
+                    b.ToTable("PlaylistSong");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("AuthorId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("AuthorName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Keyword")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("Keyword");
+
+                    b.ToTable("Quotes");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Emote")
+                        .HasMaxLength(100)
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Group")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("LevelReq")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("MessageId", "Emote")
+                        .IsUnique();
+
+                    b.ToTable("ReactionRoles");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsPrivate")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("ServerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("When")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("When");
+
+                    b.ToTable("Reminders");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<TimeSpan>("Interval")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("LastMessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("NoRedundant")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<TimeSpan?>("StartTimeOfDay")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Repeaters");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("AmountRewardedThisMonth")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime>("LastReward")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("PlatformUserId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PlatformUserId")
+                        .IsUnique();
+
+                    b.ToTable("RewardedUsers");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Status")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("RotatingStatus");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Group")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0);
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("LevelRequirement")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "RoleId")
+                        .IsUnique();
+
+                    b.ToTable("SelfAssignableRoles");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("AuthorId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Command")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("RoleName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("RoleRequirement")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("ShopEntry");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("ShopEntryId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Text")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ShopEntryId");
+
+                    b.ToTable("ShopEntryItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("SlowmodeIgnoredRole");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("SlowmodeIgnoredUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("RoleIds")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "UserId")
+                        .IsUnique();
+
+                    b.ToTable("StickyRoles");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("StreamOnlineMessages");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("StreamRoleSettingsId");
+
+                    b.ToTable("StreamRoleBlacklistedUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("AddRoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("Enabled")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("FromRoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Keyword")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("StreamRoleSettingsId");
+
+                    b.ToTable("StreamRoleWhitelistedUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("ArchiveId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsDone")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Todo")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ArchiveId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Todos");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("UnbanTimer");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("UnmuteAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("UnmuteTimer");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("UnroleTimer");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("AwardedXp")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("NotifyOnLevelUp")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Xp")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AwardedXp");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("UserId");
+
+                    b.HasIndex("Xp");
+
+                    b.HasIndex("UserId", "GuildId")
+                        .IsUnique();
+
+                    b.ToTable("UserXpStats");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("VoiceChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("VcRoleInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("AffinityId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("ClaimerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("WaifuId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AffinityId");
+
+                    b.HasIndex("ClaimerId");
+
+                    b.HasIndex("Price");
+
+                    b.HasIndex("WaifuId")
+                        .IsUnique();
+
+                    b.ToTable("WaifuInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ItemEmoji")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("WaifuInfoId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("WaifuInfoId");
+
+                    b.ToTable("WaifuItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("NewId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("OldId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UpdateType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("NewId");
+
+                    b.HasIndex("OldId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("WaifuUpdates");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("Forgiven")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("ForgivenBy")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Moderator")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Reason")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Weight")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(1L);
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DateAdded");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Warnings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Count")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Punishment")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Time")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("GuildId", "Count");
+
+                    b.ToTable("WarningPunishment");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Amount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("XpSettingsId");
+
+                    b.ToTable("XpCurrencyReward");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("Remove")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("XpSettingsId", "Level")
+                        .IsUnique();
+
+                    b.ToTable("XpRoleReward");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("ServerExcluded")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsUsing")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("ItemKey")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId", "ItemType", "ItemKey")
+                        .IsUnique();
+
+                    b.ToTable("XpShopOwnedItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("AutoDeleteTimer")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0);
+
+                    b.Property<ulong?>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GreetType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("IsEnabled")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(false);
+
+                    b.Property<string>("MessageText")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "GreetType")
+                        .IsUnique();
+
+                    b.ToTable("GreetSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Services.UserBetStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Game")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("LoseCount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("MaxBet")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("MaxWin")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("TEXT");
+
+                    b.Property<decimal>("TotalBet")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("WinCount")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId", "Game")
+                        .IsUnique();
+
+                    b.ToTable("UserBetStats");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiAltSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiAltSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiRaidSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiRaidSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AntiSpamSetting", null)
+                        .WithMany("IgnoredChannels")
+                        .HasForeignKey("AntiSpamSettingId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiSpamSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiSpamSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                        .WithMany("Users")
+                        .HasForeignKey("ChannelId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Channel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Applicants")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Bans")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                        .OnDelete(DeleteBehavior.SetNull);
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandAliases")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandCooldowns")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("DelMsgOnCmdChannels")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Members")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.NoAction);
+
+                    b.Navigation("Club");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("ExclusionList")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade);
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("FeedSubs")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterInvitesChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterLinksChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterWordsChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilteredWords")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FollowedStreams")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("GenerateCurrencyChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GiveawayModel", null)
+                        .WithMany("Participants")
+                        .HasForeignKey("GiveawayId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("SelfAssignableRoleGroupNames")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                        .WithMany("LogIgnores")
+                        .HasForeignKey("LogSettingId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("LogSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("MutedUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("Permissions")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.MusicPlaylist", null)
+                        .WithMany("Songs")
+                        .HasForeignKey("MusicPlaylistId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("ShopEntries")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ShopEntry", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ShopEntryId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredRoles")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Blacklist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("StreamRole")
+                        .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Whitelist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ArchiveId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnbanTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnmuteTimers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnroleTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("VcRoleInfos")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Affinity")
+                        .WithMany()
+                        .HasForeignKey("AffinityId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
+                        .WithMany()
+                        .HasForeignKey("ClaimerId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Affinity");
+
+                    b.Navigation("Claimer");
+
+                    b.Navigation("Waifu");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                        .WithMany("Items")
+                        .HasForeignKey("WaifuInfoId");
+
+                    b.Navigation("WaifuInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "New")
+                        .WithMany()
+                        .HasForeignKey("NewId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
+                        .WithMany()
+                        .HasForeignKey("OldId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("New");
+
+                    b.Navigation("Old");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("CurrencyRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("RoleRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("XpSettings")
+                        .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.Navigation("IgnoredChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
+                {
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.Navigation("Applicants");
+
+                    b.Navigation("Bans");
+
+                    b.Navigation("Members");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
+                {
+                    b.Navigation("Participants");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
+                {
+                    b.Navigation("AntiAltSetting");
+
+                    b.Navigation("AntiRaidSetting");
+
+                    b.Navigation("AntiSpamSetting");
+
+                    b.Navigation("CommandAliases");
+
+                    b.Navigation("CommandCooldowns");
+
+                    b.Navigation("DelMsgOnCmdChannels");
+
+                    b.Navigation("FeedSubs");
+
+                    b.Navigation("FilterInvitesChannelIds");
+
+                    b.Navigation("FilterLinksChannelIds");
+
+                    b.Navigation("FilterWordsChannelIds");
+
+                    b.Navigation("FilteredWords");
+
+                    b.Navigation("FollowedStreams");
+
+                    b.Navigation("GenerateCurrencyChannelIds");
+
+                    b.Navigation("MutedUsers");
+
+                    b.Navigation("Permissions");
+
+                    b.Navigation("SelfAssignableRoleGroupNames");
+
+                    b.Navigation("ShopEntries");
+
+                    b.Navigation("SlowmodeIgnoredRoles");
+
+                    b.Navigation("SlowmodeIgnoredUsers");
+
+                    b.Navigation("StreamRole");
+
+                    b.Navigation("UnbanTimer");
+
+                    b.Navigation("UnmuteTimers");
+
+                    b.Navigation("UnroleTimer");
+
+                    b.Navigation("VcRoleInfos");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
+                {
+                    b.Navigation("LogIgnores");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
+                {
+                    b.Navigation("Songs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.Navigation("Blacklist");
+
+                    b.Navigation("Whitelist");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.Navigation("CurrencyRewards");
+
+                    b.Navigation("ExclusionList");
+
+                    b.Navigation("RoleRewards");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/src/EllieBot/Migrations/Sqlite/20241105024653_betstats.cs b/src/EllieBot/Migrations/Sqlite/20241105024653_betstats.cs
new file mode 100644
index 0000000..609c3f3
--- /dev/null
+++ b/src/EllieBot/Migrations/Sqlite/20241105024653_betstats.cs
@@ -0,0 +1,47 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace EllieBot.Migrations
+{
+    /// <inheritdoc />
+    public partial class betstats : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "UserBetStats",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "INTEGER", nullable: false)
+                        .Annotation("Sqlite:Autoincrement", true),
+                    UserId = table.Column<ulong>(type: "INTEGER", nullable: false),
+                    Game = table.Column<int>(type: "INTEGER", nullable: false),
+                    WinCount = table.Column<long>(type: "INTEGER", nullable: false),
+                    LoseCount = table.Column<long>(type: "INTEGER", nullable: false),
+                    TotalBet = table.Column<decimal>(type: "TEXT", nullable: false),
+                    PaidOut = table.Column<decimal>(type: "TEXT", nullable: false),
+                    MaxWin = table.Column<long>(type: "INTEGER", nullable: false),
+                    MaxBet = table.Column<long>(type: "INTEGER", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_UserBetStats", x => x.Id);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_UserBetStats_UserId_Game",
+                table: "UserBetStats",
+                columns: new[] { "UserId", "Game" },
+                unique: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "UserBetStats");
+        }
+    }
+}
diff --git a/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs b/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs
index 190e8d9..a6f8cd9 100644
--- a/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs
+++ b/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs
@@ -1,9 +1,9 @@
 // <auto-generated />
 using System;
+using EllieBot.Db;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore.Infrastructure;
 using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using EllieBot.Db;
 
 #nullable disable
 
@@ -18,2952 +18,2990 @@ namespace EllieBot.Migrations
             modelBuilder.HasAnnotation("ProductVersion", "8.0.8");
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Action")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Action")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("ActionDurationMinutes")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("ActionDurationMinutes")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<TimeSpan>("MinAge")
-                    .HasColumnType("TEXT");
+                    b.Property<TimeSpan>("MinAge")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong?>("RoleId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong?>("RoleId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildConfigId")
-                    .IsUnique();
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
 
-                b.ToTable("AntiAltSetting");
-            });
+                    b.ToTable("AntiAltSetting");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Action")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Action")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("PunishDuration")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("PunishDuration")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Seconds")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Seconds")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("UserThreshold")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("UserThreshold")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildConfigId")
-                    .IsUnique();
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
 
-                b.ToTable("AntiRaidSetting");
-            });
+                    b.ToTable("AntiRaidSetting");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<int?>("AntiSpamSettingId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int?>("AntiSpamSettingId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("AntiSpamSettingId");
+                    b.HasIndex("AntiSpamSettingId");
 
-                b.ToTable("AntiSpamIgnore");
-            });
+                    b.ToTable("AntiSpamIgnore");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Action")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Action")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("MessageThreshold")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("MessageThreshold")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("MuteTime")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("MuteTime")
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong?>("RoleId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong?>("RoleId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildConfigId")
-                    .IsUnique();
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
 
-                b.ToTable("AntiSpamSetting");
-            });
+                    b.ToTable("AntiSpamSetting");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.ToTable("TodosArchive");
-            });
+                    b.ToTable("TodosArchive");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoCommand", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("ChannelName")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("ChannelName")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("CommandText")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("CommandText")
+                        .HasColumnType("TEXT");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong?>("GuildId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong?>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("GuildName")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("GuildName")
+                        .HasColumnType("TEXT");
 
-                b.Property<int>("Interval")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Interval")
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong?>("VoiceChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong?>("VoiceChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("VoiceChannelName")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("VoiceChannelName")
+                        .HasColumnType("TEXT");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.ToTable("AutoCommands");
-            });
+                    b.ToTable("AutoCommands");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoPublishChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildId")
-                    .IsUnique();
+                    b.HasIndex("GuildId")
+                        .IsUnique();
 
-                b.ToTable("AutoPublishChannel");
-            });
+                    b.ToTable("AutoPublishChannel");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<bool>("AutoDelete")
-                    .HasColumnType("INTEGER");
+                    b.Property<bool>("AutoDelete")
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("ChannelId")
-                    .IsUnique();
+                    b.HasIndex("ChannelId")
+                        .IsUnique();
 
-                b.HasIndex("GuildId");
+                    b.HasIndex("GuildId");
 
-                b.ToTable("AutoTranslateChannels");
-            });
+                    b.ToTable("AutoTranslateChannels");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("ChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Source")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Source")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Target")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Target")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasAlternateKey("ChannelId", "UserId");
+                    b.HasAlternateKey("ChannelId", "UserId");
 
-                b.ToTable("AutoTranslateUsers");
-            });
+                    b.ToTable("AutoTranslateUsers");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.BanTemplate", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int?>("PruneDays")
-                    .HasColumnType("INTEGER");
+                    b.Property<int?>("PruneDays")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("Text")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Text")
+                        .HasColumnType("TEXT");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildId")
-                    .IsUnique();
+                    b.HasIndex("GuildId")
+                        .IsUnique();
 
-                b.ToTable("BanTemplates");
-            });
+                    b.ToTable("BanTemplates");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.BankUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<long>("Balance")
-                    .HasColumnType("INTEGER");
+                    b.Property<long>("Balance")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("UserId")
-                    .IsUnique();
+                    b.HasIndex("UserId")
+                        .IsUnique();
 
-                b.ToTable("BankUsers");
-            });
+                    b.ToTable("BankUsers");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.BlacklistEntry", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("ItemId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("ItemId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.ToTable("Blacklist");
-            });
+                    b.ToTable("Blacklist");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
-            {
-                b.Property<int>("ClubId")
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("ClubId", "UserId");
+                    b.HasKey("ClubId", "UserId");
 
-                b.HasIndex("UserId");
+                    b.HasIndex("UserId");
 
-                b.ToTable("ClubApplicants");
-            });
+                    b.ToTable("ClubApplicants");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
-            {
-                b.Property<int>("ClubId")
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("ClubId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("ClubId", "UserId");
+                    b.HasKey("ClubId", "UserId");
 
-                b.HasIndex("UserId");
+                    b.HasIndex("UserId");
 
-                b.ToTable("ClubBans");
-            });
+                    b.ToTable("ClubBans");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Description")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Description")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("ImageUrl")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("ImageUrl")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Name")
-                    .HasMaxLength(20)
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Name")
+                        .HasMaxLength(20)
+                        .HasColumnType("TEXT");
 
-                b.Property<int?>("OwnerId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int?>("OwnerId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Xp")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Xp")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("Name")
-                    .IsUnique();
+                    b.HasIndex("Name")
+                        .IsUnique();
 
-                b.HasIndex("OwnerId")
-                    .IsUnique();
+                    b.HasIndex("OwnerId")
+                        .IsUnique();
 
-                b.ToTable("Clubs");
-            });
+                    b.ToTable("Clubs");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("Mapping")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Mapping")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Trigger")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Trigger")
+                        .HasColumnType("TEXT");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildConfigId");
+                    b.HasIndex("GuildConfigId");
 
-                b.ToTable("CommandAlias");
-            });
+                    b.ToTable("CommandAlias");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("CommandName")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("CommandName")
+                        .HasColumnType("TEXT");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<int>("Seconds")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("Seconds")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildConfigId");
+                    b.HasIndex("GuildConfigId");
 
-                b.ToTable("CommandCooldown");
-            });
+                    b.ToTable("CommandCooldown");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.CurrencyTransaction", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<long>("Amount")
-                    .HasColumnType("INTEGER");
+                    b.Property<long>("Amount")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Extra")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Extra")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Note")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Note")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong?>("OtherId")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValueSql("NULL");
+                    b.Property<ulong?>("OtherId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValueSql("NULL");
 
-                b.Property<string>("Type")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Type")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("UserId");
+                    b.HasIndex("UserId");
 
-                b.ToTable("CurrencyTransactions");
-            });
+                    b.ToTable("CurrencyTransactions");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<bool>("State")
-                    .HasColumnType("INTEGER");
+                    b.Property<bool>("State")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildConfigId");
+                    b.HasIndex("GuildConfigId");
 
-                b.ToTable("DelMsgOnCmdChannel");
-            });
+                    b.ToTable("DelMsgOnCmdChannel");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.DiscordPermOverride", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("Command")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Command")
+                        .HasColumnType("TEXT");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<ulong?>("GuildId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong?>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong>("Perm")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("Perm")
+                        .HasColumnType("INTEGER");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasIndex("GuildId", "Command")
-                    .IsUnique();
+                    b.HasIndex("GuildId", "Command")
+                        .IsUnique();
 
-                b.ToTable("DiscordPermOverrides");
-            });
+                    b.ToTable("DiscordPermOverrides");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("AvatarId")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("AvatarId")
+                        .HasColumnType("TEXT");
 
-                b.Property<int?>("ClubId")
-                    .HasColumnType("INTEGER");
+                    b.Property<int?>("ClubId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<long>("CurrencyAmount")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(0L);
+                    b.Property<long>("CurrencyAmount")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0L);
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<bool>("IsClubAdmin")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(false);
+                    b.Property<bool>("IsClubAdmin")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(false);
 
-                b.Property<int>("NotifyOnLevelUp")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(0);
+                    b.Property<int>("NotifyOnLevelUp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0);
 
-                b.Property<long>("TotalXp")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(0L);
+                    b.Property<long>("TotalXp")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0L);
 
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("Username")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.HasAlternateKey("UserId");
+                    b.HasAlternateKey("UserId");
 
-                b.HasIndex("ClubId");
+                    b.HasIndex("ClubId");
 
-                b.HasIndex("CurrencyAmount");
+                    b.HasIndex("CurrencyAmount");
 
-                b.HasIndex("TotalXp");
+                    b.HasIndex("TotalXp");
 
-                b.HasIndex("UserId");
+                    b.HasIndex("UserId");
 
-                b.HasIndex("Username");
+                    b.HasIndex("Username");
 
-                b.ToTable("DiscordUser");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("ItemId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("ItemType")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int?>("XpSettingsId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("XpSettingsId");
-
-                b.ToTable("ExcludedItem");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Message")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Url")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasAlternateKey("GuildConfigId", "Url");
-
-                b.ToTable("FeedSub");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("FilterChannelId");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("FilterLinksChannelId");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("FilterWordsChannelId");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Word")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("FilteredWord");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FlagTranslateChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId", "ChannelId")
-                    .IsUnique();
-
-                b.ToTable("FlagTranslateChannel");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Message")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Username")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("FollowedStream");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("GCChannelId");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<decimal>("Bet")
-                    .HasColumnType("TEXT");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Feature")
-                    .HasColumnType("TEXT");
-
-                b.Property<decimal>("PaidOut")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("Feature")
-                    .IsUnique();
-
-                b.ToTable("GamblingStats");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("EndsAt")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Message")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("MessageId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.ToTable("GiveawayModel");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("GiveawayId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GiveawayId", "UserId")
-                    .IsUnique();
-
-                b.ToTable("GiveawayUser");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Number")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId", "Number")
-                    .IsUnique();
-
-                b.ToTable("GroupName");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("AutoAssignRoleIds")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("CleverbotEnabled")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("DeleteMessageOnCommand")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("DeleteStreamOnlineMessage")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("DisableGlobalExpressions")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("ExclusiveSelfAssignedRoles")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("FilterInvites")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("FilterLinks")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("FilterWords")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("GameVoiceChannel")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Locale")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("MuteRoleName")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("NotifyStreamOffline")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("PermissionRole")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Prefix")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("StickyRoles")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("TimeZoneId")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("VerboseErrors")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(true);
-
-                b.Property<bool>("VerbosePermissions")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("WarnExpireAction")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("WarnExpireHours")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("WarningsInitialized")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId")
-                    .IsUnique();
-
-                b.HasIndex("WarnExpireHours");
-
-                b.ToTable("GuildConfigs");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
-            {
-                b.Property<ulong>("GuildId")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("GuildId");
-
-                b.ToTable("HoneyPotChannels");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("ItemType")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("LogItemId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("LogSettingId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("LogSettingId", "LogItemId", "ItemType")
-                    .IsUnique();
-
-                b.ToTable("IgnoredLogChannels");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("ChannelId")
-                    .IsUnique();
-
-                b.ToTable("ImageOnlyChannels");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("ChannelCreatedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("ChannelDestroyedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("ChannelUpdatedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("LogOtherId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("LogUserPresenceId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("LogVoicePresenceId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("LogVoicePresenceTTSId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("LogWarnsId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("MessageDeletedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("MessageUpdatedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("ThreadCreatedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("ThreadDeletedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("UserBannedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("UserJoinedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("UserLeftId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("UserMutedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("UserUnbannedId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("UserUpdatedId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId")
-                    .IsUnique();
-
-                b.ToTable("LogSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("AutoDisconnect")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("AutoPlay")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("MusicChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("PlayerRepeat")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("QualityPreset")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Volume")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(100);
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId")
-                    .IsUnique();
-
-                b.ToTable("MusicPlayerSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Author")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("AuthorId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.ToTable("MusicPlaylists");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("MutedUserId");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.NCPixel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<uint>("Color")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("OwnerId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Position")
-                    .HasColumnType("INTEGER");
-
-                b.Property<long>("Price")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Text")
-                    .IsRequired()
-                    .HasMaxLength(256)
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasAlternateKey("Position");
-
-                b.HasIndex("OwnerId");
-
-                b.ToTable("NCPixel");
-            });
+                    b.ToTable("DiscordUser");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.EllieExpression", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Property<bool>("AllowTarget")
-                    .HasColumnType("INTEGER");
+                    b.Property<bool>("AllowTarget")
+                        .HasColumnType("INTEGER");
 
-                b.Property<bool>("AutoDeleteTrigger")
-                    .HasColumnType("INTEGER");
+                    b.Property<bool>("AutoDeleteTrigger")
+                        .HasColumnType("INTEGER");
 
-                b.Property<bool>("ContainsAnywhere")
-                    .HasColumnType("INTEGER");
+                    b.Property<bool>("ContainsAnywhere")
+                        .HasColumnType("INTEGER");
 
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Property<bool>("DmResponse")
-                    .HasColumnType("INTEGER");
+                    b.Property<bool>("DmResponse")
+                        .HasColumnType("INTEGER");
 
-                b.Property<ulong?>("GuildId")
-                    .HasColumnType("INTEGER");
+                    b.Property<ulong?>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.Property<string>("Reactions")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Reactions")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Response")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Response")
+                        .HasColumnType("TEXT");
 
-                b.Property<string>("Trigger")
-                    .HasColumnType("TEXT");
+                    b.Property<string>("Trigger")
+                        .HasColumnType("TEXT");
 
-                b.HasKey("Id");
+                    b.HasKey("Id");
 
-                b.ToTable("Expressions");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
-            {
-                b.Property<ulong>("UserId")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("AmountCents")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("LastCharge")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("UniquePlatformUserId")
-                    .HasColumnType("TEXT");
-
-                b.Property<DateTime>("ValidThru")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("UserId");
-
-                b.HasIndex("UniquePlatformUserId")
-                    .IsUnique();
-
-                b.ToTable("Patrons");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Index")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("IsCustomCommand")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("PrimaryTarget")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("PrimaryTargetId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("SecondaryTarget")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("SecondaryTargetName")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("State")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("Permissions");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<long>("Amount")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("MessageId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Password")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("ChannelId");
-
-                b.HasIndex("MessageId")
-                    .IsUnique();
-
-                b.ToTable("PlantedCurrency");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("MusicPlaylistId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Provider")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("ProviderType")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Query")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Title")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Uri")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("MusicPlaylistId");
-
-                b.ToTable("PlaylistSong");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("AuthorId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("AuthorName")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Keyword")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Text")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId");
-
-                b.HasIndex("Keyword");
-
-                b.ToTable("Quotes");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Emote")
-                    .HasMaxLength(100)
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Group")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("LevelReq")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("MessageId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId");
-
-                b.HasIndex("MessageId", "Emote")
-                    .IsUnique();
-
-                b.ToTable("ReactionRoles");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("IsPrivate")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Message")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("ServerId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("When")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("When");
-
-                b.ToTable("Reminders");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<TimeSpan>("Interval")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong?>("LastMessageId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Message")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("NoRedundant")
-                    .HasColumnType("INTEGER");
-
-                b.Property<TimeSpan?>("StartTimeOfDay")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.ToTable("Repeaters");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<long>("AmountRewardedThisMonth")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<DateTime>("LastReward")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("PlatformUserId")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("PlatformUserId")
-                    .IsUnique();
-
-                b.ToTable("RewardedUsers");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Status")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.ToTable("RotatingStatus");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Group")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(0);
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("LevelRequirement")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId", "RoleId")
-                    .IsUnique();
-
-                b.ToTable("SelfAssignableRoles");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("AuthorId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Command")
-                    .HasColumnType("TEXT");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Index")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Price")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("RoleName")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong?>("RoleRequirement")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("ShopEntry");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("ShopEntryId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Text")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("ShopEntryId");
-
-                b.ToTable("ShopEntryItem");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("SlowmodeIgnoredRole");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("SlowmodeIgnoredUser");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("RoleIds")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId", "UserId")
-                    .IsUnique();
-
-                b.ToTable("StickyRoles");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("MessageId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Type")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.ToTable("StreamOnlineMessages");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("StreamRoleSettingsId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Username")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("StreamRoleSettingsId");
-
-                b.ToTable("StreamRoleBlacklistedUser");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("AddRoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("Enabled")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("FromRoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Keyword")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId")
-                    .IsUnique();
-
-                b.ToTable("StreamRoleSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("StreamRoleSettingsId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Username")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("StreamRoleSettingsId");
-
-                b.ToTable("StreamRoleWhitelistedUser");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int?>("ArchiveId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("IsDone")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Todo")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("ArchiveId");
-
-                b.HasIndex("UserId");
-
-                b.ToTable("Todos");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("UnbanAt")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("UnbanTimer");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("UnmuteAt")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("UnmuteTimer");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime>("UnbanAt")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("UnroleTimer");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<long>("AwardedXp")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("NotifyOnLevelUp")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<long>("Xp")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("AwardedXp");
-
-                b.HasIndex("GuildId");
-
-                b.HasIndex("UserId");
-
-                b.HasIndex("Xp");
-
-                b.HasIndex("UserId", "GuildId")
-                    .IsUnique();
-
-                b.ToTable("UserXpStats");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("VoiceChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId");
-
-                b.ToTable("VcRoleInfo");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int?>("AffinityId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int?>("ClaimerId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<long>("Price")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("WaifuId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("AffinityId");
-
-                b.HasIndex("ClaimerId");
-
-                b.HasIndex("Price");
-
-                b.HasIndex("WaifuId")
-                    .IsUnique();
-
-                b.ToTable("WaifuInfo");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("ItemEmoji")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Name")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("WaifuInfoId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("WaifuInfoId");
-
-                b.ToTable("WaifuItem");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int?>("NewId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int?>("OldId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("UpdateType")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("NewId");
-
-                b.HasIndex("OldId");
-
-                b.HasIndex("UserId");
-
-                b.ToTable("WaifuUpdates");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("Forgiven")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("ForgivenBy")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("Moderator")
-                    .HasColumnType("TEXT");
-
-                b.Property<string>("Reason")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<long>("Weight")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(1L);
-
-                b.HasKey("Id");
-
-                b.HasIndex("DateAdded");
-
-                b.HasIndex("GuildId");
-
-                b.HasIndex("UserId");
-
-                b.ToTable("Warnings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Count")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Punishment")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong?>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Time")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasAlternateKey("GuildId", "Count");
-
-                b.ToTable("WarningPunishment");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("Amount")
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Level")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("XpSettingsId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("XpSettingsId");
-
-                b.ToTable("XpCurrencyReward");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("Level")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("Remove")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("RoleId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("XpSettingsId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("XpSettingsId", "Level")
-                    .IsUnique();
-
-                b.ToTable("XpRoleReward");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("GuildConfigId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("ServerExcluded")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildConfigId")
-                    .IsUnique();
-
-                b.ToTable("XpSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<DateTime?>("DateAdded")
-                    .HasColumnType("TEXT");
-
-                b.Property<bool>("IsUsing")
-                    .HasColumnType("INTEGER");
-
-                b.Property<string>("ItemKey")
-                    .IsRequired()
-                    .HasColumnType("TEXT");
-
-                b.Property<int>("ItemType")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("UserId")
-                    .HasColumnType("INTEGER");
-
-                b.HasKey("Id");
-
-                b.HasIndex("UserId", "ItemType", "ItemKey")
-                    .IsUnique();
-
-                b.ToTable("XpShopOwnedItem");
-            });
-
-            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
-            {
-                b.Property<int>("Id")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("AutoDeleteTimer")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(0);
-
-                b.Property<ulong?>("ChannelId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<int>("GreetType")
-                    .HasColumnType("INTEGER");
-
-                b.Property<ulong>("GuildId")
-                    .HasColumnType("INTEGER");
-
-                b.Property<bool>("IsEnabled")
-                    .ValueGeneratedOnAdd()
-                    .HasColumnType("INTEGER")
-                    .HasDefaultValue(false);
-
-                b.Property<string>("MessageText")
-                    .HasColumnType("TEXT");
-
-                b.HasKey("Id");
-
-                b.HasIndex("GuildId", "GreetType")
-                    .IsUnique();
-
-                b.ToTable("GreetSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithOne("AntiAltSetting")
-                    .HasForeignKey("EllieBot.Db.Models.AntiAltSetting", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithOne("AntiRaidSetting")
-                    .HasForeignKey("EllieBot.Db.Models.AntiRaidSetting", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.AntiSpamSetting", null)
-                    .WithMany("IgnoredChannels")
-                    .HasForeignKey("AntiSpamSettingId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithOne("AntiSpamSetting")
-                    .HasForeignKey("EllieBot.Db.Models.AntiSpamSetting", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
-                    .WithMany("Users")
-                    .HasForeignKey("ChannelId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("Channel");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
-                    .WithMany("Applicants")
-                    .HasForeignKey("ClubId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
-                    .WithMany()
-                    .HasForeignKey("UserId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("Club");
-
-                b.Navigation("User");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
-                    .WithMany("Bans")
-                    .HasForeignKey("ClubId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
-                    .WithMany()
-                    .HasForeignKey("UserId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("Club");
-
-                b.Navigation("User");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
-                    .WithOne()
-                    .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
-                    .OnDelete(DeleteBehavior.SetNull);
-
-                b.Navigation("Owner");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("CommandAliases")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("CommandCooldowns")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("DelMsgOnCmdChannels")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
-                    .WithMany("Members")
-                    .HasForeignKey("ClubId")
-                    .OnDelete(DeleteBehavior.NoAction);
-
-                b.Navigation("Club");
-            });
+                    b.ToTable("Expressions");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                    .WithMany("ExclusionList")
-                    .HasForeignKey("XpSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade);
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("XpSettings");
-            });
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("ItemId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("XpSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("XpSettingsId");
+
+                    b.ToTable("ExcludedItem");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithMany("FeedSubs")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("GuildConfig");
-            });
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Url")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("GuildConfigId", "Url");
+
+                    b.ToTable("FeedSub");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilterInvitesChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilterChannelId");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilterLinksChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilterLinksChannelId");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilterWordsChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilterWordsChannelId");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FilteredWords")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Word")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FilteredWord");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FlagTranslateChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "ChannelId")
+                        .IsUnique();
+
+                    b.ToTable("FlagTranslateChannel");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("FollowedStreams")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("FollowedStream");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithMany("GenerateCurrencyChannelIds")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("GuildConfig");
-            });
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
 
-            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GiveawayModel", null)
-                    .WithMany("Participants")
-                    .HasForeignKey("GiveawayId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-            });
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithMany("SelfAssignableRoleGroupNames")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("GuildConfig");
-            });
+                    b.HasKey("Id");
 
-            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
-                    .WithMany("LogIgnores")
-                    .HasForeignKey("LogSettingId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
+                    b.HasIndex("GuildConfigId");
 
-                b.Navigation("LogSetting");
-            });
+                    b.ToTable("GCChannelId");
+                });
 
-            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("MutedUsers")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+            modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("Permissions")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                    b.Property<decimal>("Bet")
+                        .HasColumnType("TEXT");
 
-            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.MusicPlaylist", null)
-                    .WithMany("Songs")
-                    .HasForeignKey("MusicPlaylistId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("ShopEntries")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                    b.Property<string>("Feature")
+                        .HasColumnType("TEXT");
 
-            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ShopEntry", null)
-                    .WithMany("Items")
-                    .HasForeignKey("ShopEntryId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("TEXT");
 
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("SlowmodeIgnoredRoles")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                    b.HasKey("Id");
 
-            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("SlowmodeIgnoredUsers")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
+                    b.HasIndex("Feature")
+                        .IsUnique();
 
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
-                    .WithMany("Blacklist")
-                    .HasForeignKey("StreamRoleSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("StreamRoleSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithOne("StreamRole")
-                    .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("GuildConfig");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
-                    .WithMany("Whitelist")
-                    .HasForeignKey("StreamRoleSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("StreamRoleSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
-                    .WithMany("Items")
-                    .HasForeignKey("ArchiveId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("UnbanTimer")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("UnmuteTimers")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("UnroleTimer")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                    .WithMany("VcRoleInfos")
-                    .HasForeignKey("GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade);
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Affinity")
-                    .WithMany()
-                    .HasForeignKey("AffinityId");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
-                    .WithMany()
-                    .HasForeignKey("ClaimerId");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
-                    .WithOne()
-                    .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("Affinity");
-
-                b.Navigation("Claimer");
-
-                b.Navigation("Waifu");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
-                    .WithMany("Items")
-                    .HasForeignKey("WaifuInfoId");
-
-                b.Navigation("WaifuInfo");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "New")
-                    .WithMany()
-                    .HasForeignKey("NewId");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
-                    .WithMany()
-                    .HasForeignKey("OldId");
-
-                b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
-                    .WithMany()
-                    .HasForeignKey("UserId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("New");
-
-                b.Navigation("Old");
-
-                b.Navigation("User");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                    .WithMany("CurrencyRewards")
-                    .HasForeignKey("XpSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("XpSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                    .WithMany("RoleRewards")
-                    .HasForeignKey("XpSettingsId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("XpSettings");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-            {
-                b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
-                    .WithOne("XpSettings")
-                    .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
-                    .OnDelete(DeleteBehavior.Cascade)
-                    .IsRequired();
-
-                b.Navigation("GuildConfig");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-            {
-                b.Navigation("IgnoredChannels");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-            {
-                b.Navigation("Items");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-            {
-                b.Navigation("Users");
-            });
-
-            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-            {
-                b.Navigation("Applicants");
-
-                b.Navigation("Bans");
-
-                b.Navigation("Members");
-            });
+                    b.ToTable("GamblingStats");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-            {
-                b.Navigation("Participants");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("EndsAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("GiveawayModel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GiveawayId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GiveawayId", "UserId")
+                        .IsUnique();
+
+                    b.ToTable("GiveawayUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Number")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId", "Number")
+                        .IsUnique();
+
+                    b.ToTable("GroupName");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-            {
-                b.Navigation("AntiAltSetting");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("AntiRaidSetting");
+                    b.Property<string>("AutoAssignRoleIds")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("AntiSpamSetting");
+                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("CommandAliases");
+                    b.Property<bool>("CleverbotEnabled")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("CommandCooldowns");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("DelMsgOnCmdChannels");
+                    b.Property<bool>("DeleteMessageOnCommand")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("FeedSubs");
+                    b.Property<bool>("DeleteStreamOnlineMessage")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("FilterInvitesChannelIds");
+                    b.Property<bool>("DisableGlobalExpressions")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("FilterLinksChannelIds");
+                    b.Property<bool>("ExclusiveSelfAssignedRoles")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("FilterWordsChannelIds");
+                    b.Property<bool>("FilterInvites")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("FilteredWords");
+                    b.Property<bool>("FilterLinks")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("FollowedStreams");
+                    b.Property<bool>("FilterWords")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("GenerateCurrencyChannelIds");
+                    b.Property<ulong?>("GameVoiceChannel")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("MutedUsers");
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("Permissions");
+                    b.Property<string>("Locale")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("SelfAssignableRoleGroupNames");
+                    b.Property<string>("MuteRoleName")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("ShopEntries");
+                    b.Property<bool>("NotifyStreamOffline")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("SlowmodeIgnoredRoles");
+                    b.Property<string>("PermissionRole")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("SlowmodeIgnoredUsers");
+                    b.Property<string>("Prefix")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("StreamRole");
+                    b.Property<bool>("StickyRoles")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("UnbanTimer");
+                    b.Property<string>("TimeZoneId")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("UnmuteTimers");
+                    b.Property<bool>("VerboseErrors")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(true);
 
-                b.Navigation("UnroleTimer");
+                    b.Property<bool>("VerbosePermissions")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("VcRoleInfos");
+                    b.Property<int>("WarnExpireAction")
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("XpSettings");
-            });
+                    b.Property<int>("WarnExpireHours")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("WarningsInitialized")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.HasIndex("WarnExpireHours");
+
+                    b.ToTable("GuildConfigs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
+                {
+                    b.Property<ulong>("GuildId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("GuildId");
+
+                    b.ToTable("HoneyPotChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("LogItemId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("LogSettingId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                        .IsUnique();
+
+                    b.ToTable("IgnoredLogChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ChannelId")
+                        .IsUnique();
+
+                    b.ToTable("ImageOnlyChannels");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-            {
-                b.Navigation("LogIgnores");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ChannelCreatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ChannelDestroyedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ChannelUpdatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogOtherId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogUserPresenceId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogVoicePresenceId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogVoicePresenceTTSId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("LogWarnsId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("MessageDeletedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("MessageUpdatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ThreadCreatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("ThreadDeletedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserBannedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserJoinedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserLeftId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserMutedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserUnbannedId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("UserUpdatedId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.ToTable("LogSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AutoDisconnect")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("AutoPlay")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("MusicChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("PlayerRepeat")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("QualityPreset")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Volume")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(100);
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId")
+                        .IsUnique();
+
+                    b.ToTable("MusicPlayerSettings");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-            {
-                b.Navigation("Songs");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Author")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("AuthorId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("MusicPlaylists");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("MutedUserId");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.NCPixel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<uint>("Color")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("OwnerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Position")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("Position");
+
+                    b.HasIndex("OwnerId");
+
+                    b.ToTable("NCPixel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
+                {
+                    b.Property<ulong>("UserId")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("AmountCents")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("LastCharge")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("UniquePlatformUserId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime>("ValidThru")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("UserId");
+
+                    b.HasIndex("UniquePlatformUserId")
+                        .IsUnique();
+
+                    b.ToTable("Patrons");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("IsCustomCommand")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("PrimaryTarget")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("PrimaryTargetId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("SecondaryTarget")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("SecondaryTargetName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("State")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("Permissions");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Amount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ChannelId");
+
+                    b.HasIndex("MessageId")
+                        .IsUnique();
+
+                    b.ToTable("PlantedCurrency");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("MusicPlaylistId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Provider")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("ProviderType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Query")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Title")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Uri")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MusicPlaylistId");
+
+                    b.ToTable("PlaylistSong");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("AuthorId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("AuthorName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Keyword")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Text")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("Keyword");
+
+                    b.ToTable("Quotes");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Emote")
+                        .HasMaxLength(100)
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Group")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("LevelReq")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("MessageId", "Emote")
+                        .IsUnique();
+
+                    b.ToTable("ReactionRoles");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsPrivate")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("ServerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("When")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("When");
+
+                    b.ToTable("Reminders");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<TimeSpan>("Interval")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("LastMessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("NoRedundant")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<TimeSpan?>("StartTimeOfDay")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Repeaters");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("AmountRewardedThisMonth")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime>("LastReward")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("PlatformUserId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PlatformUserId")
+                        .IsUnique();
+
+                    b.ToTable("RewardedUsers");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Status")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("RotatingStatus");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Group")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0);
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("LevelRequirement")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "RoleId")
+                        .IsUnique();
+
+                    b.ToTable("SelfAssignableRoles");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-            {
-                b.Navigation("Items");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("AuthorId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Command")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Index")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Price")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("RoleName")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong?>("RoleRequirement")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("ShopEntry");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("ShopEntryId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Text")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ShopEntryId");
+
+                    b.ToTable("ShopEntryItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("SlowmodeIgnoredRole");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("SlowmodeIgnoredUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("RoleIds")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "UserId")
+                        .IsUnique();
+
+                    b.ToTable("StickyRoles");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("MessageId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("StreamOnlineMessages");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("StreamRoleSettingsId");
+
+                    b.ToTable("StreamRoleBlacklistedUser");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-            {
-                b.Navigation("Blacklist");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("Whitelist");
-            });
+                    b.Property<ulong>("AddRoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("Enabled")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("FromRoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Keyword")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("StreamRoleSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Username")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("StreamRoleSettingsId");
+
+                    b.ToTable("StreamRoleWhitelistedUser");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("ArchiveId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsDone")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Todo")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ArchiveId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Todos");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("UnbanTimer");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("UnmuteAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("UnmuteTimer");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("UnbanAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("UnroleTimer");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("AwardedXp")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("NotifyOnLevelUp")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Xp")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AwardedXp");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("UserId");
+
+                    b.HasIndex("Xp");
+
+                    b.HasIndex("UserId", "GuildId")
+                        .IsUnique();
+
+                    b.ToTable("UserXpStats");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("VoiceChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId");
+
+                    b.ToTable("VcRoleInfo");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-            {
-                b.Navigation("Items");
-            });
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("AffinityId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("ClaimerId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<long>("Price")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("WaifuId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AffinityId");
+
+                    b.HasIndex("ClaimerId");
+
+                    b.HasIndex("Price");
+
+                    b.HasIndex("WaifuId")
+                        .IsUnique();
+
+                    b.ToTable("WaifuInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ItemEmoji")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("WaifuInfoId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("WaifuInfoId");
+
+                    b.ToTable("WaifuItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("NewId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int?>("OldId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UpdateType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("NewId");
+
+                    b.HasIndex("OldId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("WaifuUpdates");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("Forgiven")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("ForgivenBy")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Moderator")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Reason")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("Weight")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(1L);
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DateAdded");
+
+                    b.HasIndex("GuildId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Warnings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Count")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Punishment")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong?>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Time")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("GuildId", "Count");
+
+                    b.ToTable("WarningPunishment");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Amount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("XpSettingsId");
+
+                    b.ToTable("XpCurrencyReward");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("Remove")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("RoleId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("XpSettingsId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("XpSettingsId", "Level")
+                        .IsUnique();
+
+                    b.ToTable("XpRoleReward");
+                });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-            {
-                b.Navigation("CurrencyRewards");
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
 
-                b.Navigation("ExclusionList");
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
 
-                b.Navigation("RoleRewards");
-            });
+                    b.Property<int>("GuildConfigId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("ServerExcluded")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildConfigId")
+                        .IsUnique();
+
+                    b.ToTable("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime?>("DateAdded")
+                        .HasColumnType("TEXT");
+
+                    b.Property<bool>("IsUsing")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("ItemKey")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<int>("ItemType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId", "ItemType", "ItemKey")
+                        .IsUnique();
+
+                    b.ToTable("XpShopOwnedItem");
+                });
+
+            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("AutoDeleteTimer")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(0);
+
+                    b.Property<ulong?>("ChannelId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("GreetType")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<ulong>("GuildId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<bool>("IsEnabled")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER")
+                        .HasDefaultValue(false);
+
+                    b.Property<string>("MessageText")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("GuildId", "GreetType")
+                        .IsUnique();
+
+                    b.ToTable("GreetSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Services.UserBetStats", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<int>("Game")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("LoseCount")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("MaxBet")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("MaxWin")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<decimal>("PaidOut")
+                        .HasColumnType("TEXT");
+
+                    b.Property<decimal>("TotalBet")
+                        .HasColumnType("TEXT");
+
+                    b.Property<ulong>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<long>("WinCount")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId", "Game")
+                        .IsUnique();
+
+                    b.ToTable("UserBetStats");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiAltSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiAltSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiRaidSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiRaidSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiRaidSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamIgnore", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AntiSpamSetting", null)
+                        .WithMany("IgnoredChannels")
+                        .HasForeignKey("AntiSpamSettingId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithOne("AntiSpamSetting")
+                        .HasForeignKey("EllieBot.Db.Models.AntiSpamSetting", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                        .WithMany("Users")
+                        .HasForeignKey("ChannelId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Channel");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubApplicants", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Applicants")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubBans", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Bans")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Club");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                        .OnDelete(DeleteBehavior.SetNull);
+
+                    b.Navigation("Owner");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandAliases")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.CommandCooldown", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("CommandCooldowns")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DelMsgOnCmdChannel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("DelMsgOnCmdChannels")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.DiscordUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                        .WithMany("Members")
+                        .HasForeignKey("ClubId")
+                        .OnDelete(DeleteBehavior.NoAction);
+
+                    b.Navigation("Club");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("ExclusionList")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade);
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("FeedSubs")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterInvitesChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterLinksChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilterWordsChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FilteredWords")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("FollowedStreams")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("GenerateCurrencyChannelIds")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GiveawayModel", null)
+                        .WithMany("Participants")
+                        .HasForeignKey("GiveawayId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithMany("SelfAssignableRoleGroupNames")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                        .WithMany("LogIgnores")
+                        .HasForeignKey("LogSettingId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("LogSetting");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("MutedUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("Permissions")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.MusicPlaylist", null)
+                        .WithMany("Songs")
+                        .HasForeignKey("MusicPlaylistId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("ShopEntries")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ShopEntry", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ShopEntryId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredRoles")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("SlowmodeIgnoredUsers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Blacklist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("StreamRole")
+                        .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                        .WithMany("Whitelist")
+                        .HasForeignKey("StreamRoleSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("StreamRoleSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
+                        .WithMany("Items")
+                        .HasForeignKey("ArchiveId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnbanTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnmuteTimers")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("UnroleTimer")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                        .WithMany("VcRoleInfos")
+                        .HasForeignKey("GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade);
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Affinity")
+                        .WithMany()
+                        .HasForeignKey("AffinityId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
+                        .WithMany()
+                        .HasForeignKey("ClaimerId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
+                        .WithOne()
+                        .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Affinity");
+
+                    b.Navigation("Claimer");
+
+                    b.Navigation("Waifu");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                        .WithMany("Items")
+                        .HasForeignKey("WaifuInfoId");
+
+                    b.Navigation("WaifuInfo");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "New")
+                        .WithMany()
+                        .HasForeignKey("NewId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
+                        .WithMany()
+                        .HasForeignKey("OldId");
+
+                    b.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("New");
+
+                    b.Navigation("Old");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("CurrencyRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                        .WithMany("RoleRewards")
+                        .HasForeignKey("XpSettingsId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                        .WithOne("XpSettings")
+                        .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("GuildConfig");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
+                {
+                    b.Navigation("IgnoredChannels");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
+                {
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
+                {
+                    b.Navigation("Applicants");
+
+                    b.Navigation("Bans");
+
+                    b.Navigation("Members");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
+                {
+                    b.Navigation("Participants");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
+                {
+                    b.Navigation("AntiAltSetting");
+
+                    b.Navigation("AntiRaidSetting");
+
+                    b.Navigation("AntiSpamSetting");
+
+                    b.Navigation("CommandAliases");
+
+                    b.Navigation("CommandCooldowns");
+
+                    b.Navigation("DelMsgOnCmdChannels");
+
+                    b.Navigation("FeedSubs");
+
+                    b.Navigation("FilterInvitesChannelIds");
+
+                    b.Navigation("FilterLinksChannelIds");
+
+                    b.Navigation("FilterWordsChannelIds");
+
+                    b.Navigation("FilteredWords");
+
+                    b.Navigation("FollowedStreams");
+
+                    b.Navigation("GenerateCurrencyChannelIds");
+
+                    b.Navigation("MutedUsers");
+
+                    b.Navigation("Permissions");
+
+                    b.Navigation("SelfAssignableRoleGroupNames");
+
+                    b.Navigation("ShopEntries");
+
+                    b.Navigation("SlowmodeIgnoredRoles");
+
+                    b.Navigation("SlowmodeIgnoredUsers");
+
+                    b.Navigation("StreamRole");
+
+                    b.Navigation("UnbanTimer");
+
+                    b.Navigation("UnmuteTimers");
+
+                    b.Navigation("UnroleTimer");
+
+                    b.Navigation("VcRoleInfos");
+
+                    b.Navigation("XpSettings");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
+                {
+                    b.Navigation("LogIgnores");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
+                {
+                    b.Navigation("Songs");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
+                {
+                    b.Navigation("Blacklist");
+
+                    b.Navigation("Whitelist");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
+                {
+                    b.Navigation("Items");
+                });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
+                {
+                    b.Navigation("CurrencyRewards");
+
+                    b.Navigation("ExclusionList");
+
+                    b.Navigation("RoleRewards");
+                });
 #pragma warning restore 612, 618
         }
     }
diff --git a/src/EllieBot/Modules/Gambling/AnimalRacing/AnimalRacingCommands.cs b/src/EllieBot/Modules/Gambling/AnimalRacing/AnimalRacingCommands.cs
index 1f23cf6..eae65d7 100644
--- a/src/EllieBot/Modules/Gambling/AnimalRacing/AnimalRacingCommands.cs
+++ b/src/EllieBot/Modules/Gambling/AnimalRacing/AnimalRacingCommands.cs
@@ -113,14 +113,14 @@ public partial class Gambling
 
         private async Task Ar_OnStateUpdate(AnimalRace race)
         {
-            var text = $@"|🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🔚|
+            var text = $@"|🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁🔚|
 {string.Join("\n", race.Users.Select(p =>
 {
     var index = race.FinishedUsers.IndexOf(p);
     var extra = index == -1 ? "" : $"#{index + 1} {(index == 0 ? "🏆" : "")}";
     return $"{(int)(p.Progress / 60f * 100),-2}%|{new string('‣', p.Progress) + p.Animal.Icon + extra}";
 }))}
-|🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🏁🔚|";
+|🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁🔚|";
 
             var msg = raceMessage;
 
diff --git a/src/EllieBot/Modules/Gambling/Gambling.cs b/src/EllieBot/Modules/Gambling/Gambling.cs
index 933eddd..165a487 100644
--- a/src/EllieBot/Modules/Gambling/Gambling.cs
+++ b/src/EllieBot/Modules/Gambling/Gambling.cs
@@ -71,7 +71,65 @@ public partial class Gambling : GamblingModule<GamblingService>
     }
 
     [Cmd]
+    [Priority(3)]
     public async Task BetStats()
+        => await BetStats(ctx.User, null);
+
+    [Cmd]
+    [Priority(2)]
+    public async Task BetStats(GamblingGame game)
+        => await BetStats(ctx.User, game);
+
+    [Cmd]
+    [Priority(1)]
+    public async Task BetStats([Leftover] IUser user)
+        => await BetStats(user, null);
+
+    [Cmd]
+    [Priority(0)]
+    public async Task BetStats(IUser user, GamblingGame? game)
+    {
+        var stats = await _gamblingTxTracker.GetUserStatsAsync(user.Id, game);
+
+        if (stats.Count == 0)
+            stats = new()
+            {
+                new()
+                {
+                    TotalBet = 1
+                }
+            };
+
+        var eb = _sender.CreateEmbed()
+                        .WithOkColor()
+                        .WithAuthor(user)
+                        .AddField("Total Won", N(stats.Sum(x => x.PaidOut)), true)
+                        .AddField("Biggest Win", N(stats.Max(x => x.MaxWin)), true)
+                        .AddField("Biggest Bet", N(stats.Max(x => x.MaxBet)), true)
+                        .AddField("# Bets", stats.Sum(x => x.WinCount + x.LoseCount), true)
+                        .AddField("Payout",
+                            (stats.Sum(x => x.PaidOut) / stats.Sum(x => x.TotalBet)).ToString("P2", Culture),
+                            true);
+        if (game == null)
+        {
+            var favGame = stats.MaxBy(x => x.WinCount + x.LoseCount);
+            eb.AddField("Favorite Game",
+                favGame.Game + "\n" + Format.Italics((favGame.WinCount + favGame.LoseCount) + " plays"),
+                true);
+        }
+        else
+        {
+            eb.WithDescription(game.ToString())
+              .AddField("# Wins", stats.Sum(x => x.WinCount), true);
+        }
+
+        await Response()
+              .Embed(eb)
+              .SendAsync();
+    }
+
+    [Cmd]
+    public async Task GamblingStats()
     {
         var stats = await _gamblingTxTracker.GetAllAsync();
 
@@ -167,57 +225,8 @@ public partial class Gambling : GamblingModule<GamblingService>
             return;
         }
 
-        if (Config.Timely.RequirePassword)
+        if (Config.Timely.HasButton)
         {
-            // var password = _service.GeneratePassword();
-            //
-            // var img = new Image<Rgba32>(100, 40);
-            //
-            // var font = _fonts.NotoSans.CreateFont(30);
-            // var outlinePen = new SolidPen(Color.Black, 1f);
-            // var strikeoutRun = new RichTextRun
-            // {
-            //     Start = 0,
-            //     End = password.GetGraphemeCount(),
-            //     Font = font,
-            //     StrikeoutPen = new SolidPen(Color.White, 3),
-            //     TextDecorations = TextDecorations.Strikeout
-            // };
-            // // draw password on the image
-            // img.Mutate(x =>
-            // {
-            //     x.DrawText(new RichTextOptions(font)
-            //         {
-            //             HorizontalAlignment = HorizontalAlignment.Center,
-            //             VerticalAlignment = VerticalAlignment.Center,
-            //             FallbackFontFamilies = _fonts.FallBackFonts,
-            //             Origin = new(50, 20),
-            //             TextRuns = [strikeoutRun]
-            //         },
-            //         password,
-            //         Brushes.Solid(Color.White),
-            //         outlinePen);
-            // });
-            // using var stream = await img.ToStreamAsync();
-            // var captcha = await Response()
-            //                     .Embed(_sender.CreateEmbed()
-            //                                   .WithOkColor()
-            //                                   .WithImageUrl("attachment://timely.png"))
-            //                     .File(stream, "timely.png")
-            //                     .SendAsync();
-            // try
-            // {
-            //     var userInput = await GetUserInputAsync(ctx.User.Id, ctx.Channel.Id);
-            //     if (userInput?.ToLowerInvariant() != password?.ToLowerInvariant())
-            //     {
-            //         return;
-            //     }
-            // }
-            // finally
-            // {
-            //     _ = captcha.DeleteAsync();
-            // }
-
             var interaction = CreateTimelyInteraction();
             var msg = await Response().Pending(strs.timely_button).Interaction(interaction).SendAsync();
             await msg.DeleteAsync();
@@ -249,6 +258,19 @@ public partial class Gambling : GamblingModule<GamblingService>
 
 
         var val = Config.Timely.Amount;
+
+        var guildUsers = await (Config.BoostBonus
+                                      .GuildIds
+                                ?? new())
+                               .Select(x => ((IGuild)_client.GetGuild(x))?.GetUserAsync(ctx.User.Id))
+                               .WhenAll();
+
+        var boostGuildUser = guildUsers.FirstOrDefault(x => x?.PremiumSince is not null);
+        var booster = boostGuildUser is not null;
+
+        if (booster)
+            val += Config.BoostBonus.BaseTimelyBonus;
+
         var patron = await _ps.GetPatronAsync(ctx.User.Id);
 
         var percentBonus = (_ps.PercentBonus(patron) / 100f);
@@ -259,7 +281,16 @@ public partial class Gambling : GamblingModule<GamblingService>
 
         await _cs.AddAsync(ctx.User.Id, val, new("timely", "claim"));
 
-        await Response().Confirm(strs.timely(N(val), period)).Interaction(inter).SendAsync();
+        if (booster)
+        {
+            var msg = GetText(strs.timely(N(val), period))
+                      + "\n\n"
+                      + $"*+{N(Config.BoostBonus.BaseTimelyBonus)} bonus for boosting {boostGuildUser.Guild}!*";
+
+            await Response().Confirm(msg).Interaction(inter).SendAsync();
+        }
+        else
+            await Response().Confirm(strs.timely(N(val), period)).Interaction(inter).SendAsync();
     }
 
     [Cmd]
@@ -370,8 +401,9 @@ public partial class Gambling : GamblingModule<GamblingService>
         }
 
         var embed = _sender.CreateEmbed()
-                           .WithTitle(GetText(strs.transactions(((SocketGuild)ctx.Guild)?.GetUser(userId)?.ToString()
-                                                                ?? $"{userId}")))
+                           .WithTitle(GetText(strs.transactions(
+                               ((SocketGuild)ctx.Guild)?.GetUser(userId)?.ToString()
+                               ?? $"{userId}")))
                            .WithOkColor();
 
         var sb = new StringBuilder();
@@ -627,7 +659,9 @@ public partial class Gambling : GamblingModule<GamblingService>
         }
         else
         {
-            await Response().Error(strs.take_fail(N(amount), Format.Bold(user.ToString()), CurrencySign)).SendAsync();
+            await Response()
+                  .Error(strs.take_fail(N(amount), Format.Bold(user.ToString()), CurrencySign))
+                  .SendAsync();
         }
     }
 
@@ -648,7 +682,9 @@ public partial class Gambling : GamblingModule<GamblingService>
         }
         else
         {
-            await Response().Error(strs.take_fail(N(amount), Format.Code(usrId.ToString()), CurrencySign)).SendAsync();
+            await Response()
+                  .Error(strs.take_fail(N(amount), Format.Code(usrId.ToString()), CurrencySign))
+                  .SendAsync();
         }
     }
 
diff --git a/src/EllieBot/Modules/Gambling/GamblingConfig.cs b/src/EllieBot/Modules/Gambling/GamblingConfig.cs
index 5cef563..dd0b955 100644
--- a/src/EllieBot/Modules/Gambling/GamblingConfig.cs
+++ b/src/EllieBot/Modules/Gambling/GamblingConfig.cs
@@ -11,7 +11,7 @@ namespace EllieBot.Modules.Gambling.Common;
 public sealed partial class GamblingConfig : ICloneable<GamblingConfig>
 {
     [Comment("""DO NOT CHANGE""")]
-    public int Version { get; set; } = 9;
+    public int Version { get; set; } = 10;
 
     [Comment("""Currency settings""")]
     public CurrencyConfig Currency { get; set; }
@@ -67,6 +67,11 @@ public sealed partial class GamblingConfig : ICloneable<GamblingConfig>
     [Comment("""Slot config""")]
     public SlotsConfig Slots { get; set; }
 
+    [Comment("""
+             Bonus config for server boosts
+             """)]
+    public BoostBonusConfig BoostBonus { get; set; }
+
     public GamblingConfig()
     {
         BetRoll = new();
@@ -79,6 +84,7 @@ public sealed partial class GamblingConfig : ICloneable<GamblingConfig>
         Slots = new();
         LuckyLadder = new();
         BotCuts = new();
+        BoostBonus = new();
     }
 }
 
@@ -104,7 +110,7 @@ public partial class TimelyConfig
              How much currency will the users get every time they run .timely command
              setting to 0 or less will disable this feature
              """)]
-    public int Amount { get; set; } = 0;
+    public long Amount { get; set; } = 0;
 
     [Comment("""
              How often (in hours) can users claim currency with .timely command
@@ -115,7 +121,7 @@ public partial class TimelyConfig
     [Comment("""
              Whether the users are required to type a password when they do timely.
              """)]
-    public bool RequirePassword { get; set; } = true;
+    public bool HasButton { get; set; } = true;
 }
 
 [Cloneable]
@@ -413,4 +419,18 @@ public sealed partial class BotCutConfig
              Default 0.1 (10%).
              """)]
     public decimal ShopSaleCut { get; set; } = 0.1m;
+}
+
+[Cloneable]
+public sealed partial class BoostBonusConfig
+{
+    [Comment("Users will receive a bonus if they boost any of these servers")]
+    public List<ulong> GuildIds { get; set; } =
+    [
+        117523346618318850
+    ];
+
+    [Comment("This bonus will be added before any other multiplier is applied to the .timely command")]
+
+    public long BaseTimelyBonus { get; set; } = 50;
 }
\ No newline at end of file
diff --git a/src/EllieBot/Modules/Gambling/GamblingConfigService.cs b/src/EllieBot/Modules/Gambling/GamblingConfigService.cs
index 0789d67..9a82fdd 100644
--- a/src/EllieBot/Modules/Gambling/GamblingConfigService.cs
+++ b/src/EllieBot/Modules/Gambling/GamblingConfigService.cs
@@ -144,8 +144,8 @@ public sealed class GamblingConfigService : ConfigServiceBase<GamblingConfig>
             ConfigPrinters.ToString,
             val => val >= 0);
 
-        AddParsedProp("timely.pass",
-            gs => gs.Timely.RequirePassword,
+        AddParsedProp("timely.btn",
+            gs => gs.Timely.HasButton,
             bool.TryParse,
             ConfigPrinters.ToString);
 
@@ -189,11 +189,11 @@ public sealed class GamblingConfigService : ConfigServiceBase<GamblingConfig>
             });
         }
 
-        if (data.Version < 9)
+        if (data.Version < 10)
         {
             ModifyConfig(c =>
             {
-                c.Version = 9;
+                c.Version = 10;
             });
         }
     }
diff --git a/src/EllieBot/Modules/Gambling/_common/NewGamblingService.cs b/src/EllieBot/Modules/Gambling/_common/NewGamblingService.cs
index 85fa703..564881f 100644
--- a/src/EllieBot/Modules/Gambling/_common/NewGamblingService.cs
+++ b/src/EllieBot/Modules/Gambling/_common/NewGamblingService.cs
@@ -37,7 +37,7 @@ public sealed class NewGamblingService : IGamblingService, IEService
         var won = (long)result.Won;
         if (won > 0)
         {
-            await _cs.AddAsync(userId, won, new("lula", "win"));
+            await _cs.AddAsync(userId, won, new("lula", result.Multiplier >= 1 ? "win" : "lose"));
         }
 
         return result;
@@ -155,7 +155,7 @@ public sealed class NewGamblingService : IGamblingService, IEService
         var won = (long)result.Won;
         if (won > 0)
         {
-            await _cs.AddAsync(userId, won, new("slot", "won"));
+            await _cs.AddAsync(userId, won, new("slot", "win"));
         }
 
         return result;
diff --git a/src/EllieBot/_common/Currency/ITxTracker.cs b/src/EllieBot/_common/Currency/ITxTracker.cs
index d7cad66..6324901 100644
--- a/src/EllieBot/_common/Currency/ITxTracker.cs
+++ b/src/EllieBot/_common/Currency/ITxTracker.cs
@@ -4,6 +4,6 @@ namespace EllieBot.Services;
 
 public interface ITxTracker
 {
-    Task TrackAdd(long amount, TxData? txData);
-    Task TrackRemove(long amount, TxData? txData);
+    Task TrackAdd(ulong userId, long amount, TxData? txData);
+    Task TrackRemove(ulong userId, long amount, TxData? txData);
 }
\ No newline at end of file
diff --git a/src/EllieBot/_common/Services/Currency/CurrencyService.cs b/src/EllieBot/_common/Services/Currency/CurrencyService.cs
index a6428e1..974febd 100644
--- a/src/EllieBot/_common/Services/Currency/CurrencyService.cs
+++ b/src/EllieBot/_common/Services/Currency/CurrencyService.cs
@@ -77,7 +77,7 @@ public sealed class CurrencyService : ICurrencyService, IEService
     {
         var wallet = await GetWalletAsync(userId);
         await wallet.Add(amount, txData);
-        await _txTracker.TrackAdd(amount, txData);
+        await _txTracker.TrackAdd(userId, amount, txData);
     }
 
     public async Task AddAsync(
@@ -97,7 +97,7 @@ public sealed class CurrencyService : ICurrencyService, IEService
         var wallet = await GetWalletAsync(userId);
         var result = await wallet.Take(amount, txData);
         if (result)
-            await _txTracker.TrackRemove(amount, txData);
+            await _txTracker.TrackRemove(userId, amount, txData);
         return result;
     }
 
diff --git a/src/EllieBot/_common/Services/Currency/GamblingTxTracker.cs b/src/EllieBot/_common/Services/Currency/GamblingTxTracker.cs
index 5751281..028f7ec 100644
--- a/src/EllieBot/_common/Services/Currency/GamblingTxTracker.cs
+++ b/src/EllieBot/_common/Services/Currency/GamblingTxTracker.cs
@@ -1,8 +1,10 @@
 using LinqToDB;
+using LinqToDB.Data;
 using LinqToDB.EntityFrameworkCore;
 using EllieBot.Common.ModuleBehaviors;
 using EllieBot.Services.Currency;
 using EllieBot.Db.Models;
+using System.Collections.Concurrent;
 
 namespace EllieBot.Services;
 
@@ -10,15 +12,11 @@ public sealed class GamblingTxTracker : ITxTracker, IEService, IReadyExecutor
 {
     private static readonly IReadOnlySet<string> _gamblingTypes = new HashSet<string>(new[]
     {
-        "lula",
-        "betroll",
-        "betflip",
-        "blackjack",
-        "betdraw",
-        "slot",
+        "lula", "betroll", "betflip", "blackjack", "betdraw", "slot",
     });
 
-    private ConcurrentDictionary<string, (decimal Bet, decimal PaidOut)> _stats = new();
+    private NonBlocking.ConcurrentDictionary<string, (decimal Bet, decimal PaidOut)> globalStats = new();
+    private ConcurrentBag<UserBetStats> userStats = new();
 
     private readonly DbService _db;
 
@@ -28,83 +26,283 @@ public sealed class GamblingTxTracker : ITxTracker, IEService, IReadyExecutor
     }
 
     public async Task OnReadyAsync()
+        => await Task.WhenAll(RunUserStatsCollector(), RunBetStatsCollector());
+
+    public async Task RunBetStatsCollector()
     {
         using var timer = new PeriodicTimer(TimeSpan.FromHours(1));
         while (await timer.WaitForNextTickAsync())
         {
             await using var ctx = _db.GetDbContext();
-            await using var trans = await ctx.Database.BeginTransactionAsync();
 
             try
             {
-                var keys = _stats.Keys;
+                // update betstats
+                var keys = globalStats.Keys;
                 foreach (var key in keys)
                 {
-                    if (_stats.TryRemove(key, out var stat))
+                    if (globalStats.TryRemove(key, out var stat))
                     {
                         await ctx.GetTable<GamblingStats>()
-                            .InsertOrUpdateAsync(() => new()
-                            {
-                                Feature = key,
-                                Bet = stat.Bet,
-                                PaidOut = stat.PaidOut,
-                                DateAdded = DateTime.UtcNow
-                            }, old => new()
-                            {
-                                Bet = old.Bet + stat.Bet,
-                                PaidOut = old.PaidOut + stat.PaidOut,
-                            }, () => new()
-                            {
-                                Feature = key
-                            });
+                                 .InsertOrUpdateAsync(() => new()
+                                 {
+                                     Feature = key,
+                                     Bet = stat.Bet,
+                                     PaidOut = stat.PaidOut,
+                                     DateAdded = DateTime.UtcNow
+                                 },
+                                     old => new()
+                                     {
+                                         Bet = old.Bet + stat.Bet,
+                                         PaidOut = old.PaidOut + stat.PaidOut,
+                                     },
+                                     () => new()
+                                     {
+                                         Feature = key
+                                     });
                     }
                 }
             }
             catch (Exception ex)
             {
-                Log.Error(ex, "An error occurred in gambling tx tracker");
-            }
-            finally
-            {
-                await trans.CommitAsync();
+                Log.Error(ex, "An error occurred in betstats gambling tx tracker");
             }
         }
     }
 
-    public Task TrackAdd(long amount, TxData? txData)
+    private async Task RunUserStatsCollector()
+    {
+        var timer = new PeriodicTimer(TimeSpan.FromSeconds(5));
+        while (await timer.WaitForNextTickAsync())
+        {
+            try
+            {
+                if (userStats.Count == 0)
+                    continue;
+
+                var users = new List<UserBetStats>(userStats.Count + 5);
+
+                while (userStats.TryTake(out var s))
+                    users.Add(s);
+
+                if (users.Count == 0)
+                    continue;
+
+                foreach (var (k, x) in users.GroupBy(x => (x.UserId, x.Game))
+                                            .ToDictionary(x => x.Key,
+                                                x => x.Aggregate((a, b) => new()
+                                                {
+                                                    WinCount = a.WinCount + b.WinCount,
+                                                    LoseCount = a.LoseCount + b.LoseCount,
+                                                    TotalBet = a.TotalBet + b.TotalBet,
+                                                    PaidOut = a.PaidOut + b.PaidOut,
+                                                    MaxBet = Math.Max(a.MaxBet, b.MaxBet),
+                                                    MaxWin = Math.Max(a.MaxWin, b.MaxWin),
+                                                })))
+                {
+                    // bulk upsert in the future
+                    await using var uow = _db.GetDbContext();
+                    await uow.GetTable<UserBetStats>()
+                             .InsertOrUpdateAsync(() => new()
+                             {
+                                 UserId = k.UserId,
+                                 Game = k.Game,
+                                 WinCount = x.WinCount,
+                                 LoseCount = Math.Max(0, x.LoseCount),
+                                 TotalBet = x.TotalBet,
+                                 PaidOut = x.PaidOut,
+                                 MaxBet = x.MaxBet,
+                                 MaxWin = x.MaxWin
+                             },
+                                 o => new()
+                                 {
+                                     WinCount = o.WinCount + x.WinCount,
+                                     LoseCount = Math.Max(0, o.LoseCount + x.LoseCount),
+                                     TotalBet = o.TotalBet + x.TotalBet,
+                                     PaidOut = o.PaidOut + x.PaidOut,
+                                     MaxBet = Math.Max(o.MaxBet, x.MaxBet),
+                                     MaxWin = Math.Max(o.MaxWin, x.MaxWin),
+                                 },
+                                 () => new()
+                                 {
+                                     UserId = k.UserId,
+                                     Game = k.Game
+                                 });
+                }
+            }
+            catch (Exception ex)
+            {
+                Log.Error(ex, "An error occurred in UserBetStats gambling tx tracker");
+            }
+        }
+    }
+
+    public Task TrackAdd(ulong userId, long amount, TxData? txData)
     {
         if (txData is null)
             return Task.CompletedTask;
-        
+
         if (_gamblingTypes.Contains(txData.Type))
         {
-            _stats.AddOrUpdate(txData.Type,
+            globalStats.AddOrUpdate(txData.Type,
                 _ => (0, amount),
                 (_, old) => (old.Bet, old.PaidOut + amount));
         }
 
+        var mType = GetGameType(txData.Type);
+
+        if (mType is not { } type)
+            return Task.CompletedTask;
+
+        if (txData.Type == "lula")
+        {
+            if (txData.Extra == "lose")
+            {
+                userStats.Add(new()
+                {
+                    UserId = userId,
+                    Game = type,
+                    WinCount = 0,
+                    LoseCount = 0,
+                    TotalBet = 0,
+                    PaidOut = amount,
+                    MaxBet = 0,
+                    MaxWin = amount,
+                });
+                return Task.CompletedTask;
+            }
+        }
+        else if (txData.Type == "animalrace")
+        {
+            if (txData.Extra == "refund")
+            {
+                userStats.Add(new()
+                {
+                    UserId = userId,
+                    Game = type,
+                    WinCount = 0,
+                    LoseCount = -1,
+                    TotalBet = -amount,
+                    PaidOut = 0,
+                    MaxBet = 0,
+                    MaxWin = 0,
+                });
+
+                return Task.CompletedTask;
+            }
+        }
+
+        userStats.Add(new UserBetStats()
+        {
+            UserId = userId,
+            Game = type,
+            WinCount = 1,
+            LoseCount = -1,
+            TotalBet = 0,
+            PaidOut = amount,
+            MaxBet = 0,
+            MaxWin = amount,
+        });
+
         return Task.CompletedTask;
     }
 
-    public Task TrackRemove(long amount, TxData? txData)
+    public Task TrackRemove(ulong userId, long amount, TxData? txData)
     {
         if (txData is null)
             return Task.CompletedTask;
-        
+
         if (_gamblingTypes.Contains(txData.Type))
         {
-            _stats.AddOrUpdate(txData.Type,
+            globalStats.AddOrUpdate(txData.Type,
                 _ => (amount, 0),
                 (_, old) => (old.Bet + amount, old.PaidOut));
         }
 
+        var mType = GetGameType(txData.Type);
+
+        if (mType is not { } type)
+            return Task.CompletedTask;
+
+        userStats.Add(new UserBetStats()
+        {
+            UserId = userId,
+            Game = type,
+            WinCount = 0,
+            LoseCount = 1,
+            TotalBet = amount,
+            PaidOut = 0,
+            MaxBet = amount,
+            MaxWin = 0
+        });
+
         return Task.CompletedTask;
     }
 
+    private static GamblingGame? GetGameType(string game)
+        => game switch
+        {
+            "lula" => GamblingGame.Lula,
+            "betroll" => GamblingGame.Betroll,
+            "betflip" => GamblingGame.Betflip,
+            "blackjack" => GamblingGame.Blackjack,
+            "betdraw" => GamblingGame.Betdraw,
+            "slot" => GamblingGame.Slots,
+            "animalrace" => GamblingGame.Race,
+            _ => null
+        };
+
     public async Task<IReadOnlyCollection<GamblingStats>> GetAllAsync()
     {
         await using var ctx = _db.GetDbContext();
         return await ctx.Set<GamblingStats>()
-            .ToListAsyncEF();
+                        .ToListAsyncEF();
     }
+
+    public async Task<List<UserBetStats>> GetUserStatsAsync(ulong userId, GamblingGame? game = null)
+    {
+        await using var ctx = _db.GetDbContext();
+
+
+        if (game is null)
+            return await ctx
+                         .GetTable<UserBetStats>()
+                         .Where(x => x.UserId == userId)
+                         .ToListAsync();
+
+        return await ctx
+                     .GetTable<UserBetStats>()
+                     .Where(x => x.UserId == userId && x.Game == game)
+                     .ToListAsync();
+    }
+}
+
+public sealed class UserBetStats
+{
+    public int Id { get; set; }
+    public ulong UserId { get; set; }
+    public GamblingGame Game { get; set; }
+    public long WinCount { get; set; }
+    public long LoseCount { get; set; }
+    public decimal TotalBet { get; set; }
+    public decimal PaidOut { get; set; }
+    public long MaxWin { get; set; }
+    public long MaxBet { get; set; }
+}
+
+public enum GamblingGame
+{
+    Betflip = 0,
+    Bf = 0,
+    Betroll = 1,
+    Br = 1,
+    Betdraw = 2,
+    Bd = 2,
+    Slots = 3,
+    Slot = 3,
+    Blackjack = 4,
+    Bj = 4,
+    Lula = 5,
+    Race = 6,
+    AnimalRace = 6
 }
\ No newline at end of file
diff --git a/src/EllieBot/data/aliases.yml b/src/EllieBot/data/aliases.yml
index 82576db..31e8715 100644
--- a/src/EllieBot/data/aliases.yml
+++ b/src/EllieBot/data/aliases.yml
@@ -848,6 +848,10 @@ eventstart:
   - eventstart
 betstats:
   - betstats
+  - bs
+gamblestats:
+  - gamblestats
+  - gs 
 bettest:
   - bettest
 slot:
diff --git a/src/EllieBot/data/gambling.yml b/src/EllieBot/data/gambling.yml
index ddae85e..3455517 100644
--- a/src/EllieBot/data/gambling.yml
+++ b/src/EllieBot/data/gambling.yml
@@ -1,5 +1,5 @@
 # DO NOT CHANGE
-version: 9
+version: 10
 # Currency settings
 currency:
   # What is the emoji/character which represents the currency
@@ -57,7 +57,7 @@ timely:
   # setting to 0 or less will disable this feature
   cooldown: 12
   # Whether the users are required to type a password when they do timely.
-  requirePassword: true
+  hasButton: true
 # How much will each user's owned currency decay over time.
 decay:
   # Percentage of user's current currency which will be deducted every 24h.
@@ -273,3 +273,10 @@ voteReward: 100
 slots:
   # Hex value of the color which the numbers on the slot image will have.
   currencyFontColor: ff0000
+# Bonus config for server boosts
+boostBonus:
+  # Users will receive a bonus if they boost any of these servers
+  guildIds:
+    - 117523346618318850
+  # This bonus will be added before any other multiplier is applied to the .timely command
+  baseTimelyBonus: 50
diff --git a/src/EllieBot/migrate.ps1 b/src/EllieBot/migrate.ps1
new file mode 100644
index 0000000..62f9b69
--- /dev/null
+++ b/src/EllieBot/migrate.ps1
@@ -0,0 +1,8 @@
+if ($args.Length -eq 0) {
+  Write-Host "Please provide a migration name." -ForegroundColor Red
+}
+else {
+  $migrationName = $args[0]
+  dotnet ef migrations add $migrationName -c SqliteContext -p EllieBot.csproj
+  dotnet ef migrations add $migrationName -c PostgreSqlContext -p EllieBot.csproj
+}
\ No newline at end of file
diff --git a/remove-migrations.ps1 b/src/EllieBot/remove-migrations.ps1
similarity index 100%
rename from remove-migrations.ps1
rename to src/EllieBot/remove-migrations.ps1