From b04768633c54f61fbfe4553000269c28481158ae Mon Sep 17 00:00:00 2001
From: Toastie <toastie@toastiet0ast.com>
Date: Wed, 4 Sep 2024 22:33:34 +1200
Subject: [PATCH 1/2] more work on the greet cleanup

---
 README.md                                     |   2 +
 src/EllieBot/Db/Models/GuildConfig.cs         |  36 +-
 .../DangerousCommands/CleanupService.cs       |   3 +-
 .../Administration/GreetBye/GreetService.cs   | 469 ++++++------------
 src/EllieBot/_common/Linq2DbExpressions.cs    |   1 +
 5 files changed, 185 insertions(+), 326 deletions(-)

diff --git a/README.md b/README.md
index 28fe07b..ca14f09 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
 # EllieBot
 
+## ? This branch is a heavy work in progress and is not stable at all.
+
 [![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page)
 
 ## Guides
diff --git a/src/EllieBot/Db/Models/GuildConfig.cs b/src/EllieBot/Db/Models/GuildConfig.cs
index a88d3c0..20f42b3 100644
--- a/src/EllieBot/Db/Models/GuildConfig.cs
+++ b/src/EllieBot/Db/Models/GuildConfig.cs
@@ -13,21 +13,23 @@ public class GuildConfig : DbEntity
 
     public string AutoAssignRoleIds { get; set; }
 
-    //greet stuff
-    public int AutoDeleteGreetMessagesTimer { get; set; } = 30;
-    public int AutoDeleteByeMessagesTimer { get; set; } = 30;
-
-    public ulong GreetMessageChannelId { get; set; }
-    public ulong ByeMessageChannelId { get; set; }
-
-    public bool SendDmGreetMessage { get; set; }
-    public string DmGreetMessageText { get; set; } = "Welcome to the %server% server, %user%!";
-
-    public bool SendChannelGreetMessage { get; set; }
-    public string ChannelGreetMessageText { get; set; } = "Welcome to the %server% server, %user%!";
-
-    public bool SendChannelByeMessage { get; set; }
-    public string ChannelByeMessageText { get; set; } = "%user% has left!";
+    // //greet stuff
+    // public int AutoDeleteGreetMessagesTimer { get; set; } = 30;
+    // public int AutoDeleteByeMessagesTimer { get; set; } = 30;
+    //
+    // public ulong GreetMessageChannelId { get; set; }
+    // public ulong ByeMessageChannelId { get; set; }
+    //
+    // public bool SendDmGreetMessage { get; set; }
+    // public string DmGreetMessageText { get; set; } = "Welcome to the %server% server, %user%!";
+    //
+    // public bool SendChannelGreetMessage { get; set; }
+    // public string ChannelGreetMessageText { get; set; } = "Welcome to the %server% server, %user%!";
+    //
+    // public bool SendChannelByeMessage { get; set; }
+    // public string ChannelByeMessageText { get; set; } = "%user% has left!";
+    // public bool SendBoostMessage { get; set; }
+    // pulic int BoostMessageDeleteAfter { get; set; }
 
     //self assignable roles
     public bool ExclusiveSelfAssignedRoles { get; set; }
@@ -98,10 +100,6 @@ public class GuildConfig : DbEntity
 
     #region Boost Message
 
-    public bool SendBoostMessage { get; set; }
-    public string BoostMessage { get; set; } = "%user% just boosted this server!";
-    public ulong BoostMessageChannelId { get; set; }
-    public int BoostMessageDeleteAfter { get; set; }
     public bool StickyRoles { get; set; }
 
     #endregion
diff --git a/src/EllieBot/Modules/Administration/DangerousCommands/CleanupService.cs b/src/EllieBot/Modules/Administration/DangerousCommands/CleanupService.cs
index dd269bc..ee99b49 100644
--- a/src/EllieBot/Modules/Administration/DangerousCommands/CleanupService.cs
+++ b/src/EllieBot/Modules/Administration/DangerousCommands/CleanupService.cs
@@ -72,9 +72,8 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
                 dontDelete = dontDeleteList.ToHashSet();
             }
 
-            Log.Information("Leaving {RemainingCount} guilds every {Delay} seconds, {DontDeleteCount} will remain",
+            Log.Information("Leaving {RemainingCount} guilds every, 1 seconds. {DontDeleteCount} will remain",
                 allGuildIds.Length - dontDelete.Count,
-                shardId,
                 dontDelete.Count);
             foreach (var guildId in allGuildIds)
             {
diff --git a/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs b/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs
index 277c242..59fc1b7 100644
--- a/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs
+++ b/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs
@@ -1,5 +1,7 @@
+using LinqToDB;
+using LinqToDB.EntityFrameworkCore;
+using LinqToDB.Tools;
 using EllieBot.Common.ModuleBehaviors;
-using EllieBot.Db.Models;
 using System.Threading.Channels;
 
 namespace EllieBot.Services;
@@ -11,7 +13,11 @@ public class GreetService : IEService, IReadyExecutor
 
     private readonly DbService _db;
 
-    private readonly ConcurrentDictionary<ulong, GreetSettings> _guildConfigsCache;
+    private ConcurrentHashSet<ulong> _greetDmEnabledGuilds = new();
+    private ConcurrentHashSet<ulong> _boostEnabledGuilds = new();
+    private ConcurrentHashSet<ulong> _greetEnabledGuilds = new();
+    private ConcurrentHashSet<ulong> _byeEnabledGuilds = new();
+
     private readonly DiscordSocketClient _client;
 
     private readonly GreetGrouper<IGuildUser> _greets = new();
@@ -22,37 +28,52 @@ public class GreetService : IEService, IReadyExecutor
 
     public GreetService(
         DiscordSocketClient client,
-        IBot bot,
         DbService db,
         BotConfigService bss,
         IMessageSenderService sender,
-        IReplacementService repSvc)
+        IReplacementService repSvc
+    )
     {
         _db = db;
         _client = client;
         _bss = bss;
         _repSvc = repSvc;
         _sender = sender;
-
-        _guildConfigsCache = new(bot.AllGuildConfigs.ToDictionary(g => g.GuildId, GreetSettings.Create));
-
-        _client.UserJoined += OnUserJoined;
-        _client.UserLeft += OnUserLeft;
-
-        bot.JoinedGuild += OnBotJoinedGuild;
-        _client.LeftGuild += OnClientLeftGuild;
-
-        _client.GuildMemberUpdated += ClientOnGuildMemberUpdated;
     }
 
     public async Task OnReadyAsync()
     {
-        while (true)
+        // cache all enabled guilds
+        await using (var uow = _db.GetDbContext())
+        {
+            var guilds = _client.Guilds.Select(x => x.Id).ToList();
+            var enabled = await uow.GetTable<GreetSettings>()
+                                   .Where(x => x.GuildId.In(guilds))
+                                   .Where(x => x.SendChannelGreetMessage
+                                               || x.SendBoostMessage
+                                               || x.SendChannelByeMessage
+                                               || x.SendDmGreetMessage)
+                                   .ToListAsync();
+
+            _boostEnabledGuilds = new(enabled.Where(x => x.SendBoostMessage).Select(x => x.GuildId));
+            _byeEnabledGuilds = new(enabled.Where(x => x.SendChannelByeMessage).Select(x => x.GuildId));
+            _greetDmEnabledGuilds = new(enabled.Where(x => x.SendDmGreetMessage).Select(x => x.GuildId));
+            _greetEnabledGuilds = new(enabled.Where(x => x.SendChannelGreetMessage).Select(x => x.GuildId));
+        }
+
+        _client.UserJoined += OnUserJoined;
+        _client.UserLeft += OnUserLeft;
+
+        _client.LeftGuild += OnClientLeftGuild;
+
+        _client.GuildMemberUpdated += ClientOnGuildMemberUpdated;
+
+        var timer = new PeriodicTimer(TimeSpan.FromSeconds(2));
+        while (await timer.WaitForNextTickAsync())
         {
             var (conf, user, compl) = await _greetDmQueue.Reader.ReadAsync();
             var res = await GreetDmUserInternal(conf, user);
             compl.TrySetResult(res);
-            await Task.Delay(2000);
         }
     }
 
@@ -65,25 +86,28 @@ public class GreetService : IEService, IReadyExecutor
                 && newUser.PremiumSince is { } newDate
                 && newDate > oldDate))
         {
-            var conf = GetOrAddSettingsForGuild(newUser.Guild.Id);
-            if (!conf.SendBoostMessage)
-                return Task.CompletedTask;
+            _ = Task.Run(async () =>
+            {
+                var conf = await GetGreetSettingsAsync(newUser.Guild.Id);
 
-            _ = Task.Run(TriggerBoostMessage(conf, newUser));
+                if (conf is null || !conf.SendBoostMessage)
+                    return;
+
+                await TriggerBoostMessage(conf, newUser);
+            });
         }
 
         return Task.CompletedTask;
     }
 
-    private Func<Task> TriggerBoostMessage(GreetSettings conf, SocketGuildUser user)
-        => async () =>
-        {
-            var channel = user.Guild.GetTextChannel(conf.BoostMessageChannelId);
-            if (channel is null)
-                return;
+    private async Task TriggerBoostMessage(GreetSettings conf, SocketGuildUser user)
+    {
+        var channel = user.Guild.GetTextChannel(conf.BoostMessageChannelId);
+        if (channel is null)
+            return;
 
-            await SendBoostMessage(conf, user, channel);
-        };
+        await SendBoostMessage(conf, user, channel);
+    }
 
     private async Task<bool> SendBoostMessage(GreetSettings conf, IGuildUser user, ITextChannel channel)
     {
@@ -110,16 +134,17 @@ public class GreetService : IEService, IReadyExecutor
         return false;
     }
 
-    private Task OnClientLeftGuild(SocketGuild arg)
+    private async Task OnClientLeftGuild(SocketGuild arg)
     {
-        _guildConfigsCache.TryRemove(arg.Id, out _);
-        return Task.CompletedTask;
-    }
+        _boostEnabledGuilds.TryRemove(arg.Id);
+        _byeEnabledGuilds.TryRemove(arg.Id);
+        _greetDmEnabledGuilds.TryRemove(arg.Id);
+        _greetEnabledGuilds.TryRemove(arg.Id);
 
-    private Task OnBotJoinedGuild(GuildConfig gc)
-    {
-        _guildConfigsCache[gc.GuildId] = GreetSettings.Create(gc);
-        return Task.CompletedTask;
+        await using var uow = _db.GetDbContext();
+        await uow.GetTable<GreetSettings>()
+                 .Where(x => x.GuildId == arg.Id)
+                 .DeleteAsync();
     }
 
     private Task OnUserLeft(SocketGuild guild, SocketUser user)
@@ -128,10 +153,11 @@ public class GreetService : IEService, IReadyExecutor
         {
             try
             {
-                var conf = GetOrAddSettingsForGuild(guild.Id);
+                var conf = await GetGreetSettingsAsync(guild.Id);
 
-                if (!conf.SendChannelByeMessage)
+                if (conf is null)
                     return;
+
                 var channel = guild.TextChannels.FirstOrDefault(c => c.Id == conf.ByeMessageChannelId);
 
                 if (channel is null) //maybe warn the server owner that the channel is missing
@@ -156,7 +182,9 @@ public class GreetService : IEService, IReadyExecutor
                     }
                 }
                 else
+                {
                     await ByeUsers(conf, channel, new[] { user });
+                }
             }
             catch
             {
@@ -166,31 +194,14 @@ public class GreetService : IEService, IReadyExecutor
         return Task.CompletedTask;
     }
 
-    public string? GetDmGreetMsg(ulong id)
+    public async Task<GreetSettings?> GetGreetSettingsAsync(ulong gid, GreetType type)
     {
-        using var uow = _db.GetDbContext();
-        return uow.GuildConfigsForId(id, set => set).DmGreetMessageText;
-    }
+        await using var uow = _db.GetDbContext();
+        var res = await uow.GetTable<GreetSettings>()
+                           .Where(x => x.GuildId == gid && x.GreetType == type)
+                           .FirstOrDefaultAsync();
 
-    public string? GetGreetMsg(ulong gid)
-    {
-        using var uow = _db.GetDbContext();
-        return uow.GuildConfigsForId(gid, set => set).ChannelGreetMessageText;
-    }
-
-    public string? GetBoostMessage(ulong gid)
-    {
-        using var uow = _db.GetDbContext();
-        return uow.GuildConfigsForId(gid, set => set).BoostMessage;
-    }
-
-    public GreetSettings GetGreetSettings(ulong gid)
-    {
-        if (_guildConfigsCache.TryGetValue(gid, out var gs))
-            return gs;
-
-        using var uow = _db.GetDbContext();
-        return GreetSettings.Create(uow.GuildConfigsForId(gid, set => set));
+        return res;
     }
 
     private Task ByeUsers(GreetSettings conf, ITextChannel channel, IUser user)
@@ -221,7 +232,7 @@ public class GreetService : IEService, IReadyExecutor
             Log.Warning(ex,
                 "Missing permissions to send a bye message, the bye message will be disabled on server: {GuildId}",
                 channel.GuildId);
-            await SetBye(channel.GuildId, channel.Id, false);
+            await SetGreet(channel.GuildId, channel.Id, GreetType.Bye, false);
         }
         catch (Exception ex)
         {
@@ -250,14 +261,14 @@ public class GreetService : IEService, IReadyExecutor
             if (conf.AutoDeleteGreetMessagesTimer > 0)
                 toDelete.DeleteAfter(conf.AutoDeleteGreetMessagesTimer);
         }
-        catch (HttpException ex) when (ex.DiscordCode == DiscordErrorCode.InsufficientPermissions
-                                       || ex.DiscordCode == DiscordErrorCode.MissingPermissions
-                                       || ex.DiscordCode == DiscordErrorCode.UnknownChannel)
+        catch (HttpException ex) when (ex.DiscordCode is DiscordErrorCode.InsufficientPermissions
+                                           or DiscordErrorCode.MissingPermissions
+                                           or DiscordErrorCode.UnknownChannel)
         {
             Log.Warning(ex,
                 "Missing permissions to send a bye message, the greet message will be disabled on server: {GuildId}",
                 channel.GuildId);
-            await SetGreet(channel.GuildId, channel.Id, false);
+            await SetGreet(channel.GuildId, channel.Id, GreetType.Greet, false);
         }
         catch (Exception ex)
         {
@@ -285,11 +296,6 @@ public class GreetService : IEService, IReadyExecutor
     {
         try
         {
-            // var rep = new ReplacementBuilder()
-            // .WithUser(user)
-            // .WithServer(_client, (SocketGuild)user.Guild)
-            // .Build();
-
             var repCtx = new ReplacementContext(client: _client, guild: user.Guild, users: user);
             var smartText = SmartText.CreateFrom(conf.DmGreetMessageText);
             smartText = await _repSvc.ReplaceAsync(smartText, repCtx);
@@ -341,9 +347,9 @@ public class GreetService : IEService, IReadyExecutor
                     {
                         // if there is less than 10 embeds, add an embed with footer only
                         seta.Embeds = seta.Embeds.Append(new SmartEmbedArrayElementText()
-                                          {
-                                              Footer = CreateFooterSource(user)
-                                          })
+                        {
+                            Footer = CreateFooterSource(user)
+                        })
                                           .ToArray();
                     }
                 }
@@ -372,7 +378,9 @@ public class GreetService : IEService, IReadyExecutor
         {
             try
             {
-                var conf = GetOrAddSettingsForGuild(user.GuildId);
+                var conf = await GetGreetSettingsAsync(user.GuildId);
+                if (conf is null)
+                    return;
 
                 if (conf.SendChannelGreetMessage)
                 {
@@ -413,256 +421,107 @@ public class GreetService : IEService, IReadyExecutor
         return Task.CompletedTask;
     }
 
-    public string? GetByeMessage(ulong gid)
-    {
-        using var uow = _db.GetDbContext();
-        return uow.GuildConfigsForId(gid, set => set).ChannelByeMessageText;
-    }
+    // public GreetSettings GetOrAddSettingsForGuild(ulong guildId)
+    // {
+    //     if (_greetDmEnabledGuilds.TryGetValue(guildId, out var settings))
+    //         return settings;
+    //
+    //     using (var uow = _db.GetDbContext())
+    //     {
+    //         var gc = uow.GuildConfigsForId(guildId, set => set);
+    //         settings = GreetSettings.Create(gc);
+    //     }
+    //
+    //     _greetDmEnabledGuilds.TryAdd(guildId, settings);
+    //     return settings;
+    // }
 
-    public GreetSettings GetOrAddSettingsForGuild(ulong guildId)
-    {
-        if (_guildConfigsCache.TryGetValue(guildId, out var settings))
-            return settings;
-
-        using (var uow = _db.GetDbContext())
-        {
-            var gc = uow.GuildConfigsForId(guildId, set => set);
-            settings = GreetSettings.Create(gc);
-        }
-
-        _guildConfigsCache.TryAdd(guildId, settings);
-        return settings;
-    }
-
-    public async Task<bool> SetGreet(ulong guildId, ulong channelId, bool? value = null)
+    public async Task<bool> SetGreet(
+        ulong guildId,
+        ulong? channelId,
+        GreetType greetType,
+        bool? value = null)
     {
         await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        var enabled = conf.SendChannelGreetMessage = value ?? !conf.SendChannelGreetMessage;
-        conf.GreetMessageChannelId = channelId;
+        var q = uow.GetTable<GreetSettings>();
 
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
+        if (value is { } v)
+        {
+            await q
+                .InsertOrUpdateAsync(() => new()
+                {
+                    IsEnabled = v,
+                    ChannelId = channelId,
+                },
+                    (old) => new()
+                    {
+                        IsEnabled = v,
+                        ChannelId = channelId,
+                    },
+                    () => new()
+                    {
+                        GuildId = guildId,
+                        GreetType = greetType,
+                    });
+        }
+        else
+        {
+            await q
+                  .Where(x => x.GuildId == guildId && x.GreetType == greetType)
+                  .UpdateAsync((old) => new()
+                  {
+                      IsEnabled = !old.IsEnabled
+                  });
+        }
 
-        await uow.SaveChangesAsync();
-        return enabled;
+        return true;
     }
 
-    public bool SetGreetMessage(ulong guildId, ref string message)
+    public async Task<bool> SetGreetTypeMessage(ulong guildId, GreetType greetType, string message)
     {
         message = message.SanitizeMentions();
 
         if (string.IsNullOrWhiteSpace(message))
             throw new ArgumentNullException(nameof(message));
 
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.ChannelGreetMessageText = message;
-        var greetMsgEnabled = conf.SendChannelGreetMessage;
+        await using (var uow = _db.GetDbContext())
+        {
+            await uow.GetTable<GreetSettings>()
+                     .InsertOrUpdateAsync(() => new()
+                     {
+                         MessageText = message
+                     },
+                         x => new()
+                         {
+                             MessageText = message
+                         },
+                         () => new()
+                         {
+                             GuildId = guildId,
+                             GreetType = greetType
+                         });
+        }
 
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache.AddOrUpdate(guildId, toAdd, (_, _) => toAdd);
+        var conf = await GetGreetSettingsAsync(guildId, type);
 
-        uow.SaveChanges();
-        return greetMsgEnabled;
+        return conf?.IsEnabled ?? false;
     }
 
-    public async Task<bool> SetGreetDm(ulong guildId, bool? value = null)
+    public async Task<bool> Test(
+        ulong guildId,
+        GreetType type,
+        IMessageChannel channel,
+        IGuildUser user)
     {
-        await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        var enabled = conf.SendDmGreetMessage = value ?? !conf.SendDmGreetMessage;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        await uow.SaveChangesAsync();
-        return enabled;
+        var conf = await GetGreetSettingsAsync(guildId, type);
+        return SendMessage(conf, user, channel);
     }
 
-    public bool SetGreetDmMessage(ulong guildId, ref string? message)
+    public async Task<bool> SendMessage(GreetSettings conf, IMessageChannel channel, IGuildUser user)
     {
-        message = message?.SanitizeMentions();
-
-        if (string.IsNullOrWhiteSpace(message))
-            throw new ArgumentNullException(nameof(message));
-
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.DmGreetMessageText = message;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        uow.SaveChanges();
-        return conf.SendDmGreetMessage;
+        if (conf.GreetType == GreetType.GreetDm)
+        {
+            await GreetDmUser(conf, user);
+        }
     }
-
-    public async Task<bool> SetBye(ulong guildId, ulong channelId, bool? value = null)
-    {
-        await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        var enabled = conf.SendChannelByeMessage = value ?? !conf.SendChannelByeMessage;
-        conf.ByeMessageChannelId = channelId;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        await uow.SaveChangesAsync();
-        return enabled;
-    }
-
-    public bool SetByeMessage(ulong guildId, ref string? message)
-    {
-        message = message?.SanitizeMentions();
-
-        if (string.IsNullOrWhiteSpace(message))
-            throw new ArgumentNullException(nameof(message));
-
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.ChannelByeMessageText = message;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        uow.SaveChanges();
-        return conf.SendChannelByeMessage;
-    }
-
-    public async Task SetByeDel(ulong guildId, int timer)
-    {
-        if (timer is < 0 or > 600)
-            return;
-
-        await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.AutoDeleteByeMessagesTimer = timer;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        await uow.SaveChangesAsync();
-    }
-
-    public async Task SetGreetDel(ulong guildId, int timer)
-    {
-        if (timer is < 0 or > 600)
-            return;
-
-        await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.AutoDeleteGreetMessagesTimer = timer;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        await uow.SaveChangesAsync();
-    }
-
-    public bool SetBoostMessage(ulong guildId, ref string message)
-    {
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.BoostMessage = message;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        uow.SaveChanges();
-        return conf.SendBoostMessage;
-    }
-
-    public async Task SetBoostDel(ulong guildId, int timer)
-    {
-        if (timer is < 0 or > 600)
-            throw new ArgumentOutOfRangeException(nameof(timer));
-
-        await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        conf.BoostMessageDeleteAfter = timer;
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-
-        await uow.SaveChangesAsync();
-    }
-
-    public async Task<bool> ToggleBoost(ulong guildId, ulong channelId, bool? forceState = null)
-    {
-        await using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-
-        if (forceState is not bool fs)
-            conf.SendBoostMessage = !conf.SendBoostMessage;
-        else
-            conf.SendBoostMessage = fs;
-
-        conf.BoostMessageChannelId = channelId;
-        await uow.SaveChangesAsync();
-
-        var toAdd = GreetSettings.Create(conf);
-        _guildConfigsCache[guildId] = toAdd;
-        return conf.SendBoostMessage;
-    }
-
-    #region Get Enabled Status
-
-    public bool GetGreetDmEnabled(ulong guildId)
-    {
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        return conf.SendDmGreetMessage;
-    }
-
-    public bool GetGreetEnabled(ulong guildId)
-    {
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        return conf.SendChannelGreetMessage;
-    }
-
-    public bool GetByeEnabled(ulong guildId)
-    {
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        return conf.SendChannelByeMessage;
-    }
-
-    public bool GetBoostEnabled(ulong guildId)
-    {
-        using var uow = _db.GetDbContext();
-        var conf = uow.GuildConfigsForId(guildId, set => set);
-        return conf.SendBoostMessage;
-    }
-
-    #endregion
-
-    #region Test Messages
-
-    public Task ByeTest(ITextChannel channel, IGuildUser user)
-    {
-        var conf = GetOrAddSettingsForGuild(user.GuildId);
-        return ByeUsers(conf, channel, user);
-    }
-
-    public Task GreetTest(ITextChannel channel, IGuildUser user)
-    {
-        var conf = GetOrAddSettingsForGuild(user.GuildId);
-        return GreetUsers(conf, channel, user);
-    }
-
-    public Task<bool> GreetDmTest(IGuildUser user)
-    {
-        var conf = GetOrAddSettingsForGuild(user.GuildId);
-        return GreetDmUser(conf, user);
-    }
-
-    public Task<bool> BoostTest(ITextChannel channel, IGuildUser user)
-    {
-        var conf = GetOrAddSettingsForGuild(user.GuildId);
-        return SendBoostMessage(conf, user, channel);
-    }
-
-    #endregion
 }
\ No newline at end of file
diff --git a/src/EllieBot/_common/Linq2DbExpressions.cs b/src/EllieBot/_common/Linq2DbExpressions.cs
index 53c90e6..5a1e145 100644
--- a/src/EllieBot/_common/Linq2DbExpressions.cs
+++ b/src/EllieBot/_common/Linq2DbExpressions.cs
@@ -1,5 +1,6 @@
 #nullable disable
 using LinqToDB;
+using LinqToDB.EntityFrameworkCore;
 using System.Linq.Expressions;
 
 namespace EllieBot.Common;

From 40b4ebf0fa8ff1799334089404b656cb9828ab1a Mon Sep 17 00:00:00 2001
From: Toastie <toastie@toastiet0ast.com>
Date: Thu, 12 Sep 2024 15:44:35 +1200
Subject: [PATCH 2/2] migrations, query fixes, fixes for mysql and postgres. In
 progress

---
 .gitignore                                    |    5 +-
 src/EllieBot.Tests/GroupGreetTests.cs         |   76 -
 src/EllieBot/Bot.cs                           |   60 +-
 src/EllieBot/Db/EllieContext.cs               |   13 +
 .../Db/Extensions/GuildConfigExtensions.cs    |  124 +-
 .../20240911104906_greet-settings.Designer.cs | 3790 ++++++++++++
 .../Mysql/20240911104906_greet-settings.cs    |  202 +
 .../Mysql/MysqlContextModelSnapshot.cs        | 5433 ++++++++---------
 .../PostgreSql/20220916194523_autopub.cs      |   10 -
 .../20240911104857_greet-settings.Designer.cs | 3785 ++++++++++++
 .../20240911104857_greet-settings.cs          |  196 +
 .../PostgreSqlContextModelSnapshot.cs         | 5427 ++++++++--------
 .../20240911104847_greet-settings.Designer.cs | 2925 +++++++++
 .../Sqlite/20240911104847_greet-settings.cs   |  219 +
 .../Sqlite/EllieSqliteContextModelSnapshot.cs | 3860 ++++++------
 .../Administration/GreetBye/GreetCommands.cs  |  305 +-
 .../Administration/GreetBye/GreetGrouper.cs   |   71 -
 .../Administration/GreetBye/GreetService.cs   |  350 +-
 .../Administration/GreetBye/GreetSettings.cs  |   69 +-
 .../UserPunish/UserPunishService.cs           |   29 +-
 .../Expressions/EllieExpressionExtensions.cs  |    2 +-
 src/EllieBot/Modules/Help/HelpService.cs      |    2 +-
 .../Utility/Repeater/RepeaterService.cs       |    2 +-
 .../Services/Impl/BotCredsProvider.cs         |   24 +-
 .../Extensions/EnumerableExtensions.cs        |   16 +
 src/EllieBot/_common/Configs/BotConfig.cs     |   14 -
 .../Replacements/Impl/ReplacementContext.cs   |   15 +-
 .../Replacements/Impl/ReplacementService.cs   |   12 +-
 .../data/strings/commands/commands.en-US.yml  |    4 +-
 29 files changed, 18970 insertions(+), 8070 deletions(-)
 delete mode 100644 src/EllieBot.Tests/GroupGreetTests.cs
 create mode 100644 src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.Designer.cs
 create mode 100644 src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.cs
 create mode 100644 src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.Designer.cs
 create mode 100644 src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.cs
 create mode 100644 src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.Designer.cs
 create mode 100644 src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.cs
 delete mode 100644 src/EllieBot/Modules/Administration/GreetBye/GreetGrouper.cs

diff --git a/.gitignore b/.gitignore
index 8330cb8..8c045b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,9 +20,8 @@ src/EllieBot/credentials.json
 src/EllieBot/old_credentials.json 
 src/EllieBot/credentials.json.bak
 src/EllieBot/data/EllieBot.db
-build.ps1
-build.sh
-test.ps1
+ellie-menu.ps1
+package.sh
 
 # Created by https://www.gitignore.io/api/visualstudio,visualstudiocode,windows,linux,macos
 
diff --git a/src/EllieBot.Tests/GroupGreetTests.cs b/src/EllieBot.Tests/GroupGreetTests.cs
deleted file mode 100644
index ba2bf37..0000000
--- a/src/EllieBot.Tests/GroupGreetTests.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System.Linq;
-using System.Threading.Tasks;
-using Ellie.Common;
-using EllieBot.Services;
-using NUnit.Framework;
-
-namespace EllieBot.Tests
-{
-    public class GroupGreetTests
-    {
-        private GreetGrouper<int> _grouper;
-
-        [SetUp]
-        public void Setup()
-            => _grouper = new GreetGrouper<int>();
-
-        [Test]
-        public void CreateTest()
-        {
-            var created = _grouper.CreateOrAdd(0, 5);
-
-            Assert.True(created);
-        }
-
-        [Test]
-        public void CreateClearTest()
-        {
-            _grouper.CreateOrAdd(0, 5);
-            _grouper.ClearGroup(0, 5, out var items);
-
-            Assert.AreEqual(0, items.Count());
-        }
-
-        [Test]
-        public void NotCreatedTest()
-        {
-            _grouper.CreateOrAdd(0, 5);
-            var created = _grouper.CreateOrAdd(0, 4);
-
-            Assert.False(created);
-        }
-
-        [Test]
-        public void ClearAddedTest()
-        {
-            _grouper.CreateOrAdd(0, 5);
-            _grouper.CreateOrAdd(0, 4);
-            _grouper.ClearGroup(0, 5, out var items);
-
-            var list = items.ToList();
-
-            Assert.AreEqual(1, list.Count, $"Count was {list.Count}");
-            Assert.AreEqual(4, list[0]);
-        }
-
-        [Test]
-        public async Task ClearManyTest()
-        {
-            _grouper.CreateOrAdd(0, 5);
-
-            // add 15 items
-            await Enumerable.Range(10, 15)
-                .Select(x => Task.Run(() => _grouper.CreateOrAdd(0, x))).WhenAll();
-
-            // get 5 at most
-            _grouper.ClearGroup(0, 5, out var items);
-            var list = items.ToList();
-            Assert.AreEqual(5, list.Count, $"Count was {list.Count}");
-
-            // try to get 15, but there should be 10 left
-            _grouper.ClearGroup(0, 15, out items);
-            list = items.ToList();
-            Assert.AreEqual(10, list.Count, $"Count was {list.Count}");
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/EllieBot/Bot.cs b/src/EllieBot/Bot.cs
index 3ea8ffa..af69cee 100644
--- a/src/EllieBot/Bot.cs
+++ b/src/EllieBot/Bot.cs
@@ -1,5 +1,6 @@
 #nullable disable
 using DryIoc;
+using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Caching.Memory;
 using Microsoft.Extensions.DependencyInjection;
 using EllieBot.Common.Configs;
@@ -88,18 +89,18 @@ public sealed class Bot : IBot
 
 
     public IReadOnlyList<ulong> GetCurrentGuildIds()
-        => Client.Guilds.Select(x => x.Id).ToList().ToList();
+        => Client.Guilds.Select(x => x.Id).ToList().AsReadOnly();
 
-    private void AddServices()
+    private async Task AddServices()
     {
-        var startingGuildIdList = GetCurrentGuildIds();
+        var startingGuildIdList = GetCurrentGuildIds().ToList();
         var startTime = Stopwatch.GetTimestamp();
         var bot = Client.CurrentUser;
 
-        using (var uow = _db.GetDbContext())
+        await using (var uow = _db.GetDbContext())
         {
+            AllGuildConfigs = await uow.GuildConfigs.GetAllGuildConfigs(startingGuildIdList);
             uow.EnsureUserCreated(bot.Id, bot.Username, bot.Discriminator, bot.AvatarId);
-            AllGuildConfigs = uow.Set<GuildConfig>().GetAllGuildConfigs(startingGuildIdList).ToImmutableArray();
         }
 
         // var svcs = new StandardKernel(new NinjectSettings()
@@ -161,7 +162,8 @@ public sealed class Bot : IBot
             LoadTypeReaders(a);
         }
 
-        Log.Information("All services loaded in {ServiceLoadTime:F2}s", Stopwatch.GetElapsedTime(startTime).TotalSeconds);
+        Log.Information("All services loaded in {ServiceLoadTime:F2}s",
+            Stopwatch.GetElapsedTime(startTime).TotalSeconds);
     }
 
     private void LoadTypeReaders(Assembly assembly)
@@ -265,7 +267,7 @@ public sealed class Bot : IBot
         Log.Information("Shard {ShardId} loading services...", Client.ShardId);
         try
         {
-            AddServices();
+            await AddServices();
         }
         catch (Exception ex)
         {
@@ -273,7 +275,9 @@ public sealed class Bot : IBot
             Helpers.ReadErrorAndExit(9);
         }
 
-        Log.Information("Shard {ShardId} connected in {Elapsed:F2}s", Client.ShardId, Stopwatch.GetElapsedTime(startTime).TotalSeconds);
+        Log.Information("Shard {ShardId} connected in {Elapsed:F2}s",
+            Client.ShardId,
+            Stopwatch.GetElapsedTime(startTime).TotalSeconds);
         var commandHandler = Services.GetRequiredService<CommandHandler>();
 
         // start handling messages received in commandhandler
@@ -338,26 +342,26 @@ public sealed class Bot : IBot
         if (arg.Exception is { InnerException: WebSocketClosedException { CloseCode: 4014 } })
         {
             Log.Error("""
-                Login failed.
-                
-                *** Please enable privileged intents ***
-                
-                Certain Ellie features require Discord's privileged gateway intents.
-                These include greeting and goodbye messages, as well as creating the Owner message channels for DM forwarding.
-                
-                How to enable privileged intents:
-                1. Head over to the Discord Developer Portal https://discord.com/developers/applications/
-                2. Select your Application.
-                3. Click on `Bot` in the left side navigation panel, and scroll down to the intents section.
-                4. Enable all intents.
-                5. Restart your bot.
-                
-                Read this only if your bot is in 100 or more servers:
-                
-                You'll need to apply to use the intents with Discord, but for small selfhosts, all that is required is enabling the intents in the developer portal.
-                Yes, this is a new thing from Discord, as of October 2020. No, there's nothing we can do about it. Yes, we're aware it worked before.
-                While waiting for your bot to be accepted, you can change the 'usePrivilegedIntents' inside your creds.yml to 'false', although this will break many of the ellie's features
-                """);
+                      Login failed.
+
+                      *** Please enable privileged intents ***
+
+                      Certain Ellie features require Discord's privileged gateway intents.
+                      These include greeting and goodbye messages, as well as creating the Owner message channels for DM forwarding.
+
+                      How to enable privileged intents:
+                      1. Head over to the Discord Developer Portal https://discord.com/developers/applications/
+                      2. Select your Application.
+                      3. Click on `Bot` in the left side navigation panel, and scroll down to the intents section.
+                      4. Enable all intents.
+                      5. Restart your bot.
+
+                      Read this only if your bot is in 100 or more servers:
+
+                      You'll need to apply to use the intents with Discord, but for small selfhosts, all that is required is enabling the intents in the developer portal.
+                      Yes, this is a new thing from Discord, as of October 2020. No, there's nothing we can do about it. Yes, we're aware it worked before.
+                      While waiting for your bot to be accepted, you can change the 'usePrivilegedIntents' inside your creds.yml to 'false', although this will break many of the ellie's features
+                      """);
             return Task.CompletedTask;
         }
 
diff --git a/src/EllieBot/Db/EllieContext.cs b/src/EllieBot/Db/EllieContext.cs
index afc50ca..724a862 100644
--- a/src/EllieBot/Db/EllieContext.cs
+++ b/src/EllieBot/Db/EllieContext.cs
@@ -10,6 +10,7 @@ namespace EllieBot.Db;
 public abstract class EllieContext : DbContext
 {
     public DbSet<GuildConfig> GuildConfigs { get; set; }
+    public DbSet<GreetSettings> GreetSettings { get; set; }
 
     public DbSet<Quote> Quotes { get; set; }
     public DbSet<Reminder> Reminders { get; set; }
@@ -678,6 +679,18 @@ public abstract class EllieContext : DbContext
                     .OnDelete(DeleteBehavior.Cascade);
 
         #endregion
+
+        #region GreetSettings
+
+        modelBuilder
+            .Entity<GreetSettings>(gs => gs.HasIndex(x => new
+            {
+                x.GuildId,
+                x.GreetType
+            })
+            .IsUnique());
+
+        #endregion
     }
 
 #if DEBUG
diff --git a/src/EllieBot/Db/Extensions/GuildConfigExtensions.cs b/src/EllieBot/Db/Extensions/GuildConfigExtensions.cs
index 842fe4e..de4d47f 100644
--- a/src/EllieBot/Db/Extensions/GuildConfigExtensions.cs
+++ b/src/EllieBot/Db/Extensions/GuildConfigExtensions.cs
@@ -1,4 +1,5 @@
 #nullable disable
+using LinqToDB.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore;
 using EllieBot.Db.Models;
 
@@ -32,8 +33,8 @@ public static class GuildConfigExtensions
     {
         var conf = ctx.GuildConfigsForId(guildId,
             set => set.Include(y => y.StreamRole)
-                .Include(y => y.StreamRole.Whitelist)
-                .Include(y => y.StreamRole.Blacklist));
+                      .Include(y => y.StreamRole.Whitelist)
+                      .Include(y => y.StreamRole.Blacklist));
 
         if (conf.StreamRole is null)
             conf.StreamRole = new();
@@ -42,19 +43,28 @@ public static class GuildConfigExtensions
     }
 
     private static IQueryable<GuildConfig> IncludeEverything(this DbSet<GuildConfig> configs)
-        => configs.AsQueryable()
-            .AsSplitQuery()
-            .Include(gc => gc.CommandCooldowns)
-            .Include(gc => gc.FollowedStreams)
-            .Include(gc => gc.StreamRole)
-            .Include(gc => gc.XpSettings)
-            .ThenInclude(x => x.ExclusionList)
-            .Include(gc => gc.DelMsgOnCmdChannels);
+        => configs
+           .AsSplitQuery()
+           .Include(gc => gc.CommandCooldowns)
+           .Include(gc => gc.FollowedStreams)
+           .Include(gc => gc.StreamRole)
+           .Include(gc => gc.DelMsgOnCmdChannels)
+           .Include(gc => gc.XpSettings)
+           .ThenInclude(x => x.ExclusionList);
 
-    public static IEnumerable<GuildConfig> GetAllGuildConfigs(
+    public static async Task<GuildConfig[]> GetAllGuildConfigs(
         this DbSet<GuildConfig> configs,
-        IReadOnlyList<ulong> availableGuilds)
-        => configs.IncludeEverything().AsNoTracking().Where(x => availableGuilds.Contains(x.GuildId)).ToList();
+        List<ulong> availableGuilds)
+    {
+        var result = await configs
+                           .AsQueryable()
+                           .Include(x => x.CommandCooldowns)
+                           .Where(x => availableGuilds.Contains(x.GuildId))
+                           .AsNoTracking()
+                           .ToArrayAsync();
+
+        return result;
+    }
 
     /// <summary>
     ///     Gets and creates if it doesn't exist a config for a guild.
@@ -80,13 +90,14 @@ public static class GuildConfigExtensions
 
         if (config is null)
         {
-            ctx.Set<GuildConfig>().Add(config = new()
-            {
-                GuildId = guildId,
-                Permissions = Permissionv2.GetDefaultPermlist,
-                WarningsInitialized = true,
-                WarnPunishments = DefaultWarnPunishments
-            });
+            ctx.Set<GuildConfig>()
+               .Add(config = new()
+               {
+                   GuildId = guildId,
+                   Permissions = Permissionv2.GetDefaultPermlist,
+                   WarningsInitialized = true,
+                   WarnPunishments = DefaultWarnPunishments
+               });
             ctx.SaveChanges();
         }
 
@@ -122,18 +133,18 @@ public static class GuildConfigExtensions
     public static LogSetting LogSettingsFor(this DbContext ctx, ulong guildId)
     {
         var logSetting = ctx.Set<LogSetting>()
-            .AsQueryable()
-            .Include(x => x.LogIgnores)
-            .Where(x => x.GuildId == guildId)
-            .FirstOrDefault();
+                            .AsQueryable()
+                            .Include(x => x.LogIgnores)
+                            .Where(x => x.GuildId == guildId)
+                            .FirstOrDefault();
 
         if (logSetting is null)
         {
             ctx.Set<LogSetting>()
-                .Add(logSetting = new()
-                {
-                    GuildId = guildId
-                });
+               .Add(logSetting = new()
+               {
+                   GuildId = guildId
+               });
             ctx.SaveChanges();
         }
 
@@ -149,18 +160,20 @@ public static class GuildConfigExtensions
 
     public static GuildConfig GcWithPermissionsFor(this DbContext ctx, ulong guildId)
     {
-        var config = ctx.Set<GuildConfig>().AsQueryable()
-            .Where(gc => gc.GuildId == guildId)
-            .Include(gc => gc.Permissions)
-            .FirstOrDefault();
+        var config = ctx.Set<GuildConfig>()
+                        .AsQueryable()
+                        .Where(gc => gc.GuildId == guildId)
+                        .Include(gc => gc.Permissions)
+                        .FirstOrDefault();
 
         if (config is null) // if there is no guildconfig, create new one
         {
-            ctx.Set<GuildConfig>().Add(config = new()
-            {
-                GuildId = guildId,
-                Permissions = Permissionv2.GetDefaultPermlist
-            });
+            ctx.Set<GuildConfig>()
+               .Add(config = new()
+               {
+                   GuildId = guildId,
+                   Permissions = Permissionv2.GetDefaultPermlist
+               });
             ctx.SaveChanges();
         }
         else if (config.Permissions is null || !config.Permissions.Any()) // if no perms, add default ones
@@ -177,20 +190,21 @@ public static class GuildConfigExtensions
 
     public static IEnumerable<FollowedStream> GetFollowedStreams(this DbSet<GuildConfig> configs, List<ulong> included)
         => configs.AsQueryable()
-            .Where(gc => included.Contains(gc.GuildId))
-            .Include(gc => gc.FollowedStreams)
-            .SelectMany(gc => gc.FollowedStreams)
-            .ToList();
+                  .Where(gc => included.Contains(gc.GuildId))
+                  .Include(gc => gc.FollowedStreams)
+                  .SelectMany(gc => gc.FollowedStreams)
+                  .ToList();
+
 
     public static XpSettings XpSettingsFor(this DbContext ctx, ulong guildId)
     {
         var gc = ctx.GuildConfigsForId(guildId,
             set => set.Include(x => x.XpSettings)
-                .ThenInclude(x => x.RoleRewards)
-                .Include(x => x.XpSettings)
-                .ThenInclude(x => x.CurrencyRewards)
-                .Include(x => x.XpSettings)
-                .ThenInclude(x => x.ExclusionList));
+                      .ThenInclude(x => x.RoleRewards)
+                      .Include(x => x.XpSettings)
+                      .ThenInclude(x => x.CurrencyRewards)
+                      .Include(x => x.XpSettings)
+                      .ThenInclude(x => x.ExclusionList));
 
         if (gc.XpSettings is null)
             gc.XpSettings = new();
@@ -200,15 +214,15 @@ public static class GuildConfigExtensions
 
     public static IEnumerable<GeneratingChannel> GetGeneratingChannels(this DbSet<GuildConfig> configs)
         => configs.AsQueryable()
-            .Include(x => x.GenerateCurrencyChannelIds)
-            .Where(x => x.GenerateCurrencyChannelIds.Any())
-            .SelectMany(x => x.GenerateCurrencyChannelIds)
-            .Select(x => new GeneratingChannel
-            {
-                ChannelId = x.ChannelId,
-                GuildId = x.GuildConfig.GuildId
-            })
-            .ToArray();
+                  .Include(x => x.GenerateCurrencyChannelIds)
+                  .Where(x => x.GenerateCurrencyChannelIds.Any())
+                  .SelectMany(x => x.GenerateCurrencyChannelIds)
+                  .Select(x => new GeneratingChannel
+                  {
+                      ChannelId = x.ChannelId,
+                      GuildId = x.GuildConfig.GuildId
+                  })
+                  .ToArray();
 
     public class GeneratingChannel
     {
diff --git a/src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.Designer.cs b/src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.Designer.cs
new file mode 100644
index 0000000..d9fd474
--- /dev/null
+++ b/src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.Designer.cs
@@ -0,0 +1,3790 @@
+// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using EllieBot.Db;
+
+#nullable disable
+
+namespace EllieBot.Migrations.Mysql
+{
+    [DbContext(typeof(MysqlContext))]
+    [Migration("20240911104906_greet-settings")]
+    partial class greetsettings
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "8.0.8")
+                .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+            MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+            modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("Action")
+                    .HasColumnType("int")
+                    .HasColumnName("action");
+
+                b.Property<int>("ActionDurationMinutes")
+                    .HasColumnType("int")
+                    .HasColumnName("actiondurationminutes");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<TimeSpan>("MinAge")
+                    .HasColumnType("time(6)")
+                    .HasColumnName("minage");
+
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("Action")
+                    .HasColumnType("int")
+                    .HasColumnName("action");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<int>("PunishDuration")
+                    .HasColumnType("int")
+                    .HasColumnName("punishduration");
+
+                b.Property<int>("Seconds")
+                    .HasColumnType("int")
+                    .HasColumnName("seconds");
+
+                b.Property<int>("UserThreshold")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int?>("AntiSpamSettingId")
+                    .HasColumnType("int")
+                    .HasColumnName("antispamsettingid");
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("Action")
+                    .HasColumnType("int")
+                    .HasColumnName("action");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<int>("MessageThreshold")
+                    .HasColumnType("int")
+                    .HasColumnName("messagethreshold");
+
+                b.Property<int>("MuteTime")
+                    .HasColumnType("int")
+                    .HasColumnName("mutetime");
+
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<string>("ChannelName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("channelname");
+
+                b.Property<string>("CommandText")
+                    .HasColumnType("longtext")
+                    .HasColumnName("commandtext");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong?>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("GuildName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("guildname");
+
+                b.Property<int>("Interval")
+                    .HasColumnType("int")
+                    .HasColumnName("interval");
+
+                b.Property<ulong?>("VoiceChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("voicechannelid");
+
+                b.Property<string>("VoiceChannelName")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<bool>("AutoDelete")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodelete");
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("ChannelId")
+                    .HasColumnType("int")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Source")
+                    .HasColumnType("longtext")
+                    .HasColumnName("source");
+
+                b.Property<string>("Target")
+                    .HasColumnType("longtext")
+                    .HasColumnName("target");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<int?>("PruneDays")
+                    .HasColumnType("int")
+                    .HasColumnName("prunedays");
+
+                b.Property<string>("Text")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<long>("Balance")
+                    .HasColumnType("bigint")
+                    .HasColumnName("balance");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("ItemId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("itemid");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("clubid");
+
+                b.Property<int>("UserId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("clubid");
+
+                b.Property<int>("UserId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Description")
+                    .HasColumnType("longtext")
+                    .HasColumnName("description");
+
+                b.Property<string>("ImageUrl")
+                    .HasColumnType("longtext")
+                    .HasColumnName("imageurl");
+
+                b.Property<string>("Name")
+                    .HasMaxLength(20)
+                    .HasColumnType("varchar(20)")
+                    .HasColumnName("name")
+                    .UseCollation("utf8mb4_bin");
+
+                b.Property<int?>("OwnerId")
+                    .HasColumnType("int")
+                    .HasColumnName("ownerid");
+
+                b.Property<int>("Xp")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<string>("Mapping")
+                    .HasColumnType("longtext")
+                    .HasColumnName("mapping");
+
+                b.Property<string>("Trigger")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<string>("CommandName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("commandname");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<int>("Seconds")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<long>("Amount")
+                    .HasColumnType("bigint")
+                    .HasColumnName("amount");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Extra")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("extra");
+
+                b.Property<string>("Note")
+                    .HasColumnType("longtext")
+                    .HasColumnName("note");
+
+                b.Property<ulong?>("OtherId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("otherid")
+                    .HasDefaultValueSql("NULL");
+
+                b.Property<string>("Type")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("type");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<bool>("State")
+                    .HasColumnType("tinyint(1)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<string>("Command")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("command");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong?>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<ulong>("Perm")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<string>("AvatarId")
+                    .HasColumnType("longtext")
+                    .HasColumnName("avatarid");
+
+                b.Property<int?>("ClubId")
+                    .HasColumnType("int")
+                    .HasColumnName("clubid");
+
+                b.Property<long>("CurrencyAmount")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint")
+                    .HasDefaultValue(0L)
+                    .HasColumnName("currencyamount");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Discriminator")
+                    .HasColumnType("longtext")
+                    .HasColumnName("discriminator");
+
+                b.Property<bool>("IsClubAdmin")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("tinyint(1)")
+                    .HasDefaultValue(false)
+                    .HasColumnName("isclubadmin");
+
+                b.Property<int>("NotifyOnLevelUp")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasDefaultValue(0)
+                    .HasColumnName("notifyonlevelup");
+
+                b.Property<long>("TotalXp")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint")
+                    .HasDefaultValue(0L)
+                    .HasColumnName("totalxp");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
+
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .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.ToTable("discorduser", (string)null);
+            });
+
+            modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("ItemId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("itemid");
+
+                b.Property<int>("ItemType")
+                    .HasColumnType("int")
+                    .HasColumnName("itemtype");
+
+                b.Property<int?>("XpSettingsId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
+
+                b.Property<string>("Url")
+                    .IsRequired()
+                    .HasColumnType("varchar(255)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<string>("Word")
+                    .HasColumnType("longtext")
+                    .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.FollowedStream", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
+
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<decimal>("Bet")
+                    .HasColumnType("decimal(65,30)")
+                    .HasColumnName("bet");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Feature")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("feature");
+
+                b.Property<decimal>("PaidOut")
+                    .HasColumnType("decimal(65,30)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime>("EndsAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("endsat");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
+
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("GiveawayId")
+                    .HasColumnType("int")
+                    .HasColumnName("giveawayid");
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
+
+                b.Property<int>("Number")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<string>("AutoAssignRoleIds")
+                    .HasColumnType("longtext")
+                    .HasColumnName("autoassignroleids");
+
+                b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodeleteselfassignedrolemessages");
+
+                b.Property<bool>("CleverbotEnabled")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("cleverbotenabled");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("DeleteMessageOnCommand")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("deletemessageoncommand");
+
+                b.Property<bool>("DeleteStreamOnlineMessage")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("deletestreamonlinemessage");
+
+                b.Property<bool>("DisableGlobalExpressions")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("disableglobalexpressions");
+
+                b.Property<bool>("ExclusiveSelfAssignedRoles")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("exclusiveselfassignedroles");
+
+                b.Property<bool>("FilterInvites")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("filterinvites");
+
+                b.Property<bool>("FilterLinks")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("filterlinks");
+
+                b.Property<bool>("FilterWords")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("filterwords");
+
+                b.Property<ulong?>("GameVoiceChannel")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("gamevoicechannel");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("Locale")
+                    .HasColumnType("longtext")
+                    .HasColumnName("locale");
+
+                b.Property<string>("MuteRoleName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("muterolename");
+
+                b.Property<bool>("NotifyStreamOffline")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("notifystreamoffline");
+
+                b.Property<string>("PermissionRole")
+                    .HasColumnType("longtext")
+                    .HasColumnName("permissionrole");
+
+                b.Property<string>("Prefix")
+                    .HasColumnType("longtext")
+                    .HasColumnName("prefix");
+
+                b.Property<bool>("StickyRoles")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("stickyroles");
+
+                b.Property<string>("TimeZoneId")
+                    .HasColumnType("longtext")
+                    .HasColumnName("timezoneid");
+
+                b.Property<bool>("VerboseErrors")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("tinyint(1)")
+                    .HasDefaultValue(true)
+                    .HasColumnName("verboseerrors");
+
+                b.Property<bool>("VerbosePermissions")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("verbosepermissions");
+
+                b.Property<int>("WarnExpireAction")
+                    .HasColumnType("int")
+                    .HasColumnName("warnexpireaction");
+
+                b.Property<int>("WarnExpireHours")
+                    .HasColumnType("int")
+                    .HasColumnName("warnexpirehours");
+
+                b.Property<bool>("WarningsInitialized")
+                    .HasColumnType("tinyint(1)")
+                    .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<ulong>("GuildId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<ulong>("GuildId"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("ItemType")
+                    .HasColumnType("int")
+                    .HasColumnName("itemtype");
+
+                b.Property<ulong>("LogItemId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logitemid");
+
+                b.Property<int>("LogSettingId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong?>("ChannelCreatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelcreatedid");
+
+                b.Property<ulong?>("ChannelDestroyedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channeldestroyedid");
+
+                b.Property<ulong?>("ChannelUpdatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelupdatedid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<ulong?>("LogOtherId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logotherid");
+
+                b.Property<ulong?>("LogUserPresenceId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("loguserpresenceid");
+
+                b.Property<ulong?>("LogVoicePresenceId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logvoicepresenceid");
+
+                b.Property<ulong?>("LogVoicePresenceTTSId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logvoicepresencettsid");
+
+                b.Property<ulong?>("LogWarnsId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logwarnsid");
+
+                b.Property<ulong?>("MessageDeletedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messagedeletedid");
+
+                b.Property<ulong?>("MessageUpdatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageupdatedid");
+
+                b.Property<ulong?>("ThreadCreatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("threadcreatedid");
+
+                b.Property<ulong?>("ThreadDeletedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("threaddeletedid");
+
+                b.Property<ulong?>("UserBannedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userbannedid");
+
+                b.Property<ulong?>("UserJoinedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userjoinedid");
+
+                b.Property<ulong?>("UserLeftId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userleftid");
+
+                b.Property<ulong?>("UserMutedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("usermutedid");
+
+                b.Property<ulong?>("UserUnbannedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userunbannedid");
+
+                b.Property<ulong?>("UserUpdatedId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<bool>("AutoDisconnect")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodisconnect");
+
+                b.Property<bool>("AutoPlay")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autoplay");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<ulong?>("MusicChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("musicchannelid");
+
+                b.Property<int>("PlayerRepeat")
+                    .HasColumnType("int")
+                    .HasColumnName("playerrepeat");
+
+                b.Property<int>("QualityPreset")
+                    .HasColumnType("int")
+                    .HasColumnName("qualitypreset");
+
+                b.Property<int>("Volume")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<string>("Author")
+                    .HasColumnType("longtext")
+                    .HasColumnName("author");
+
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("authorid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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.EllieExpression", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<bool>("AllowTarget")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("allowtarget");
+
+                b.Property<bool>("AutoDeleteTrigger")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodeletetrigger");
+
+                b.Property<bool>("ContainsAnywhere")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("containsanywhere");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("DmResponse")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("dmresponse");
+
+                b.Property<ulong?>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("Reactions")
+                    .HasColumnType("longtext")
+                    .HasColumnName("reactions");
+
+                b.Property<string>("Response")
+                    .HasColumnType("longtext")
+                    .HasColumnName("response");
+
+                b.Property<string>("Trigger")
+                    .HasColumnType("longtext")
+                    .HasColumnName("trigger");
+
+                b.HasKey("Id")
+                    .HasName("pk_expressions");
+
+                b.ToTable("expressions", (string)null);
+            });
+
+            modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
+            {
+                b.Property<ulong>("UserId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<ulong>("UserId"));
+
+                b.Property<int>("AmountCents")
+                    .HasColumnType("int")
+                    .HasColumnName("amountcents");
+
+                b.Property<DateTime>("LastCharge")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("lastcharge");
+
+                b.Property<string>("UniquePlatformUserId")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("uniqueplatformuserid");
+
+                b.Property<DateTime>("ValidThru")
+                    .HasColumnType("datetime(6)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<int>("Index")
+                    .HasColumnType("int")
+                    .HasColumnName("index");
+
+                b.Property<bool>("IsCustomCommand")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("iscustomcommand");
+
+                b.Property<int>("PrimaryTarget")
+                    .HasColumnType("int")
+                    .HasColumnName("primarytarget");
+
+                b.Property<ulong>("PrimaryTargetId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("primarytargetid");
+
+                b.Property<int>("SecondaryTarget")
+                    .HasColumnType("int")
+                    .HasColumnName("secondarytarget");
+
+                b.Property<string>("SecondaryTargetName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("secondarytargetname");
+
+                b.Property<bool>("State")
+                    .HasColumnType("tinyint(1)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<long>("Amount")
+                    .HasColumnType("bigint")
+                    .HasColumnName("amount");
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
+
+                b.Property<string>("Password")
+                    .HasColumnType("longtext")
+                    .HasColumnName("password");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("MusicPlaylistId")
+                    .HasColumnType("int")
+                    .HasColumnName("musicplaylistid");
+
+                b.Property<string>("Provider")
+                    .HasColumnType("longtext")
+                    .HasColumnName("provider");
+
+                b.Property<int>("ProviderType")
+                    .HasColumnType("int")
+                    .HasColumnName("providertype");
+
+                b.Property<string>("Query")
+                    .HasColumnType("longtext")
+                    .HasColumnName("query");
+
+                b.Property<string>("Title")
+                    .HasColumnType("longtext")
+                    .HasColumnName("title");
+
+                b.Property<string>("Uri")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("authorid");
+
+                b.Property<string>("AuthorName")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("authorname");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("Keyword")
+                    .IsRequired()
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("keyword");
+
+                b.Property<string>("Text")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Emote")
+                    .HasMaxLength(100)
+                    .HasColumnType("varchar(100)")
+                    .HasColumnName("emote");
+
+                b.Property<int>("Group")
+                    .HasColumnType("int")
+                    .HasColumnName("group");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<int>("LevelReq")
+                    .HasColumnType("int")
+                    .HasColumnName("levelreq");
+
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("IsPrivate")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isprivate");
+
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
+
+                b.Property<ulong>("ServerId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("serverid");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
+
+                b.Property<DateTime>("When")
+                    .HasColumnType("datetime(6)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<TimeSpan>("Interval")
+                    .HasColumnType("time(6)")
+                    .HasColumnName("interval");
+
+                b.Property<ulong?>("LastMessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("lastmessageid");
+
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
+
+                b.Property<bool>("NoRedundant")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("noredundant");
+
+                b.Property<TimeSpan?>("StartTimeOfDay")
+                    .HasColumnType("time(6)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<long>("AmountRewardedThisMonth")
+                    .HasColumnType("bigint")
+                    .HasColumnName("amountrewardedthismonth");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<DateTime>("LastReward")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("lastreward");
+
+                b.Property<string>("PlatformUserId")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("platformuserid");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("Status")
+                    .HasColumnType("longtext")
+                    .HasColumnName("status");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("Group")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasDefaultValue(0)
+                    .HasColumnName("group");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<int>("LevelRequirement")
+                    .HasColumnType("int")
+                    .HasColumnName("levelrequirement");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("authorid");
+
+                b.Property<string>("Command")
+                    .HasColumnType("longtext")
+                    .HasColumnName("command");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<int>("Index")
+                    .HasColumnType("int")
+                    .HasColumnName("index");
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
+
+                b.Property<int>("Price")
+                    .HasColumnType("int")
+                    .HasColumnName("price");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
+
+                b.Property<string>("RoleName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("rolename");
+
+                b.Property<ulong?>("RoleRequirement")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("rolerequirement");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("ShopEntryId")
+                    .HasColumnType("int")
+                    .HasColumnName("shopentryid");
+
+                b.Property<string>("Text")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("RoleIds")
+                    .HasColumnType("longtext")
+                    .HasColumnName("roleids");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
+
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("streamrolesettingsid");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
+
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<ulong>("AddRoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("addroleid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("Enabled")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("enabled");
+
+                b.Property<ulong>("FromRoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("fromroleid");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<string>("Keyword")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("streamrolesettingsid");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
+
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int?>("ArchiveId")
+                    .HasColumnType("int")
+                    .HasColumnName("archiveid");
+
+                b.Property<DateTime>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("IsDone")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isdone");
+
+                b.Property<string>("Todo")
+                    .HasColumnType("longtext")
+                    .HasColumnName("todo");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("unbanat");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<DateTime>("UnmuteAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("unmuteat");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
+
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("unbanat");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<long>("AwardedXp")
+                    .HasColumnType("bigint")
+                    .HasColumnName("awardedxp");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<int>("NotifyOnLevelUp")
+                    .HasColumnType("int")
+                    .HasColumnName("notifyonlevelup");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
+
+                b.Property<ulong>("VoiceChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int?>("AffinityId")
+                    .HasColumnType("int")
+                    .HasColumnName("affinityid");
+
+                b.Property<int?>("ClaimerId")
+                    .HasColumnType("int")
+                    .HasColumnName("claimerid");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<long>("Price")
+                    .HasColumnType("bigint")
+                    .HasColumnName("price");
+
+                b.Property<int>("WaifuId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<string>("ItemEmoji")
+                    .HasColumnType("longtext")
+                    .HasColumnName("itememoji");
+
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
+
+                b.Property<int?>("WaifuInfoId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("NewId")
+                    .HasColumnType("int")
+                    .HasColumnName("newid");
+
+                b.Property<int?>("OldId")
+                    .HasColumnType("int")
+                    .HasColumnName("oldid");
+
+                b.Property<int>("UpdateType")
+                    .HasColumnType("int")
+                    .HasColumnName("updatetype");
+
+                b.Property<int>("UserId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("Forgiven")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("forgiven");
+
+                b.Property<string>("ForgivenBy")
+                    .HasColumnType("longtext")
+                    .HasColumnName("forgivenby");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<string>("Moderator")
+                    .HasColumnType("longtext")
+                    .HasColumnName("moderator");
+
+                b.Property<string>("Reason")
+                    .HasColumnType("longtext")
+                    .HasColumnName("reason");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("Count")
+                    .HasColumnType("int")
+                    .HasColumnName("count");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<int>("Punishment")
+                    .HasColumnType("int")
+                    .HasColumnName("punishment");
+
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
+
+                b.Property<int>("Time")
+                    .HasColumnType("int")
+                    .HasColumnName("time");
+
+                b.HasKey("Id")
+                    .HasName("pk_warningpunishment");
+
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_warningpunishment_guildconfigid");
+
+                b.ToTable("warningpunishment", (string)null);
+            });
+
+            modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("Amount")
+                    .HasColumnType("int")
+                    .HasColumnName("amount");
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("Level")
+                    .HasColumnType("int")
+                    .HasColumnName("level");
+
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("Level")
+                    .HasColumnType("int")
+                    .HasColumnName("level");
+
+                b.Property<bool>("Remove")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("remove");
+
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
+
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("int")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
+
+                b.Property<bool>("ServerExcluded")
+                    .HasColumnType("tinyint(1)")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
+
+                b.Property<bool>("IsUsing")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isusing");
+
+                b.Property<string>("ItemKey")
+                    .IsRequired()
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("itemkey");
+
+                b.Property<int>("ItemType")
+                    .HasColumnType("int")
+                    .HasColumnName("itemtype");
+
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("AutoDeleteTimer")
+                    .HasColumnType("int")
+                    .HasColumnName("autodeletetimer");
+
+                b.Property<ulong?>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<int>("GreetType")
+                    .HasColumnType("int")
+                    .HasColumnName("greettype");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<bool>("IsEnabled")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isenabled");
+
+                b.Property<string>("MessageText")
+                    .HasColumnType("longtext")
+                    .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");
+            });
+
+            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_streamrolesetti~");
+
+                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_streamrolesetti~");
+
+                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.WarningPunishment", b =>
+            {
+                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                    .WithMany("WarnPunishments")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_warningpunishment_guildconfigs_guildconfigid");
+            });
+
+            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("WarnPunishments");
+
+                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/Mysql/20240911104906_greet-settings.cs b/src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.cs
new file mode 100644
index 0000000..5bbb193
--- /dev/null
+++ b/src/EllieBot/Migrations/Mysql/20240911104906_greet-settings.cs
@@ -0,0 +1,202 @@
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace EllieBot.Migrations.Mysql
+{
+    /// <inheritdoc />
+    public partial class greetsettings : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "autodeletebyemessagestimer",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "autodeletegreetmessagestimer",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "boostmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "boostmessagechannelid",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "boostmessagedeleteafter",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "byemessagechannelid",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "channelbyemessagetext",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "channelgreetmessagetext",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "dmgreetmessagetext",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "greetmessagechannelid",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "sendboostmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "sendchannelbyemessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "sendchannelgreetmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "senddmgreetmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.CreateTable(
+                name: "greetsettings",
+                columns: table => new
+                {
+                    id = table.Column<int>(type: "int", nullable: false)
+                        .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
+                    guildid = table.Column<ulong>(type: "bigint unsigned", nullable: false),
+                    greettype = table.Column<int>(type: "int", nullable: false),
+                    messagetext = table.Column<string>(type: "longtext", nullable: true)
+                        .Annotation("MySql:CharSet", "utf8mb4"),
+                    isenabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
+                    channelid = table.Column<ulong>(type: "bigint unsigned", nullable: true),
+                    autodeletetimer = table.Column<int>(type: "int", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_greetsettings", x => x.id);
+                })
+                .Annotation("MySql:CharSet", "utf8mb4");
+
+            migrationBuilder.CreateIndex(
+                name: "ix_greetsettings_guildid_greettype",
+                table: "greetsettings",
+                columns: new[] { "guildid", "greettype" },
+                unique: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "greetsettings");
+
+            migrationBuilder.AddColumn<int>(
+                name: "autodeletebyemessagestimer",
+                table: "guildconfigs",
+                type: "int",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<int>(
+                name: "autodeletegreetmessagestimer",
+                table: "guildconfigs",
+                type: "int",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<string>(
+                name: "boostmessage",
+                table: "guildconfigs",
+                type: "longtext",
+                nullable: true)
+                .Annotation("MySql:CharSet", "utf8mb4");
+
+            migrationBuilder.AddColumn<ulong>(
+                name: "boostmessagechannelid",
+                table: "guildconfigs",
+                type: "bigint unsigned",
+                nullable: false,
+                defaultValue: 0ul);
+
+            migrationBuilder.AddColumn<int>(
+                name: "boostmessagedeleteafter",
+                table: "guildconfigs",
+                type: "int",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<ulong>(
+                name: "byemessagechannelid",
+                table: "guildconfigs",
+                type: "bigint unsigned",
+                nullable: false,
+                defaultValue: 0ul);
+
+            migrationBuilder.AddColumn<string>(
+                name: "channelbyemessagetext",
+                table: "guildconfigs",
+                type: "longtext",
+                nullable: true)
+                .Annotation("MySql:CharSet", "utf8mb4");
+
+            migrationBuilder.AddColumn<string>(
+                name: "channelgreetmessagetext",
+                table: "guildconfigs",
+                type: "longtext",
+                nullable: true)
+                .Annotation("MySql:CharSet", "utf8mb4");
+
+            migrationBuilder.AddColumn<string>(
+                name: "dmgreetmessagetext",
+                table: "guildconfigs",
+                type: "longtext",
+                nullable: true)
+                .Annotation("MySql:CharSet", "utf8mb4");
+
+            migrationBuilder.AddColumn<ulong>(
+                name: "greetmessagechannelid",
+                table: "guildconfigs",
+                type: "bigint unsigned",
+                nullable: false,
+                defaultValue: 0ul);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "sendboostmessage",
+                table: "guildconfigs",
+                type: "tinyint(1)",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "sendchannelbyemessage",
+                table: "guildconfigs",
+                type: "tinyint(1)",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "sendchannelgreetmessage",
+                table: "guildconfigs",
+                type: "tinyint(1)",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "senddmgreetmessage",
+                table: "guildconfigs",
+                type: "tinyint(1)",
+                nullable: false,
+                defaultValue: false);
+        }
+    }
+}
diff --git a/src/EllieBot/Migrations/Mysql/MysqlContextModelSnapshot.cs b/src/EllieBot/Migrations/Mysql/MysqlContextModelSnapshot.cs
index 964a3ea..2f4a13d 100644
--- a/src/EllieBot/Migrations/Mysql/MysqlContextModelSnapshot.cs
+++ b/src/EllieBot/Migrations/Mysql/MysqlContextModelSnapshot.cs
@@ -17,3783 +17,3770 @@ namespace EllieBot.Migrations.Mysql
         {
 #pragma warning disable 612, 618
             modelBuilder
-                .HasAnnotation("ProductVersion", "8.0.4")
+                .HasAnnotation("ProductVersion", "8.0.8")
                 .HasAnnotation("Relational:MaxIdentifierLength", 64);
 
             MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiAltSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("Action")
-                        .HasColumnType("int")
-                        .HasColumnName("action");
+                b.Property<int>("Action")
+                    .HasColumnType("int")
+                    .HasColumnName("action");
 
-                    b.Property<int>("ActionDurationMinutes")
-                        .HasColumnType("int")
-                        .HasColumnName("actiondurationminutes");
+                b.Property<int>("ActionDurationMinutes")
+                    .HasColumnType("int")
+                    .HasColumnName("actiondurationminutes");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<TimeSpan>("MinAge")
-                        .HasColumnType("time(6)")
-                        .HasColumnName("minage");
+                b.Property<TimeSpan>("MinAge")
+                    .HasColumnType("time(6)")
+                    .HasColumnName("minage");
 
-                    b.Property<ulong?>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("Action")
-                        .HasColumnType("int")
-                        .HasColumnName("action");
+                b.Property<int>("Action")
+                    .HasColumnType("int")
+                    .HasColumnName("action");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("PunishDuration")
-                        .HasColumnType("int")
-                        .HasColumnName("punishduration");
+                b.Property<int>("PunishDuration")
+                    .HasColumnType("int")
+                    .HasColumnName("punishduration");
 
-                    b.Property<int>("Seconds")
-                        .HasColumnType("int")
-                        .HasColumnName("seconds");
+                b.Property<int>("Seconds")
+                    .HasColumnType("int")
+                    .HasColumnName("seconds");
 
-                    b.Property<int>("UserThreshold")
-                        .HasColumnType("int")
-                        .HasColumnName("userthreshold");
+                b.Property<int>("UserThreshold")
+                    .HasColumnType("int")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int?>("AntiSpamSettingId")
-                        .HasColumnType("int")
-                        .HasColumnName("antispamsettingid");
+                b.Property<int?>("AntiSpamSettingId")
+                    .HasColumnType("int")
+                    .HasColumnName("antispamsettingid");
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("Action")
-                        .HasColumnType("int")
-                        .HasColumnName("action");
+                b.Property<int>("Action")
+                    .HasColumnType("int")
+                    .HasColumnName("action");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("MessageThreshold")
-                        .HasColumnType("int")
-                        .HasColumnName("messagethreshold");
+                b.Property<int>("MessageThreshold")
+                    .HasColumnType("int")
+                    .HasColumnName("messagethreshold");
 
-                    b.Property<int>("MuteTime")
-                        .HasColumnType("int")
-                        .HasColumnName("mutetime");
+                b.Property<int>("MuteTime")
+                    .HasColumnType("int")
+                    .HasColumnName("mutetime");
 
-                    b.Property<ulong?>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<string>("ChannelName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("channelname");
+                b.Property<string>("ChannelName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("channelname");
 
-                    b.Property<string>("CommandText")
-                        .HasColumnType("longtext")
-                        .HasColumnName("commandtext");
+                b.Property<string>("CommandText")
+                    .HasColumnType("longtext")
+                    .HasColumnName("commandtext");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong?>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong?>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("GuildName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("guildname");
+                b.Property<string>("GuildName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("guildname");
 
-                    b.Property<int>("Interval")
-                        .HasColumnType("int")
-                        .HasColumnName("interval");
+                b.Property<int>("Interval")
+                    .HasColumnType("int")
+                    .HasColumnName("interval");
 
-                    b.Property<ulong?>("VoiceChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("voicechannelid");
+                b.Property<ulong?>("VoiceChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("voicechannelid");
 
-                    b.Property<string>("VoiceChannelName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("voicechannelname");
+                b.Property<string>("VoiceChannelName")
+                    .HasColumnType("longtext")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<bool>("AutoDelete")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("autodelete");
+                b.Property<bool>("AutoDelete")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodelete");
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("ChannelId")
-                        .HasColumnType("int")
-                        .HasColumnName("channelid");
+                b.Property<int>("ChannelId")
+                    .HasColumnType("int")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Source")
-                        .HasColumnType("longtext")
-                        .HasColumnName("source");
+                b.Property<string>("Source")
+                    .HasColumnType("longtext")
+                    .HasColumnName("source");
 
-                    b.Property<string>("Target")
-                        .HasColumnType("longtext")
-                        .HasColumnName("target");
+                b.Property<string>("Target")
+                    .HasColumnType("longtext")
+                    .HasColumnName("target");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<int?>("PruneDays")
-                        .HasColumnType("int")
-                        .HasColumnName("prunedays");
+                b.Property<int?>("PruneDays")
+                    .HasColumnType("int")
+                    .HasColumnName("prunedays");
 
-                    b.Property<string>("Text")
-                        .HasColumnType("longtext")
-                        .HasColumnName("text");
+                b.Property<string>("Text")
+                    .HasColumnType("longtext")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(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("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("ItemId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("itemid");
+                b.Property<ulong>("ItemId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("itemid");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .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("int")
-                        .HasColumnName("clubid");
+            {
+                b.Property<int>("ClubId")
+                    .HasColumnType("int")
+                    .HasColumnName("clubid");
 
-                    b.Property<int>("UserId")
-                        .HasColumnType("int")
-                        .HasColumnName("userid");
+                b.Property<int>("UserId")
+                    .HasColumnType("int")
+                    .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("int")
-                        .HasColumnName("clubid");
+            {
+                b.Property<int>("ClubId")
+                    .HasColumnType("int")
+                    .HasColumnName("clubid");
 
-                    b.Property<int>("UserId")
-                        .HasColumnType("int")
-                        .HasColumnName("userid");
+                b.Property<int>("UserId")
+                    .HasColumnType("int")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Description")
-                        .HasColumnType("longtext")
-                        .HasColumnName("description");
+                b.Property<string>("Description")
+                    .HasColumnType("longtext")
+                    .HasColumnName("description");
 
-                    b.Property<string>("ImageUrl")
-                        .HasColumnType("longtext")
-                        .HasColumnName("imageurl");
+                b.Property<string>("ImageUrl")
+                    .HasColumnType("longtext")
+                    .HasColumnName("imageurl");
 
-                    b.Property<string>("Name")
-                        .HasMaxLength(20)
-                        .HasColumnType("varchar(20)")
-                        .HasColumnName("name")
-                        .UseCollation("utf8mb4_bin");
+                b.Property<string>("Name")
+                    .HasMaxLength(20)
+                    .HasColumnType("varchar(20)")
+                    .HasColumnName("name")
+                    .UseCollation("utf8mb4_bin");
 
-                    b.Property<int?>("OwnerId")
-                        .HasColumnType("int")
-                        .HasColumnName("ownerid");
+                b.Property<int?>("OwnerId")
+                    .HasColumnType("int")
+                    .HasColumnName("ownerid");
 
-                    b.Property<int>("Xp")
-                        .HasColumnType("int")
-                        .HasColumnName("xp");
+                b.Property<int>("Xp")
+                    .HasColumnType("int")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<string>("Mapping")
-                        .HasColumnType("longtext")
-                        .HasColumnName("mapping");
+                b.Property<string>("Mapping")
+                    .HasColumnType("longtext")
+                    .HasColumnName("mapping");
 
-                    b.Property<string>("Trigger")
-                        .HasColumnType("longtext")
-                        .HasColumnName("trigger");
+                b.Property<string>("Trigger")
+                    .HasColumnType("longtext")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("CommandName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("commandname");
+                b.Property<string>("CommandName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("commandname");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("Seconds")
-                        .HasColumnType("int")
-                        .HasColumnName("seconds");
+                b.Property<int>("Seconds")
+                    .HasColumnType("int")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(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("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Extra")
-                        .IsRequired()
-                        .HasColumnType("longtext")
-                        .HasColumnName("extra");
+                b.Property<string>("Extra")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("extra");
 
-                    b.Property<string>("Note")
-                        .HasColumnType("longtext")
-                        .HasColumnName("note");
+                b.Property<string>("Note")
+                    .HasColumnType("longtext")
+                    .HasColumnName("note");
 
-                    b.Property<ulong?>("OtherId")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("otherid")
-                        .HasDefaultValueSql("NULL");
+                b.Property<ulong?>("OtherId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("otherid")
+                    .HasDefaultValueSql("NULL");
 
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("longtext")
-                        .HasColumnName("type");
+                b.Property<string>("Type")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("type");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<bool>("State")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("state");
+                b.Property<bool>("State")
+                    .HasColumnType("tinyint(1)")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("Command")
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("command");
+                b.Property<string>("Command")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("command");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong?>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong?>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<ulong>("Perm")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("perm");
+                b.Property<ulong>("Perm")
+                    .HasColumnType("bigint unsigned")
+                    .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("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("AvatarId")
-                        .HasColumnType("longtext")
-                        .HasColumnName("avatarid");
+                b.Property<string>("AvatarId")
+                    .HasColumnType("longtext")
+                    .HasColumnName("avatarid");
 
-                    b.Property<int?>("ClubId")
-                        .HasColumnType("int")
-                        .HasColumnName("clubid");
+                b.Property<int?>("ClubId")
+                    .HasColumnType("int")
+                    .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("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Discriminator")
-                        .HasColumnType("longtext")
-                        .HasColumnName("discriminator");
+                b.Property<string>("Discriminator")
+                    .HasColumnType("longtext")
+                    .HasColumnName("discriminator");
 
-                    b.Property<bool>("IsClubAdmin")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(false)
-                        .HasColumnName("isclubadmin");
+                b.Property<bool>("IsClubAdmin")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("tinyint(1)")
+                    .HasDefaultValue(false)
+                    .HasColumnName("isclubadmin");
 
-                    b.Property<int>("NotifyOnLevelUp")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasDefaultValue(0)
-                        .HasColumnName("notifyonlevelup");
+                b.Property<int>("NotifyOnLevelUp")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .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<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.Property<string>("Username")
-                        .HasColumnType("longtext")
-                        .HasColumnName("username");
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .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.ToTable("discorduser", (string)null);
-                });
+                b.ToTable("discorduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("ItemId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("itemid");
+                b.Property<ulong>("ItemId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("itemid");
 
-                    b.Property<int>("ItemType")
-                        .HasColumnType("int")
-                        .HasColumnName("itemtype");
+                b.Property<int>("ItemType")
+                    .HasColumnType("int")
+                    .HasColumnName("itemtype");
 
-                    b.Property<int?>("XpSettingsId")
-                        .HasColumnType("int")
-                        .HasColumnName("xpsettingsid");
+                b.Property<int?>("XpSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("xpsettingsid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_excludeditem");
+                b.HasKey("Id")
+                    .HasName("pk_excludeditem");
 
-                    b.HasIndex("XpSettingsId")
-                        .HasDatabaseName("ix_excludeditem_xpsettingsid");
+                b.HasIndex("XpSettingsId")
+                    .HasDatabaseName("ix_excludeditem_xpsettingsid");
 
-                    b.ToTable("excludeditem", (string)null);
-                });
+                b.ToTable("excludeditem", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FeedSub", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("longtext")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
 
-                    b.Property<string>("Url")
-                        .IsRequired()
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("url");
+                b.Property<string>("Url")
+                    .IsRequired()
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("url");
 
-                    b.HasKey("Id")
-                        .HasName("pk_feedsub");
+                b.HasKey("Id")
+                    .HasName("pk_feedsub");
 
-                    b.HasAlternateKey("GuildConfigId", "Url")
-                        .HasName("ak_feedsub_guildconfigid_url");
+                b.HasAlternateKey("GuildConfigId", "Url")
+                    .HasName("ak_feedsub_guildconfigid_url");
 
-                    b.ToTable("feedsub", (string)null);
-                });
+                b.ToTable("feedsub", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_filterchannelid");
+                b.HasKey("Id")
+                    .HasName("pk_filterchannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filterchannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filterchannelid_guildconfigid");
 
-                    b.ToTable("filterchannelid", (string)null);
-                });
+                b.ToTable("filterchannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_filterlinkschannelid");
+                b.HasKey("Id")
+                    .HasName("pk_filterlinkschannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
 
-                    b.ToTable("filterlinkschannelid", (string)null);
-                });
+                b.ToTable("filterlinkschannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_filterwordschannelid");
+                b.HasKey("Id")
+                    .HasName("pk_filterwordschannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
 
-                    b.ToTable("filterwordschannelid", (string)null);
-                });
+                b.ToTable("filterwordschannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<string>("Word")
-                        .HasColumnType("longtext")
-                        .HasColumnName("word");
+                b.Property<string>("Word")
+                    .HasColumnType("longtext")
+                    .HasColumnName("word");
 
-                    b.HasKey("Id")
-                        .HasName("pk_filteredword");
+                b.HasKey("Id")
+                    .HasName("pk_filteredword");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filteredword_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filteredword_guildconfigid");
 
-                    b.ToTable("filteredword", (string)null);
-                });
+                b.ToTable("filteredword", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("longtext")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
 
-                    b.Property<string>("Username")
-                        .HasColumnType("longtext")
-                        .HasColumnName("username");
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .HasColumnName("username");
 
-                    b.HasKey("Id")
-                        .HasName("pk_followedstream");
+                b.HasKey("Id")
+                    .HasName("pk_followedstream");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_followedstream_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_followedstream_guildconfigid");
 
-                    b.ToTable("followedstream", (string)null);
-                });
+                b.ToTable("followedstream", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_gcchannelid");
+                b.HasKey("Id")
+                    .HasName("pk_gcchannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_gcchannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_gcchannelid_guildconfigid");
 
-                    b.ToTable("gcchannelid", (string)null);
-                });
+                b.ToTable("gcchannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<decimal>("Bet")
-                        .HasColumnType("decimal(65,30)")
-                        .HasColumnName("bet");
+                b.Property<decimal>("Bet")
+                    .HasColumnType("decimal(65,30)")
+                    .HasColumnName("bet");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Feature")
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("feature");
+                b.Property<string>("Feature")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("feature");
 
-                    b.Property<decimal>("PaidOut")
-                        .HasColumnType("decimal(65,30)")
-                        .HasColumnName("paidout");
+                b.Property<decimal>("PaidOut")
+                    .HasColumnType("decimal(65,30)")
+                    .HasColumnName("paidout");
 
-                    b.HasKey("Id")
-                        .HasName("pk_gamblingstats");
+                b.HasKey("Id")
+                    .HasName("pk_gamblingstats");
 
-                    b.HasIndex("Feature")
-                        .IsUnique()
-                        .HasDatabaseName("ix_gamblingstats_feature");
+                b.HasIndex("Feature")
+                    .IsUnique()
+                    .HasDatabaseName("ix_gamblingstats_feature");
 
-                    b.ToTable("gamblingstats", (string)null);
-                });
+                b.ToTable("gamblingstats", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime>("EndsAt")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("endsat");
+                b.Property<DateTime>("EndsAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("endsat");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("longtext")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
 
-                    b.Property<ulong>("MessageId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("messageid");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_giveawaymodel");
+                b.HasKey("Id")
+                    .HasName("pk_giveawaymodel");
 
-                    b.ToTable("giveawaymodel", (string)null);
-                });
+                b.ToTable("giveawaymodel", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("GiveawayId")
-                        .HasColumnType("int")
-                        .HasColumnName("giveawayid");
+                b.Property<int>("GiveawayId")
+                    .HasColumnType("int")
+                    .HasColumnName("giveawayid");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_giveawayuser");
+                b.HasKey("Id")
+                    .HasName("pk_giveawayuser");
 
-                    b.HasIndex("GiveawayId", "UserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
+                b.HasIndex("GiveawayId", "UserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
 
-                    b.ToTable("giveawayuser", (string)null);
-                });
+                b.ToTable("giveawayuser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GroupName", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.Property<int>("Number")
-                        .HasColumnType("int")
-                        .HasColumnName("number");
+                b.Property<int>("Number")
+                    .HasColumnType("int")
+                    .HasColumnName("number");
 
-                    b.HasKey("Id")
-                        .HasName("pk_groupname");
+                b.HasKey("Id")
+                    .HasName("pk_groupname");
 
-                    b.HasIndex("GuildConfigId", "Number")
-                        .IsUnique()
-                        .HasDatabaseName("ix_groupname_guildconfigid_number");
+                b.HasIndex("GuildConfigId", "Number")
+                    .IsUnique()
+                    .HasDatabaseName("ix_groupname_guildconfigid_number");
 
-                    b.ToTable("groupname", (string)null);
-                });
+                b.ToTable("groupname", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("AutoAssignRoleIds")
-                        .HasColumnType("longtext")
-                        .HasColumnName("autoassignroleids");
+                b.Property<string>("AutoAssignRoleIds")
+                    .HasColumnType("longtext")
+                    .HasColumnName("autoassignroleids");
 
-                    b.Property<int>("AutoDeleteByeMessagesTimer")
-                        .HasColumnType("int")
-                        .HasColumnName("autodeletebyemessagestimer");
+                b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodeleteselfassignedrolemessages");
 
-                    b.Property<int>("AutoDeleteGreetMessagesTimer")
-                        .HasColumnType("int")
-                        .HasColumnName("autodeletegreetmessagestimer");
+                b.Property<bool>("CleverbotEnabled")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("cleverbotenabled");
 
-                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("autodeleteselfassignedrolemessages");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("BoostMessage")
-                        .HasColumnType("longtext")
-                        .HasColumnName("boostmessage");
+                b.Property<bool>("DeleteMessageOnCommand")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("deletemessageoncommand");
 
-                    b.Property<ulong>("BoostMessageChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("boostmessagechannelid");
+                b.Property<bool>("DeleteStreamOnlineMessage")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("deletestreamonlinemessage");
 
-                    b.Property<int>("BoostMessageDeleteAfter")
-                        .HasColumnType("int")
-                        .HasColumnName("boostmessagedeleteafter");
+                b.Property<bool>("DisableGlobalExpressions")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("disableglobalexpressions");
 
-                    b.Property<ulong>("ByeMessageChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("byemessagechannelid");
+                b.Property<bool>("ExclusiveSelfAssignedRoles")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("exclusiveselfassignedroles");
 
-                    b.Property<string>("ChannelByeMessageText")
-                        .HasColumnType("longtext")
-                        .HasColumnName("channelbyemessagetext");
+                b.Property<bool>("FilterInvites")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("filterinvites");
 
-                    b.Property<string>("ChannelGreetMessageText")
-                        .HasColumnType("longtext")
-                        .HasColumnName("channelgreetmessagetext");
+                b.Property<bool>("FilterLinks")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("filterlinks");
 
-                    b.Property<bool>("CleverbotEnabled")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("cleverbotenabled");
+                b.Property<bool>("FilterWords")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("filterwords");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<ulong?>("GameVoiceChannel")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("gamevoicechannel");
 
-                    b.Property<bool>("DeleteMessageOnCommand")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("deletemessageoncommand");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<bool>("DeleteStreamOnlineMessage")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("deletestreamonlinemessage");
+                b.Property<string>("Locale")
+                    .HasColumnType("longtext")
+                    .HasColumnName("locale");
 
-                    b.Property<bool>("DisableGlobalExpressions")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("disableglobalexpressions");
+                b.Property<string>("MuteRoleName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("muterolename");
 
-                    b.Property<string>("DmGreetMessageText")
-                        .HasColumnType("longtext")
-                        .HasColumnName("dmgreetmessagetext");
+                b.Property<bool>("NotifyStreamOffline")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("notifystreamoffline");
 
-                    b.Property<bool>("ExclusiveSelfAssignedRoles")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("exclusiveselfassignedroles");
+                b.Property<string>("PermissionRole")
+                    .HasColumnType("longtext")
+                    .HasColumnName("permissionrole");
 
-                    b.Property<bool>("FilterInvites")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("filterinvites");
+                b.Property<string>("Prefix")
+                    .HasColumnType("longtext")
+                    .HasColumnName("prefix");
 
-                    b.Property<bool>("FilterLinks")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("filterlinks");
+                b.Property<bool>("StickyRoles")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("stickyroles");
 
-                    b.Property<bool>("FilterWords")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("filterwords");
+                b.Property<string>("TimeZoneId")
+                    .HasColumnType("longtext")
+                    .HasColumnName("timezoneid");
 
-                    b.Property<ulong?>("GameVoiceChannel")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("gamevoicechannel");
+                b.Property<bool>("VerboseErrors")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("tinyint(1)")
+                    .HasDefaultValue(true)
+                    .HasColumnName("verboseerrors");
 
-                    b.Property<ulong>("GreetMessageChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("greetmessagechannelid");
+                b.Property<bool>("VerbosePermissions")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("verbosepermissions");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<int>("WarnExpireAction")
+                    .HasColumnType("int")
+                    .HasColumnName("warnexpireaction");
 
-                    b.Property<string>("Locale")
-                        .HasColumnType("longtext")
-                        .HasColumnName("locale");
+                b.Property<int>("WarnExpireHours")
+                    .HasColumnType("int")
+                    .HasColumnName("warnexpirehours");
 
-                    b.Property<string>("MuteRoleName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("muterolename");
+                b.Property<bool>("WarningsInitialized")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("warningsinitialized");
 
-                    b.Property<bool>("NotifyStreamOffline")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("notifystreamoffline");
+                b.HasKey("Id")
+                    .HasName("pk_guildconfigs");
 
-                    b.Property<string>("PermissionRole")
-                        .HasColumnType("longtext")
-                        .HasColumnName("permissionrole");
+                b.HasIndex("GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_guildconfigs_guildid");
 
-                    b.Property<string>("Prefix")
-                        .HasColumnType("longtext")
-                        .HasColumnName("prefix");
+                b.HasIndex("WarnExpireHours")
+                    .HasDatabaseName("ix_guildconfigs_warnexpirehours");
 
-                    b.Property<bool>("SendBoostMessage")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("sendboostmessage");
-
-                    b.Property<bool>("SendChannelByeMessage")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("sendchannelbyemessage");
-
-                    b.Property<bool>("SendChannelGreetMessage")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("sendchannelgreetmessage");
-
-                    b.Property<bool>("SendDmGreetMessage")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("senddmgreetmessage");
-
-                    b.Property<bool>("StickyRoles")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("stickyroles");
-
-                    b.Property<string>("TimeZoneId")
-                        .HasColumnType("longtext")
-                        .HasColumnName("timezoneid");
-
-                    b.Property<bool>("VerboseErrors")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("tinyint(1)")
-                        .HasDefaultValue(true)
-                        .HasColumnName("verboseerrors");
-
-                    b.Property<bool>("VerbosePermissions")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("verbosepermissions");
-
-                    b.Property<int>("WarnExpireAction")
-                        .HasColumnType("int")
-                        .HasColumnName("warnexpireaction");
-
-                    b.Property<int>("WarnExpireHours")
-                        .HasColumnType("int")
-                        .HasColumnName("warnexpirehours");
-
-                    b.Property<bool>("WarningsInitialized")
-                        .HasColumnType("tinyint(1)")
-                        .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);
-                });
+                b.ToTable("guildconfigs", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
-                {
-                    b.Property<ulong>("GuildId")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+            {
+                b.Property<ulong>("GuildId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<ulong>("GuildId"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<ulong>("GuildId"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.HasKey("GuildId")
-                        .HasName("pk_honeypotchannels");
+                b.HasKey("GuildId")
+                    .HasName("pk_honeypotchannels");
 
-                    b.ToTable("honeypotchannels", (string)null);
-                });
+                b.ToTable("honeypotchannels", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("ItemType")
-                        .HasColumnType("int")
-                        .HasColumnName("itemtype");
+                b.Property<int>("ItemType")
+                    .HasColumnType("int")
+                    .HasColumnName("itemtype");
 
-                    b.Property<ulong>("LogItemId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("logitemid");
+                b.Property<ulong>("LogItemId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logitemid");
 
-                    b.Property<int>("LogSettingId")
-                        .HasColumnType("int")
-                        .HasColumnName("logsettingid");
+                b.Property<int>("LogSettingId")
+                    .HasColumnType("int")
+                    .HasColumnName("logsettingid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_ignoredlogchannels");
+                b.HasKey("Id")
+                    .HasName("pk_ignoredlogchannels");
 
-                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
-                        .IsUnique()
-                        .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
+                b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                    .IsUnique()
+                    .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
 
-                    b.ToTable("ignoredlogchannels", (string)null);
-                });
+                b.ToTable("ignoredlogchannels", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_imageonlychannels");
+                b.HasKey("Id")
+                    .HasName("pk_imageonlychannels");
 
-                    b.HasIndex("ChannelId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_imageonlychannels_channelid");
+                b.HasIndex("ChannelId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_imageonlychannels_channelid");
 
-                    b.ToTable("imageonlychannels", (string)null);
-                });
+                b.ToTable("imageonlychannels", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong?>("ChannelCreatedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelcreatedid");
+                b.Property<ulong?>("ChannelCreatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelcreatedid");
 
-                    b.Property<ulong?>("ChannelDestroyedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channeldestroyedid");
+                b.Property<ulong?>("ChannelDestroyedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channeldestroyedid");
 
-                    b.Property<ulong?>("ChannelUpdatedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelupdatedid");
+                b.Property<ulong?>("ChannelUpdatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelupdatedid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<ulong?>("LogOtherId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("logotherid");
+                b.Property<ulong?>("LogOtherId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logotherid");
 
-                    b.Property<ulong?>("LogUserPresenceId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("loguserpresenceid");
+                b.Property<ulong?>("LogUserPresenceId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("loguserpresenceid");
 
-                    b.Property<ulong?>("LogVoicePresenceId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("logvoicepresenceid");
+                b.Property<ulong?>("LogVoicePresenceId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logvoicepresenceid");
 
-                    b.Property<ulong?>("LogVoicePresenceTTSId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("logvoicepresencettsid");
+                b.Property<ulong?>("LogVoicePresenceTTSId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logvoicepresencettsid");
 
-                    b.Property<ulong?>("LogWarnsId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("logwarnsid");
+                b.Property<ulong?>("LogWarnsId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("logwarnsid");
 
-                    b.Property<ulong?>("MessageDeletedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("messagedeletedid");
+                b.Property<ulong?>("MessageDeletedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messagedeletedid");
 
-                    b.Property<ulong?>("MessageUpdatedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("messageupdatedid");
+                b.Property<ulong?>("MessageUpdatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageupdatedid");
 
-                    b.Property<ulong?>("ThreadCreatedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("threadcreatedid");
+                b.Property<ulong?>("ThreadCreatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("threadcreatedid");
 
-                    b.Property<ulong?>("ThreadDeletedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("threaddeletedid");
+                b.Property<ulong?>("ThreadDeletedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("threaddeletedid");
 
-                    b.Property<ulong?>("UserBannedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userbannedid");
+                b.Property<ulong?>("UserBannedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userbannedid");
 
-                    b.Property<ulong?>("UserJoinedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userjoinedid");
+                b.Property<ulong?>("UserJoinedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userjoinedid");
 
-                    b.Property<ulong?>("UserLeftId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userleftid");
+                b.Property<ulong?>("UserLeftId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userleftid");
 
-                    b.Property<ulong?>("UserMutedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("usermutedid");
+                b.Property<ulong?>("UserMutedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("usermutedid");
 
-                    b.Property<ulong?>("UserUnbannedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userunbannedid");
+                b.Property<ulong?>("UserUnbannedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userunbannedid");
 
-                    b.Property<ulong?>("UserUpdatedId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userupdatedid");
+                b.Property<ulong?>("UserUpdatedId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userupdatedid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_logsettings");
+                b.HasKey("Id")
+                    .HasName("pk_logsettings");
 
-                    b.HasIndex("GuildId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_logsettings_guildid");
+                b.HasIndex("GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_logsettings_guildid");
 
-                    b.ToTable("logsettings", (string)null);
-                });
+                b.ToTable("logsettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<bool>("AutoDisconnect")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("autodisconnect");
+                b.Property<bool>("AutoDisconnect")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodisconnect");
 
-                    b.Property<bool>("AutoPlay")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("autoplay");
+                b.Property<bool>("AutoPlay")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autoplay");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<ulong?>("MusicChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("musicchannelid");
+                b.Property<ulong?>("MusicChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("musicchannelid");
 
-                    b.Property<int>("PlayerRepeat")
-                        .HasColumnType("int")
-                        .HasColumnName("playerrepeat");
+                b.Property<int>("PlayerRepeat")
+                    .HasColumnType("int")
+                    .HasColumnName("playerrepeat");
 
-                    b.Property<int>("QualityPreset")
-                        .HasColumnType("int")
-                        .HasColumnName("qualitypreset");
+                b.Property<int>("QualityPreset")
+                    .HasColumnType("int")
+                    .HasColumnName("qualitypreset");
 
-                    b.Property<int>("Volume")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasDefaultValue(100)
-                        .HasColumnName("volume");
+                b.Property<int>("Volume")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasDefaultValue(100)
+                    .HasColumnName("volume");
 
-                    b.HasKey("Id")
-                        .HasName("pk_musicplayersettings");
+                b.HasKey("Id")
+                    .HasName("pk_musicplayersettings");
 
-                    b.HasIndex("GuildId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_musicplayersettings_guildid");
+                b.HasIndex("GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_musicplayersettings_guildid");
 
-                    b.ToTable("musicplayersettings", (string)null);
-                });
+                b.ToTable("musicplayersettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<string>("Author")
-                        .HasColumnType("longtext")
-                        .HasColumnName("author");
+                b.Property<string>("Author")
+                    .HasColumnType("longtext")
+                    .HasColumnName("author");
 
-                    b.Property<ulong>("AuthorId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("authorid");
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("authorid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.HasKey("Id")
-                        .HasName("pk_musicplaylists");
+                b.HasKey("Id")
+                    .HasName("pk_musicplaylists");
 
-                    b.ToTable("musicplaylists", (string)null);
-                });
+                b.ToTable("musicplaylists", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_muteduserid");
+                b.HasKey("Id")
+                    .HasName("pk_muteduserid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_muteduserid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_muteduserid_guildconfigid");
 
-                    b.ToTable("muteduserid", (string)null);
-                });
+                b.ToTable("muteduserid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.EllieExpression", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<bool>("AllowTarget")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("allowtarget");
+                b.Property<bool>("AllowTarget")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("allowtarget");
 
-                    b.Property<bool>("AutoDeleteTrigger")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("autodeletetrigger");
+                b.Property<bool>("AutoDeleteTrigger")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("autodeletetrigger");
 
-                    b.Property<bool>("ContainsAnywhere")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("containsanywhere");
+                b.Property<bool>("ContainsAnywhere")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("containsanywhere");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<bool>("DmResponse")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("dmresponse");
+                b.Property<bool>("DmResponse")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("dmresponse");
 
-                    b.Property<ulong?>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong?>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Reactions")
-                        .HasColumnType("longtext")
-                        .HasColumnName("reactions");
+                b.Property<string>("Reactions")
+                    .HasColumnType("longtext")
+                    .HasColumnName("reactions");
 
-                    b.Property<string>("Response")
-                        .HasColumnType("longtext")
-                        .HasColumnName("response");
+                b.Property<string>("Response")
+                    .HasColumnType("longtext")
+                    .HasColumnName("response");
 
-                    b.Property<string>("Trigger")
-                        .HasColumnType("longtext")
-                        .HasColumnName("trigger");
+                b.Property<string>("Trigger")
+                    .HasColumnType("longtext")
+                    .HasColumnName("trigger");
 
-                    b.HasKey("Id")
-                        .HasName("pk_expressions");
+                b.HasKey("Id")
+                    .HasName("pk_expressions");
 
-                    b.ToTable("expressions", (string)null);
-                });
+                b.ToTable("expressions", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
-                {
-                    b.Property<ulong>("UserId")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+            {
+                b.Property<ulong>("UserId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<ulong>("UserId"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<ulong>("UserId"));
 
-                    b.Property<int>("AmountCents")
-                        .HasColumnType("int")
-                        .HasColumnName("amountcents");
+                b.Property<int>("AmountCents")
+                    .HasColumnType("int")
+                    .HasColumnName("amountcents");
 
-                    b.Property<DateTime>("LastCharge")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("lastcharge");
+                b.Property<DateTime>("LastCharge")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("lastcharge");
 
-                    b.Property<string>("UniquePlatformUserId")
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("uniqueplatformuserid");
+                b.Property<string>("UniquePlatformUserId")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("uniqueplatformuserid");
 
-                    b.Property<DateTime>("ValidThru")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("validthru");
+                b.Property<DateTime>("ValidThru")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("validthru");
 
-                    b.HasKey("UserId")
-                        .HasName("pk_patrons");
+                b.HasKey("UserId")
+                    .HasName("pk_patrons");
 
-                    b.HasIndex("UniquePlatformUserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_patrons_uniqueplatformuserid");
+                b.HasIndex("UniquePlatformUserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_patrons_uniqueplatformuserid");
 
-                    b.ToTable("patrons", (string)null);
-                });
+                b.ToTable("patrons", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("Index")
-                        .HasColumnType("int")
-                        .HasColumnName("index");
+                b.Property<int>("Index")
+                    .HasColumnType("int")
+                    .HasColumnName("index");
 
-                    b.Property<bool>("IsCustomCommand")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("iscustomcommand");
+                b.Property<bool>("IsCustomCommand")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("iscustomcommand");
 
-                    b.Property<int>("PrimaryTarget")
-                        .HasColumnType("int")
-                        .HasColumnName("primarytarget");
+                b.Property<int>("PrimaryTarget")
+                    .HasColumnType("int")
+                    .HasColumnName("primarytarget");
 
-                    b.Property<ulong>("PrimaryTargetId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("primarytargetid");
+                b.Property<ulong>("PrimaryTargetId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("primarytargetid");
 
-                    b.Property<int>("SecondaryTarget")
-                        .HasColumnType("int")
-                        .HasColumnName("secondarytarget");
+                b.Property<int>("SecondaryTarget")
+                    .HasColumnType("int")
+                    .HasColumnName("secondarytarget");
 
-                    b.Property<string>("SecondaryTargetName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("secondarytargetname");
+                b.Property<string>("SecondaryTargetName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("secondarytargetname");
 
-                    b.Property<bool>("State")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("state");
+                b.Property<bool>("State")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("state");
 
-                    b.HasKey("Id")
-                        .HasName("pk_permissions");
+                b.HasKey("Id")
+                    .HasName("pk_permissions");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_permissions_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_permissions_guildconfigid");
 
-                    b.ToTable("permissions", (string)null);
-                });
+                b.ToTable("permissions", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<long>("Amount")
-                        .HasColumnType("bigint")
-                        .HasColumnName("amount");
+                b.Property<long>("Amount")
+                    .HasColumnType("bigint")
+                    .HasColumnName("amount");
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<ulong>("MessageId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("messageid");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
 
-                    b.Property<string>("Password")
-                        .HasColumnType("longtext")
-                        .HasColumnName("password");
+                b.Property<string>("Password")
+                    .HasColumnType("longtext")
+                    .HasColumnName("password");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_plantedcurrency");
+                b.HasKey("Id")
+                    .HasName("pk_plantedcurrency");
 
-                    b.HasIndex("ChannelId")
-                        .HasDatabaseName("ix_plantedcurrency_channelid");
+                b.HasIndex("ChannelId")
+                    .HasDatabaseName("ix_plantedcurrency_channelid");
 
-                    b.HasIndex("MessageId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_plantedcurrency_messageid");
+                b.HasIndex("MessageId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_plantedcurrency_messageid");
 
-                    b.ToTable("plantedcurrency", (string)null);
-                });
+                b.ToTable("plantedcurrency", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("MusicPlaylistId")
-                        .HasColumnType("int")
-                        .HasColumnName("musicplaylistid");
+                b.Property<int?>("MusicPlaylistId")
+                    .HasColumnType("int")
+                    .HasColumnName("musicplaylistid");
 
-                    b.Property<string>("Provider")
-                        .HasColumnType("longtext")
-                        .HasColumnName("provider");
+                b.Property<string>("Provider")
+                    .HasColumnType("longtext")
+                    .HasColumnName("provider");
 
-                    b.Property<int>("ProviderType")
-                        .HasColumnType("int")
-                        .HasColumnName("providertype");
+                b.Property<int>("ProviderType")
+                    .HasColumnType("int")
+                    .HasColumnName("providertype");
 
-                    b.Property<string>("Query")
-                        .HasColumnType("longtext")
-                        .HasColumnName("query");
+                b.Property<string>("Query")
+                    .HasColumnType("longtext")
+                    .HasColumnName("query");
 
-                    b.Property<string>("Title")
-                        .HasColumnType("longtext")
-                        .HasColumnName("title");
+                b.Property<string>("Title")
+                    .HasColumnType("longtext")
+                    .HasColumnName("title");
 
-                    b.Property<string>("Uri")
-                        .HasColumnType("longtext")
-                        .HasColumnName("uri");
+                b.Property<string>("Uri")
+                    .HasColumnType("longtext")
+                    .HasColumnName("uri");
 
-                    b.HasKey("Id")
-                        .HasName("pk_playlistsong");
+                b.HasKey("Id")
+                    .HasName("pk_playlistsong");
 
-                    b.HasIndex("MusicPlaylistId")
-                        .HasDatabaseName("ix_playlistsong_musicplaylistid");
+                b.HasIndex("MusicPlaylistId")
+                    .HasDatabaseName("ix_playlistsong_musicplaylistid");
 
-                    b.ToTable("playlistsong", (string)null);
-                });
+                b.ToTable("playlistsong", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("AuthorId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("authorid");
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("authorid");
 
-                    b.Property<string>("AuthorName")
-                        .IsRequired()
-                        .HasColumnType("longtext")
-                        .HasColumnName("authorname");
+                b.Property<string>("AuthorName")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("authorname");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Keyword")
-                        .IsRequired()
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("keyword");
+                b.Property<string>("Keyword")
+                    .IsRequired()
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("keyword");
 
-                    b.Property<string>("Text")
-                        .IsRequired()
-                        .HasColumnType("longtext")
-                        .HasColumnName("text");
+                b.Property<string>("Text")
+                    .IsRequired()
+                    .HasColumnType("longtext")
+                    .HasColumnName("text");
 
-                    b.HasKey("Id")
-                        .HasName("pk_quotes");
+                b.HasKey("Id")
+                    .HasName("pk_quotes");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_quotes_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_quotes_guildid");
 
-                    b.HasIndex("Keyword")
-                        .HasDatabaseName("ix_quotes_keyword");
+                b.HasIndex("Keyword")
+                    .HasDatabaseName("ix_quotes_keyword");
 
-                    b.ToTable("quotes", (string)null);
-                });
+                b.ToTable("quotes", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Emote")
-                        .HasMaxLength(100)
-                        .HasColumnType("varchar(100)")
-                        .HasColumnName("emote");
+                b.Property<string>("Emote")
+                    .HasMaxLength(100)
+                    .HasColumnType("varchar(100)")
+                    .HasColumnName("emote");
 
-                    b.Property<int>("Group")
-                        .HasColumnType("int")
-                        .HasColumnName("group");
+                b.Property<int>("Group")
+                    .HasColumnType("int")
+                    .HasColumnName("group");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<int>("LevelReq")
-                        .HasColumnType("int")
-                        .HasColumnName("levelreq");
+                b.Property<int>("LevelReq")
+                    .HasColumnType("int")
+                    .HasColumnName("levelreq");
 
-                    b.Property<ulong>("MessageId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("messageid");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_reactionroles");
+                b.HasKey("Id")
+                    .HasName("pk_reactionroles");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_reactionroles_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_reactionroles_guildid");
 
-                    b.HasIndex("MessageId", "Emote")
-                        .IsUnique()
-                        .HasDatabaseName("ix_reactionroles_messageid_emote");
+                b.HasIndex("MessageId", "Emote")
+                    .IsUnique()
+                    .HasDatabaseName("ix_reactionroles_messageid_emote");
 
-                    b.ToTable("reactionroles", (string)null);
-                });
+                b.ToTable("reactionroles", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Reminder", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<bool>("IsPrivate")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("isprivate");
+                b.Property<bool>("IsPrivate")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isprivate");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("longtext")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
 
-                    b.Property<ulong>("ServerId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("serverid");
+                b.Property<ulong>("ServerId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("serverid");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.Property<DateTime>("When")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("when");
+                b.Property<DateTime>("When")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("when");
 
-                    b.HasKey("Id")
-                        .HasName("pk_reminders");
+                b.HasKey("Id")
+                    .HasName("pk_reminders");
 
-                    b.HasIndex("When")
-                        .HasDatabaseName("ix_reminders_when");
+                b.HasIndex("When")
+                    .HasDatabaseName("ix_reminders_when");
 
-                    b.ToTable("reminders", (string)null);
-                });
+                b.ToTable("reminders", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Repeater", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<TimeSpan>("Interval")
-                        .HasColumnType("time(6)")
-                        .HasColumnName("interval");
+                b.Property<TimeSpan>("Interval")
+                    .HasColumnType("time(6)")
+                    .HasColumnName("interval");
 
-                    b.Property<ulong?>("LastMessageId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("lastmessageid");
+                b.Property<ulong?>("LastMessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("lastmessageid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("longtext")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("longtext")
+                    .HasColumnName("message");
 
-                    b.Property<bool>("NoRedundant")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("noredundant");
+                b.Property<bool>("NoRedundant")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("noredundant");
 
-                    b.Property<TimeSpan?>("StartTimeOfDay")
-                        .HasColumnType("time(6)")
-                        .HasColumnName("starttimeofday");
+                b.Property<TimeSpan?>("StartTimeOfDay")
+                    .HasColumnType("time(6)")
+                    .HasColumnName("starttimeofday");
 
-                    b.HasKey("Id")
-                        .HasName("pk_repeaters");
+                b.HasKey("Id")
+                    .HasName("pk_repeaters");
 
-                    b.ToTable("repeaters", (string)null);
-                });
+                b.ToTable("repeaters", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<long>("AmountRewardedThisMonth")
-                        .HasColumnType("bigint")
-                        .HasColumnName("amountrewardedthismonth");
+                b.Property<long>("AmountRewardedThisMonth")
+                    .HasColumnType("bigint")
+                    .HasColumnName("amountrewardedthismonth");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<DateTime>("LastReward")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("lastreward");
+                b.Property<DateTime>("LastReward")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("lastreward");
 
-                    b.Property<string>("PlatformUserId")
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("platformuserid");
+                b.Property<string>("PlatformUserId")
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("platformuserid");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_rewardedusers");
+                b.HasKey("Id")
+                    .HasName("pk_rewardedusers");
 
-                    b.HasIndex("PlatformUserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_rewardedusers_platformuserid");
+                b.HasIndex("PlatformUserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_rewardedusers_platformuserid");
 
-                    b.ToTable("rewardedusers", (string)null);
-                });
+                b.ToTable("rewardedusers", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("Status")
-                        .HasColumnType("longtext")
-                        .HasColumnName("status");
+                b.Property<string>("Status")
+                    .HasColumnType("longtext")
+                    .HasColumnName("status");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_rotatingstatus");
+                b.HasKey("Id")
+                    .HasName("pk_rotatingstatus");
 
-                    b.ToTable("rotatingstatus", (string)null);
-                });
+                b.ToTable("rotatingstatus", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("Group")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasDefaultValue(0)
-                        .HasColumnName("group");
+                b.Property<int>("Group")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasDefaultValue(0)
+                    .HasColumnName("group");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<int>("LevelRequirement")
-                        .HasColumnType("int")
-                        .HasColumnName("levelrequirement");
+                b.Property<int>("LevelRequirement")
+                    .HasColumnType("int")
+                    .HasColumnName("levelrequirement");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_selfassignableroles");
+                b.HasKey("Id")
+                    .HasName("pk_selfassignableroles");
 
-                    b.HasIndex("GuildId", "RoleId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
+                b.HasIndex("GuildId", "RoleId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
 
-                    b.ToTable("selfassignableroles", (string)null);
-                });
+                b.ToTable("selfassignableroles", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("AuthorId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("authorid");
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("authorid");
 
-                    b.Property<string>("Command")
-                        .HasColumnType("longtext")
-                        .HasColumnName("command");
+                b.Property<string>("Command")
+                    .HasColumnType("longtext")
+                    .HasColumnName("command");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("Index")
-                        .HasColumnType("int")
-                        .HasColumnName("index");
+                b.Property<int>("Index")
+                    .HasColumnType("int")
+                    .HasColumnName("index");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.Property<int>("Price")
-                        .HasColumnType("int")
-                        .HasColumnName("price");
+                b.Property<int>("Price")
+                    .HasColumnType("int")
+                    .HasColumnName("price");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.Property<string>("RoleName")
-                        .HasColumnType("longtext")
-                        .HasColumnName("rolename");
+                b.Property<string>("RoleName")
+                    .HasColumnType("longtext")
+                    .HasColumnName("rolename");
 
-                    b.Property<ulong?>("RoleRequirement")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("rolerequirement");
+                b.Property<ulong?>("RoleRequirement")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("rolerequirement");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_shopentry");
+                b.HasKey("Id")
+                    .HasName("pk_shopentry");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_shopentry_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_shopentry_guildconfigid");
 
-                    b.ToTable("shopentry", (string)null);
-                });
+                b.ToTable("shopentry", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("ShopEntryId")
-                        .HasColumnType("int")
-                        .HasColumnName("shopentryid");
+                b.Property<int?>("ShopEntryId")
+                    .HasColumnType("int")
+                    .HasColumnName("shopentryid");
 
-                    b.Property<string>("Text")
-                        .HasColumnType("longtext")
-                        .HasColumnName("text");
+                b.Property<string>("Text")
+                    .HasColumnType("longtext")
+                    .HasColumnName("text");
 
-                    b.HasKey("Id")
-                        .HasName("pk_shopentryitem");
+                b.HasKey("Id")
+                    .HasName("pk_shopentryitem");
 
-                    b.HasIndex("ShopEntryId")
-                        .HasDatabaseName("ix_shopentryitem_shopentryid");
+                b.HasIndex("ShopEntryId")
+                    .HasDatabaseName("ix_shopentryitem_shopentryid");
 
-                    b.ToTable("shopentryitem", (string)null);
-                });
+                b.ToTable("shopentryitem", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_slowmodeignoredrole");
+                b.HasKey("Id")
+                    .HasName("pk_slowmodeignoredrole");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
 
-                    b.ToTable("slowmodeignoredrole", (string)null);
-                });
+                b.ToTable("slowmodeignoredrole", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_slowmodeignoreduser");
+                b.HasKey("Id")
+                    .HasName("pk_slowmodeignoreduser");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
 
-                    b.ToTable("slowmodeignoreduser", (string)null);
-                });
+                b.ToTable("slowmodeignoreduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StickyRole", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("RoleIds")
-                        .HasColumnType("longtext")
-                        .HasColumnName("roleids");
+                b.Property<string>("RoleIds")
+                    .HasColumnType("longtext")
+                    .HasColumnName("roleids");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_stickyroles");
+                b.HasKey("Id")
+                    .HasName("pk_stickyroles");
 
-                    b.HasIndex("GuildId", "UserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_stickyroles_guildid_userid");
+                b.HasIndex("GuildId", "UserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_stickyroles_guildid_userid");
 
-                    b.ToTable("stickyroles", (string)null);
-                });
+                b.ToTable("stickyroles", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("channelid");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("MessageId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("messageid");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("messageid");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("int")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("int")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_streamonlinemessages");
+                b.HasKey("Id")
+                    .HasName("pk_streamonlinemessages");
 
-                    b.ToTable("streamonlinemessages", (string)null);
-                });
+                b.ToTable("streamonlinemessages", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("StreamRoleSettingsId")
-                        .HasColumnType("int")
-                        .HasColumnName("streamrolesettingsid");
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("streamrolesettingsid");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.Property<string>("Username")
-                        .HasColumnType("longtext")
-                        .HasColumnName("username");
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .HasColumnName("username");
 
-                    b.HasKey("Id")
-                        .HasName("pk_streamroleblacklisteduser");
+                b.HasKey("Id")
+                    .HasName("pk_streamroleblacklisteduser");
 
-                    b.HasIndex("StreamRoleSettingsId")
-                        .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
+                b.HasIndex("StreamRoleSettingsId")
+                    .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
 
-                    b.ToTable("streamroleblacklisteduser", (string)null);
-                });
+                b.ToTable("streamroleblacklisteduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<ulong>("AddRoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("addroleid");
+                b.Property<ulong>("AddRoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("addroleid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<bool>("Enabled")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("enabled");
+                b.Property<bool>("Enabled")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("enabled");
 
-                    b.Property<ulong>("FromRoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("fromroleid");
+                b.Property<ulong>("FromRoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("fromroleid");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<string>("Keyword")
-                        .HasColumnType("longtext")
-                        .HasColumnName("keyword");
+                b.Property<string>("Keyword")
+                    .HasColumnType("longtext")
+                    .HasColumnName("keyword");
 
-                    b.HasKey("Id")
-                        .HasName("pk_streamrolesettings");
+                b.HasKey("Id")
+                    .HasName("pk_streamrolesettings");
 
-                    b.HasIndex("GuildConfigId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_streamrolesettings_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_streamrolesettings_guildconfigid");
 
-                    b.ToTable("streamrolesettings", (string)null);
-                });
+                b.ToTable("streamrolesettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("StreamRoleSettingsId")
-                        .HasColumnType("int")
-                        .HasColumnName("streamrolesettingsid");
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("streamrolesettingsid");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.Property<string>("Username")
-                        .HasColumnType("longtext")
-                        .HasColumnName("username");
+                b.Property<string>("Username")
+                    .HasColumnType("longtext")
+                    .HasColumnName("username");
 
-                    b.HasKey("Id")
-                        .HasName("pk_streamrolewhitelisteduser");
+                b.HasKey("Id")
+                    .HasName("pk_streamrolewhitelisteduser");
 
-                    b.HasIndex("StreamRoleSettingsId")
-                        .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
+                b.HasIndex("StreamRoleSettingsId")
+                    .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
 
-                    b.ToTable("streamrolewhitelisteduser", (string)null);
-                });
+                b.ToTable("streamrolewhitelisteduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int?>("ArchiveId")
-                        .HasColumnType("int")
-                        .HasColumnName("archiveid");
+                b.Property<int?>("ArchiveId")
+                    .HasColumnType("int")
+                    .HasColumnName("archiveid");
 
-                    b.Property<DateTime>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<bool>("IsDone")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("isdone");
+                b.Property<bool>("IsDone")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isdone");
 
-                    b.Property<string>("Todo")
-                        .HasColumnType("longtext")
-                        .HasColumnName("todo");
+                b.Property<string>("Todo")
+                    .HasColumnType("longtext")
+                    .HasColumnName("todo");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_todos");
+                b.HasKey("Id")
+                    .HasName("pk_todos");
 
-                    b.HasIndex("ArchiveId")
-                        .HasDatabaseName("ix_todos_archiveid");
+                b.HasIndex("ArchiveId")
+                    .HasDatabaseName("ix_todos_archiveid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_todos_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_todos_userid");
 
-                    b.ToTable("todos", (string)null);
-                });
+                b.ToTable("todos", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<DateTime>("UnbanAt")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("unbanat");
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("unbanat");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_unbantimer");
+                b.HasKey("Id")
+                    .HasName("pk_unbantimer");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_unbantimer_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_unbantimer_guildconfigid");
 
-                    b.ToTable("unbantimer", (string)null);
-                });
+                b.ToTable("unbantimer", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<DateTime>("UnmuteAt")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("unmuteat");
+                b.Property<DateTime>("UnmuteAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("unmuteat");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_unmutetimer");
+                b.HasKey("Id")
+                    .HasName("pk_unmutetimer");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_unmutetimer_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_unmutetimer_guildconfigid");
 
-                    b.ToTable("unmutetimer", (string)null);
-                });
+                b.ToTable("unmutetimer", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.Property<DateTime>("UnbanAt")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("unbanat");
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("unbanat");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_unroletimer");
+                b.HasKey("Id")
+                    .HasName("pk_unroletimer");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_unroletimer_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_unroletimer_guildconfigid");
 
-                    b.ToTable("unroletimer", (string)null);
-                });
+                b.ToTable("unroletimer", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<long>("AwardedXp")
-                        .HasColumnType("bigint")
-                        .HasColumnName("awardedxp");
+                b.Property<long>("AwardedXp")
+                    .HasColumnType("bigint")
+                    .HasColumnName("awardedxp");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<int>("NotifyOnLevelUp")
-                        .HasColumnType("int")
-                        .HasColumnName("notifyonlevelup");
+                b.Property<int>("NotifyOnLevelUp")
+                    .HasColumnType("int")
+                    .HasColumnName("notifyonlevelup");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.Property<long>("Xp")
-                        .HasColumnType("bigint")
-                        .HasColumnName("xp");
+                b.Property<long>("Xp")
+                    .HasColumnType("bigint")
+                    .HasColumnName("xp");
 
-                    b.HasKey("Id")
-                        .HasName("pk_userxpstats");
+                b.HasKey("Id")
+                    .HasName("pk_userxpstats");
 
-                    b.HasIndex("AwardedXp")
-                        .HasDatabaseName("ix_userxpstats_awardedxp");
+                b.HasIndex("AwardedXp")
+                    .HasDatabaseName("ix_userxpstats_awardedxp");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_userxpstats_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_userxpstats_guildid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_userxpstats_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_userxpstats_userid");
 
-                    b.HasIndex("Xp")
-                        .HasDatabaseName("ix_userxpstats_xp");
+                b.HasIndex("Xp")
+                    .HasDatabaseName("ix_userxpstats_xp");
 
-                    b.HasIndex("UserId", "GuildId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_userxpstats_userid_guildid");
+                b.HasIndex("UserId", "GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_userxpstats_userid_guildid");
 
-                    b.ToTable("userxpstats", (string)null);
-                });
+                b.ToTable("userxpstats", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.Property<ulong>("VoiceChannelId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("voicechannelid");
+                b.Property<ulong>("VoiceChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("voicechannelid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_vcroleinfo");
+                b.HasKey("Id")
+                    .HasName("pk_vcroleinfo");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_vcroleinfo_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_vcroleinfo_guildconfigid");
 
-                    b.ToTable("vcroleinfo", (string)null);
-                });
+                b.ToTable("vcroleinfo", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int?>("AffinityId")
-                        .HasColumnType("int")
-                        .HasColumnName("affinityid");
+                b.Property<int?>("AffinityId")
+                    .HasColumnType("int")
+                    .HasColumnName("affinityid");
 
-                    b.Property<int?>("ClaimerId")
-                        .HasColumnType("int")
-                        .HasColumnName("claimerid");
+                b.Property<int?>("ClaimerId")
+                    .HasColumnType("int")
+                    .HasColumnName("claimerid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<long>("Price")
-                        .HasColumnType("bigint")
-                        .HasColumnName("price");
+                b.Property<long>("Price")
+                    .HasColumnType("bigint")
+                    .HasColumnName("price");
 
-                    b.Property<int>("WaifuId")
-                        .HasColumnType("int")
-                        .HasColumnName("waifuid");
+                b.Property<int>("WaifuId")
+                    .HasColumnType("int")
+                    .HasColumnName("waifuid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_waifuinfo");
+                b.HasKey("Id")
+                    .HasName("pk_waifuinfo");
 
-                    b.HasIndex("AffinityId")
-                        .HasDatabaseName("ix_waifuinfo_affinityid");
+                b.HasIndex("AffinityId")
+                    .HasDatabaseName("ix_waifuinfo_affinityid");
 
-                    b.HasIndex("ClaimerId")
-                        .HasDatabaseName("ix_waifuinfo_claimerid");
+                b.HasIndex("ClaimerId")
+                    .HasDatabaseName("ix_waifuinfo_claimerid");
 
-                    b.HasIndex("Price")
-                        .HasDatabaseName("ix_waifuinfo_price");
+                b.HasIndex("Price")
+                    .HasDatabaseName("ix_waifuinfo_price");
 
-                    b.HasIndex("WaifuId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_waifuinfo_waifuid");
+                b.HasIndex("WaifuId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_waifuinfo_waifuid");
 
-                    b.ToTable("waifuinfo", (string)null);
-                });
+                b.ToTable("waifuinfo", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("ItemEmoji")
-                        .HasColumnType("longtext")
-                        .HasColumnName("itememoji");
+                b.Property<string>("ItemEmoji")
+                    .HasColumnType("longtext")
+                    .HasColumnName("itememoji");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("longtext")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("longtext")
+                    .HasColumnName("name");
 
-                    b.Property<int?>("WaifuInfoId")
-                        .HasColumnType("int")
-                        .HasColumnName("waifuinfoid");
+                b.Property<int?>("WaifuInfoId")
+                    .HasColumnType("int")
+                    .HasColumnName("waifuinfoid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_waifuitem");
+                b.HasKey("Id")
+                    .HasName("pk_waifuitem");
 
-                    b.HasIndex("WaifuInfoId")
-                        .HasDatabaseName("ix_waifuitem_waifuinfoid");
+                b.HasIndex("WaifuInfoId")
+                    .HasDatabaseName("ix_waifuitem_waifuinfoid");
 
-                    b.ToTable("waifuitem", (string)null);
-                });
+                b.ToTable("waifuitem", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("NewId")
-                        .HasColumnType("int")
-                        .HasColumnName("newid");
+                b.Property<int?>("NewId")
+                    .HasColumnType("int")
+                    .HasColumnName("newid");
 
-                    b.Property<int?>("OldId")
-                        .HasColumnType("int")
-                        .HasColumnName("oldid");
+                b.Property<int?>("OldId")
+                    .HasColumnType("int")
+                    .HasColumnName("oldid");
 
-                    b.Property<int>("UpdateType")
-                        .HasColumnType("int")
-                        .HasColumnName("updatetype");
+                b.Property<int>("UpdateType")
+                    .HasColumnType("int")
+                    .HasColumnName("updatetype");
 
-                    b.Property<int>("UserId")
-                        .HasColumnType("int")
-                        .HasColumnName("userid");
+                b.Property<int>("UserId")
+                    .HasColumnType("int")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_waifuupdates");
+                b.HasKey("Id")
+                    .HasName("pk_waifuupdates");
 
-                    b.HasIndex("NewId")
-                        .HasDatabaseName("ix_waifuupdates_newid");
+                b.HasIndex("NewId")
+                    .HasDatabaseName("ix_waifuupdates_newid");
 
-                    b.HasIndex("OldId")
-                        .HasDatabaseName("ix_waifuupdates_oldid");
+                b.HasIndex("OldId")
+                    .HasDatabaseName("ix_waifuupdates_oldid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_waifuupdates_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_waifuupdates_userid");
 
-                    b.ToTable("waifuupdates", (string)null);
-                });
+                b.ToTable("waifuupdates", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Warning", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<bool>("Forgiven")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("forgiven");
+                b.Property<bool>("Forgiven")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("forgiven");
 
-                    b.Property<string>("ForgivenBy")
-                        .HasColumnType("longtext")
-                        .HasColumnName("forgivenby");
+                b.Property<string>("ForgivenBy")
+                    .HasColumnType("longtext")
+                    .HasColumnName("forgivenby");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("guildid");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Moderator")
-                        .HasColumnType("longtext")
-                        .HasColumnName("moderator");
+                b.Property<string>("Moderator")
+                    .HasColumnType("longtext")
+                    .HasColumnName("moderator");
 
-                    b.Property<string>("Reason")
-                        .HasColumnType("longtext")
-                        .HasColumnName("reason");
+                b.Property<string>("Reason")
+                    .HasColumnType("longtext")
+                    .HasColumnName("reason");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.Property<long>("Weight")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("bigint")
-                        .HasDefaultValue(1L)
-                        .HasColumnName("weight");
+                b.Property<long>("Weight")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint")
+                    .HasDefaultValue(1L)
+                    .HasColumnName("weight");
 
-                    b.HasKey("Id")
-                        .HasName("pk_warnings");
+                b.HasKey("Id")
+                    .HasName("pk_warnings");
 
-                    b.HasIndex("DateAdded")
-                        .HasDatabaseName("ix_warnings_dateadded");
+                b.HasIndex("DateAdded")
+                    .HasDatabaseName("ix_warnings_dateadded");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_warnings_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_warnings_guildid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_warnings_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_warnings_userid");
 
-                    b.ToTable("warnings", (string)null);
-                });
+                b.ToTable("warnings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("Count")
-                        .HasColumnType("int")
-                        .HasColumnName("count");
+                b.Property<int>("Count")
+                    .HasColumnType("int")
+                    .HasColumnName("count");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int?>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("Punishment")
-                        .HasColumnType("int")
-                        .HasColumnName("punishment");
+                b.Property<int>("Punishment")
+                    .HasColumnType("int")
+                    .HasColumnName("punishment");
 
-                    b.Property<ulong?>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.Property<int>("Time")
-                        .HasColumnType("int")
-                        .HasColumnName("time");
+                b.Property<int>("Time")
+                    .HasColumnType("int")
+                    .HasColumnName("time");
 
-                    b.HasKey("Id")
-                        .HasName("pk_warningpunishment");
+                b.HasKey("Id")
+                    .HasName("pk_warningpunishment");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_warningpunishment_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_warningpunishment_guildconfigid");
 
-                    b.ToTable("warningpunishment", (string)null);
-                });
+                b.ToTable("warningpunishment", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<int>("Amount")
-                        .HasColumnType("int")
-                        .HasColumnName("amount");
+                b.Property<int>("Amount")
+                    .HasColumnType("int")
+                    .HasColumnName("amount");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("Level")
-                        .HasColumnType("int")
-                        .HasColumnName("level");
+                b.Property<int>("Level")
+                    .HasColumnType("int")
+                    .HasColumnName("level");
 
-                    b.Property<int>("XpSettingsId")
-                        .HasColumnType("int")
-                        .HasColumnName("xpsettingsid");
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("xpsettingsid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xpcurrencyreward");
+                b.HasKey("Id")
+                    .HasName("pk_xpcurrencyreward");
 
-                    b.HasIndex("XpSettingsId")
-                        .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
+                b.HasIndex("XpSettingsId")
+                    .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
 
-                    b.ToTable("xpcurrencyreward", (string)null);
-                });
+                b.ToTable("xpcurrencyreward", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("Level")
-                        .HasColumnType("int")
-                        .HasColumnName("level");
+                b.Property<int>("Level")
+                    .HasColumnType("int")
+                    .HasColumnName("level");
 
-                    b.Property<bool>("Remove")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("remove");
+                b.Property<bool>("Remove")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("remove");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("roleid");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("roleid");
 
-                    b.Property<int>("XpSettingsId")
-                        .HasColumnType("int")
-                        .HasColumnName("xpsettingsid");
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("int")
+                    .HasColumnName("xpsettingsid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xprolereward");
+                b.HasKey("Id")
+                    .HasName("pk_xprolereward");
 
-                    b.HasIndex("XpSettingsId", "Level")
-                        .IsUnique()
-                        .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
+                b.HasIndex("XpSettingsId", "Level")
+                    .IsUnique()
+                    .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
 
-                    b.ToTable("xprolereward", (string)null);
-                });
+                b.ToTable("xprolereward", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("int")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("int")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<bool>("ServerExcluded")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("serverexcluded");
+                b.Property<bool>("ServerExcluded")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("serverexcluded");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xpsettings");
+                b.HasKey("Id")
+                    .HasName("pk_xpsettings");
 
-                    b.HasIndex("GuildConfigId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_xpsettings_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_xpsettings_guildconfigid");
 
-                    b.ToTable("xpsettings", (string)null);
-                });
+                b.ToTable("xpsettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("int")
-                        .HasColumnName("id");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
 
-                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("datetime(6)")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("datetime(6)")
+                    .HasColumnName("dateadded");
 
-                    b.Property<bool>("IsUsing")
-                        .HasColumnType("tinyint(1)")
-                        .HasColumnName("isusing");
+                b.Property<bool>("IsUsing")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isusing");
 
-                    b.Property<string>("ItemKey")
-                        .IsRequired()
-                        .HasColumnType("varchar(255)")
-                        .HasColumnName("itemkey");
+                b.Property<string>("ItemKey")
+                    .IsRequired()
+                    .HasColumnType("varchar(255)")
+                    .HasColumnName("itemkey");
 
-                    b.Property<int>("ItemType")
-                        .HasColumnType("int")
-                        .HasColumnName("itemtype");
+                b.Property<int>("ItemType")
+                    .HasColumnType("int")
+                    .HasColumnName("itemtype");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("bigint unsigned")
-                        .HasColumnName("userid");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xpshopowneditem");
+                b.HasKey("Id")
+                    .HasName("pk_xpshopowneditem");
 
-                    b.HasIndex("UserId", "ItemType", "ItemKey")
-                        .IsUnique()
-                        .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
+                b.HasIndex("UserId", "ItemType", "ItemKey")
+                    .IsUnique()
+                    .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
 
-                    b.ToTable("xpshopowneditem", (string)null);
-                });
+                b.ToTable("xpshopowneditem", (string)null);
+            });
+
+            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("int")
+                    .HasColumnName("id");
+
+                MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
+
+                b.Property<int>("AutoDeleteTimer")
+                    .HasColumnType("int")
+                    .HasColumnName("autodeletetimer");
+
+                b.Property<ulong?>("ChannelId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("channelid");
+
+                b.Property<int>("GreetType")
+                    .HasColumnType("int")
+                    .HasColumnName("greettype");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("bigint unsigned")
+                    .HasColumnName("guildid");
+
+                b.Property<bool>("IsEnabled")
+                    .HasColumnType("tinyint(1)")
+                    .HasColumnName("isenabled");
+
+                b.Property<string>("MessageText")
+                    .HasColumnType("longtext")
+                    .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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                    .WithMany("Users")
+                    .HasForeignKey("ChannelId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_autotranslateusers_autotranslatechannels_channelid");
 
-                    b.Navigation("Channel");
-                });
+                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.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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_clubapplicants_discorduser_userid");
 
-                    b.Navigation("Club");
+                b.Navigation("Club");
 
-                    b.Navigation("User");
-                });
+                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.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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_clubbans_discorduser_userid");
 
-                    b.Navigation("Club");
+                b.Navigation("Club");
 
-                    b.Navigation("User");
-                });
+                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.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                    .WithOne()
+                    .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                    .OnDelete(DeleteBehavior.SetNull)
+                    .HasConstraintName("fk_clubs_discorduser_ownerid");
 
-                    b.Navigation("Owner");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                    .WithMany("Members")
+                    .HasForeignKey("ClubId")
+                    .OnDelete(DeleteBehavior.NoAction)
+                    .HasConstraintName("fk_discorduser_clubs_clubid");
 
-                    b.Navigation("Club");
-                });
+                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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("ExclusionList")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_excludeditem_xpsettings_xpsettingsid");
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("FeedSubs")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_feedsub_guildconfigs_guildconfigid");
 
-                    b.Navigation("GuildConfig");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("GenerateCurrencyChannelIds")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_gcchannelid_guildconfigs_guildconfigid");
 
-                    b.Navigation("GuildConfig");
-                });
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("SelfAssignableRoleGroupNames")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_groupname_guildconfigs_guildconfigid");
 
-                    b.Navigation("GuildConfig");
-                });
+                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.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                    .WithMany("LogIgnores")
+                    .HasForeignKey("LogSettingId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_ignoredlogchannels_logsettings_logsettingid");
 
-                    b.Navigation("LogSetting");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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_streamrolesetti~");
+            {
+                b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                    .WithMany("Blacklist")
+                    .HasForeignKey("StreamRoleSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_streamroleblacklisteduser_streamrolesettings_streamrolesetti~");
 
-                    b.Navigation("StreamRoleSettings");
-                });
+                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.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");
-                });
+                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_streamrolesetti~");
+            {
+                b.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                    .WithMany("Whitelist")
+                    .HasForeignKey("StreamRoleSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_streamrolewhitelisteduser_streamrolesettings_streamrolesetti~");
 
-                    b.Navigation("StreamRoleSettings");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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", "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", "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.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("Affinity");
 
-                    b.Navigation("Claimer");
+                b.Navigation("Claimer");
 
-                    b.Navigation("Waifu");
-                });
+                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.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                    .WithMany("Items")
+                    .HasForeignKey("WaifuInfoId")
+                    .HasConstraintName("fk_waifuitem_waifuinfo_waifuinfoid");
 
-                    b.Navigation("WaifuInfo");
-                });
+                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", "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", "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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_waifuupdates_discorduser_userid");
 
-                    b.Navigation("New");
+                b.Navigation("New");
 
-                    b.Navigation("Old");
+                b.Navigation("Old");
 
-                    b.Navigation("User");
-                });
+                b.Navigation("User");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                        .WithMany("WarnPunishments")
-                        .HasForeignKey("GuildConfigId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .HasConstraintName("fk_warningpunishment_guildconfigs_guildconfigid");
-                });
+            {
+                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                    .WithMany("WarnPunishments")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_warningpunishment_guildconfigs_guildconfigid");
+            });
 
             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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("CurrencyRewards")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_xpcurrencyreward_xpsettings_xpsettingsid");
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("RoleRewards")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_xprolereward_xpsettings_xpsettingsid");
 
-                    b.Navigation("XpSettings");
-                });
+                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.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");
-                });
+                b.Navigation("GuildConfig");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-                {
-                    b.Navigation("IgnoredChannels");
-                });
+            {
+                b.Navigation("IgnoredChannels");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-                {
-                    b.Navigation("Users");
-                });
+            {
+                b.Navigation("Users");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-                {
-                    b.Navigation("Applicants");
+            {
+                b.Navigation("Applicants");
 
-                    b.Navigation("Bans");
+                b.Navigation("Bans");
 
-                    b.Navigation("Members");
-                });
+                b.Navigation("Members");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-                {
-                    b.Navigation("Participants");
-                });
+            {
+                b.Navigation("Participants");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-                {
-                    b.Navigation("AntiAltSetting");
+            {
+                b.Navigation("AntiAltSetting");
 
-                    b.Navigation("AntiRaidSetting");
+                b.Navigation("AntiRaidSetting");
 
-                    b.Navigation("AntiSpamSetting");
+                b.Navigation("AntiSpamSetting");
 
-                    b.Navigation("CommandAliases");
+                b.Navigation("CommandAliases");
 
-                    b.Navigation("CommandCooldowns");
+                b.Navigation("CommandCooldowns");
 
-                    b.Navigation("DelMsgOnCmdChannels");
+                b.Navigation("DelMsgOnCmdChannels");
 
-                    b.Navigation("FeedSubs");
+                b.Navigation("FeedSubs");
 
-                    b.Navigation("FilterInvitesChannelIds");
+                b.Navigation("FilterInvitesChannelIds");
 
-                    b.Navigation("FilterLinksChannelIds");
+                b.Navigation("FilterLinksChannelIds");
 
-                    b.Navigation("FilterWordsChannelIds");
+                b.Navigation("FilterWordsChannelIds");
 
-                    b.Navigation("FilteredWords");
+                b.Navigation("FilteredWords");
 
-                    b.Navigation("FollowedStreams");
+                b.Navigation("FollowedStreams");
 
-                    b.Navigation("GenerateCurrencyChannelIds");
+                b.Navigation("GenerateCurrencyChannelIds");
 
-                    b.Navigation("MutedUsers");
+                b.Navigation("MutedUsers");
 
-                    b.Navigation("Permissions");
+                b.Navigation("Permissions");
 
-                    b.Navigation("SelfAssignableRoleGroupNames");
+                b.Navigation("SelfAssignableRoleGroupNames");
 
-                    b.Navigation("ShopEntries");
+                b.Navigation("ShopEntries");
 
-                    b.Navigation("SlowmodeIgnoredRoles");
+                b.Navigation("SlowmodeIgnoredRoles");
 
-                    b.Navigation("SlowmodeIgnoredUsers");
+                b.Navigation("SlowmodeIgnoredUsers");
 
-                    b.Navigation("StreamRole");
+                b.Navigation("StreamRole");
 
-                    b.Navigation("UnbanTimer");
+                b.Navigation("UnbanTimer");
 
-                    b.Navigation("UnmuteTimers");
+                b.Navigation("UnmuteTimers");
 
-                    b.Navigation("UnroleTimer");
+                b.Navigation("UnroleTimer");
 
-                    b.Navigation("VcRoleInfos");
+                b.Navigation("VcRoleInfos");
 
-                    b.Navigation("WarnPunishments");
+                b.Navigation("WarnPunishments");
 
-                    b.Navigation("XpSettings");
-                });
+                b.Navigation("XpSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-                {
-                    b.Navigation("LogIgnores");
-                });
+            {
+                b.Navigation("LogIgnores");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-                {
-                    b.Navigation("Songs");
-                });
+            {
+                b.Navigation("Songs");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-                {
-                    b.Navigation("Blacklist");
+            {
+                b.Navigation("Blacklist");
 
-                    b.Navigation("Whitelist");
-                });
+                b.Navigation("Whitelist");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-                {
-                    b.Navigation("CurrencyRewards");
+            {
+                b.Navigation("CurrencyRewards");
 
-                    b.Navigation("ExclusionList");
+                b.Navigation("ExclusionList");
 
-                    b.Navigation("RoleRewards");
-                });
+                b.Navigation("RoleRewards");
+            });
 #pragma warning restore 612, 618
         }
     }
diff --git a/src/EllieBot/Migrations/PostgreSql/20220916194523_autopub.cs b/src/EllieBot/Migrations/PostgreSql/20220916194523_autopub.cs
index 35ace3c..177c650 100644
--- a/src/EllieBot/Migrations/PostgreSql/20220916194523_autopub.cs
+++ b/src/EllieBot/Migrations/PostgreSql/20220916194523_autopub.cs
@@ -9,12 +9,6 @@ namespace EllieBot.Migrations.PostgreSql
     {
         protected override void Up(MigrationBuilder migrationBuilder)
         {
-            migrationBuilder.AddColumn<decimal>(
-                name: "rolerequirement",
-                table: "shopentry",
-                type: "numeric(20,0)",
-                nullable: true);
-
             migrationBuilder.CreateTable(
                 name: "autopublishchannel",
                 columns: table => new
@@ -41,10 +35,6 @@ namespace EllieBot.Migrations.PostgreSql
         {
             migrationBuilder.DropTable(
                 name: "autopublishchannel");
-
-            migrationBuilder.DropColumn(
-                name: "rolerequirement",
-                table: "shopentry");
         }
     }
 }
diff --git a/src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.Designer.cs b/src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.Designer.cs
new file mode 100644
index 0000000..8a2c51c
--- /dev/null
+++ b/src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.Designer.cs
@@ -0,0 +1,3785 @@
+// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using EllieBot.Db;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace EllieBot.Migrations.PostgreSql
+{
+    [DbContext(typeof(PostgreSqlContext))]
+    [Migration("20240911104857_greet-settings")]
+    partial class greetsettings
+    {
+        /// <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<string>("Discriminator")
+                    .HasColumnType("text")
+                    .HasColumnName("discriminator");
+
+                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.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.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.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.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<int?>("GuildConfigId")
+                    .HasColumnType("integer")
+                    .HasColumnName("guildconfigid");
+
+                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.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_warningpunishment_guildconfigid");
+
+                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")
+                    .HasColumnType("integer")
+                    .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")
+                    .HasColumnType("boolean")
+                    .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");
+            });
+
+            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.WarningPunishment", b =>
+            {
+                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                    .WithMany("WarnPunishments")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_warningpunishment_guildconfigs_guildconfigid");
+            });
+
+            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("WarnPunishments");
+
+                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/20240911104857_greet-settings.cs b/src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.cs
new file mode 100644
index 0000000..afa0de2
--- /dev/null
+++ b/src/EllieBot/Migrations/PostgreSql/20240911104857_greet-settings.cs
@@ -0,0 +1,196 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace EllieBot.Migrations.PostgreSql
+{
+    /// <inheritdoc />
+    public partial class greetsettings : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "autodeletebyemessagestimer",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "autodeletegreetmessagestimer",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "boostmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "boostmessagechannelid",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "boostmessagedeleteafter",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "byemessagechannelid",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "channelbyemessagetext",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "channelgreetmessagetext",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "dmgreetmessagetext",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "greetmessagechannelid",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "sendboostmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "sendchannelbyemessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "sendchannelgreetmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.DropColumn(
+                name: "senddmgreetmessage",
+                table: "guildconfigs");
+
+            migrationBuilder.CreateTable(
+                name: "greetsettings",
+                columns: table => new
+                {
+                    id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    guildid = table.Column<decimal>(type: "numeric(20,0)", nullable: false),
+                    greettype = table.Column<int>(type: "integer", nullable: false),
+                    messagetext = table.Column<string>(type: "text", nullable: true),
+                    isenabled = table.Column<bool>(type: "boolean", nullable: false),
+                    channelid = table.Column<decimal>(type: "numeric(20,0)", nullable: true),
+                    autodeletetimer = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("pk_greetsettings", x => x.id);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "ix_greetsettings_guildid_greettype",
+                table: "greetsettings",
+                columns: new[] { "guildid", "greettype" },
+                unique: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "greetsettings");
+
+            migrationBuilder.AddColumn<int>(
+                name: "autodeletebyemessagestimer",
+                table: "guildconfigs",
+                type: "integer",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<int>(
+                name: "autodeletegreetmessagestimer",
+                table: "guildconfigs",
+                type: "integer",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<string>(
+                name: "boostmessage",
+                table: "guildconfigs",
+                type: "text",
+                nullable: true);
+
+            migrationBuilder.AddColumn<decimal>(
+                name: "boostmessagechannelid",
+                table: "guildconfigs",
+                type: "numeric(20,0)",
+                nullable: false,
+                defaultValue: 0m);
+
+            migrationBuilder.AddColumn<int>(
+                name: "boostmessagedeleteafter",
+                table: "guildconfigs",
+                type: "integer",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<decimal>(
+                name: "byemessagechannelid",
+                table: "guildconfigs",
+                type: "numeric(20,0)",
+                nullable: false,
+                defaultValue: 0m);
+
+            migrationBuilder.AddColumn<string>(
+                name: "channelbyemessagetext",
+                table: "guildconfigs",
+                type: "text",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "channelgreetmessagetext",
+                table: "guildconfigs",
+                type: "text",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "dmgreetmessagetext",
+                table: "guildconfigs",
+                type: "text",
+                nullable: true);
+
+            migrationBuilder.AddColumn<decimal>(
+                name: "greetmessagechannelid",
+                table: "guildconfigs",
+                type: "numeric(20,0)",
+                nullable: false,
+                defaultValue: 0m);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "sendboostmessage",
+                table: "guildconfigs",
+                type: "boolean",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "sendchannelbyemessage",
+                table: "guildconfigs",
+                type: "boolean",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "sendchannelgreetmessage",
+                table: "guildconfigs",
+                type: "boolean",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "senddmgreetmessage",
+                table: "guildconfigs",
+                type: "boolean",
+                nullable: false,
+                defaultValue: false);
+        }
+    }
+}
diff --git a/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs b/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
index bb87c9c..c72940f 100644
--- a/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
+++ b/src/EllieBot/Migrations/PostgreSql/PostgreSqlContextModelSnapshot.cs
@@ -17,3778 +17,3765 @@ namespace EllieBot.Migrations.PostgreSql
         {
 #pragma warning disable 612, 618
             modelBuilder
-                .HasAnnotation("ProductVersion", "8.0.4")
+                .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");
+            {
+                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<string>("Discriminator")
-                        .HasColumnType("text")
-                        .HasColumnName("discriminator");
+                b.Property<string>("Discriminator")
+                    .HasColumnType("text")
+                    .HasColumnName("discriminator");
 
-                    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.ToTable("discorduser", (string)null);
-                });
+                b.ToTable("discorduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", 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>("ItemType")
-                        .HasColumnType("integer")
-                        .HasColumnName("itemtype");
+                b.Property<int>("ItemType")
+                    .HasColumnType("integer")
+                    .HasColumnName("itemtype");
 
-                    b.Property<int?>("XpSettingsId")
-                        .HasColumnType("integer")
-                        .HasColumnName("xpsettingsid");
+                b.Property<int?>("XpSettingsId")
+                    .HasColumnType("integer")
+                    .HasColumnName("xpsettingsid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_excludeditem");
+                b.HasKey("Id")
+                    .HasName("pk_excludeditem");
 
-                    b.HasIndex("XpSettingsId")
-                        .HasDatabaseName("ix_excludeditem_xpsettingsid");
+                b.HasIndex("XpSettingsId")
+                    .HasDatabaseName("ix_excludeditem_xpsettingsid");
 
-                    b.ToTable("excludeditem", (string)null);
-                });
+                b.ToTable("excludeditem", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FeedSub", 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<string>("Message")
-                        .HasColumnType("text")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("text")
+                    .HasColumnName("message");
 
-                    b.Property<string>("Url")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("url");
+                b.Property<string>("Url")
+                    .IsRequired()
+                    .HasColumnType("text")
+                    .HasColumnName("url");
 
-                    b.HasKey("Id")
-                        .HasName("pk_feedsub");
+                b.HasKey("Id")
+                    .HasName("pk_feedsub");
 
-                    b.HasAlternateKey("GuildConfigId", "Url")
-                        .HasName("ak_feedsub_guildconfigid_url");
+                b.HasAlternateKey("GuildConfigId", "Url")
+                    .HasName("ak_feedsub_guildconfigid_url");
 
-                    b.ToTable("feedsub", (string)null);
-                });
+                b.ToTable("feedsub", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", 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.HasKey("Id")
-                        .HasName("pk_filterchannelid");
+                b.HasKey("Id")
+                    .HasName("pk_filterchannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filterchannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filterchannelid_guildconfigid");
 
-                    b.ToTable("filterchannelid", (string)null);
-                });
+                b.ToTable("filterchannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", 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.HasKey("Id")
-                        .HasName("pk_filterlinkschannelid");
+                b.HasKey("Id")
+                    .HasName("pk_filterlinkschannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filterlinkschannelid_guildconfigid");
 
-                    b.ToTable("filterlinkschannelid", (string)null);
-                });
+                b.ToTable("filterlinkschannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", 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.HasKey("Id")
-                        .HasName("pk_filterwordschannelid");
+                b.HasKey("Id")
+                    .HasName("pk_filterwordschannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filterwordschannelid_guildconfigid");
 
-                    b.ToTable("filterwordschannelid", (string)null);
-                });
+                b.ToTable("filterwordschannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", 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>("Word")
-                        .HasColumnType("text")
-                        .HasColumnName("word");
+                b.Property<string>("Word")
+                    .HasColumnType("text")
+                    .HasColumnName("word");
 
-                    b.HasKey("Id")
-                        .HasName("pk_filteredword");
+                b.HasKey("Id")
+                    .HasName("pk_filteredword");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_filteredword_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_filteredword_guildconfigid");
 
-                    b.ToTable("filteredword", (string)null);
-                });
+                b.ToTable("filteredword", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", 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<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("text")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("text")
+                    .HasColumnName("message");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("integer")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("integer")
+                    .HasColumnName("type");
 
-                    b.Property<string>("Username")
-                        .HasColumnType("text")
-                        .HasColumnName("username");
+                b.Property<string>("Username")
+                    .HasColumnType("text")
+                    .HasColumnName("username");
 
-                    b.HasKey("Id")
-                        .HasName("pk_followedstream");
+                b.HasKey("Id")
+                    .HasName("pk_followedstream");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_followedstream_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_followedstream_guildconfigid");
 
-                    b.ToTable("followedstream", (string)null);
-                });
+                b.ToTable("followedstream", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", 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.HasKey("Id")
-                        .HasName("pk_gcchannelid");
+                b.HasKey("Id")
+                    .HasName("pk_gcchannelid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_gcchannelid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_gcchannelid_guildconfigid");
 
-                    b.ToTable("gcchannelid", (string)null);
-                });
+                b.ToTable("gcchannelid", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", 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>("Bet")
-                        .HasColumnType("numeric")
-                        .HasColumnName("bet");
+                b.Property<decimal>("Bet")
+                    .HasColumnType("numeric")
+                    .HasColumnName("bet");
 
-                    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>("Feature")
-                        .HasColumnType("text")
-                        .HasColumnName("feature");
+                b.Property<string>("Feature")
+                    .HasColumnType("text")
+                    .HasColumnName("feature");
 
-                    b.Property<decimal>("PaidOut")
-                        .HasColumnType("numeric")
-                        .HasColumnName("paidout");
+                b.Property<decimal>("PaidOut")
+                    .HasColumnType("numeric")
+                    .HasColumnName("paidout");
 
-                    b.HasKey("Id")
-                        .HasName("pk_gamblingstats");
+                b.HasKey("Id")
+                    .HasName("pk_gamblingstats");
 
-                    b.HasIndex("Feature")
-                        .IsUnique()
-                        .HasDatabaseName("ix_gamblingstats_feature");
+                b.HasIndex("Feature")
+                    .IsUnique()
+                    .HasDatabaseName("ix_gamblingstats_feature");
 
-                    b.ToTable("gamblingstats", (string)null);
-                });
+                b.ToTable("gamblingstats", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", 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>("EndsAt")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("endsat");
+                b.Property<DateTime>("EndsAt")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("endsat");
 
-                    b.Property<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("text")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("text")
+                    .HasColumnName("message");
 
-                    b.Property<decimal>("MessageId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("messageid");
+                b.Property<decimal>("MessageId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("messageid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_giveawaymodel");
+                b.HasKey("Id")
+                    .HasName("pk_giveawaymodel");
 
-                    b.ToTable("giveawaymodel", (string)null);
-                });
+                b.ToTable("giveawaymodel", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", 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>("GiveawayId")
-                        .HasColumnType("integer")
-                        .HasColumnName("giveawayid");
+                b.Property<int>("GiveawayId")
+                    .HasColumnType("integer")
+                    .HasColumnName("giveawayid");
 
-                    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_giveawayuser");
+                b.HasKey("Id")
+                    .HasName("pk_giveawayuser");
 
-                    b.HasIndex("GiveawayId", "UserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
+                b.HasIndex("GiveawayId", "UserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_giveawayuser_giveawayid_userid");
 
-                    b.ToTable("giveawayuser", (string)null);
-                });
+                b.ToTable("giveawayuser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GroupName", 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>("Name")
-                        .HasColumnType("text")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("text")
+                    .HasColumnName("name");
 
-                    b.Property<int>("Number")
-                        .HasColumnType("integer")
-                        .HasColumnName("number");
+                b.Property<int>("Number")
+                    .HasColumnType("integer")
+                    .HasColumnName("number");
 
-                    b.HasKey("Id")
-                        .HasName("pk_groupname");
+                b.HasKey("Id")
+                    .HasName("pk_groupname");
 
-                    b.HasIndex("GuildConfigId", "Number")
-                        .IsUnique()
-                        .HasDatabaseName("ix_groupname_guildconfigid_number");
+                b.HasIndex("GuildConfigId", "Number")
+                    .IsUnique()
+                    .HasDatabaseName("ix_groupname_guildconfigid_number");
 
-                    b.ToTable("groupname", (string)null);
-                });
+                b.ToTable("groupname", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", 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>("AutoAssignRoleIds")
-                        .HasColumnType("text")
-                        .HasColumnName("autoassignroleids");
+                b.Property<string>("AutoAssignRoleIds")
+                    .HasColumnType("text")
+                    .HasColumnName("autoassignroleids");
 
-                    b.Property<int>("AutoDeleteByeMessagesTimer")
-                        .HasColumnType("integer")
-                        .HasColumnName("autodeletebyemessagestimer");
+                b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                    .HasColumnType("boolean")
+                    .HasColumnName("autodeleteselfassignedrolemessages");
 
-                    b.Property<int>("AutoDeleteGreetMessagesTimer")
-                        .HasColumnType("integer")
-                        .HasColumnName("autodeletegreetmessagestimer");
+                b.Property<bool>("CleverbotEnabled")
+                    .HasColumnType("boolean")
+                    .HasColumnName("cleverbotenabled");
 
-                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
-                        .HasColumnType("boolean")
-                        .HasColumnName("autodeleteselfassignedrolemessages");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("dateadded");
 
-                    b.Property<string>("BoostMessage")
-                        .HasColumnType("text")
-                        .HasColumnName("boostmessage");
+                b.Property<bool>("DeleteMessageOnCommand")
+                    .HasColumnType("boolean")
+                    .HasColumnName("deletemessageoncommand");
 
-                    b.Property<decimal>("BoostMessageChannelId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("boostmessagechannelid");
+                b.Property<bool>("DeleteStreamOnlineMessage")
+                    .HasColumnType("boolean")
+                    .HasColumnName("deletestreamonlinemessage");
 
-                    b.Property<int>("BoostMessageDeleteAfter")
-                        .HasColumnType("integer")
-                        .HasColumnName("boostmessagedeleteafter");
+                b.Property<bool>("DisableGlobalExpressions")
+                    .HasColumnType("boolean")
+                    .HasColumnName("disableglobalexpressions");
 
-                    b.Property<decimal>("ByeMessageChannelId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("byemessagechannelid");
+                b.Property<bool>("ExclusiveSelfAssignedRoles")
+                    .HasColumnType("boolean")
+                    .HasColumnName("exclusiveselfassignedroles");
 
-                    b.Property<string>("ChannelByeMessageText")
-                        .HasColumnType("text")
-                        .HasColumnName("channelbyemessagetext");
+                b.Property<bool>("FilterInvites")
+                    .HasColumnType("boolean")
+                    .HasColumnName("filterinvites");
 
-                    b.Property<string>("ChannelGreetMessageText")
-                        .HasColumnType("text")
-                        .HasColumnName("channelgreetmessagetext");
+                b.Property<bool>("FilterLinks")
+                    .HasColumnType("boolean")
+                    .HasColumnName("filterlinks");
 
-                    b.Property<bool>("CleverbotEnabled")
-                        .HasColumnType("boolean")
-                        .HasColumnName("cleverbotenabled");
+                b.Property<bool>("FilterWords")
+                    .HasColumnType("boolean")
+                    .HasColumnName("filterwords");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("dateadded");
+                b.Property<decimal?>("GameVoiceChannel")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("gamevoicechannel");
 
-                    b.Property<bool>("DeleteMessageOnCommand")
-                        .HasColumnType("boolean")
-                        .HasColumnName("deletemessageoncommand");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<bool>("DeleteStreamOnlineMessage")
-                        .HasColumnType("boolean")
-                        .HasColumnName("deletestreamonlinemessage");
+                b.Property<string>("Locale")
+                    .HasColumnType("text")
+                    .HasColumnName("locale");
 
-                    b.Property<bool>("DisableGlobalExpressions")
-                        .HasColumnType("boolean")
-                        .HasColumnName("disableglobalexpressions");
+                b.Property<string>("MuteRoleName")
+                    .HasColumnType("text")
+                    .HasColumnName("muterolename");
 
-                    b.Property<string>("DmGreetMessageText")
-                        .HasColumnType("text")
-                        .HasColumnName("dmgreetmessagetext");
+                b.Property<bool>("NotifyStreamOffline")
+                    .HasColumnType("boolean")
+                    .HasColumnName("notifystreamoffline");
 
-                    b.Property<bool>("ExclusiveSelfAssignedRoles")
-                        .HasColumnType("boolean")
-                        .HasColumnName("exclusiveselfassignedroles");
+                b.Property<string>("PermissionRole")
+                    .HasColumnType("text")
+                    .HasColumnName("permissionrole");
 
-                    b.Property<bool>("FilterInvites")
-                        .HasColumnType("boolean")
-                        .HasColumnName("filterinvites");
+                b.Property<string>("Prefix")
+                    .HasColumnType("text")
+                    .HasColumnName("prefix");
 
-                    b.Property<bool>("FilterLinks")
-                        .HasColumnType("boolean")
-                        .HasColumnName("filterlinks");
+                b.Property<bool>("StickyRoles")
+                    .HasColumnType("boolean")
+                    .HasColumnName("stickyroles");
 
-                    b.Property<bool>("FilterWords")
-                        .HasColumnType("boolean")
-                        .HasColumnName("filterwords");
+                b.Property<string>("TimeZoneId")
+                    .HasColumnType("text")
+                    .HasColumnName("timezoneid");
 
-                    b.Property<decimal?>("GameVoiceChannel")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("gamevoicechannel");
+                b.Property<bool>("VerboseErrors")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("boolean")
+                    .HasDefaultValue(true)
+                    .HasColumnName("verboseerrors");
 
-                    b.Property<decimal>("GreetMessageChannelId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("greetmessagechannelid");
+                b.Property<bool>("VerbosePermissions")
+                    .HasColumnType("boolean")
+                    .HasColumnName("verbosepermissions");
 
-                    b.Property<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<int>("WarnExpireAction")
+                    .HasColumnType("integer")
+                    .HasColumnName("warnexpireaction");
 
-                    b.Property<string>("Locale")
-                        .HasColumnType("text")
-                        .HasColumnName("locale");
+                b.Property<int>("WarnExpireHours")
+                    .HasColumnType("integer")
+                    .HasColumnName("warnexpirehours");
 
-                    b.Property<string>("MuteRoleName")
-                        .HasColumnType("text")
-                        .HasColumnName("muterolename");
+                b.Property<bool>("WarningsInitialized")
+                    .HasColumnType("boolean")
+                    .HasColumnName("warningsinitialized");
 
-                    b.Property<bool>("NotifyStreamOffline")
-                        .HasColumnType("boolean")
-                        .HasColumnName("notifystreamoffline");
+                b.HasKey("Id")
+                    .HasName("pk_guildconfigs");
 
-                    b.Property<string>("PermissionRole")
-                        .HasColumnType("text")
-                        .HasColumnName("permissionrole");
+                b.HasIndex("GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_guildconfigs_guildid");
 
-                    b.Property<string>("Prefix")
-                        .HasColumnType("text")
-                        .HasColumnName("prefix");
+                b.HasIndex("WarnExpireHours")
+                    .HasDatabaseName("ix_guildconfigs_warnexpirehours");
 
-                    b.Property<bool>("SendBoostMessage")
-                        .HasColumnType("boolean")
-                        .HasColumnName("sendboostmessage");
-
-                    b.Property<bool>("SendChannelByeMessage")
-                        .HasColumnType("boolean")
-                        .HasColumnName("sendchannelbyemessage");
-
-                    b.Property<bool>("SendChannelGreetMessage")
-                        .HasColumnType("boolean")
-                        .HasColumnName("sendchannelgreetmessage");
-
-                    b.Property<bool>("SendDmGreetMessage")
-                        .HasColumnType("boolean")
-                        .HasColumnName("senddmgreetmessage");
-
-                    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);
-                });
+                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>("GuildId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<decimal>("ChannelId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("channelid");
+                b.Property<decimal>("ChannelId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("channelid");
 
-                    b.HasKey("GuildId")
-                        .HasName("pk_honeypotchannels");
+                b.HasKey("GuildId")
+                    .HasName("pk_honeypotchannels");
 
-                    b.ToTable("honeypotchannels", (string)null);
-                });
+                b.ToTable("honeypotchannels", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", 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>("ItemType")
-                        .HasColumnType("integer")
-                        .HasColumnName("itemtype");
+                b.Property<int>("ItemType")
+                    .HasColumnType("integer")
+                    .HasColumnName("itemtype");
 
-                    b.Property<decimal>("LogItemId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("logitemid");
+                b.Property<decimal>("LogItemId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("logitemid");
 
-                    b.Property<int>("LogSettingId")
-                        .HasColumnType("integer")
-                        .HasColumnName("logsettingid");
+                b.Property<int>("LogSettingId")
+                    .HasColumnType("integer")
+                    .HasColumnName("logsettingid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_ignoredlogchannels");
+                b.HasKey("Id")
+                    .HasName("pk_ignoredlogchannels");
 
-                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
-                        .IsUnique()
-                        .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
+                b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                    .IsUnique()
+                    .HasDatabaseName("ix_ignoredlogchannels_logsettingid_logitemid_itemtype");
 
-                    b.ToTable("ignoredlogchannels", (string)null);
-                });
+                b.ToTable("ignoredlogchannels", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", 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.Property<int>("Type")
-                        .HasColumnType("integer")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("integer")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_imageonlychannels");
+                b.HasKey("Id")
+                    .HasName("pk_imageonlychannels");
 
-                    b.HasIndex("ChannelId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_imageonlychannels_channelid");
+                b.HasIndex("ChannelId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_imageonlychannels_channelid");
 
-                    b.ToTable("imageonlychannels", (string)null);
-                });
+                b.ToTable("imageonlychannels", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", 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?>("ChannelCreatedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("channelcreatedid");
+                b.Property<decimal?>("ChannelCreatedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("channelcreatedid");
 
-                    b.Property<decimal?>("ChannelDestroyedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("channeldestroyedid");
+                b.Property<decimal?>("ChannelDestroyedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("channeldestroyedid");
 
-                    b.Property<decimal?>("ChannelUpdatedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("channelupdatedid");
+                b.Property<decimal?>("ChannelUpdatedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("channelupdatedid");
 
-                    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?>("LogOtherId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("logotherid");
+                b.Property<decimal?>("LogOtherId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("logotherid");
 
-                    b.Property<decimal?>("LogUserPresenceId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("loguserpresenceid");
+                b.Property<decimal?>("LogUserPresenceId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("loguserpresenceid");
 
-                    b.Property<decimal?>("LogVoicePresenceId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("logvoicepresenceid");
+                b.Property<decimal?>("LogVoicePresenceId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("logvoicepresenceid");
 
-                    b.Property<decimal?>("LogVoicePresenceTTSId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("logvoicepresencettsid");
+                b.Property<decimal?>("LogVoicePresenceTTSId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("logvoicepresencettsid");
 
-                    b.Property<decimal?>("LogWarnsId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("logwarnsid");
+                b.Property<decimal?>("LogWarnsId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("logwarnsid");
 
-                    b.Property<decimal?>("MessageDeletedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("messagedeletedid");
+                b.Property<decimal?>("MessageDeletedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("messagedeletedid");
 
-                    b.Property<decimal?>("MessageUpdatedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("messageupdatedid");
+                b.Property<decimal?>("MessageUpdatedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("messageupdatedid");
 
-                    b.Property<decimal?>("ThreadCreatedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("threadcreatedid");
+                b.Property<decimal?>("ThreadCreatedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("threadcreatedid");
 
-                    b.Property<decimal?>("ThreadDeletedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("threaddeletedid");
+                b.Property<decimal?>("ThreadDeletedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("threaddeletedid");
 
-                    b.Property<decimal?>("UserBannedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userbannedid");
+                b.Property<decimal?>("UserBannedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userbannedid");
 
-                    b.Property<decimal?>("UserJoinedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userjoinedid");
+                b.Property<decimal?>("UserJoinedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userjoinedid");
 
-                    b.Property<decimal?>("UserLeftId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userleftid");
+                b.Property<decimal?>("UserLeftId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userleftid");
 
-                    b.Property<decimal?>("UserMutedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("usermutedid");
+                b.Property<decimal?>("UserMutedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("usermutedid");
 
-                    b.Property<decimal?>("UserUnbannedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userunbannedid");
+                b.Property<decimal?>("UserUnbannedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userunbannedid");
 
-                    b.Property<decimal?>("UserUpdatedId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userupdatedid");
+                b.Property<decimal?>("UserUpdatedId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userupdatedid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_logsettings");
+                b.HasKey("Id")
+                    .HasName("pk_logsettings");
 
-                    b.HasIndex("GuildId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_logsettings_guildid");
+                b.HasIndex("GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_logsettings_guildid");
 
-                    b.ToTable("logsettings", (string)null);
-                });
+                b.ToTable("logsettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", 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>("AutoDisconnect")
-                        .HasColumnType("boolean")
-                        .HasColumnName("autodisconnect");
+                b.Property<bool>("AutoDisconnect")
+                    .HasColumnType("boolean")
+                    .HasColumnName("autodisconnect");
 
-                    b.Property<bool>("AutoPlay")
-                        .HasColumnType("boolean")
-                        .HasColumnName("autoplay");
+                b.Property<bool>("AutoPlay")
+                    .HasColumnType("boolean")
+                    .HasColumnName("autoplay");
 
-                    b.Property<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<decimal?>("MusicChannelId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("musicchannelid");
+                b.Property<decimal?>("MusicChannelId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("musicchannelid");
 
-                    b.Property<int>("PlayerRepeat")
-                        .HasColumnType("integer")
-                        .HasColumnName("playerrepeat");
+                b.Property<int>("PlayerRepeat")
+                    .HasColumnType("integer")
+                    .HasColumnName("playerrepeat");
 
-                    b.Property<int>("QualityPreset")
-                        .HasColumnType("integer")
-                        .HasColumnName("qualitypreset");
+                b.Property<int>("QualityPreset")
+                    .HasColumnType("integer")
+                    .HasColumnName("qualitypreset");
 
-                    b.Property<int>("Volume")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasDefaultValue(100)
-                        .HasColumnName("volume");
+                b.Property<int>("Volume")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("integer")
+                    .HasDefaultValue(100)
+                    .HasColumnName("volume");
 
-                    b.HasKey("Id")
-                        .HasName("pk_musicplayersettings");
+                b.HasKey("Id")
+                    .HasName("pk_musicplayersettings");
 
-                    b.HasIndex("GuildId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_musicplayersettings_guildid");
+                b.HasIndex("GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_musicplayersettings_guildid");
 
-                    b.ToTable("musicplayersettings", (string)null);
-                });
+                b.ToTable("musicplayersettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", 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>("Author")
-                        .HasColumnType("text")
-                        .HasColumnName("author");
+                b.Property<string>("Author")
+                    .HasColumnType("text")
+                    .HasColumnName("author");
 
-                    b.Property<decimal>("AuthorId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("authorid");
+                b.Property<decimal>("AuthorId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("authorid");
 
-                    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>("Name")
-                        .HasColumnType("text")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("text")
+                    .HasColumnName("name");
 
-                    b.HasKey("Id")
-                        .HasName("pk_musicplaylists");
+                b.HasKey("Id")
+                    .HasName("pk_musicplaylists");
 
-                    b.ToTable("musicplaylists", (string)null);
-                });
+                b.ToTable("musicplaylists", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", 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<decimal>("UserId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userid");
+                b.Property<decimal>("UserId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_muteduserid");
+                b.HasKey("Id")
+                    .HasName("pk_muteduserid");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_muteduserid_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_muteduserid_guildconfigid");
 
-                    b.ToTable("muteduserid", (string)null);
-                });
+                b.ToTable("muteduserid", (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);
-                });
+                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<decimal>("UserId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userid");
 
-                    b.Property<int>("AmountCents")
-                        .HasColumnType("integer")
-                        .HasColumnName("amountcents");
+                b.Property<int>("AmountCents")
+                    .HasColumnType("integer")
+                    .HasColumnName("amountcents");
 
-                    b.Property<DateTime>("LastCharge")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("lastcharge");
+                b.Property<DateTime>("LastCharge")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("lastcharge");
 
-                    b.Property<string>("UniquePlatformUserId")
-                        .HasColumnType("text")
-                        .HasColumnName("uniqueplatformuserid");
+                b.Property<string>("UniquePlatformUserId")
+                    .HasColumnType("text")
+                    .HasColumnName("uniqueplatformuserid");
 
-                    b.Property<DateTime>("ValidThru")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("validthru");
+                b.Property<DateTime>("ValidThru")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("validthru");
 
-                    b.HasKey("UserId")
-                        .HasName("pk_patrons");
+                b.HasKey("UserId")
+                    .HasName("pk_patrons");
 
-                    b.HasIndex("UniquePlatformUserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_patrons_uniqueplatformuserid");
+                b.HasIndex("UniquePlatformUserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_patrons_uniqueplatformuserid");
 
-                    b.ToTable("patrons", (string)null);
-                });
+                b.ToTable("patrons", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", 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<int>("Index")
-                        .HasColumnType("integer")
-                        .HasColumnName("index");
+                b.Property<int>("Index")
+                    .HasColumnType("integer")
+                    .HasColumnName("index");
 
-                    b.Property<bool>("IsCustomCommand")
-                        .HasColumnType("boolean")
-                        .HasColumnName("iscustomcommand");
+                b.Property<bool>("IsCustomCommand")
+                    .HasColumnType("boolean")
+                    .HasColumnName("iscustomcommand");
 
-                    b.Property<int>("PrimaryTarget")
-                        .HasColumnType("integer")
-                        .HasColumnName("primarytarget");
+                b.Property<int>("PrimaryTarget")
+                    .HasColumnType("integer")
+                    .HasColumnName("primarytarget");
 
-                    b.Property<decimal>("PrimaryTargetId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("primarytargetid");
+                b.Property<decimal>("PrimaryTargetId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("primarytargetid");
 
-                    b.Property<int>("SecondaryTarget")
-                        .HasColumnType("integer")
-                        .HasColumnName("secondarytarget");
+                b.Property<int>("SecondaryTarget")
+                    .HasColumnType("integer")
+                    .HasColumnName("secondarytarget");
 
-                    b.Property<string>("SecondaryTargetName")
-                        .HasColumnType("text")
-                        .HasColumnName("secondarytargetname");
+                b.Property<string>("SecondaryTargetName")
+                    .HasColumnType("text")
+                    .HasColumnName("secondarytargetname");
 
-                    b.Property<bool>("State")
-                        .HasColumnType("boolean")
-                        .HasColumnName("state");
+                b.Property<bool>("State")
+                    .HasColumnType("boolean")
+                    .HasColumnName("state");
 
-                    b.HasKey("Id")
-                        .HasName("pk_permissions");
+                b.HasKey("Id")
+                    .HasName("pk_permissions");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_permissions_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_permissions_guildconfigid");
 
-                    b.ToTable("permissions", (string)null);
-                });
+                b.ToTable("permissions", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", 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<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.Property<decimal>("MessageId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("messageid");
+                b.Property<decimal>("MessageId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("messageid");
 
-                    b.Property<string>("Password")
-                        .HasColumnType("text")
-                        .HasColumnName("password");
+                b.Property<string>("Password")
+                    .HasColumnType("text")
+                    .HasColumnName("password");
 
-                    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_plantedcurrency");
+                b.HasKey("Id")
+                    .HasName("pk_plantedcurrency");
 
-                    b.HasIndex("ChannelId")
-                        .HasDatabaseName("ix_plantedcurrency_channelid");
+                b.HasIndex("ChannelId")
+                    .HasDatabaseName("ix_plantedcurrency_channelid");
 
-                    b.HasIndex("MessageId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_plantedcurrency_messageid");
+                b.HasIndex("MessageId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_plantedcurrency_messageid");
 
-                    b.ToTable("plantedcurrency", (string)null);
-                });
+                b.ToTable("plantedcurrency", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", 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?>("MusicPlaylistId")
-                        .HasColumnType("integer")
-                        .HasColumnName("musicplaylistid");
+                b.Property<int?>("MusicPlaylistId")
+                    .HasColumnType("integer")
+                    .HasColumnName("musicplaylistid");
 
-                    b.Property<string>("Provider")
-                        .HasColumnType("text")
-                        .HasColumnName("provider");
+                b.Property<string>("Provider")
+                    .HasColumnType("text")
+                    .HasColumnName("provider");
 
-                    b.Property<int>("ProviderType")
-                        .HasColumnType("integer")
-                        .HasColumnName("providertype");
+                b.Property<int>("ProviderType")
+                    .HasColumnType("integer")
+                    .HasColumnName("providertype");
 
-                    b.Property<string>("Query")
-                        .HasColumnType("text")
-                        .HasColumnName("query");
+                b.Property<string>("Query")
+                    .HasColumnType("text")
+                    .HasColumnName("query");
 
-                    b.Property<string>("Title")
-                        .HasColumnType("text")
-                        .HasColumnName("title");
+                b.Property<string>("Title")
+                    .HasColumnType("text")
+                    .HasColumnName("title");
 
-                    b.Property<string>("Uri")
-                        .HasColumnType("text")
-                        .HasColumnName("uri");
+                b.Property<string>("Uri")
+                    .HasColumnType("text")
+                    .HasColumnName("uri");
 
-                    b.HasKey("Id")
-                        .HasName("pk_playlistsong");
+                b.HasKey("Id")
+                    .HasName("pk_playlistsong");
 
-                    b.HasIndex("MusicPlaylistId")
-                        .HasDatabaseName("ix_playlistsong_musicplaylistid");
+                b.HasIndex("MusicPlaylistId")
+                    .HasDatabaseName("ix_playlistsong_musicplaylistid");
 
-                    b.ToTable("playlistsong", (string)null);
-                });
+                b.ToTable("playlistsong", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Quote", 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>("AuthorId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("authorid");
+                b.Property<decimal>("AuthorId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("authorid");
 
-                    b.Property<string>("AuthorName")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("authorname");
+                b.Property<string>("AuthorName")
+                    .IsRequired()
+                    .HasColumnType("text")
+                    .HasColumnName("authorname");
 
-                    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>("Keyword")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("keyword");
+                b.Property<string>("Keyword")
+                    .IsRequired()
+                    .HasColumnType("text")
+                    .HasColumnName("keyword");
 
-                    b.Property<string>("Text")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("text");
+                b.Property<string>("Text")
+                    .IsRequired()
+                    .HasColumnType("text")
+                    .HasColumnName("text");
 
-                    b.HasKey("Id")
-                        .HasName("pk_quotes");
+                b.HasKey("Id")
+                    .HasName("pk_quotes");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_quotes_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_quotes_guildid");
 
-                    b.HasIndex("Keyword")
-                        .HasDatabaseName("ix_quotes_keyword");
+                b.HasIndex("Keyword")
+                    .HasDatabaseName("ix_quotes_keyword");
 
-                    b.ToTable("quotes", (string)null);
-                });
+                b.ToTable("quotes", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", 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<string>("Emote")
-                        .HasMaxLength(100)
-                        .HasColumnType("character varying(100)")
-                        .HasColumnName("emote");
+                b.Property<string>("Emote")
+                    .HasMaxLength(100)
+                    .HasColumnType("character varying(100)")
+                    .HasColumnName("emote");
 
-                    b.Property<int>("Group")
-                        .HasColumnType("integer")
-                        .HasColumnName("group");
+                b.Property<int>("Group")
+                    .HasColumnType("integer")
+                    .HasColumnName("group");
 
-                    b.Property<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<int>("LevelReq")
-                        .HasColumnType("integer")
-                        .HasColumnName("levelreq");
+                b.Property<int>("LevelReq")
+                    .HasColumnType("integer")
+                    .HasColumnName("levelreq");
 
-                    b.Property<decimal>("MessageId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("messageid");
+                b.Property<decimal>("MessageId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("messageid");
 
-                    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_reactionroles");
+                b.HasKey("Id")
+                    .HasName("pk_reactionroles");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_reactionroles_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_reactionroles_guildid");
 
-                    b.HasIndex("MessageId", "Emote")
-                        .IsUnique()
-                        .HasDatabaseName("ix_reactionroles_messageid_emote");
+                b.HasIndex("MessageId", "Emote")
+                    .IsUnique()
+                    .HasDatabaseName("ix_reactionroles_messageid_emote");
 
-                    b.ToTable("reactionroles", (string)null);
-                });
+                b.ToTable("reactionroles", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Reminder", 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<bool>("IsPrivate")
-                        .HasColumnType("boolean")
-                        .HasColumnName("isprivate");
+                b.Property<bool>("IsPrivate")
+                    .HasColumnType("boolean")
+                    .HasColumnName("isprivate");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("text")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("text")
+                    .HasColumnName("message");
 
-                    b.Property<decimal>("ServerId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("serverid");
+                b.Property<decimal>("ServerId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("serverid");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("integer")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("integer")
+                    .HasColumnName("type");
 
-                    b.Property<decimal>("UserId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userid");
+                b.Property<decimal>("UserId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userid");
 
-                    b.Property<DateTime>("When")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("when");
+                b.Property<DateTime>("When")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("when");
 
-                    b.HasKey("Id")
-                        .HasName("pk_reminders");
+                b.HasKey("Id")
+                    .HasName("pk_reminders");
 
-                    b.HasIndex("When")
-                        .HasDatabaseName("ix_reminders_when");
+                b.HasIndex("When")
+                    .HasDatabaseName("ix_reminders_when");
 
-                    b.ToTable("reminders", (string)null);
-                });
+                b.ToTable("reminders", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Repeater", 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.Property<TimeSpan>("Interval")
-                        .HasColumnType("interval")
-                        .HasColumnName("interval");
+                b.Property<TimeSpan>("Interval")
+                    .HasColumnType("interval")
+                    .HasColumnName("interval");
 
-                    b.Property<decimal?>("LastMessageId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("lastmessageid");
+                b.Property<decimal?>("LastMessageId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("lastmessageid");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("text")
-                        .HasColumnName("message");
+                b.Property<string>("Message")
+                    .HasColumnType("text")
+                    .HasColumnName("message");
 
-                    b.Property<bool>("NoRedundant")
-                        .HasColumnType("boolean")
-                        .HasColumnName("noredundant");
+                b.Property<bool>("NoRedundant")
+                    .HasColumnType("boolean")
+                    .HasColumnName("noredundant");
 
-                    b.Property<TimeSpan?>("StartTimeOfDay")
-                        .HasColumnType("interval")
-                        .HasColumnName("starttimeofday");
+                b.Property<TimeSpan?>("StartTimeOfDay")
+                    .HasColumnType("interval")
+                    .HasColumnName("starttimeofday");
 
-                    b.HasKey("Id")
-                        .HasName("pk_repeaters");
+                b.HasKey("Id")
+                    .HasName("pk_repeaters");
 
-                    b.ToTable("repeaters", (string)null);
-                });
+                b.ToTable("repeaters", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", 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>("AmountRewardedThisMonth")
-                        .HasColumnType("bigint")
-                        .HasColumnName("amountrewardedthismonth");
+                b.Property<long>("AmountRewardedThisMonth")
+                    .HasColumnType("bigint")
+                    .HasColumnName("amountrewardedthismonth");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("dateadded");
 
-                    b.Property<DateTime>("LastReward")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("lastreward");
+                b.Property<DateTime>("LastReward")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("lastreward");
 
-                    b.Property<string>("PlatformUserId")
-                        .HasColumnType("text")
-                        .HasColumnName("platformuserid");
+                b.Property<string>("PlatformUserId")
+                    .HasColumnType("text")
+                    .HasColumnName("platformuserid");
 
-                    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_rewardedusers");
+                b.HasKey("Id")
+                    .HasName("pk_rewardedusers");
 
-                    b.HasIndex("PlatformUserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_rewardedusers_platformuserid");
+                b.HasIndex("PlatformUserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_rewardedusers_platformuserid");
 
-                    b.ToTable("rewardedusers", (string)null);
-                });
+                b.ToTable("rewardedusers", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", 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>("Status")
-                        .HasColumnType("text")
-                        .HasColumnName("status");
+                b.Property<string>("Status")
+                    .HasColumnType("text")
+                    .HasColumnName("status");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("integer")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("integer")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_rotatingstatus");
+                b.HasKey("Id")
+                    .HasName("pk_rotatingstatus");
 
-                    b.ToTable("rotatingstatus", (string)null);
-                });
+                b.ToTable("rotatingstatus", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", 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>("Group")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasDefaultValue(0)
-                        .HasColumnName("group");
+                b.Property<int>("Group")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("integer")
+                    .HasDefaultValue(0)
+                    .HasColumnName("group");
 
-                    b.Property<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<int>("LevelRequirement")
-                        .HasColumnType("integer")
-                        .HasColumnName("levelrequirement");
+                b.Property<int>("LevelRequirement")
+                    .HasColumnType("integer")
+                    .HasColumnName("levelrequirement");
 
-                    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_selfassignableroles");
+                b.HasKey("Id")
+                    .HasName("pk_selfassignableroles");
 
-                    b.HasIndex("GuildId", "RoleId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
+                b.HasIndex("GuildId", "RoleId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_selfassignableroles_guildid_roleid");
 
-                    b.ToTable("selfassignableroles", (string)null);
-                });
+                b.ToTable("selfassignableroles", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", 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>("AuthorId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("authorid");
+                b.Property<decimal>("AuthorId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("authorid");
 
-                    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<int?>("GuildConfigId")
-                        .HasColumnType("integer")
-                        .HasColumnName("guildconfigid");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("integer")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<int>("Index")
-                        .HasColumnType("integer")
-                        .HasColumnName("index");
+                b.Property<int>("Index")
+                    .HasColumnType("integer")
+                    .HasColumnName("index");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("text")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("text")
+                    .HasColumnName("name");
 
-                    b.Property<int>("Price")
-                        .HasColumnType("integer")
-                        .HasColumnName("price");
+                b.Property<int>("Price")
+                    .HasColumnType("integer")
+                    .HasColumnName("price");
 
-                    b.Property<decimal>("RoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("roleid");
+                b.Property<decimal>("RoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("roleid");
 
-                    b.Property<string>("RoleName")
-                        .HasColumnType("text")
-                        .HasColumnName("rolename");
+                b.Property<string>("RoleName")
+                    .HasColumnType("text")
+                    .HasColumnName("rolename");
 
-                    b.Property<decimal?>("RoleRequirement")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("rolerequirement");
+                b.Property<decimal?>("RoleRequirement")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("rolerequirement");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("integer")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("integer")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_shopentry");
+                b.HasKey("Id")
+                    .HasName("pk_shopentry");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_shopentry_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_shopentry_guildconfigid");
 
-                    b.ToTable("shopentry", (string)null);
-                });
+                b.ToTable("shopentry", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", 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?>("ShopEntryId")
-                        .HasColumnType("integer")
-                        .HasColumnName("shopentryid");
+                b.Property<int?>("ShopEntryId")
+                    .HasColumnType("integer")
+                    .HasColumnName("shopentryid");
 
-                    b.Property<string>("Text")
-                        .HasColumnType("text")
-                        .HasColumnName("text");
+                b.Property<string>("Text")
+                    .HasColumnType("text")
+                    .HasColumnName("text");
 
-                    b.HasKey("Id")
-                        .HasName("pk_shopentryitem");
+                b.HasKey("Id")
+                    .HasName("pk_shopentryitem");
 
-                    b.HasIndex("ShopEntryId")
-                        .HasDatabaseName("ix_shopentryitem_shopentryid");
+                b.HasIndex("ShopEntryId")
+                    .HasDatabaseName("ix_shopentryitem_shopentryid");
 
-                    b.ToTable("shopentryitem", (string)null);
-                });
+                b.ToTable("shopentryitem", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", 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<decimal>("RoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("roleid");
+                b.Property<decimal>("RoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("roleid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_slowmodeignoredrole");
+                b.HasKey("Id")
+                    .HasName("pk_slowmodeignoredrole");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_slowmodeignoredrole_guildconfigid");
 
-                    b.ToTable("slowmodeignoredrole", (string)null);
-                });
+                b.ToTable("slowmodeignoredrole", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", 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<decimal>("UserId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userid");
+                b.Property<decimal>("UserId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_slowmodeignoreduser");
+                b.HasKey("Id")
+                    .HasName("pk_slowmodeignoreduser");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_slowmodeignoreduser_guildconfigid");
 
-                    b.ToTable("slowmodeignoreduser", (string)null);
-                });
+                b.ToTable("slowmodeignoreduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StickyRole", 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<string>("RoleIds")
-                        .HasColumnType("text")
-                        .HasColumnName("roleids");
+                b.Property<string>("RoleIds")
+                    .HasColumnType("text")
+                    .HasColumnName("roleids");
 
-                    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_stickyroles");
+                b.HasKey("Id")
+                    .HasName("pk_stickyroles");
 
-                    b.HasIndex("GuildId", "UserId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_stickyroles_guildid_userid");
+                b.HasIndex("GuildId", "UserId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_stickyroles_guildid_userid");
 
-                    b.ToTable("stickyroles", (string)null);
-                });
+                b.ToTable("stickyroles", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", 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>("MessageId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("messageid");
+                b.Property<decimal>("MessageId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("messageid");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("text")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("text")
+                    .HasColumnName("name");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("integer")
-                        .HasColumnName("type");
+                b.Property<int>("Type")
+                    .HasColumnType("integer")
+                    .HasColumnName("type");
 
-                    b.HasKey("Id")
-                        .HasName("pk_streamonlinemessages");
+                b.HasKey("Id")
+                    .HasName("pk_streamonlinemessages");
 
-                    b.ToTable("streamonlinemessages", (string)null);
-                });
+                b.ToTable("streamonlinemessages", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", 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>("StreamRoleSettingsId")
-                        .HasColumnType("integer")
-                        .HasColumnName("streamrolesettingsid");
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("integer")
+                    .HasColumnName("streamrolesettingsid");
 
-                    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_streamroleblacklisteduser");
+                b.HasKey("Id")
+                    .HasName("pk_streamroleblacklisteduser");
 
-                    b.HasIndex("StreamRoleSettingsId")
-                        .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
+                b.HasIndex("StreamRoleSettingsId")
+                    .HasDatabaseName("ix_streamroleblacklisteduser_streamrolesettingsid");
 
-                    b.ToTable("streamroleblacklisteduser", (string)null);
-                });
+                b.ToTable("streamroleblacklisteduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", 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>("AddRoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("addroleid");
+                b.Property<decimal>("AddRoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("addroleid");
 
-                    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>("Enabled")
-                        .HasColumnType("boolean")
-                        .HasColumnName("enabled");
+                b.Property<bool>("Enabled")
+                    .HasColumnType("boolean")
+                    .HasColumnName("enabled");
 
-                    b.Property<decimal>("FromRoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("fromroleid");
+                b.Property<decimal>("FromRoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("fromroleid");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("integer")
-                        .HasColumnName("guildconfigid");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("integer")
+                    .HasColumnName("guildconfigid");
 
-                    b.Property<string>("Keyword")
-                        .HasColumnType("text")
-                        .HasColumnName("keyword");
+                b.Property<string>("Keyword")
+                    .HasColumnType("text")
+                    .HasColumnName("keyword");
 
-                    b.HasKey("Id")
-                        .HasName("pk_streamrolesettings");
+                b.HasKey("Id")
+                    .HasName("pk_streamrolesettings");
 
-                    b.HasIndex("GuildConfigId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_streamrolesettings_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_streamrolesettings_guildconfigid");
 
-                    b.ToTable("streamrolesettings", (string)null);
-                });
+                b.ToTable("streamrolesettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", 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>("StreamRoleSettingsId")
-                        .HasColumnType("integer")
-                        .HasColumnName("streamrolesettingsid");
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("integer")
+                    .HasColumnName("streamrolesettingsid");
 
-                    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_streamrolewhitelisteduser");
+                b.HasKey("Id")
+                    .HasName("pk_streamrolewhitelisteduser");
 
-                    b.HasIndex("StreamRoleSettingsId")
-                        .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
+                b.HasIndex("StreamRoleSettingsId")
+                    .HasDatabaseName("ix_streamrolewhitelisteduser_streamrolesettingsid");
 
-                    b.ToTable("streamrolewhitelisteduser", (string)null);
-                });
+                b.ToTable("streamrolewhitelisteduser", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.TodoModel", 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?>("ArchiveId")
-                        .HasColumnType("integer")
-                        .HasColumnName("archiveid");
+                b.Property<int?>("ArchiveId")
+                    .HasColumnType("integer")
+                    .HasColumnName("archiveid");
 
-                    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>("IsDone")
-                        .HasColumnType("boolean")
-                        .HasColumnName("isdone");
+                b.Property<bool>("IsDone")
+                    .HasColumnType("boolean")
+                    .HasColumnName("isdone");
 
-                    b.Property<string>("Todo")
-                        .HasColumnType("text")
-                        .HasColumnName("todo");
+                b.Property<string>("Todo")
+                    .HasColumnType("text")
+                    .HasColumnName("todo");
 
-                    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_todos");
+                b.HasKey("Id")
+                    .HasName("pk_todos");
 
-                    b.HasIndex("ArchiveId")
-                        .HasDatabaseName("ix_todos_archiveid");
+                b.HasIndex("ArchiveId")
+                    .HasDatabaseName("ix_todos_archiveid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_todos_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_todos_userid");
 
-                    b.ToTable("todos", (string)null);
-                });
+                b.ToTable("todos", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", 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<DateTime>("UnbanAt")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("unbanat");
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("unbanat");
 
-                    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_unbantimer");
+                b.HasKey("Id")
+                    .HasName("pk_unbantimer");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_unbantimer_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_unbantimer_guildconfigid");
 
-                    b.ToTable("unbantimer", (string)null);
-                });
+                b.ToTable("unbantimer", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", 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<DateTime>("UnmuteAt")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("unmuteat");
+                b.Property<DateTime>("UnmuteAt")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("unmuteat");
 
-                    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_unmutetimer");
+                b.HasKey("Id")
+                    .HasName("pk_unmutetimer");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_unmutetimer_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_unmutetimer_guildconfigid");
 
-                    b.ToTable("unmutetimer", (string)null);
-                });
+                b.ToTable("unmutetimer", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", 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<decimal>("RoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("roleid");
+                b.Property<decimal>("RoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("roleid");
 
-                    b.Property<DateTime>("UnbanAt")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("unbanat");
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("unbanat");
 
-                    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_unroletimer");
+                b.HasKey("Id")
+                    .HasName("pk_unroletimer");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_unroletimer_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_unroletimer_guildconfigid");
 
-                    b.ToTable("unroletimer", (string)null);
-                });
+                b.ToTable("unroletimer", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", 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>("AwardedXp")
-                        .HasColumnType("bigint")
-                        .HasColumnName("awardedxp");
+                b.Property<long>("AwardedXp")
+                    .HasColumnType("bigint")
+                    .HasColumnName("awardedxp");
 
-                    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>("NotifyOnLevelUp")
-                        .HasColumnType("integer")
-                        .HasColumnName("notifyonlevelup");
+                b.Property<int>("NotifyOnLevelUp")
+                    .HasColumnType("integer")
+                    .HasColumnName("notifyonlevelup");
 
-                    b.Property<decimal>("UserId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userid");
+                b.Property<decimal>("UserId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userid");
 
-                    b.Property<long>("Xp")
-                        .HasColumnType("bigint")
-                        .HasColumnName("xp");
+                b.Property<long>("Xp")
+                    .HasColumnType("bigint")
+                    .HasColumnName("xp");
 
-                    b.HasKey("Id")
-                        .HasName("pk_userxpstats");
+                b.HasKey("Id")
+                    .HasName("pk_userxpstats");
 
-                    b.HasIndex("AwardedXp")
-                        .HasDatabaseName("ix_userxpstats_awardedxp");
+                b.HasIndex("AwardedXp")
+                    .HasDatabaseName("ix_userxpstats_awardedxp");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_userxpstats_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_userxpstats_guildid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_userxpstats_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_userxpstats_userid");
 
-                    b.HasIndex("Xp")
-                        .HasDatabaseName("ix_userxpstats_xp");
+                b.HasIndex("Xp")
+                    .HasDatabaseName("ix_userxpstats_xp");
 
-                    b.HasIndex("UserId", "GuildId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_userxpstats_userid_guildid");
+                b.HasIndex("UserId", "GuildId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_userxpstats_userid_guildid");
 
-                    b.ToTable("userxpstats", (string)null);
-                });
+                b.ToTable("userxpstats", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", 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<decimal>("RoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("roleid");
+                b.Property<decimal>("RoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("roleid");
 
-                    b.Property<decimal>("VoiceChannelId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("voicechannelid");
+                b.Property<decimal>("VoiceChannelId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("voicechannelid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_vcroleinfo");
+                b.HasKey("Id")
+                    .HasName("pk_vcroleinfo");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_vcroleinfo_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_vcroleinfo_guildconfigid");
 
-                    b.ToTable("vcroleinfo", (string)null);
-                });
+                b.ToTable("vcroleinfo", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", 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?>("AffinityId")
-                        .HasColumnType("integer")
-                        .HasColumnName("affinityid");
+                b.Property<int?>("AffinityId")
+                    .HasColumnType("integer")
+                    .HasColumnName("affinityid");
 
-                    b.Property<int?>("ClaimerId")
-                        .HasColumnType("integer")
-                        .HasColumnName("claimerid");
+                b.Property<int?>("ClaimerId")
+                    .HasColumnType("integer")
+                    .HasColumnName("claimerid");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("timestamp without time zone")
-                        .HasColumnName("dateadded");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("timestamp without time zone")
+                    .HasColumnName("dateadded");
 
-                    b.Property<long>("Price")
-                        .HasColumnType("bigint")
-                        .HasColumnName("price");
+                b.Property<long>("Price")
+                    .HasColumnType("bigint")
+                    .HasColumnName("price");
 
-                    b.Property<int>("WaifuId")
-                        .HasColumnType("integer")
-                        .HasColumnName("waifuid");
+                b.Property<int>("WaifuId")
+                    .HasColumnType("integer")
+                    .HasColumnName("waifuid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_waifuinfo");
+                b.HasKey("Id")
+                    .HasName("pk_waifuinfo");
 
-                    b.HasIndex("AffinityId")
-                        .HasDatabaseName("ix_waifuinfo_affinityid");
+                b.HasIndex("AffinityId")
+                    .HasDatabaseName("ix_waifuinfo_affinityid");
 
-                    b.HasIndex("ClaimerId")
-                        .HasDatabaseName("ix_waifuinfo_claimerid");
+                b.HasIndex("ClaimerId")
+                    .HasDatabaseName("ix_waifuinfo_claimerid");
 
-                    b.HasIndex("Price")
-                        .HasDatabaseName("ix_waifuinfo_price");
+                b.HasIndex("Price")
+                    .HasDatabaseName("ix_waifuinfo_price");
 
-                    b.HasIndex("WaifuId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_waifuinfo_waifuid");
+                b.HasIndex("WaifuId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_waifuinfo_waifuid");
 
-                    b.ToTable("waifuinfo", (string)null);
-                });
+                b.ToTable("waifuinfo", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", 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>("ItemEmoji")
-                        .HasColumnType("text")
-                        .HasColumnName("itememoji");
+                b.Property<string>("ItemEmoji")
+                    .HasColumnType("text")
+                    .HasColumnName("itememoji");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("text")
-                        .HasColumnName("name");
+                b.Property<string>("Name")
+                    .HasColumnType("text")
+                    .HasColumnName("name");
 
-                    b.Property<int?>("WaifuInfoId")
-                        .HasColumnType("integer")
-                        .HasColumnName("waifuinfoid");
+                b.Property<int?>("WaifuInfoId")
+                    .HasColumnType("integer")
+                    .HasColumnName("waifuinfoid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_waifuitem");
+                b.HasKey("Id")
+                    .HasName("pk_waifuitem");
 
-                    b.HasIndex("WaifuInfoId")
-                        .HasDatabaseName("ix_waifuitem_waifuinfoid");
+                b.HasIndex("WaifuInfoId")
+                    .HasDatabaseName("ix_waifuitem_waifuinfoid");
 
-                    b.ToTable("waifuitem", (string)null);
-                });
+                b.ToTable("waifuitem", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", 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?>("NewId")
-                        .HasColumnType("integer")
-                        .HasColumnName("newid");
+                b.Property<int?>("NewId")
+                    .HasColumnType("integer")
+                    .HasColumnName("newid");
 
-                    b.Property<int?>("OldId")
-                        .HasColumnType("integer")
-                        .HasColumnName("oldid");
+                b.Property<int?>("OldId")
+                    .HasColumnType("integer")
+                    .HasColumnName("oldid");
 
-                    b.Property<int>("UpdateType")
-                        .HasColumnType("integer")
-                        .HasColumnName("updatetype");
+                b.Property<int>("UpdateType")
+                    .HasColumnType("integer")
+                    .HasColumnName("updatetype");
 
-                    b.Property<int>("UserId")
-                        .HasColumnType("integer")
-                        .HasColumnName("userid");
+                b.Property<int>("UserId")
+                    .HasColumnType("integer")
+                    .HasColumnName("userid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_waifuupdates");
+                b.HasKey("Id")
+                    .HasName("pk_waifuupdates");
 
-                    b.HasIndex("NewId")
-                        .HasDatabaseName("ix_waifuupdates_newid");
+                b.HasIndex("NewId")
+                    .HasDatabaseName("ix_waifuupdates_newid");
 
-                    b.HasIndex("OldId")
-                        .HasDatabaseName("ix_waifuupdates_oldid");
+                b.HasIndex("OldId")
+                    .HasDatabaseName("ix_waifuupdates_oldid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_waifuupdates_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_waifuupdates_userid");
 
-                    b.ToTable("waifuupdates", (string)null);
-                });
+                b.ToTable("waifuupdates", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Warning", 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<bool>("Forgiven")
-                        .HasColumnType("boolean")
-                        .HasColumnName("forgiven");
+                b.Property<bool>("Forgiven")
+                    .HasColumnType("boolean")
+                    .HasColumnName("forgiven");
 
-                    b.Property<string>("ForgivenBy")
-                        .HasColumnType("text")
-                        .HasColumnName("forgivenby");
+                b.Property<string>("ForgivenBy")
+                    .HasColumnType("text")
+                    .HasColumnName("forgivenby");
 
-                    b.Property<decimal>("GuildId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("guildid");
+                b.Property<decimal>("GuildId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("guildid");
 
-                    b.Property<string>("Moderator")
-                        .HasColumnType("text")
-                        .HasColumnName("moderator");
+                b.Property<string>("Moderator")
+                    .HasColumnType("text")
+                    .HasColumnName("moderator");
 
-                    b.Property<string>("Reason")
-                        .HasColumnType("text")
-                        .HasColumnName("reason");
+                b.Property<string>("Reason")
+                    .HasColumnType("text")
+                    .HasColumnName("reason");
 
-                    b.Property<decimal>("UserId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("userid");
+                b.Property<decimal>("UserId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("userid");
 
-                    b.Property<long>("Weight")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("bigint")
-                        .HasDefaultValue(1L)
-                        .HasColumnName("weight");
+                b.Property<long>("Weight")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("bigint")
+                    .HasDefaultValue(1L)
+                    .HasColumnName("weight");
 
-                    b.HasKey("Id")
-                        .HasName("pk_warnings");
+                b.HasKey("Id")
+                    .HasName("pk_warnings");
 
-                    b.HasIndex("DateAdded")
-                        .HasDatabaseName("ix_warnings_dateadded");
+                b.HasIndex("DateAdded")
+                    .HasDatabaseName("ix_warnings_dateadded");
 
-                    b.HasIndex("GuildId")
-                        .HasDatabaseName("ix_warnings_guildid");
+                b.HasIndex("GuildId")
+                    .HasDatabaseName("ix_warnings_guildid");
 
-                    b.HasIndex("UserId")
-                        .HasDatabaseName("ix_warnings_userid");
+                b.HasIndex("UserId")
+                    .HasDatabaseName("ix_warnings_userid");
 
-                    b.ToTable("warnings", (string)null);
-                });
+                b.ToTable("warnings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", 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>("Count")
-                        .HasColumnType("integer")
-                        .HasColumnName("count");
+                b.Property<int>("Count")
+                    .HasColumnType("integer")
+                    .HasColumnName("count");
 
-                    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>("Punishment")
-                        .HasColumnType("integer")
-                        .HasColumnName("punishment");
+                b.Property<int>("Punishment")
+                    .HasColumnType("integer")
+                    .HasColumnName("punishment");
 
-                    b.Property<decimal?>("RoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("roleid");
+                b.Property<decimal?>("RoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("roleid");
 
-                    b.Property<int>("Time")
-                        .HasColumnType("integer")
-                        .HasColumnName("time");
+                b.Property<int>("Time")
+                    .HasColumnType("integer")
+                    .HasColumnName("time");
 
-                    b.HasKey("Id")
-                        .HasName("pk_warningpunishment");
+                b.HasKey("Id")
+                    .HasName("pk_warningpunishment");
 
-                    b.HasIndex("GuildConfigId")
-                        .HasDatabaseName("ix_warningpunishment_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .HasDatabaseName("ix_warningpunishment_guildconfigid");
 
-                    b.ToTable("warningpunishment", (string)null);
-                });
+                b.ToTable("warningpunishment", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", 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>("Amount")
-                        .HasColumnType("integer")
-                        .HasColumnName("amount");
+                b.Property<int>("Amount")
+                    .HasColumnType("integer")
+                    .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<int>("Level")
-                        .HasColumnType("integer")
-                        .HasColumnName("level");
+                b.Property<int>("Level")
+                    .HasColumnType("integer")
+                    .HasColumnName("level");
 
-                    b.Property<int>("XpSettingsId")
-                        .HasColumnType("integer")
-                        .HasColumnName("xpsettingsid");
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("integer")
+                    .HasColumnName("xpsettingsid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xpcurrencyreward");
+                b.HasKey("Id")
+                    .HasName("pk_xpcurrencyreward");
 
-                    b.HasIndex("XpSettingsId")
-                        .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
+                b.HasIndex("XpSettingsId")
+                    .HasDatabaseName("ix_xpcurrencyreward_xpsettingsid");
 
-                    b.ToTable("xpcurrencyreward", (string)null);
-                });
+                b.ToTable("xpcurrencyreward", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", 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>("Level")
-                        .HasColumnType("integer")
-                        .HasColumnName("level");
+                b.Property<int>("Level")
+                    .HasColumnType("integer")
+                    .HasColumnName("level");
 
-                    b.Property<bool>("Remove")
-                        .HasColumnType("boolean")
-                        .HasColumnName("remove");
+                b.Property<bool>("Remove")
+                    .HasColumnType("boolean")
+                    .HasColumnName("remove");
 
-                    b.Property<decimal>("RoleId")
-                        .HasColumnType("numeric(20,0)")
-                        .HasColumnName("roleid");
+                b.Property<decimal>("RoleId")
+                    .HasColumnType("numeric(20,0)")
+                    .HasColumnName("roleid");
 
-                    b.Property<int>("XpSettingsId")
-                        .HasColumnType("integer")
-                        .HasColumnName("xpsettingsid");
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("integer")
+                    .HasColumnName("xpsettingsid");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xprolereward");
+                b.HasKey("Id")
+                    .HasName("pk_xprolereward");
 
-                    b.HasIndex("XpSettingsId", "Level")
-                        .IsUnique()
-                        .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
+                b.HasIndex("XpSettingsId", "Level")
+                    .IsUnique()
+                    .HasDatabaseName("ix_xprolereward_xpsettingsid_level");
 
-                    b.ToTable("xprolereward", (string)null);
-                });
+                b.ToTable("xprolereward", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", 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<bool>("ServerExcluded")
-                        .HasColumnType("boolean")
-                        .HasColumnName("serverexcluded");
+                b.Property<bool>("ServerExcluded")
+                    .HasColumnType("boolean")
+                    .HasColumnName("serverexcluded");
 
-                    b.HasKey("Id")
-                        .HasName("pk_xpsettings");
+                b.HasKey("Id")
+                    .HasName("pk_xpsettings");
 
-                    b.HasIndex("GuildConfigId")
-                        .IsUnique()
-                        .HasDatabaseName("ix_xpsettings_guildconfigid");
+                b.HasIndex("GuildConfigId")
+                    .IsUnique()
+                    .HasDatabaseName("ix_xpsettings_guildconfigid");
 
-                    b.ToTable("xpsettings", (string)null);
-                });
+                b.ToTable("xpsettings", (string)null);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", 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<bool>("IsUsing")
-                        .HasColumnType("boolean")
-                        .HasColumnName("isusing");
+                b.Property<bool>("IsUsing")
+                    .HasColumnType("boolean")
+                    .HasColumnName("isusing");
 
-                    b.Property<string>("ItemKey")
-                        .IsRequired()
-                        .HasColumnType("text")
-                        .HasColumnName("itemkey");
+                b.Property<string>("ItemKey")
+                    .IsRequired()
+                    .HasColumnType("text")
+                    .HasColumnName("itemkey");
 
-                    b.Property<int>("ItemType")
-                        .HasColumnType("integer")
-                        .HasColumnName("itemtype");
+                b.Property<int>("ItemType")
+                    .HasColumnType("integer")
+                    .HasColumnName("itemtype");
 
-                    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_xpshopowneditem");
+                b.HasKey("Id")
+                    .HasName("pk_xpshopowneditem");
 
-                    b.HasIndex("UserId", "ItemType", "ItemKey")
-                        .IsUnique()
-                        .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
+                b.HasIndex("UserId", "ItemType", "ItemKey")
+                    .IsUnique()
+                    .HasDatabaseName("ix_xpshopowneditem_userid_itemtype_itemkey");
 
-                    b.ToTable("xpshopowneditem", (string)null);
-                });
+                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")
+                    .HasColumnType("integer")
+                    .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")
+                    .HasColumnType("boolean")
+                    .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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                    .WithMany("Users")
+                    .HasForeignKey("ChannelId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_autotranslateusers_autotranslatechannels_channelid");
 
-                    b.Navigation("Channel");
-                });
+                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.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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_clubapplicants_discorduser_userid");
 
-                    b.Navigation("Club");
+                b.Navigation("Club");
 
-                    b.Navigation("User");
-                });
+                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.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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_clubbans_discorduser_userid");
 
-                    b.Navigation("Club");
+                b.Navigation("Club");
 
-                    b.Navigation("User");
-                });
+                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.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                    .WithOne()
+                    .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                    .OnDelete(DeleteBehavior.SetNull)
+                    .HasConstraintName("fk_clubs_discorduser_ownerid");
 
-                    b.Navigation("Owner");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                    .WithMany("Members")
+                    .HasForeignKey("ClubId")
+                    .OnDelete(DeleteBehavior.NoAction)
+                    .HasConstraintName("fk_discorduser_clubs_clubid");
 
-                    b.Navigation("Club");
-                });
+                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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("ExclusionList")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_excludeditem_xpsettings_xpsettingsid");
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("FeedSubs")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_feedsub_guildconfigs_guildconfigid");
 
-                    b.Navigation("GuildConfig");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("GenerateCurrencyChannelIds")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_gcchannelid_guildconfigs_guildconfigid");
 
-                    b.Navigation("GuildConfig");
-                });
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("SelfAssignableRoleGroupNames")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_groupname_guildconfigs_guildconfigid");
 
-                    b.Navigation("GuildConfig");
-                });
+                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.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                    .WithMany("LogIgnores")
+                    .HasForeignKey("LogSettingId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_ignoredlogchannels_logsettings_logsettingid");
 
-                    b.Navigation("LogSetting");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                    .WithMany("Blacklist")
+                    .HasForeignKey("StreamRoleSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_streamroleblacklisteduser_streamrolesettings_streamrolesett~");
 
-                    b.Navigation("StreamRoleSettings");
-                });
+                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.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");
-                });
+                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.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                    .WithMany("Whitelist")
+                    .HasForeignKey("StreamRoleSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_streamrolewhitelisteduser_streamrolesettings_streamrolesett~");
 
-                    b.Navigation("StreamRoleSettings");
-                });
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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");
-                });
+            {
+                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", "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", "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.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("Affinity");
 
-                    b.Navigation("Claimer");
+                b.Navigation("Claimer");
 
-                    b.Navigation("Waifu");
-                });
+                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.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                    .WithMany("Items")
+                    .HasForeignKey("WaifuInfoId")
+                    .HasConstraintName("fk_waifuitem_waifuinfo_waifuinfoid");
 
-                    b.Navigation("WaifuInfo");
-                });
+                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", "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", "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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_waifuupdates_discorduser_userid");
 
-                    b.Navigation("New");
+                b.Navigation("New");
 
-                    b.Navigation("Old");
+                b.Navigation("Old");
 
-                    b.Navigation("User");
-                });
+                b.Navigation("User");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                        .WithMany("WarnPunishments")
-                        .HasForeignKey("GuildConfigId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .HasConstraintName("fk_warningpunishment_guildconfigs_guildconfigid");
-                });
+            {
+                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                    .WithMany("WarnPunishments")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .HasConstraintName("fk_warningpunishment_guildconfigs_guildconfigid");
+            });
 
             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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("CurrencyRewards")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_xpcurrencyreward_xpsettings_xpsettingsid");
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("RoleRewards")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired()
+                    .HasConstraintName("fk_xprolereward_xpsettings_xpsettingsid");
 
-                    b.Navigation("XpSettings");
-                });
+                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.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");
-                });
+                b.Navigation("GuildConfig");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-                {
-                    b.Navigation("IgnoredChannels");
-                });
+            {
+                b.Navigation("IgnoredChannels");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-                {
-                    b.Navigation("Users");
-                });
+            {
+                b.Navigation("Users");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-                {
-                    b.Navigation("Applicants");
+            {
+                b.Navigation("Applicants");
 
-                    b.Navigation("Bans");
+                b.Navigation("Bans");
 
-                    b.Navigation("Members");
-                });
+                b.Navigation("Members");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-                {
-                    b.Navigation("Participants");
-                });
+            {
+                b.Navigation("Participants");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-                {
-                    b.Navigation("AntiAltSetting");
+            {
+                b.Navigation("AntiAltSetting");
 
-                    b.Navigation("AntiRaidSetting");
+                b.Navigation("AntiRaidSetting");
 
-                    b.Navigation("AntiSpamSetting");
+                b.Navigation("AntiSpamSetting");
 
-                    b.Navigation("CommandAliases");
+                b.Navigation("CommandAliases");
 
-                    b.Navigation("CommandCooldowns");
+                b.Navigation("CommandCooldowns");
 
-                    b.Navigation("DelMsgOnCmdChannels");
+                b.Navigation("DelMsgOnCmdChannels");
 
-                    b.Navigation("FeedSubs");
+                b.Navigation("FeedSubs");
 
-                    b.Navigation("FilterInvitesChannelIds");
+                b.Navigation("FilterInvitesChannelIds");
 
-                    b.Navigation("FilterLinksChannelIds");
+                b.Navigation("FilterLinksChannelIds");
 
-                    b.Navigation("FilterWordsChannelIds");
+                b.Navigation("FilterWordsChannelIds");
 
-                    b.Navigation("FilteredWords");
+                b.Navigation("FilteredWords");
 
-                    b.Navigation("FollowedStreams");
+                b.Navigation("FollowedStreams");
 
-                    b.Navigation("GenerateCurrencyChannelIds");
+                b.Navigation("GenerateCurrencyChannelIds");
 
-                    b.Navigation("MutedUsers");
+                b.Navigation("MutedUsers");
 
-                    b.Navigation("Permissions");
+                b.Navigation("Permissions");
 
-                    b.Navigation("SelfAssignableRoleGroupNames");
+                b.Navigation("SelfAssignableRoleGroupNames");
 
-                    b.Navigation("ShopEntries");
+                b.Navigation("ShopEntries");
 
-                    b.Navigation("SlowmodeIgnoredRoles");
+                b.Navigation("SlowmodeIgnoredRoles");
 
-                    b.Navigation("SlowmodeIgnoredUsers");
+                b.Navigation("SlowmodeIgnoredUsers");
 
-                    b.Navigation("StreamRole");
+                b.Navigation("StreamRole");
 
-                    b.Navigation("UnbanTimer");
+                b.Navigation("UnbanTimer");
 
-                    b.Navigation("UnmuteTimers");
+                b.Navigation("UnmuteTimers");
 
-                    b.Navigation("UnroleTimer");
+                b.Navigation("UnroleTimer");
 
-                    b.Navigation("VcRoleInfos");
+                b.Navigation("VcRoleInfos");
 
-                    b.Navigation("WarnPunishments");
+                b.Navigation("WarnPunishments");
 
-                    b.Navigation("XpSettings");
-                });
+                b.Navigation("XpSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-                {
-                    b.Navigation("LogIgnores");
-                });
+            {
+                b.Navigation("LogIgnores");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-                {
-                    b.Navigation("Songs");
-                });
+            {
+                b.Navigation("Songs");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-                {
-                    b.Navigation("Blacklist");
+            {
+                b.Navigation("Blacklist");
 
-                    b.Navigation("Whitelist");
-                });
+                b.Navigation("Whitelist");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-                {
-                    b.Navigation("CurrencyRewards");
+            {
+                b.Navigation("CurrencyRewards");
 
-                    b.Navigation("ExclusionList");
+                b.Navigation("ExclusionList");
 
-                    b.Navigation("RoleRewards");
-                });
+                b.Navigation("RoleRewards");
+            });
 #pragma warning restore 612, 618
         }
     }
diff --git a/src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.Designer.cs b/src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.Designer.cs
new file mode 100644
index 0000000..54ccb84
--- /dev/null
+++ b/src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.Designer.cs
@@ -0,0 +1,2925 @@
+// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using EllieBot.Db;
+
+#nullable disable
+
+namespace EllieBot.Migrations
+{
+    [DbContext(typeof(SqliteContext))]
+    [Migration("20240911104847_greet-settings")]
+    partial class greetsettings
+    {
+        /// <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<string>("Discriminator")
+                    .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.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.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.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.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<int?>("GuildConfigId")
+                    .HasColumnType("INTEGER");
+
+                b.Property<int>("Punishment")
+                    .HasColumnType("INTEGER");
+
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("INTEGER");
+
+                b.Property<int>("Time")
+                    .HasColumnType("INTEGER");
+
+                b.HasKey("Id");
+
+                b.HasIndex("GuildConfigId");
+
+                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")
+                    .HasColumnType("INTEGER");
+
+                b.Property<ulong?>("ChannelId")
+                    .HasColumnType("INTEGER");
+
+                b.Property<int>("GreetType")
+                    .HasColumnType("INTEGER");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
+
+                b.Property<bool>("IsEnabled")
+                    .HasColumnType("INTEGER");
+
+                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");
+            });
+
+            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.WarningPunishment", b =>
+            {
+                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                    .WithMany("WarnPunishments")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade);
+            });
+
+            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("WarnPunishments");
+
+                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/20240911104847_greet-settings.cs b/src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.cs
new file mode 100644
index 0000000..12448ba
--- /dev/null
+++ b/src/EllieBot/Migrations/Sqlite/20240911104847_greet-settings.cs
@@ -0,0 +1,219 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace EllieBot.Migrations
+{
+    /// <inheritdoc />
+    public partial class greetsettings : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "GreetSettings",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "INTEGER", nullable: false)
+                              .Annotation("Sqlite:Autoincrement", true),
+                    GuildId = table.Column<ulong>(type: "INTEGER", nullable: false),
+                    GreetType = table.Column<int>(type: "INTEGER", nullable: false),
+                    MessageText = table.Column<string>(type: "TEXT", nullable: true),
+                    IsEnabled = table.Column<bool>(type: "INTEGER", nullable: false),
+                    ChannelId = table.Column<ulong>(type: "INTEGER", nullable: true),
+                    AutoDeleteTimer = table.Column<int>(type: "INTEGER", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_GreetSettings", x => x.Id);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_GreetSettings_GuildId_GreetType",
+                table: "GreetSettings",
+                columns: new[] { "GuildId", "GreetType" },
+                unique: true);
+
+
+            migrationBuilder.Sql("""
+                                 INSERT INTO GreetSettings (GuildId, GreetType, MessageText, IsEnabled, ChannelId, AutoDeleteTimer)
+                                 SELECT GuildId, 0, ChannelGreetMessageText, SendChannelGreetMessage, GreetMessageChannelId, AutoDeleteGreetMessagesTimer
+                                 FROM GuildConfigs
+                                 WHERE SendChannelGreetMessage = 1;
+                                 
+                                 INSERT INTO GreetSettings (GuildId, GreetType, MessageText, IsEnabled, ChannelId, AutoDeleteTimer)
+                                 SELECT GuildId, 1, DmGreetMessageText, SendDmGreetMessage, GreetMessageChannelId, 0
+                                 FROM GuildConfigs
+                                 WHERE SendDmGreetMessage = 1;
+                                 
+                                 INSERT INTO GreetSettings (GuildId, GreetType, MessageText, IsEnabled, ChannelId, AutoDeleteTimer)
+                                 SELECT GuildId, 2, ChannelByeMessageText, SendChannelByeMessage, ByeMessageChannelId, AutoDeleteByeMessagesTimer
+                                 FROM GuildConfigs
+                                 WHERE SendChannelByeMessage = 1;
+                                 
+                                 INSERT INTO GreetSettings (GuildId, GreetType, MessageText, IsEnabled, ChannelId, AutoDeleteTimer)
+                                 SELECT GuildId, 3, BoostMessage, SendBoostMessage, BoostMessageChannelId, BoostMessageDeleteAfter
+                                 FROM GuildConfigs
+                                 WHERE SendBoostMessage = 1;
+                                 """);
+
+
+            migrationBuilder.DropColumn(
+                name: "AutoDeleteByeMessagesTimer",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "AutoDeleteGreetMessagesTimer",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "BoostMessage",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "BoostMessageChannelId",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "BoostMessageDeleteAfter",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "ByeMessageChannelId",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "ChannelByeMessageText",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "ChannelGreetMessageText",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "DmGreetMessageText",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "GreetMessageChannelId",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "SendBoostMessage",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "SendChannelByeMessage",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "SendChannelGreetMessage",
+                table: "GuildConfigs");
+
+            migrationBuilder.DropColumn(
+                name: "SendDmGreetMessage",
+                table: "GuildConfigs");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "GreetSettings");
+
+            migrationBuilder.AddColumn<int>(
+                name: "AutoDeleteByeMessagesTimer",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<int>(
+                name: "AutoDeleteGreetMessagesTimer",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<string>(
+                name: "BoostMessage",
+                table: "GuildConfigs",
+                type: "TEXT",
+                nullable: true);
+
+            migrationBuilder.AddColumn<ulong>(
+                name: "BoostMessageChannelId",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: 0ul);
+
+            migrationBuilder.AddColumn<int>(
+                name: "BoostMessageDeleteAfter",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<ulong>(
+                name: "ByeMessageChannelId",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: 0ul);
+
+            migrationBuilder.AddColumn<string>(
+                name: "ChannelByeMessageText",
+                table: "GuildConfigs",
+                type: "TEXT",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "ChannelGreetMessageText",
+                table: "GuildConfigs",
+                type: "TEXT",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "DmGreetMessageText",
+                table: "GuildConfigs",
+                type: "TEXT",
+                nullable: true);
+
+            migrationBuilder.AddColumn<ulong>(
+                name: "GreetMessageChannelId",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: 0ul);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "SendBoostMessage",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "SendChannelByeMessage",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "SendChannelGreetMessage",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: false);
+
+            migrationBuilder.AddColumn<bool>(
+                name: "SendDmGreetMessage",
+                table: "GuildConfigs",
+                type: "INTEGER",
+                nullable: false,
+                defaultValue: false);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs b/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs
index 0b6c04d..0891194 100644
--- a/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs
+++ b/src/EllieBot/Migrations/Sqlite/EllieSqliteContextModelSnapshot.cs
@@ -15,2917 +15,2907 @@ namespace EllieBot.Migrations
         protected override void BuildModel(ModelBuilder modelBuilder)
         {
 #pragma warning disable 612, 618
-            modelBuilder.HasAnnotation("ProductVersion", "8.0.4");
+            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<string>("Discriminator")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Discriminator")
+                    .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.ToTable("DiscordUser");
-                });
+                b.ToTable("DiscordUser");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ExcludedItem", 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>("ItemType")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("ItemType")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int?>("XpSettingsId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("XpSettingsId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("XpSettingsId");
+                b.HasIndex("XpSettingsId");
 
-                    b.ToTable("ExcludedItem");
-                });
+                b.ToTable("ExcludedItem");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FeedSub", 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<string>("Message")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Message")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Url")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
+                b.Property<string>("Url")
+                    .IsRequired()
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasAlternateKey("GuildConfigId", "Url");
+                b.HasAlternateKey("GuildConfigId", "Url");
 
-                    b.ToTable("FeedSub");
-                });
+                b.ToTable("FeedSub");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", 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.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("FilterChannelId");
-                });
+                b.ToTable("FilterChannelId");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterLinksChannelId", 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.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("FilterLinksChannelId");
-                });
+                b.ToTable("FilterLinksChannelId");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterWordsChannelId", 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.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("FilterWordsChannelId");
-                });
+                b.ToTable("FilterWordsChannelId");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilteredWord", 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>("Word")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Word")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("FilteredWord");
-                });
+                b.ToTable("FilteredWord");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FollowedStream", 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<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Message")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Type")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Username")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Username")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("FollowedStream");
-                });
+                b.ToTable("FollowedStream");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GCChannelId", 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.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("GCChannelId");
-                });
+                b.ToTable("GCChannelId");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GamblingStats", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<decimal>("Bet")
-                        .HasColumnType("TEXT");
+                b.Property<decimal>("Bet")
+                    .HasColumnType("TEXT");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Feature")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Feature")
+                    .HasColumnType("TEXT");
 
-                    b.Property<decimal>("PaidOut")
-                        .HasColumnType("TEXT");
+                b.Property<decimal>("PaidOut")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("Feature")
-                        .IsUnique();
+                b.HasIndex("Feature")
+                    .IsUnique();
 
-                    b.ToTable("GamblingStats");
-                });
+                b.ToTable("GamblingStats");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", 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>("EndsAt")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("EndsAt")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Message")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("MessageId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.ToTable("GiveawayModel");
-                });
+                b.ToTable("GiveawayModel");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("GiveawayId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("GiveawayId")
+                    .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.HasIndex("GiveawayId", "UserId")
-                        .IsUnique();
+                b.HasIndex("GiveawayId", "UserId")
+                    .IsUnique();
 
-                    b.ToTable("GiveawayUser");
-                });
+                b.ToTable("GiveawayUser");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GroupName", 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>("Name")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Name")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Number")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Number")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId", "Number")
-                        .IsUnique();
+                b.HasIndex("GuildConfigId", "Number")
+                    .IsUnique();
 
-                    b.ToTable("GroupName");
-                });
+                b.ToTable("GroupName");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("AutoAssignRoleIds")
-                        .HasColumnType("TEXT");
+                b.Property<string>("AutoAssignRoleIds")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("AutoDeleteByeMessagesTimer")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("AutoDeleteGreetMessagesTimer")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("CleverbotEnabled")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages")
-                        .HasColumnType("INTEGER");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("BoostMessage")
-                        .HasColumnType("TEXT");
+                b.Property<bool>("DeleteMessageOnCommand")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("BoostMessageChannelId")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("DeleteStreamOnlineMessage")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("BoostMessageDeleteAfter")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("DisableGlobalExpressions")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("ByeMessageChannelId")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("ExclusiveSelfAssignedRoles")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("ChannelByeMessageText")
-                        .HasColumnType("TEXT");
+                b.Property<bool>("FilterInvites")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("ChannelGreetMessageText")
-                        .HasColumnType("TEXT");
+                b.Property<bool>("FilterLinks")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("CleverbotEnabled")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("FilterWords")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<ulong?>("GameVoiceChannel")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("DeleteMessageOnCommand")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("DeleteStreamOnlineMessage")
-                        .HasColumnType("INTEGER");
+                b.Property<string>("Locale")
+                    .HasColumnType("TEXT");
 
-                    b.Property<bool>("DisableGlobalExpressions")
-                        .HasColumnType("INTEGER");
+                b.Property<string>("MuteRoleName")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("DmGreetMessageText")
-                        .HasColumnType("TEXT");
+                b.Property<bool>("NotifyStreamOffline")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("ExclusiveSelfAssignedRoles")
-                        .HasColumnType("INTEGER");
+                b.Property<string>("PermissionRole")
+                    .HasColumnType("TEXT");
 
-                    b.Property<bool>("FilterInvites")
-                        .HasColumnType("INTEGER");
+                b.Property<string>("Prefix")
+                    .HasColumnType("TEXT");
 
-                    b.Property<bool>("FilterLinks")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("StickyRoles")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("FilterWords")
-                        .HasColumnType("INTEGER");
+                b.Property<string>("TimeZoneId")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong?>("GameVoiceChannel")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("VerboseErrors")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER")
+                    .HasDefaultValue(true);
 
-                    b.Property<ulong>("GreetMessageChannelId")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("VerbosePermissions")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("WarnExpireAction")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Locale")
-                        .HasColumnType("TEXT");
+                b.Property<int>("WarnExpireHours")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("MuteRoleName")
-                        .HasColumnType("TEXT");
+                b.Property<bool>("WarningsInitialized")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("NotifyStreamOffline")
-                        .HasColumnType("INTEGER");
+                b.HasKey("Id");
 
-                    b.Property<string>("PermissionRole")
-                        .HasColumnType("TEXT");
+                b.HasIndex("GuildId")
+                    .IsUnique();
 
-                    b.Property<string>("Prefix")
-                        .HasColumnType("TEXT");
+                b.HasIndex("WarnExpireHours");
 
-                    b.Property<bool>("SendBoostMessage")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("SendChannelByeMessage")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("SendChannelGreetMessage")
-                        .HasColumnType("INTEGER");
-
-                    b.Property<bool>("SendDmGreetMessage")
-                        .HasColumnType("INTEGER");
-
-                    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");
-                });
+                b.ToTable("GuildConfigs");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.HoneypotChannel", b =>
-                {
-                    b.Property<ulong>("GuildId")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<ulong>("GuildId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("ChannelId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("ChannelId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("GuildId");
+                b.HasKey("GuildId");
 
-                    b.ToTable("HoneyPotChannels");
-                });
+                b.ToTable("HoneyPotChannels");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.IgnoredLogItem", 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>("ItemType")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("ItemType")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("LogItemId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("LogItemId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("LogSettingId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("LogSettingId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("LogSettingId", "LogItemId", "ItemType")
-                        .IsUnique();
+                b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+                    .IsUnique();
 
-                    b.ToTable("IgnoredLogChannels");
-                });
+                b.ToTable("IgnoredLogChannels");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ImageOnlyChannel", 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.Property<int>("Type")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Type")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("ChannelId")
-                        .IsUnique();
+                b.HasIndex("ChannelId")
+                    .IsUnique();
 
-                    b.ToTable("ImageOnlyChannels");
-                });
+                b.ToTable("ImageOnlyChannels");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("ChannelCreatedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("ChannelCreatedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("ChannelDestroyedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("ChannelDestroyedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("ChannelUpdatedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("ChannelUpdatedId")
+                    .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<ulong?>("LogOtherId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("LogOtherId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("LogUserPresenceId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("LogUserPresenceId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("LogVoicePresenceId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("LogVoicePresenceId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("LogVoicePresenceTTSId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("LogVoicePresenceTTSId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("LogWarnsId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("LogWarnsId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("MessageDeletedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("MessageDeletedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("MessageUpdatedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("MessageUpdatedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("ThreadCreatedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("ThreadCreatedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("ThreadDeletedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("ThreadDeletedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("UserBannedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("UserBannedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("UserJoinedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("UserJoinedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("UserLeftId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("UserLeftId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("UserMutedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("UserMutedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("UserUnbannedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("UserUnbannedId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("UserUpdatedId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("UserUpdatedId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildId")
-                        .IsUnique();
+                b.HasIndex("GuildId")
+                    .IsUnique();
 
-                    b.ToTable("LogSettings");
-                });
+                b.ToTable("LogSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlayerSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("AutoDisconnect")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("AutoDisconnect")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("AutoPlay")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("AutoPlay")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("MusicChannelId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("MusicChannelId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("PlayerRepeat")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("PlayerRepeat")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("QualityPreset")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("QualityPreset")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Volume")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER")
-                        .HasDefaultValue(100);
+                b.Property<int>("Volume")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER")
+                    .HasDefaultValue(100);
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildId")
-                        .IsUnique();
+                b.HasIndex("GuildId")
+                    .IsUnique();
 
-                    b.ToTable("MusicPlayerSettings");
-                });
+                b.ToTable("MusicPlayerSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Author")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Author")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("AuthorId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Name")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.ToTable("MusicPlaylists");
-                });
+                b.ToTable("MusicPlaylists");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", 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<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("MutedUserId");
-                });
+                b.ToTable("MutedUserId");
+            });
 
             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");
-                });
+                b.ToTable("Expressions");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PatronUser", b =>
-                {
-                    b.Property<ulong>("UserId")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<ulong>("UserId")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("AmountCents")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("AmountCents")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime>("LastCharge")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("LastCharge")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("UniquePlatformUserId")
-                        .HasColumnType("TEXT");
+                b.Property<string>("UniquePlatformUserId")
+                    .HasColumnType("TEXT");
 
-                    b.Property<DateTime>("ValidThru")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("ValidThru")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("UserId");
+                b.HasKey("UserId");
 
-                    b.HasIndex("UniquePlatformUserId")
-                        .IsUnique();
+                b.HasIndex("UniquePlatformUserId")
+                    .IsUnique();
 
-                    b.ToTable("Patrons");
-                });
+                b.ToTable("Patrons");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Permissionv2", 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<int>("Index")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Index")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("IsCustomCommand")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("IsCustomCommand")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("PrimaryTarget")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("PrimaryTarget")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("PrimaryTargetId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("PrimaryTargetId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("SecondaryTarget")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("SecondaryTarget")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("SecondaryTargetName")
-                        .HasColumnType("TEXT");
+                b.Property<string>("SecondaryTargetName")
+                    .HasColumnType("TEXT");
 
-                    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("Permissions");
-                });
+                b.ToTable("Permissions");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PlantedCurrency", 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<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.Property<ulong>("MessageId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Password")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Password")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("ChannelId");
+                b.HasIndex("ChannelId");
 
-                    b.HasIndex("MessageId")
-                        .IsUnique();
+                b.HasIndex("MessageId")
+                    .IsUnique();
 
-                    b.ToTable("PlantedCurrency");
-                });
+                b.ToTable("PlantedCurrency");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.PlaylistSong", 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?>("MusicPlaylistId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("MusicPlaylistId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Provider")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Provider")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("ProviderType")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("ProviderType")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Query")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Query")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Title")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Title")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Uri")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Uri")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("MusicPlaylistId");
+                b.HasIndex("MusicPlaylistId");
 
-                    b.ToTable("PlaylistSong");
-                });
+                b.ToTable("PlaylistSong");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Quote", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("AuthorId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("AuthorId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("AuthorName")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
+                b.Property<string>("AuthorName")
+                    .IsRequired()
+                    .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>("Keyword")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
+                b.Property<string>("Keyword")
+                    .IsRequired()
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Text")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
+                b.Property<string>("Text")
+                    .IsRequired()
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildId");
+                b.HasIndex("GuildId");
 
-                    b.HasIndex("Keyword");
+                b.HasIndex("Keyword");
 
-                    b.ToTable("Quotes");
-                });
+                b.ToTable("Quotes");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ReactionRoleV2", 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<string>("Emote")
-                        .HasMaxLength(100)
-                        .HasColumnType("TEXT");
+                b.Property<string>("Emote")
+                    .HasMaxLength(100)
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Group")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Group")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("LevelReq")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("LevelReq")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("MessageId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildId");
+                b.HasIndex("GuildId");
 
-                    b.HasIndex("MessageId", "Emote")
-                        .IsUnique();
+                b.HasIndex("MessageId", "Emote")
+                    .IsUnique();
 
-                    b.ToTable("ReactionRoles");
-                });
+                b.ToTable("ReactionRoles");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Reminder", 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<bool>("IsPrivate")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("IsPrivate")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Message")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("ServerId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("ServerId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Type")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime>("When")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("When")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("When");
+                b.HasIndex("When");
 
-                    b.ToTable("Reminders");
-                });
+                b.ToTable("Reminders");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Repeater", 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.Property<TimeSpan>("Interval")
-                        .HasColumnType("TEXT");
+                b.Property<TimeSpan>("Interval")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong?>("LastMessageId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("LastMessageId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Message")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Message")
+                    .HasColumnType("TEXT");
 
-                    b.Property<bool>("NoRedundant")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("NoRedundant")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<TimeSpan?>("StartTimeOfDay")
-                        .HasColumnType("TEXT");
+                b.Property<TimeSpan?>("StartTimeOfDay")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.ToTable("Repeaters");
-                });
+                b.ToTable("Repeaters");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.RewardedUser", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<long>("AmountRewardedThisMonth")
-                        .HasColumnType("INTEGER");
+                b.Property<long>("AmountRewardedThisMonth")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<DateTime>("LastReward")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("LastReward")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("PlatformUserId")
-                        .HasColumnType("TEXT");
+                b.Property<string>("PlatformUserId")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("PlatformUserId")
-                        .IsUnique();
+                b.HasIndex("PlatformUserId")
+                    .IsUnique();
 
-                    b.ToTable("RewardedUsers");
-                });
+                b.ToTable("RewardedUsers");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.RotatingPlayingStatus", 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>("Status")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Status")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Type")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.ToTable("RotatingStatus");
-                });
+                b.ToTable("RotatingStatus");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SelfAssignedRole", 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>("Group")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER")
-                        .HasDefaultValue(0);
+                b.Property<int>("Group")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER")
+                    .HasDefaultValue(0);
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("LevelRequirement")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("LevelRequirement")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildId", "RoleId")
-                        .IsUnique();
+                b.HasIndex("GuildId", "RoleId")
+                    .IsUnique();
 
-                    b.ToTable("SelfAssignableRoles");
-                });
+                b.ToTable("SelfAssignableRoles");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("AuthorId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("AuthorId")
+                    .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<int?>("GuildConfigId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("GuildConfigId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Index")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Index")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Name")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Price")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Price")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("RoleName")
-                        .HasColumnType("TEXT");
+                b.Property<string>("RoleName")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong?>("RoleRequirement")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("RoleRequirement")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Type")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("ShopEntry");
-                });
+                b.ToTable("ShopEntry");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntryItem", 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?>("ShopEntryId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("ShopEntryId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Text")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Text")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("ShopEntryId");
+                b.HasIndex("ShopEntryId");
 
-                    b.ToTable("ShopEntryItem");
-                });
+                b.ToTable("ShopEntryItem");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredRole", 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<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("SlowmodeIgnoredRole");
-                });
+                b.ToTable("SlowmodeIgnoredRole");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.SlowmodeIgnoredUser", 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<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("SlowmodeIgnoredUser");
-                });
+                b.ToTable("SlowmodeIgnoredUser");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StickyRole", 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<string>("RoleIds")
-                        .HasColumnType("TEXT");
+                b.Property<string>("RoleIds")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildId", "UserId")
-                        .IsUnique();
+                b.HasIndex("GuildId", "UserId")
+                    .IsUnique();
 
-                    b.ToTable("StickyRoles");
-                });
+                b.ToTable("StickyRoles");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamOnlineMessage", 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>("MessageId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("MessageId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Name")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Type")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Type")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.ToTable("StreamOnlineMessages");
-                });
+                b.ToTable("StreamOnlineMessages");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleBlacklistedUser", 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>("StreamRoleSettingsId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("INTEGER");
 
-                    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.HasIndex("StreamRoleSettingsId");
+                b.HasIndex("StreamRoleSettingsId");
 
-                    b.ToTable("StreamRoleBlacklistedUser");
-                });
+                b.ToTable("StreamRoleBlacklistedUser");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("AddRoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("AddRoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<bool>("Enabled")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("Enabled")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("FromRoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("FromRoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("GuildConfigId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("GuildConfigId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Keyword")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Keyword")
+                    .HasColumnType("TEXT");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId")
-                        .IsUnique();
+                b.HasIndex("GuildConfigId")
+                    .IsUnique();
 
-                    b.ToTable("StreamRoleSettings");
-                });
+                b.ToTable("StreamRoleSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleWhitelistedUser", 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>("StreamRoleSettingsId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("StreamRoleSettingsId")
+                    .HasColumnType("INTEGER");
 
-                    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.HasIndex("StreamRoleSettingsId");
+                b.HasIndex("StreamRoleSettingsId");
 
-                    b.ToTable("StreamRoleWhitelistedUser");
-                });
+                b.ToTable("StreamRoleWhitelistedUser");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int?>("ArchiveId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("ArchiveId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<bool>("IsDone")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("IsDone")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Todo")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Todo")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("ArchiveId");
+                b.HasIndex("ArchiveId");
 
-                    b.HasIndex("UserId");
+                b.HasIndex("UserId");
 
-                    b.ToTable("Todos");
-                });
+                b.ToTable("Todos");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnbanTimer", 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<DateTime>("UnbanAt")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("UnbanTimer");
-                });
+                b.ToTable("UnbanTimer");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnmuteTimer", 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<DateTime>("UnmuteAt")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("UnmuteAt")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("UnmuteTimer");
-                });
+                b.ToTable("UnmuteTimer");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UnroleTimer", 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<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime>("UnbanAt")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime>("UnbanAt")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("UnroleTimer");
-                });
+                b.ToTable("UnroleTimer");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.UserXpStats", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<long>("AwardedXp")
-                        .HasColumnType("INTEGER");
+                b.Property<long>("AwardedXp")
+                    .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>("NotifyOnLevelUp")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("NotifyOnLevelUp")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<long>("Xp")
-                        .HasColumnType("INTEGER");
+                b.Property<long>("Xp")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("AwardedXp");
+                b.HasIndex("AwardedXp");
 
-                    b.HasIndex("GuildId");
+                b.HasIndex("GuildId");
 
-                    b.HasIndex("UserId");
+                b.HasIndex("UserId");
 
-                    b.HasIndex("Xp");
+                b.HasIndex("Xp");
 
-                    b.HasIndex("UserId", "GuildId")
-                        .IsUnique();
+                b.HasIndex("UserId", "GuildId")
+                    .IsUnique();
 
-                    b.ToTable("UserXpStats");
-                });
+                b.ToTable("UserXpStats");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.VcRoleInfo", 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<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("VoiceChannelId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("VoiceChannelId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("VcRoleInfo");
-                });
+                b.ToTable("VcRoleInfo");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int?>("AffinityId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("AffinityId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int?>("ClaimerId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("ClaimerId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<long>("Price")
-                        .HasColumnType("INTEGER");
+                b.Property<long>("Price")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("WaifuId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("WaifuId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("AffinityId");
+                b.HasIndex("AffinityId");
 
-                    b.HasIndex("ClaimerId");
+                b.HasIndex("ClaimerId");
 
-                    b.HasIndex("Price");
+                b.HasIndex("Price");
 
-                    b.HasIndex("WaifuId")
-                        .IsUnique();
+                b.HasIndex("WaifuId")
+                    .IsUnique();
 
-                    b.ToTable("WaifuInfo");
-                });
+                b.ToTable("WaifuInfo");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", 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>("ItemEmoji")
-                        .HasColumnType("TEXT");
+                b.Property<string>("ItemEmoji")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Name")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Name")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int?>("WaifuInfoId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("WaifuInfoId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("WaifuInfoId");
+                b.HasIndex("WaifuInfoId");
 
-                    b.ToTable("WaifuItem");
-                });
+                b.ToTable("WaifuItem");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuUpdate", 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?>("NewId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("NewId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int?>("OldId")
-                        .HasColumnType("INTEGER");
+                b.Property<int?>("OldId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("UpdateType")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("UpdateType")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("NewId");
+                b.HasIndex("NewId");
 
-                    b.HasIndex("OldId");
+                b.HasIndex("OldId");
 
-                    b.HasIndex("UserId");
+                b.HasIndex("UserId");
 
-                    b.ToTable("WaifuUpdates");
-                });
+                b.ToTable("WaifuUpdates");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.Warning", 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<bool>("Forgiven")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("Forgiven")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("ForgivenBy")
-                        .HasColumnType("TEXT");
+                b.Property<string>("ForgivenBy")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("GuildId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("Moderator")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Moderator")
+                    .HasColumnType("TEXT");
 
-                    b.Property<string>("Reason")
-                        .HasColumnType("TEXT");
+                b.Property<string>("Reason")
+                    .HasColumnType("TEXT");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<long>("Weight")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER")
-                        .HasDefaultValue(1L);
+                b.Property<long>("Weight")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER")
+                    .HasDefaultValue(1L);
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("DateAdded");
+                b.HasIndex("DateAdded");
 
-                    b.HasIndex("GuildId");
+                b.HasIndex("GuildId");
 
-                    b.HasIndex("UserId");
+                b.HasIndex("UserId");
 
-                    b.ToTable("Warnings");
-                });
+                b.ToTable("Warnings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Count")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Count")
+                    .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>("Punishment")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Punishment")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong?>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong?>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Time")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Time")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId");
+                b.HasIndex("GuildConfigId");
 
-                    b.ToTable("WarningPunishment");
-                });
+                b.ToTable("WarningPunishment");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("INTEGER");
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("Amount")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Amount")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<DateTime?>("DateAdded")
-                        .HasColumnType("TEXT");
+                b.Property<DateTime?>("DateAdded")
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("Level")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Level")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("XpSettingsId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("XpSettingsId");
+                b.HasIndex("XpSettingsId");
 
-                    b.ToTable("XpCurrencyReward");
-                });
+                b.ToTable("XpCurrencyReward");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpRoleReward", 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>("Level")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("Level")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<bool>("Remove")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("Remove")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("RoleId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("RoleId")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<int>("XpSettingsId")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("XpSettingsId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("XpSettingsId", "Level")
-                        .IsUnique();
+                b.HasIndex("XpSettingsId", "Level")
+                    .IsUnique();
 
-                    b.ToTable("XpRoleReward");
-                });
+                b.ToTable("XpRoleReward");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", 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<bool>("ServerExcluded")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("ServerExcluded")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("GuildConfigId")
-                        .IsUnique();
+                b.HasIndex("GuildConfigId")
+                    .IsUnique();
 
-                    b.ToTable("XpSettings");
-                });
+                b.ToTable("XpSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpShopOwnedItem", 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<bool>("IsUsing")
-                        .HasColumnType("INTEGER");
+                b.Property<bool>("IsUsing")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<string>("ItemKey")
-                        .IsRequired()
-                        .HasColumnType("TEXT");
+                b.Property<string>("ItemKey")
+                    .IsRequired()
+                    .HasColumnType("TEXT");
 
-                    b.Property<int>("ItemType")
-                        .HasColumnType("INTEGER");
+                b.Property<int>("ItemType")
+                    .HasColumnType("INTEGER");
 
-                    b.Property<ulong>("UserId")
-                        .HasColumnType("INTEGER");
+                b.Property<ulong>("UserId")
+                    .HasColumnType("INTEGER");
 
-                    b.HasKey("Id");
+                b.HasKey("Id");
 
-                    b.HasIndex("UserId", "ItemType", "ItemKey")
-                        .IsUnique();
+                b.HasIndex("UserId", "ItemType", "ItemKey")
+                    .IsUnique();
 
-                    b.ToTable("XpShopOwnedItem");
-                });
+                b.ToTable("XpShopOwnedItem");
+            });
+
+            modelBuilder.Entity("EllieBot.Services.GreetSettings", b =>
+            {
+                b.Property<int>("Id")
+                    .ValueGeneratedOnAdd()
+                    .HasColumnType("INTEGER");
+
+                b.Property<int>("AutoDeleteTimer")
+                    .HasColumnType("INTEGER");
+
+                b.Property<ulong?>("ChannelId")
+                    .HasColumnType("INTEGER");
+
+                b.Property<int>("GreetType")
+                    .HasColumnType("INTEGER");
+
+                b.Property<ulong>("GuildId")
+                    .HasColumnType("INTEGER");
+
+                b.Property<bool>("IsEnabled")
+                    .HasColumnType("INTEGER");
+
+                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();
-                });
+            {
+                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();
-                });
+            {
+                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);
-                });
+            {
+                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();
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.AutoTranslateChannel", "Channel")
+                    .WithMany("Users")
+                    .HasForeignKey("ChannelId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("Channel");
-                });
+                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.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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("Club");
+                b.Navigation("Club");
 
-                    b.Navigation("User");
-                });
+                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.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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("Club");
+                b.Navigation("Club");
 
-                    b.Navigation("User");
-                });
+                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.HasOne("EllieBot.Db.Models.DiscordUser", "Owner")
+                    .WithOne()
+                    .HasForeignKey("EllieBot.Db.Models.ClubInfo", "OwnerId")
+                    .OnDelete(DeleteBehavior.SetNull);
 
-                    b.Navigation("Owner");
-                });
+                b.Navigation("Owner");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.CommandAlias", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                        .WithMany("CommandAliases")
-                        .HasForeignKey("GuildConfigId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
+            {
+                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);
-                });
+            {
+                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();
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.ClubInfo", "Club")
+                    .WithMany("Members")
+                    .HasForeignKey("ClubId")
+                    .OnDelete(DeleteBehavior.NoAction);
 
-                    b.Navigation("Club");
-                });
+                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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("ExclusionList")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade);
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("FeedSubs")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("GuildConfig");
-                });
+                b.Navigation("GuildConfig");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.FilterChannelId", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                        .WithMany("FilterInvitesChannelIds")
-                        .HasForeignKey("GuildConfigId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("GenerateCurrencyChannelIds")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade);
 
-                    b.Navigation("GuildConfig");
-                });
+                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();
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithMany("SelfAssignableRoleGroupNames")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("GuildConfig");
-                });
+                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.HasOne("EllieBot.Db.Models.LogSetting", "LogSetting")
+                    .WithMany("LogIgnores")
+                    .HasForeignKey("LogSettingId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("LogSetting");
-                });
+                b.Navigation("LogSetting");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MutedUserId", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                        .WithMany("MutedUsers")
-                        .HasForeignKey("GuildConfigId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                    .WithMany("Blacklist")
+                    .HasForeignKey("StreamRoleSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("StreamRoleSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithOne("StreamRole")
+                    .HasForeignKey("EllieBot.Db.Models.StreamRoleSettings", "GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("GuildConfig");
-                });
+                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.HasOne("EllieBot.Db.Models.StreamRoleSettings", "StreamRoleSettings")
+                    .WithMany("Whitelist")
+                    .HasForeignKey("StreamRoleSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("StreamRoleSettings");
-                });
+                b.Navigation("StreamRoleSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.TodoModel", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.ArchivedTodoListModel", null)
-                        .WithMany("Items")
-                        .HasForeignKey("ArchiveId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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);
-                });
+            {
+                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", "Affinity")
+                    .WithMany()
+                    .HasForeignKey("AffinityId");
 
-                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Claimer")
-                        .WithMany()
-                        .HasForeignKey("ClaimerId");
+                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.HasOne("EllieBot.Db.Models.DiscordUser", "Waifu")
+                    .WithOne()
+                    .HasForeignKey("EllieBot.Db.Models.WaifuInfo", "WaifuId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("Affinity");
+                b.Navigation("Affinity");
 
-                    b.Navigation("Claimer");
+                b.Navigation("Claimer");
 
-                    b.Navigation("Waifu");
-                });
+                b.Navigation("Waifu");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuItem", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
-                        .WithMany("Items")
-                        .HasForeignKey("WaifuInfoId");
+            {
+                b.HasOne("EllieBot.Db.Models.WaifuInfo", "WaifuInfo")
+                    .WithMany("Items")
+                    .HasForeignKey("WaifuInfoId");
 
-                    b.Navigation("WaifuInfo");
-                });
+                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", "New")
+                    .WithMany()
+                    .HasForeignKey("NewId");
 
-                    b.HasOne("EllieBot.Db.Models.DiscordUser", "Old")
-                        .WithMany()
-                        .HasForeignKey("OldId");
+                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.HasOne("EllieBot.Db.Models.DiscordUser", "User")
+                    .WithMany()
+                    .HasForeignKey("UserId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("New");
+                b.Navigation("New");
 
-                    b.Navigation("Old");
+                b.Navigation("Old");
 
-                    b.Navigation("User");
-                });
+                b.Navigation("User");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WarningPunishment", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.GuildConfig", null)
-                        .WithMany("WarnPunishments")
-                        .HasForeignKey("GuildConfigId")
-                        .OnDelete(DeleteBehavior.Cascade);
-                });
+            {
+                b.HasOne("EllieBot.Db.Models.GuildConfig", null)
+                    .WithMany("WarnPunishments")
+                    .HasForeignKey("GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade);
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpCurrencyReward", b =>
-                {
-                    b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
-                        .WithMany("CurrencyRewards")
-                        .HasForeignKey("XpSettingsId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
+            {
+                b.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("CurrencyRewards")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.XpSettings", "XpSettings")
+                    .WithMany("RoleRewards")
+                    .HasForeignKey("XpSettingsId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("XpSettings");
-                });
+                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.HasOne("EllieBot.Db.Models.GuildConfig", "GuildConfig")
+                    .WithOne("XpSettings")
+                    .HasForeignKey("EllieBot.Db.Models.XpSettings", "GuildConfigId")
+                    .OnDelete(DeleteBehavior.Cascade)
+                    .IsRequired();
 
-                    b.Navigation("GuildConfig");
-                });
+                b.Navigation("GuildConfig");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.AntiSpamSetting", b =>
-                {
-                    b.Navigation("IgnoredChannels");
-                });
+            {
+                b.Navigation("IgnoredChannels");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ArchivedTodoListModel", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.AutoTranslateChannel", b =>
-                {
-                    b.Navigation("Users");
-                });
+            {
+                b.Navigation("Users");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ClubInfo", b =>
-                {
-                    b.Navigation("Applicants");
+            {
+                b.Navigation("Applicants");
 
-                    b.Navigation("Bans");
+                b.Navigation("Bans");
 
-                    b.Navigation("Members");
-                });
+                b.Navigation("Members");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GiveawayModel", b =>
-                {
-                    b.Navigation("Participants");
-                });
+            {
+                b.Navigation("Participants");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.GuildConfig", b =>
-                {
-                    b.Navigation("AntiAltSetting");
+            {
+                b.Navigation("AntiAltSetting");
 
-                    b.Navigation("AntiRaidSetting");
+                b.Navigation("AntiRaidSetting");
 
-                    b.Navigation("AntiSpamSetting");
+                b.Navigation("AntiSpamSetting");
 
-                    b.Navigation("CommandAliases");
+                b.Navigation("CommandAliases");
 
-                    b.Navigation("CommandCooldowns");
+                b.Navigation("CommandCooldowns");
 
-                    b.Navigation("DelMsgOnCmdChannels");
+                b.Navigation("DelMsgOnCmdChannels");
 
-                    b.Navigation("FeedSubs");
+                b.Navigation("FeedSubs");
 
-                    b.Navigation("FilterInvitesChannelIds");
+                b.Navigation("FilterInvitesChannelIds");
 
-                    b.Navigation("FilterLinksChannelIds");
+                b.Navigation("FilterLinksChannelIds");
 
-                    b.Navigation("FilterWordsChannelIds");
+                b.Navigation("FilterWordsChannelIds");
 
-                    b.Navigation("FilteredWords");
+                b.Navigation("FilteredWords");
 
-                    b.Navigation("FollowedStreams");
+                b.Navigation("FollowedStreams");
 
-                    b.Navigation("GenerateCurrencyChannelIds");
+                b.Navigation("GenerateCurrencyChannelIds");
 
-                    b.Navigation("MutedUsers");
+                b.Navigation("MutedUsers");
 
-                    b.Navigation("Permissions");
+                b.Navigation("Permissions");
 
-                    b.Navigation("SelfAssignableRoleGroupNames");
+                b.Navigation("SelfAssignableRoleGroupNames");
 
-                    b.Navigation("ShopEntries");
+                b.Navigation("ShopEntries");
 
-                    b.Navigation("SlowmodeIgnoredRoles");
+                b.Navigation("SlowmodeIgnoredRoles");
 
-                    b.Navigation("SlowmodeIgnoredUsers");
+                b.Navigation("SlowmodeIgnoredUsers");
 
-                    b.Navigation("StreamRole");
+                b.Navigation("StreamRole");
 
-                    b.Navigation("UnbanTimer");
+                b.Navigation("UnbanTimer");
 
-                    b.Navigation("UnmuteTimers");
+                b.Navigation("UnmuteTimers");
 
-                    b.Navigation("UnroleTimer");
+                b.Navigation("UnroleTimer");
 
-                    b.Navigation("VcRoleInfos");
+                b.Navigation("VcRoleInfos");
 
-                    b.Navigation("WarnPunishments");
+                b.Navigation("WarnPunishments");
 
-                    b.Navigation("XpSettings");
-                });
+                b.Navigation("XpSettings");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.LogSetting", b =>
-                {
-                    b.Navigation("LogIgnores");
-                });
+            {
+                b.Navigation("LogIgnores");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.MusicPlaylist", b =>
-                {
-                    b.Navigation("Songs");
-                });
+            {
+                b.Navigation("Songs");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.ShopEntry", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.StreamRoleSettings", b =>
-                {
-                    b.Navigation("Blacklist");
+            {
+                b.Navigation("Blacklist");
 
-                    b.Navigation("Whitelist");
-                });
+                b.Navigation("Whitelist");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.WaifuInfo", b =>
-                {
-                    b.Navigation("Items");
-                });
+            {
+                b.Navigation("Items");
+            });
 
             modelBuilder.Entity("EllieBot.Db.Models.XpSettings", b =>
-                {
-                    b.Navigation("CurrencyRewards");
+            {
+                b.Navigation("CurrencyRewards");
 
-                    b.Navigation("ExclusionList");
+                b.Navigation("ExclusionList");
 
-                    b.Navigation("RoleRewards");
-                });
+                b.Navigation("RoleRewards");
+            });
 #pragma warning restore 612, 618
         }
     }
diff --git a/src/EllieBot/Modules/Administration/GreetBye/GreetCommands.cs b/src/EllieBot/Modules/Administration/GreetBye/GreetCommands.cs
index 104e4e7..b473326 100644
--- a/src/EllieBot/Modules/Administration/GreetBye/GreetCommands.cs
+++ b/src/EllieBot/Modules/Administration/GreetBye/GreetCommands.cs
@@ -5,238 +5,223 @@ public partial class Administration
     [Group]
     public partial class GreetCommands : EllieModule<GreetService>
     {
-        [Cmd]
-        [RequireContext(ContextType.Guild)]
-        [UserPerm(GuildPerm.ManageGuild)]
-        public async Task Boost()
+        public async Task Toggle(GreetType type)
         {
-            var enabled = await _service.ToggleBoost(ctx.Guild.Id, ctx.Channel.Id);
+            var enabled = await _service.SetGreet(ctx.Guild.Id, ctx.Channel.Id, type);
 
             if (enabled)
-                await Response().Confirm(strs.boost_on).SendAsync();
+                await Response()
+                      .Confirm(
+                          type switch
+                          {
+                              GreetType.Boost => strs.boost_on,
+                              GreetType.Greet => strs.greet_on,
+                              GreetType.Bye => strs.bye_on,
+                              GreetType.GreetDm => strs.greetdm_on,
+                              _ => strs.error
+                          }
+                      )
+                      .SendAsync();
             else
-                await Response().Pending(strs.boost_off).SendAsync();
+                await Response()
+                      .Pending(
+                          type switch
+                          {
+                              GreetType.Boost => strs.boost_off,
+                              GreetType.Greet => strs.greet_off,
+                              GreetType.Bye => strs.bye_off,
+                              GreetType.GreetDm => strs.greetdm_off,
+                              _ => strs.error
+                          }
+                      )
+                      .SendAsync();
         }
 
-        [Cmd]
-        [RequireContext(ContextType.Guild)]
-        [UserPerm(GuildPerm.ManageGuild)]
-        public async Task BoostDel(int timer = 30)
+
+        public async Task SetDel(GreetType type, int timer)
         {
             if (timer is < 0 or > 600)
                 return;
 
-            await _service.SetBoostDel(ctx.Guild.Id, timer);
+            await _service.SetDeleteTimer(ctx.Guild.Id, type, timer);
 
             if (timer > 0)
-                await Response().Confirm(strs.boostdel_on(timer)).SendAsync();
+                await Response()
+                      .Confirm(
+                          type switch
+                          {
+                              GreetType.Boost => strs.boostdel_on(timer),
+                              GreetType.Greet => strs.greetdel_on(timer),
+                              GreetType.Bye => strs.byedel_on(timer),
+                              _ => strs.error
+                          }
+                      )
+                      .SendAsync();
             else
-                await Response().Pending(strs.boostdel_off).SendAsync();
+                await Response()
+                      .Pending(
+                          type switch
+                          {
+                              GreetType.Boost => strs.boostdel_off,
+                              GreetType.Greet => strs.greetdel_off,
+                              GreetType.Bye => strs.byedel_off,
+                              _ => strs.error
+                          })
+                      .SendAsync();
         }
 
-        [Cmd]
-        [RequireContext(ContextType.Guild)]
-        [UserPerm(GuildPerm.ManageGuild)]
-        public async Task BoostMsg([Leftover] string? text = null)
+
+        public async Task SetMsg(GreetType type, string? text = null)
         {
             if (string.IsNullOrWhiteSpace(text))
             {
-                var boostMessage = _service.GetBoostMessage(ctx.Guild.Id);
-                await Response().Confirm(strs.boostmsg_cur(boostMessage?.SanitizeMentions())).SendAsync();
+                await _service.SetMessage(ctx.Guild.Id, type, null);
+                var conf = await _service.GetGreetSettingsAsync(ctx.Guild.Id, type);
+                var msg = conf?.MessageText ?? "No message set.";
+                await Response()
+                      .Confirm(
+                          type switch
+                          {
+                              GreetType.Boost => strs.boostmsg_cur(msg.SanitizeMentions()),
+                              GreetType.Greet => strs.greetmsg_cur(msg.SanitizeMentions()),
+                              GreetType.Bye => strs.byemsg_cur(msg.SanitizeMentions()),
+                              GreetType.GreetDm => strs.greetdmmsg_cur(msg.SanitizeMentions()),
+                              _ => strs.error
+                          })
+                      .SendAsync();
                 return;
             }
 
-            var sendBoostEnabled = _service.SetBoostMessage(ctx.Guild.Id, ref text);
+            var isEnabled = await _service.SetMessage(ctx.Guild.Id, type, text);
 
-            await Response().Confirm(strs.boostmsg_new).SendAsync();
-            if (!sendBoostEnabled)
-                await Response().Pending(strs.boostmsg_enable($"`{prefix}boost`")).SendAsync();
-        }
+            await Response()
+                  .Confirm(type switch
+                  {
+                      GreetType.Boost => strs.boostmsg_new,
+                      GreetType.Greet => strs.greetmsg_new,
+                      GreetType.Bye => strs.byemsg_new,
+                      GreetType.GreetDm => strs.greetdmmsg_new,
+                      _ => strs.error
+                  })
+                  .SendAsync();
 
-        [Cmd]
-        [RequireContext(ContextType.Guild)]
-        [UserPerm(GuildPerm.ManageGuild)]
-        public async Task GreetDel(int timer = 30)
-        {
-            if (timer is < 0 or > 600)
-                return;
 
-            await _service.SetGreetDel(ctx.Guild.Id, timer);
-
-            if (timer > 0)
-                await Response().Confirm(strs.greetdel_on(timer)).SendAsync();
-            else
-                await Response().Pending(strs.greetdel_off).SendAsync();
-        }
-
-        [Cmd]
-        [RequireContext(ContextType.Guild)]
-        [UserPerm(GuildPerm.ManageGuild)]
-        public async Task Greet()
-        {
-            var enabled = await _service.SetGreet(ctx.Guild.Id, ctx.Channel.Id);
-
-            if (enabled)
-                await Response().Confirm(strs.greet_on).SendAsync();
-            else
-                await Response().Pending(strs.greet_off).SendAsync();
-        }
-
-        [Cmd]
-        [RequireContext(ContextType.Guild)]
-        [UserPerm(GuildPerm.ManageGuild)]
-        public async Task GreetMsg([Leftover] string? text = null)
-        {
-            if (string.IsNullOrWhiteSpace(text))
+            if (!isEnabled)
             {
-                var greetMsg = _service.GetGreetMsg(ctx.Guild.Id);
-                await Response().Confirm(strs.greetmsg_cur(greetMsg?.SanitizeMentions())).SendAsync();
-                return;
+                var cmdName = type switch
+                {
+                    GreetType.Greet => "greet",
+                    GreetType.Bye => "bye",
+                    GreetType.Boost => "boost",
+                    GreetType.GreetDm => "greetdm",
+                    _ => "unknown_command"
+                };
+
+                await Response().Pending(strs.boostmsg_enable($"`{prefix}{cmdName}`")).SendAsync();
             }
-
-            var sendGreetEnabled = _service.SetGreetMessage(ctx.Guild.Id, ref text);
-
-            await Response().Confirm(strs.greetmsg_new).SendAsync();
-
-            if (!sendGreetEnabled)
-                await Response().Pending(strs.greetmsg_enable($"`{prefix}greet`")).SendAsync();
         }
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
-        public async Task GreetDm()
-        {
-            var enabled = await _service.SetGreetDm(ctx.Guild.Id);
-
-            if (enabled)
-                await Response().Confirm(strs.greetdm_on).SendAsync();
-            else
-                await Response().Confirm(strs.greetdm_off).SendAsync();
-        }
+        public Task Boost()
+            => Toggle(GreetType.Boost);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
-        public async Task GreetDmMsg([Leftover] string? text = null)
-        {
-            if (string.IsNullOrWhiteSpace(text))
-            {
-                var dmGreetMsg = _service.GetDmGreetMsg(ctx.Guild.Id);
-                await Response().Confirm(strs.greetdmmsg_cur(dmGreetMsg?.SanitizeMentions())).SendAsync();
-                return;
-            }
-
-            var sendGreetEnabled = _service.SetGreetDmMessage(ctx.Guild.Id, ref text);
-
-            await Response().Confirm(strs.greetdmmsg_new).SendAsync();
-            if (!sendGreetEnabled)
-                await Response().Pending(strs.greetdmmsg_enable($"`{prefix}greetdm`")).SendAsync();
-        }
+        public Task BoostDel(int timer = 30)
+            => SetDel(GreetType.Boost, timer);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
-        public async Task Bye()
-        {
-            var enabled = await _service.SetBye(ctx.Guild.Id, ctx.Channel.Id);
-
-            if (enabled)
-                await Response().Confirm(strs.bye_on).SendAsync();
-            else
-                await Response().Confirm(strs.bye_off).SendAsync();
-        }
+        public Task BoostMsg([Leftover] string? text = null)
+            => SetMsg(GreetType.Boost, text);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
-        public async Task ByeMsg([Leftover] string? text = null)
-        {
-            if (string.IsNullOrWhiteSpace(text))
-            {
-                var byeMsg = _service.GetByeMessage(ctx.Guild.Id);
-                await Response().Confirm(strs.byemsg_cur(byeMsg?.SanitizeMentions())).SendAsync();
-                return;
-            }
-
-            var sendByeEnabled = _service.SetByeMessage(ctx.Guild.Id, ref text);
-
-            await Response().Confirm(strs.byemsg_new).SendAsync();
-            if (!sendByeEnabled)
-                await Response().Pending(strs.byemsg_enable($"`{prefix}bye`")).SendAsync();
-        }
+        public Task Greet()
+            => Toggle(GreetType.Greet);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
-        public async Task ByeDel(int timer = 30)
-        {
-            await _service.SetByeDel(ctx.Guild.Id, timer);
+        public Task GreetDel(int timer = 30)
+            => SetDel(GreetType.Greet, timer);
 
-            if (timer > 0)
-                await Response().Confirm(strs.byedel_on(timer)).SendAsync();
-            else
-                await Response().Pending(strs.byedel_off).SendAsync();
-        }
+        [Cmd]
+        [RequireContext(ContextType.Guild)]
+        [UserPerm(GuildPerm.ManageGuild)]
+        public Task GreetMsg([Leftover] string? text = null)
+            => SetMsg(GreetType.Greet, text);
 
+        [Cmd]
+        [RequireContext(ContextType.Guild)]
+        [UserPerm(GuildPerm.ManageGuild)]
+        public Task GreetDm()
+            => Toggle(GreetType.GreetDm);
+
+        [Cmd]
+        [RequireContext(ContextType.Guild)]
+        [UserPerm(GuildPerm.ManageGuild)]
+        public Task GreetDmMsg([Leftover] string? text = null)
+            => SetMsg(GreetType.GreetDm, text);
+
+        [Cmd]
+        [RequireContext(ContextType.Guild)]
+        [UserPerm(GuildPerm.ManageGuild)]
+        public Task Bye()
+            => Toggle(GreetType.Bye);
+
+        [Cmd]
+        [RequireContext(ContextType.Guild)]
+        [UserPerm(GuildPerm.ManageGuild)]
+        public Task ByeDel(int timer = 30)
+            => SetDel(GreetType.Bye, timer);
+
+        [Cmd]
+        [RequireContext(ContextType.Guild)]
+        [UserPerm(GuildPerm.ManageGuild)]
+        public Task ByeMsg([Leftover] string? text = null)
+            => SetMsg(GreetType.Bye, text);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
         [Ratelimit(5)]
-        public async Task ByeTest([Leftover] IGuildUser? user = null)
-        {
-            user ??= (IGuildUser)ctx.User;
-
-            await _service.ByeTest((ITextChannel)ctx.Channel, user);
-            var enabled = _service.GetByeEnabled(ctx.Guild.Id);
-            if (!enabled)
-                await Response().Pending(strs.byemsg_enable($"`{prefix}bye`")).SendAsync();
-        }
+        public Task GreetTest([Leftover] IGuildUser? user = null)
+            => Test(GreetType.Greet, user);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
         [Ratelimit(5)]
-        public async Task GreetTest([Leftover] IGuildUser? user = null)
-        {
-            user ??= (IGuildUser)ctx.User;
-
-            await _service.GreetTest((ITextChannel)ctx.Channel, user);
-            var enabled = _service.GetGreetEnabled(ctx.Guild.Id);
-            if (!enabled)
-                await Response().Pending(strs.greetmsg_enable($"`{prefix}greet`")).SendAsync();
-        }
+        public Task GreetDmTest([Leftover] IGuildUser? user = null)
+            => Test(GreetType.GreetDm, user);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
         [Ratelimit(5)]
-        public async Task GreetDmTest([Leftover] IGuildUser? user = null)
-        {
-            user ??= (IGuildUser)ctx.User;
-
-            var success = await _service.GreetDmTest(user);
-            if (success)
-                await ctx.OkAsync();
-            else
-                await ctx.WarningAsync();
-            var enabled = _service.GetGreetDmEnabled(ctx.Guild.Id);
-            if (!enabled)
-                await Response().Pending(strs.greetdmmsg_enable($"`{prefix}greetdm`")).SendAsync();
-        }
+        public Task ByeTest([Leftover] IGuildUser? user = null)
+            => Test(GreetType.Bye, user);
 
         [Cmd]
         [RequireContext(ContextType.Guild)]
         [UserPerm(GuildPerm.ManageGuild)]
         [Ratelimit(5)]
-        public async Task BoostTest([Leftover] IGuildUser? user = null)
+        public Task BoostTest([Leftover] IGuildUser? user = null)
+            => Test(GreetType.Boost, user);
+
+        public async Task Test(GreetType type, IGuildUser? user = null)
         {
             user ??= (IGuildUser)ctx.User;
 
-            await _service.BoostTest((ITextChannel)ctx.Channel, user);
-            var enabled = _service.GetBoostEnabled(ctx.Guild.Id);
-            if (!enabled)
+            await _service.Test(ctx.Guild.Id, type, (ITextChannel)ctx.Channel, user);
+            var conf = await _service.GetGreetSettingsAsync(ctx.Guild.Id, type);
+            if (conf?.IsEnabled is not true)
                 await Response().Pending(strs.boostmsg_enable($"`{prefix}boost`")).SendAsync();
         }
     }
diff --git a/src/EllieBot/Modules/Administration/GreetBye/GreetGrouper.cs b/src/EllieBot/Modules/Administration/GreetBye/GreetGrouper.cs
deleted file mode 100644
index a92256e..0000000
--- a/src/EllieBot/Modules/Administration/GreetBye/GreetGrouper.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-namespace EllieBot.Services;
-
-public class GreetGrouper<T>
-{
-    private readonly Dictionary<ulong, HashSet<T>> _group;
-    private readonly object _locker = new();
-
-    public GreetGrouper()
-        => _group = new();
-
-
-    /// <summary>
-    ///     Creates a group, if group already exists, adds the specified user
-    /// </summary>
-    /// <param name="guildId">Id of the server for which to create group for</param>
-    /// <param name="toAddIfExists">User to add if group already exists</param>
-    /// <returns></returns>
-    public bool CreateOrAdd(ulong guildId, T toAddIfExists)
-    {
-        lock (_locker)
-        {
-            if (_group.TryGetValue(guildId, out var list))
-            {
-                list.Add(toAddIfExists);
-                return false;
-            }
-
-            _group[guildId] = new();
-            return true;
-        }
-    }
-
-    /// <summary>
-    ///     Remove the specified amount of items from the group. If all items are removed, group will be removed.
-    /// </summary>
-    /// <param name="guildId">Id of the group</param>
-    /// <param name="count">Maximum number of items to retrieve</param>
-    /// <param name="items">Items retrieved</param>
-    /// <returns>Whether the group has no more items left and is deleted</returns>
-    public bool ClearGroup(ulong guildId, int count, out IReadOnlyCollection<T> items)
-    {
-        lock (_locker)
-        {
-            if (_group.TryGetValue(guildId, out var set))
-            {
-                // if we want more than there are, return everything
-                if (count >= set.Count)
-                {
-                    items = set;
-                    _group.Remove(guildId);
-                    return true;
-                }
-
-                // if there are more in the group than what's needed
-                // take the requested number, remove them from the set
-                // and return them
-                var toReturn = set.TakeWhile(_ => count-- != 0).ToList();
-                foreach (var item in toReturn)
-                    set.Remove(item);
-
-                items = toReturn;
-                // returning falsemeans group is not yet deleted
-                // because there are items left
-                return false;
-            }
-
-            items = Array.Empty<T>();
-            return true;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs b/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs
index 59fc1b7..e1fd0db 100644
--- a/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs
+++ b/src/EllieBot/Modules/Administration/GreetBye/GreetService.cs
@@ -8,36 +8,38 @@ namespace EllieBot.Services;
 
 public class GreetService : IEService, IReadyExecutor
 {
-    public bool GroupGreets
-        => _bss.Data.GroupGreets;
-
     private readonly DbService _db;
 
-    private ConcurrentHashSet<ulong> _greetDmEnabledGuilds = new();
-    private ConcurrentHashSet<ulong> _boostEnabledGuilds = new();
-    private ConcurrentHashSet<ulong> _greetEnabledGuilds = new();
-    private ConcurrentHashSet<ulong> _byeEnabledGuilds = new();
+    private ConcurrentDictionary<GreetType, ConcurrentHashSet<ulong>> _enabled = new();
 
     private readonly DiscordSocketClient _client;
 
-    private readonly GreetGrouper<IGuildUser> _greets = new();
-    private readonly GreetGrouper<IUser> _byes = new();
     private readonly BotConfigService _bss;
     private readonly IReplacementService _repSvc;
+    private readonly IBotCache _cache;
     private readonly IMessageSenderService _sender;
 
+    private readonly Channel<(GreetSettings, IUser, ITextChannel?)> _greetQueue =
+        Channel.CreateBounded<(GreetSettings, IUser, ITextChannel?)>(
+            new BoundedChannelOptions(60)
+            {
+                FullMode = BoundedChannelFullMode.DropOldest
+            });
+
     public GreetService(
         DiscordSocketClient client,
         DbService db,
         BotConfigService bss,
         IMessageSenderService sender,
-        IReplacementService repSvc
+        IReplacementService repSvc,
+        IBotCache cache
     )
     {
         _db = db;
         _client = client;
         _bss = bss;
         _repSvc = repSvc;
+        _cache = cache;
         _sender = sender;
     }
 
@@ -49,16 +51,12 @@ public class GreetService : IEService, IReadyExecutor
             var guilds = _client.Guilds.Select(x => x.Id).ToList();
             var enabled = await uow.GetTable<GreetSettings>()
                                    .Where(x => x.GuildId.In(guilds))
-                                   .Where(x => x.SendChannelGreetMessage
-                                               || x.SendBoostMessage
-                                               || x.SendChannelByeMessage
-                                               || x.SendDmGreetMessage)
+                                   .Where(x => x.IsEnabled)
                                    .ToListAsync();
 
-            _boostEnabledGuilds = new(enabled.Where(x => x.SendBoostMessage).Select(x => x.GuildId));
-            _byeEnabledGuilds = new(enabled.Where(x => x.SendChannelByeMessage).Select(x => x.GuildId));
-            _greetDmEnabledGuilds = new(enabled.Where(x => x.SendDmGreetMessage).Select(x => x.GuildId));
-            _greetEnabledGuilds = new(enabled.Where(x => x.SendChannelGreetMessage).Select(x => x.GuildId));
+            _enabled = enabled.GroupBy(x => x.GreetType, v => v.GuildId)
+                              .ToDictionary(x => x.Key, x => x.ToHashSet().ToConcurrentSet())
+                              .ToConcurrent();
         }
 
         _client.UserJoined += OnUserJoined;
@@ -71,9 +69,8 @@ public class GreetService : IEService, IReadyExecutor
         var timer = new PeriodicTimer(TimeSpan.FromSeconds(2));
         while (await timer.WaitForNextTickAsync())
         {
-            var (conf, user, compl) = await _greetDmQueue.Reader.ReadAsync();
-            var res = await GreetDmUserInternal(conf, user);
-            compl.TrySetResult(res);
+            var (conf, user, ch) = await _greetQueue.Reader.ReadAsync();
+            await GreetUsers(conf, ch, user);
         }
     }
 
@@ -88,62 +85,35 @@ public class GreetService : IEService, IReadyExecutor
         {
             _ = Task.Run(async () =>
             {
-                var conf = await GetGreetSettingsAsync(newUser.Guild.Id);
+                var conf = await GetGreetSettingsAsync(newUser.Guild.Id, GreetType.Boost);
 
-                if (conf is null || !conf.SendBoostMessage)
+                if (conf is null || !conf.IsEnabled)
                     return;
 
-                await TriggerBoostMessage(conf, newUser);
+                ITextChannel? channel = null;
+                if (conf.ChannelId is { } cid)
+                    channel = newUser.Guild.GetTextChannel(cid);
+
+                if (channel is null)
+                    return;
+
+                await GreetUsers(conf, channel, newUser);
             });
         }
 
         return Task.CompletedTask;
     }
 
-    private async Task TriggerBoostMessage(GreetSettings conf, SocketGuildUser user)
+    private async Task OnClientLeftGuild(SocketGuild guild)
     {
-        var channel = user.Guild.GetTextChannel(conf.BoostMessageChannelId);
-        if (channel is null)
-            return;
-
-        await SendBoostMessage(conf, user, channel);
-    }
-
-    private async Task<bool> SendBoostMessage(GreetSettings conf, IGuildUser user, ITextChannel channel)
-    {
-        if (string.IsNullOrWhiteSpace(conf.BoostMessage))
-            return false;
-
-        var toSend = SmartText.CreateFrom(conf.BoostMessage);
-
-        try
+        foreach (var gt in Enum.GetValues<GreetType>())
         {
-            var newContent = await _repSvc.ReplaceAsync(toSend,
-                new(client: _client, guild: user.Guild, channel: channel, users: user));
-            var toDelete = await _sender.Response(channel).Text(newContent).Sanitize(false).SendAsync();
-            if (conf.BoostMessageDeleteAfter > 0)
-                toDelete.DeleteAfter(conf.BoostMessageDeleteAfter);
-
-            return true;
+            _enabled[gt].TryRemove(guild.Id);
         }
-        catch (Exception ex)
-        {
-            Log.Error(ex, "Error sending boost message");
-        }
-
-        return false;
-    }
-
-    private async Task OnClientLeftGuild(SocketGuild arg)
-    {
-        _boostEnabledGuilds.TryRemove(arg.Id);
-        _byeEnabledGuilds.TryRemove(arg.Id);
-        _greetDmEnabledGuilds.TryRemove(arg.Id);
-        _greetEnabledGuilds.TryRemove(arg.Id);
 
         await using var uow = _db.GetDbContext();
         await uow.GetTable<GreetSettings>()
-                 .Where(x => x.GuildId == arg.Id)
+                 .Where(x => x.GuildId == guild.Id)
                  .DeleteAsync();
     }
 
@@ -153,38 +123,20 @@ public class GreetService : IEService, IReadyExecutor
         {
             try
             {
-                var conf = await GetGreetSettingsAsync(guild.Id);
+                var conf = await GetGreetSettingsAsync(guild.Id, GreetType.Bye);
 
                 if (conf is null)
                     return;
 
-                var channel = guild.TextChannels.FirstOrDefault(c => c.Id == conf.ByeMessageChannelId);
+                var channel = guild.TextChannels.FirstOrDefault(c => c.Id == conf.ChannelId);
 
                 if (channel is null) //maybe warn the server owner that the channel is missing
+                {
+                    await SetGreet(guild.Id, null, GreetType.Bye, false);
                     return;
+                }
 
-                if (GroupGreets)
-                {
-                    // if group is newly created, greet that user right away,
-                    // but any user which joins in the next 5 seconds will
-                    // be greeted in a group greet
-                    if (_byes.CreateOrAdd(guild.Id, user))
-                    {
-                        // greet single user
-                        await ByeUsers(conf, channel, new[] { user });
-                        var groupClear = false;
-                        while (!groupClear)
-                        {
-                            await Task.Delay(5000);
-                            groupClear = _byes.ClearGroup(guild.Id, 5, out var toBye);
-                            await ByeUsers(conf, channel, toBye);
-                        }
-                    }
-                }
-                else
-                {
-                    await ByeUsers(conf, channel, new[] { user });
-                }
+                await _greetQueue.Writer.WriteAsync((conf, user, channel));
             }
             catch
             {
@@ -194,7 +146,14 @@ public class GreetService : IEService, IReadyExecutor
         return Task.CompletedTask;
     }
 
+    private readonly TypedKey<GreetSettings?> _greetSettingsKey = new();
+
     public async Task<GreetSettings?> GetGreetSettingsAsync(ulong gid, GreetType type)
+        => await _cache.GetOrAddAsync<GreetSettings?>(_greetSettingsKey,
+            () => InternalGetGreetSettingsAsync(gid, type),
+            TimeSpan.FromSeconds(3));
+
+    private async Task<GreetSettings?> InternalGetGreetSettingsAsync(ulong gid, GreetType type)
     {
         await using var uow = _db.GetDbContext();
         var res = await uow.GetTable<GreetSettings>()
@@ -204,62 +163,32 @@ public class GreetService : IEService, IReadyExecutor
         return res;
     }
 
-    private Task ByeUsers(GreetSettings conf, ITextChannel channel, IUser user)
-        => ByeUsers(conf, channel, new[] { user });
-
-    private async Task ByeUsers(GreetSettings conf, ITextChannel channel, IReadOnlyCollection<IUser> users)
+    private async Task GreetUsers(GreetSettings conf, ITextChannel? channel, IUser user)
     {
-        if (!users.Any())
+        if (conf.GreetType == GreetType.GreetDm)
+        {
+            if (user is not IGuildUser gu)
+                return;
+
+            await GreetDmUserInternal(conf, gu);
+            return;
+        }
+
+        if (channel is null)
             return;
 
         var repCtx = new ReplacementContext(client: _client,
             guild: channel.Guild,
             channel: channel,
-            users: users.ToArray());
+            user: user);
 
-        var text = SmartText.CreateFrom(conf.ChannelByeMessageText);
+        var text = SmartText.CreateFrom(conf.MessageText);
         text = await _repSvc.ReplaceAsync(text, repCtx);
         try
         {
             var toDelete = await _sender.Response(channel).Text(text).Sanitize(false).SendAsync();
-            if (conf.AutoDeleteByeMessagesTimer > 0)
-                toDelete.DeleteAfter(conf.AutoDeleteByeMessagesTimer);
-        }
-        catch (HttpException ex) when (ex.DiscordCode == DiscordErrorCode.InsufficientPermissions
-                                       || ex.DiscordCode == DiscordErrorCode.MissingPermissions
-                                       || ex.DiscordCode == DiscordErrorCode.UnknownChannel)
-        {
-            Log.Warning(ex,
-                "Missing permissions to send a bye message, the bye message will be disabled on server: {GuildId}",
-                channel.GuildId);
-            await SetGreet(channel.GuildId, channel.Id, GreetType.Bye, false);
-        }
-        catch (Exception ex)
-        {
-            Log.Warning(ex, "Error embeding bye message");
-        }
-    }
-
-    private Task GreetUsers(GreetSettings conf, ITextChannel channel, IGuildUser user)
-        => GreetUsers(conf, channel, new[] { user });
-
-    private async Task GreetUsers(GreetSettings conf, ITextChannel channel, IReadOnlyCollection<IGuildUser> users)
-    {
-        if (users.Count == 0)
-            return;
-
-        var repCtx = new ReplacementContext(client: _client,
-            guild: channel.Guild,
-            channel: channel,
-            users: users.ToArray());
-
-        var text = SmartText.CreateFrom(conf.ChannelGreetMessageText);
-        text = await _repSvc.ReplaceAsync(text, repCtx);
-        try
-        {
-            var toDelete = await _sender.Response(channel).Text(text).Sanitize(false).SendAsync();
-            if (conf.AutoDeleteGreetMessagesTimer > 0)
-                toDelete.DeleteAfter(conf.AutoDeleteGreetMessagesTimer);
+            if (conf.AutoDeleteTimer > 0)
+                toDelete.DeleteAfter(conf.AutoDeleteTimer);
         }
         catch (HttpException ex) when (ex.DiscordCode is DiscordErrorCode.InsufficientPermissions
                                            or DiscordErrorCode.MissingPermissions
@@ -276,19 +205,11 @@ public class GreetService : IEService, IReadyExecutor
         }
     }
 
-    private readonly Channel<(GreetSettings, IGuildUser, TaskCompletionSource<bool>)> _greetDmQueue =
-        Channel.CreateBounded<(GreetSettings, IGuildUser, TaskCompletionSource<bool>)>(new BoundedChannelOptions(60)
-        {
-            // The limit of 60 users should be only hit when there's a raid. In that case 
-            // probably the best thing to do is to drop newest (raiding) users
-            FullMode = BoundedChannelFullMode.DropNewest
-        });
-
 
     private async Task<bool> GreetDmUser(GreetSettings conf, IGuildUser user)
     {
         var completionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
-        await _greetDmQueue.Writer.WriteAsync((conf, user, completionSource));
+        await _greetQueue.Writer.WriteAsync((conf, user, null));
         return await completionSource.Task;
     }
 
@@ -296,8 +217,8 @@ public class GreetService : IEService, IReadyExecutor
     {
         try
         {
-            var repCtx = new ReplacementContext(client: _client, guild: user.Guild, users: user);
-            var smartText = SmartText.CreateFrom(conf.DmGreetMessageText);
+            var repCtx = new ReplacementContext(client: _client, guild: user.Guild, user: user);
+            var smartText = SmartText.CreateFrom(conf.MessageText);
             smartText = await _repSvc.ReplaceAsync(smartText, repCtx);
 
             if (smartText is SmartPlainText pt)
@@ -378,40 +299,21 @@ public class GreetService : IEService, IReadyExecutor
         {
             try
             {
-                var conf = await GetGreetSettingsAsync(user.GuildId);
-                if (conf is null)
-                    return;
+                var conf = await GetGreetSettingsAsync(user.GuildId, GreetType.Greet);
 
-                if (conf.SendChannelGreetMessage)
+                if (conf is not null && conf.IsEnabled && conf.ChannelId is { } channelId)
                 {
-                    var channel = await user.Guild.GetTextChannelAsync(conf.GreetMessageChannelId);
+                    var channel = await user.Guild.GetTextChannelAsync(channelId);
                     if (channel is not null)
                     {
-                        if (GroupGreets)
-                        {
-                            // if group is newly created, greet that user right away,
-                            // but any user which joins in the next 5 seconds will
-                            // be greeted in a group greet
-                            if (_greets.CreateOrAdd(user.GuildId, user))
-                            {
-                                // greet single user
-                                await GreetUsers(conf, channel, new[] { user });
-                                var groupClear = false;
-                                while (!groupClear)
-                                {
-                                    await Task.Delay(5000);
-                                    groupClear = _greets.ClearGroup(user.GuildId, 5, out var toGreet);
-                                    await GreetUsers(conf, channel, toGreet);
-                                }
-                            }
-                        }
-                        else
-                            await GreetUsers(conf, channel, new[] { user });
+                        await _greetQueue.Writer.WriteAsync((conf, user, channel));
                     }
                 }
 
-                if (conf.SendDmGreetMessage)
-                    await GreetDmUser(conf, user);
+                var confDm = await GetGreetSettingsAsync(user.GuildId, GreetType.GreetDm);
+
+                if (confDm?.IsEnabled ?? false)
+                    await GreetDmUser(confDm, user);
             }
             catch
             {
@@ -421,20 +323,16 @@ public class GreetService : IEService, IReadyExecutor
         return Task.CompletedTask;
     }
 
-    // public GreetSettings GetOrAddSettingsForGuild(ulong guildId)
-    // {
-    //     if (_greetDmEnabledGuilds.TryGetValue(guildId, out var settings))
-    //         return settings;
-    //
-    //     using (var uow = _db.GetDbContext())
-    //     {
-    //         var gc = uow.GuildConfigsForId(guildId, set => set);
-    //         settings = GreetSettings.Create(gc);
-    //     }
-    //
-    //     _greetDmEnabledGuilds.TryAdd(guildId, settings);
-    //     return settings;
-    // }
+
+    private static string GetDefaultGreet(GreetType greetType)
+        => greetType switch
+        {
+            GreetType.Boost => "%user.name% has boosted the server!",
+            GreetType.Greet => "%user.name% has joined the server!",
+            GreetType.Bye => "%user.name has left the server!",
+            GreetType.GreetDm => "Welcome to the server %user.name%",
+            _ => "%user.name% did something new!"
+        };
 
     public async Task<bool> SetGreet(
         ulong guildId,
@@ -447,9 +345,14 @@ public class GreetService : IEService, IReadyExecutor
 
         if (value is { } v)
         {
+            var defaultGreet = GetDefaultGreet(greetType);
+
             await q
                 .InsertOrUpdateAsync(() => new()
                 {
+                    GuildId = guildId,
+                    GreetType = greetType,
+                    MessageText = defaultGreet,
                     IsEnabled = v,
                     ChannelId = channelId,
                 },
@@ -466,29 +369,45 @@ public class GreetService : IEService, IReadyExecutor
         }
         else
         {
-            await q
-                  .Where(x => x.GuildId == guildId && x.GreetType == greetType)
-                  .UpdateAsync((old) => new()
-                  {
-                      IsEnabled = !old.IsEnabled
-                  });
+            var result = await q
+                               .Where(x => x.GuildId == guildId && x.GreetType == greetType)
+                               .UpdateWithOutputAsync((old) => new()
+                               {
+                                   IsEnabled = !old.IsEnabled
+                               },
+                                   (o, n) => n.IsEnabled);
+
+            if (result.Length > 0)
+                value = result[0];
+        }
+
+        if (value is true)
+        {
+            _enabled[greetType].Add(guildId);
+        }
+        else
+        {
+            _enabled[greetType].TryRemove(guildId);
         }
 
         return true;
     }
 
-    public async Task<bool> SetGreetTypeMessage(ulong guildId, GreetType greetType, string message)
+
+    public async Task<bool> SetMessage(ulong guildId, GreetType greetType, string? message)
     {
-        message = message.SanitizeMentions();
+        message = message?.SanitizeMentions();
 
         if (string.IsNullOrWhiteSpace(message))
-            throw new ArgumentNullException(nameof(message));
+            message = GetDefaultGreet(greetType);
 
         await using (var uow = _db.GetDbContext())
         {
             await uow.GetTable<GreetSettings>()
                      .InsertOrUpdateAsync(() => new()
                      {
+                         GuildId = guildId,
+                         GreetType = greetType,
                          MessageText = message
                      },
                          x => new()
@@ -502,11 +421,42 @@ public class GreetService : IEService, IReadyExecutor
                          });
         }
 
-        var conf = await GetGreetSettingsAsync(guildId, type);
+        var conf = await GetGreetSettingsAsync(guildId, greetType);
 
         return conf?.IsEnabled ?? false;
     }
 
+    public async Task<bool> SetDeleteTimer(ulong guildId, GreetType greetType, int timer)
+    {
+        if (timer < 0 || timer > 3600)
+            throw new ArgumentOutOfRangeException(nameof(timer));
+
+        await using (var uow = _db.GetDbContext())
+        {
+            await uow.GetTable<GreetSettings>()
+                     .InsertOrUpdateAsync(() => new()
+                     {
+                         GuildId = guildId,
+                         GreetType = greetType,
+                         AutoDeleteTimer = timer,
+                     },
+                         x => new()
+                         {
+                             AutoDeleteTimer = timer
+                         },
+                         () => new()
+                         {
+                             GuildId = guildId,
+                             GreetType = greetType
+                         });
+        }
+
+        var conf = await GetGreetSettingsAsync(guildId, greetType);
+
+        return conf?.IsEnabled ?? false;
+    }
+
+
     public async Task<bool> Test(
         ulong guildId,
         GreetType type,
@@ -514,14 +464,24 @@ public class GreetService : IEService, IReadyExecutor
         IGuildUser user)
     {
         var conf = await GetGreetSettingsAsync(guildId, type);
-        return SendMessage(conf, user, channel);
+        if (conf is null)
+            return false;
+
+        await SendMessage(conf, channel, user);
+        return true;
     }
 
     public async Task<bool> SendMessage(GreetSettings conf, IMessageChannel channel, IGuildUser user)
     {
         if (conf.GreetType == GreetType.GreetDm)
         {
-            await GreetDmUser(conf, user);
+            return await GreetDmUser(conf, user);
         }
+
+        if (channel is not ITextChannel ch)
+            return false;
+
+        await GreetUsers(conf, ch, user);
+        return true;
     }
 }
\ No newline at end of file
diff --git a/src/EllieBot/Modules/Administration/GreetBye/GreetSettings.cs b/src/EllieBot/Modules/Administration/GreetBye/GreetSettings.cs
index 6e4f8ed..76579e6 100644
--- a/src/EllieBot/Modules/Administration/GreetBye/GreetSettings.cs
+++ b/src/EllieBot/Modules/Administration/GreetBye/GreetSettings.cs
@@ -2,44 +2,43 @@ using EllieBot.Db.Models;
 
 namespace EllieBot.Services;
 
+public enum GreetType
+{
+    Greet,
+    GreetDm,
+    Bye,
+    Boost,
+}
+
 public class GreetSettings
 {
-    public int AutoDeleteGreetMessagesTimer { get; set; }
-    public int AutoDeleteByeMessagesTimer { get; set; }
+    public int Id { get; set; }
 
-    public ulong GreetMessageChannelId { get; set; }
-    public ulong ByeMessageChannelId { get; set; }
+    public ulong GuildId { get; set; }
+    public GreetType GreetType { get; set; }
+    public string? MessageText { get; set; }
+    public bool IsEnabled { get; set; }
+    public ulong? ChannelId { get; set; }
 
-    public bool SendDmGreetMessage { get; set; }
-    public string? DmGreetMessageText { get; set; }
+    public int AutoDeleteTimer { get; set; }
 
-    public bool SendChannelGreetMessage { get; set; }
-    public string? ChannelGreetMessageText { get; set; }
-
-    public bool SendChannelByeMessage { get; set; }
-    public string? ChannelByeMessageText { get; set; }
-
-    public bool SendBoostMessage { get; set; }
-    public string? BoostMessage { get; set; }
-    public int BoostMessageDeleteAfter { get; set; }
-    public ulong BoostMessageChannelId { get; set; }
-
-    public static GreetSettings Create(GuildConfig g)
-        => new()
-        {
-            AutoDeleteByeMessagesTimer = g.AutoDeleteByeMessagesTimer,
-            AutoDeleteGreetMessagesTimer = g.AutoDeleteGreetMessagesTimer,
-            GreetMessageChannelId = g.GreetMessageChannelId,
-            ByeMessageChannelId = g.ByeMessageChannelId,
-            SendDmGreetMessage = g.SendDmGreetMessage,
-            DmGreetMessageText = g.DmGreetMessageText,
-            SendChannelGreetMessage = g.SendChannelGreetMessage,
-            ChannelGreetMessageText = g.ChannelGreetMessageText,
-            SendChannelByeMessage = g.SendChannelByeMessage,
-            ChannelByeMessageText = g.ChannelByeMessageText,
-            SendBoostMessage = g.SendBoostMessage,
-            BoostMessage = g.BoostMessage,
-            BoostMessageDeleteAfter = g.BoostMessageDeleteAfter,
-            BoostMessageChannelId = g.BoostMessageChannelId
-        };
+    // public int AutoDeleteGreetMessagesTimer { get; set; }
+    // public int AutoDeleteByeMessagesTimer { get; set; }
+    //
+    // public ulong GreetMessageChannelId { get; set; }
+    // public ulong ByeMessageChannelId { get; set; }
+    //
+    // public bool SendDmGreetMessage { get; set; }
+    // public string? DmGreetMessageText { get; set; }
+    //
+    // public bool SendChannelGreetMessage { get; set; }
+    // public string? ChannelGreetMessageText { get; set; }
+    //
+    // public bool SendChannelByeMessage { get; set; }
+    // public string? ChannelByeMessageText { get; set; }
+    //
+    // public bool SendBoostMessage { get; set; }
+    // public string? BoostMessage { get; set; }
+    // public int BoostMessageDeleteAfter { get; set; }
+    // public ulong BoostMessageChannelId { get; set; }
 }
\ No newline at end of file
diff --git a/src/EllieBot/Modules/Administration/UserPunish/UserPunishService.cs b/src/EllieBot/Modules/Administration/UserPunish/UserPunishService.cs
index a42a9f1..2b9e00d 100644
--- a/src/EllieBot/Modules/Administration/UserPunish/UserPunishService.cs
+++ b/src/EllieBot/Modules/Administration/UserPunish/UserPunishService.cs
@@ -243,14 +243,16 @@ public class UserPunishService : IEService, IReadyExecutor
     public async Task CheckAllWarnExpiresAsync()
     {
         await using var uow = _db.GetDbContext();
-        var cleared = await uow.Set<Warning>()
-                               .Where(x => uow.Set<GuildConfig>()
-                                              .Any(y => y.GuildId == x.GuildId
-                                                        && y.WarnExpireHours > 0
-                                                        && y.WarnExpireAction == WarnExpireAction.Clear)
+
+        var cleared = await uow.GetTable<Warning>()
+                               .Where(x => uow.GetTable<GuildConfig>()
+                                              .Count(y => y.GuildId == x.GuildId
+                                                          && y.WarnExpireHours > 0
+                                                          && y.WarnExpireAction == WarnExpireAction.Clear)
+                                           > 0
                                            && x.Forgiven == false
                                            && x.DateAdded
-                                           < DateTime.UtcNow.AddHours(-uow.Set<GuildConfig>()
+                                           < DateTime.UtcNow.AddHours(-uow.GetTable<GuildConfig>()
                                                                           .Where(y => x.GuildId == y.GuildId)
                                                                           .Select(y => y.WarnExpireHours)
                                                                           .First()))
@@ -260,13 +262,14 @@ public class UserPunishService : IEService, IReadyExecutor
                                    ForgivenBy = "expiry"
                                });
 
-        var deleted = await uow.Set<Warning>()
-                               .Where(x => uow.Set<GuildConfig>()
-                                              .Any(y => y.GuildId == x.GuildId
-                                                        && y.WarnExpireHours > 0
-                                                        && y.WarnExpireAction == WarnExpireAction.Delete)
+        var deleted = await uow.GetTable<Warning>()
+                               .Where(x => uow.GetTable<GuildConfig>()
+                                              .Count(y => y.GuildId == x.GuildId
+                                                          && y.WarnExpireHours > 0
+                                                          && y.WarnExpireAction == WarnExpireAction.Delete)
+                                           > 0
                                            && x.DateAdded
-                                           < DateTime.UtcNow.AddHours(-uow.Set<GuildConfig>()
+                                           < DateTime.UtcNow.AddHours(-uow.GetTable<GuildConfig>()
                                                                           .Where(y => x.GuildId == y.GuildId)
                                                                           .Select(y => y.WarnExpireHours)
                                                                           .First()))
@@ -278,8 +281,6 @@ public class UserPunishService : IEService, IReadyExecutor
                 cleared,
                 deleted);
         }
-
-        await uow.SaveChangesAsync();
     }
 
     public async Task CheckWarnExpiresAsync(ulong guildId)
diff --git a/src/EllieBot/Modules/Expressions/EllieExpressionExtensions.cs b/src/EllieBot/Modules/Expressions/EllieExpressionExtensions.cs
index 0eeb68d..1ed9504 100644
--- a/src/EllieBot/Modules/Expressions/EllieExpressionExtensions.cs
+++ b/src/EllieBot/Modules/Expressions/EllieExpressionExtensions.cs
@@ -36,7 +36,7 @@ public static class EllieExpressionExtensions
         var repCtx = new ReplacementContext(client: client,
                 guild: (ctx.Channel as ITextChannel)?.Guild as SocketGuild,
                 channel: ctx.Channel,
-                users: ctx.Author
+                user: ctx.Author
             )
             .WithOverride("%target%",
                 () => canMentionEveryone
diff --git a/src/EllieBot/Modules/Help/HelpService.cs b/src/EllieBot/Modules/Help/HelpService.cs
index 5904c03..fd1b18b 100644
--- a/src/EllieBot/Modules/Help/HelpService.cs
+++ b/src/EllieBot/Modules/Help/HelpService.cs
@@ -31,7 +31,7 @@ public class HelpService : IExecNoCommand, IEService
                 return;
             }
 
-            var repCtx = new ReplacementContext(guild: guild, channel: msg.Channel, users: msg.Author)
+            var repCtx = new ReplacementContext(guild: guild, channel: msg.Channel, user: msg.Author)
                          .WithOverride("%prefix%", () => _bss.Data.Prefix)
                          .WithOverride("%bot.prefix%", () => _bss.Data.Prefix);
 
diff --git a/src/EllieBot/Modules/Utility/Repeater/RepeaterService.cs b/src/EllieBot/Modules/Utility/Repeater/RepeaterService.cs
index 07d05cc..8d513cb 100644
--- a/src/EllieBot/Modules/Utility/Repeater/RepeaterService.cs
+++ b/src/EllieBot/Modules/Utility/Repeater/RepeaterService.cs
@@ -262,7 +262,7 @@ public sealed class RepeaterService : IReadyExecutor, IEService
         var repCtx = new ReplacementContext(client: _client,
             guild: guild,
             channel: channel,
-            users: guild.CurrentUser);
+            user: guild.CurrentUser);
 
         try
         {
diff --git a/src/EllieBot/Services/Impl/BotCredsProvider.cs b/src/EllieBot/Services/Impl/BotCredsProvider.cs
index 81c5a25..09cfcac 100644
--- a/src/EllieBot/Services/Impl/BotCredsProvider.cs
+++ b/src/EllieBot/Services/Impl/BotCredsProvider.cs
@@ -1,6 +1,5 @@
 #nullable disable
 using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.Primitives;
 using EllieBot.Common.Yml;
 
 namespace EllieBot.Services;
@@ -22,7 +21,6 @@ public sealed class BotCredsProvider : IBotCredsProvider
 
 
     private readonly object _reloadLock = new();
-    private readonly IDisposable _changeToken;
 
     public BotCredsProvider(int? totalShards = null, string credPath = null)
     {
@@ -49,18 +47,18 @@ public sealed class BotCredsProvider : IBotCredsProvider
             // this can fail in docker containers
         }
 
-        MigrateCredentials();
-
-        if (!File.Exists(CredsPath))
-        {
-            Log.Warning(
-                "{CredsPath} is missing. Attempting to load creds from environment variables prefixed with 'EllieBot_'. Example is in {CredsExamplePath}",
-                CredsPath,
-                CredsExamplePath);
-        }
-
         try
         {
+            MigrateCredentials();
+
+            if (!File.Exists(CredsPath))
+            {
+                Log.Warning(
+                    "{CredsPath} is missing. Attempting to load creds from environment variables prefixed with 'EllieBot_'. Example is in {CredsExamplePath}",
+                    CredsPath,
+                    CredsExamplePath);
+            }
+
             _config = new ConfigurationBuilder().AddYamlFile(CredsPath, false, true)
                                                 .AddEnvironmentVariables("EllieBot_")
                                                 .Build();
@@ -70,7 +68,6 @@ public sealed class BotCredsProvider : IBotCredsProvider
             Console.WriteLine(ex.ToString());
         }
 
-        _changeToken = ChangeToken.OnChange(() => _config.GetReloadToken(), Reload);
         Reload();
     }
 
@@ -141,6 +138,7 @@ public sealed class BotCredsProvider : IBotCredsProvider
             {
                 creds.BotCache = BotCacheImplemenation.Redis;
             }
+
             if (creds.Version <= 6)
             {
                 creds.Version = 7;
diff --git a/src/EllieBot/_common/Abstractions/Extensions/EnumerableExtensions.cs b/src/EllieBot/_common/Abstractions/Extensions/EnumerableExtensions.cs
index 3cedd0e..1a20437 100644
--- a/src/EllieBot/_common/Abstractions/Extensions/EnumerableExtensions.cs
+++ b/src/EllieBot/_common/Abstractions/Extensions/EnumerableExtensions.cs
@@ -72,6 +72,22 @@ public static class EnumerableExtensions
         where TKey : notnull
         => new(dict);
 
+    /// <summary>
+    ///     Initializes a new instance of the <see cref="ConcurrentDictionary{TKey,TValue}" /> class
+    ///     that contains elements copied from the specified <see cref="IEnumerable{T}" />
+    ///     has the default concurrency level, has the default initial capacity,
+    ///     and uses the default comparer for the key type.
+    /// </summary>
+    /// <param name="dict">
+    ///     The <see cref="IEnumerable{T}" /> whose elements are copied to the new
+    ///     <see cref="ConcurrentDictionary{TKey,TValue}" />.
+    /// </param>
+    /// <returns>A new instance of the <see cref="ConcurrentDictionary{TKey,TValue}" /> class</returns>
+    public static ConcurrentHashSet<TValue> ToConcurrentSet<TValue>(
+        this IReadOnlyCollection<TValue> dict)
+        where TValue : notnull
+        => new(dict);
+
     public static IndexedCollection<T> ToIndexed<T>(this IEnumerable<T> enumerable)
         where T : class, IIndexed
         => new(enumerable);
diff --git a/src/EllieBot/_common/Configs/BotConfig.cs b/src/EllieBot/_common/Configs/BotConfig.cs
index 0908577..c686ed7 100644
--- a/src/EllieBot/_common/Configs/BotConfig.cs
+++ b/src/EllieBot/_common/Configs/BotConfig.cs
@@ -84,19 +84,6 @@ public sealed partial class BotConfig : ICloneable<BotConfig>
     [Comment("""Which string will be used to recognize the commands""")]
     public string Prefix { get; set; }
 
-    [Comment("""
-        Toggles whether your bot will group greet/bye messages into a single message every 5 seconds.
-        1st user who joins will get greeted immediately
-        If more users join within the next 5 seconds, they will be greeted in groups of 5.
-        This will cause %user.mention% and other placeholders to be replaced with multiple users. 
-        Keep in mind this might break some of your embeds - for example if you have %user.avatar% in the thumbnail,
-        it will become invalid, as it will resolve to a list of avatars of grouped users.
-        note: This setting is primarily used if you're afraid of raids, or you're running medium/large bots where some
-              servers might get hundreds of people join at once. This is used to prevent the bot from getting ratelimited,
-              and (slightly) reduce the greet spam in those servers.
-        """)]
-    public bool GroupGreets { get; set; }
-
     [Comment("""
         Whether the bot will rotate through all specified statuses.
         This setting can be changed via .ropl command.
@@ -144,7 +131,6 @@ public sealed partial class BotConfig : ICloneable<BotConfig>
         Blocked = blocked;
         Prefix = ".";
         RotateStatuses = false;
-        GroupGreets = false;
         DmHelpTextKeywords =
         [
             "help",
diff --git a/src/EllieBot/_common/Replacements/Impl/ReplacementContext.cs b/src/EllieBot/_common/Replacements/Impl/ReplacementContext.cs
index b321941..184ba4e 100644
--- a/src/EllieBot/_common/Replacements/Impl/ReplacementContext.cs
+++ b/src/EllieBot/_common/Replacements/Impl/ReplacementContext.cs
@@ -7,7 +7,7 @@ public sealed class ReplacementContext
     public DiscordSocketClient? Client { get; }
     public IGuild? Guild { get; }
     public IMessageChannel? Channel { get; }
-    public IUser[]? Users { get; }
+    public IUser? User { get; }
 
     private readonly List<ReplacementInfo> _overrides = new();
     private readonly HashSet<string> _tokens = new();
@@ -21,10 +21,11 @@ public sealed class ReplacementContext
     public IReadOnlyList<RegexReplacementInfo> RegexOverrides
         => _regexOverrides.AsReadOnly();
 
-    public ReplacementContext(ICommandContext cmdContext) : this(cmdContext.Client as DiscordSocketClient,
-        cmdContext.Guild,
-        cmdContext.Channel,
-        cmdContext.User)
+    public ReplacementContext(ICommandContext cmdContext)
+        : this(cmdContext.Client as DiscordSocketClient,
+            cmdContext.Guild,
+            cmdContext.Channel,
+            cmdContext.User)
     {
     }
 
@@ -32,12 +33,12 @@ public sealed class ReplacementContext
         DiscordSocketClient? client = null,
         IGuild? guild = null,
         IMessageChannel? channel = null,
-        params IUser[]? users)
+        IUser? user = null)
     {
         Client = client;
         Guild = guild;
         Channel = channel;
-        Users = users;
+        User = user;
     }
 
     public ReplacementContext WithOverride(string key, Func<ValueTask<string>> repFactory)
diff --git a/src/EllieBot/_common/Replacements/Impl/ReplacementService.cs b/src/EllieBot/_common/Replacements/Impl/ReplacementService.cs
index 4d17213..18712d8 100644
--- a/src/EllieBot/_common/Replacements/Impl/ReplacementService.cs
+++ b/src/EllieBot/_common/Replacements/Impl/ReplacementService.cs
@@ -40,8 +40,8 @@ public sealed class ReplacementService : IReplacementService, IEService
         if (repCtx.Guild is not null)
             obj.Add(repCtx.Guild);
 
-        if (repCtx.Users is not null)
-            obj.Add(repCtx.Users);
+        if (repCtx.User is not null)
+            obj.Add(repCtx.User);
 
         if (repCtx.Channel is not null)
             obj.Add(repCtx.Channel);
@@ -86,9 +86,9 @@ public sealed class ReplacementService : IReplacementService, IEService
             objs.Add(repCtx.Channel);
         }
 
-        if (repCtx.Users is not null)
+        if (repCtx.User is not null)
         {
-            objs.Add(repCtx.Users);
+            objs.Add(repCtx.User);
         }
 
         if (repCtx.Guild is not null)
@@ -117,9 +117,9 @@ public sealed class ReplacementService : IReplacementService, IEService
             objs.Add(repCtx.Channel);
         }
 
-        if (repCtx.Users is not null)
+        if (repCtx.User is not null)
         {
-            objs.Add(repCtx.Users);
+            objs.Add(repCtx.User);
         }
 
         if (repCtx.Guild is not null)
diff --git a/src/EllieBot/data/strings/commands/commands.en-US.yml b/src/EllieBot/data/strings/commands/commands.en-US.yml
index 303bdec..de8c200 100644
--- a/src/EllieBot/data/strings/commands/commands.en-US.yml
+++ b/src/EllieBot/data/strings/commands/commands.en-US.yml
@@ -1623,12 +1623,12 @@ gencurlist:
     - page:
         desc: "The current page number for pagination."
 choose:
-  desc: Chooses a thing from a list of things
+  desc: Chooses a thing from a list of things. Seperate items with a semicolon ;
   ex:
     - Get up;Sleep;Sleep more
   params:
     - list:
-        desc: "The type of items in the collection being searched."
+        desc: "The items separated by ;"
 rps:
   desc: |-
     Play a game of Rocket-Paperclip-Scissors with Ellie.