diff --git a/src/NadekoBot/Db/Models/ImageOnlyChannel.cs b/src/NadekoBot/Db/Models/ImageOnlyChannel.cs
index 02b9df481..12cda8578 100644
--- a/src/NadekoBot/Db/Models/ImageOnlyChannel.cs
+++ b/src/NadekoBot/Db/Models/ImageOnlyChannel.cs
@@ -5,4 +5,11 @@ public class ImageOnlyChannel : DbEntity
{
public ulong GuildId { get; set; }
public ulong ChannelId { get; set; }
+ public OnlyChannelType Type { get; set; }
+}
+
+public enum OnlyChannelType
+{
+ Image,
+ Link
}
\ No newline at end of file
diff --git a/src/NadekoBot/Db/Models/XpShopOwnedItem.cs b/src/NadekoBot/Db/Models/XpShopOwnedItem.cs
index dbbf9a255..5df541b99 100644
--- a/src/NadekoBot/Db/Models/XpShopOwnedItem.cs
+++ b/src/NadekoBot/Db/Models/XpShopOwnedItem.cs
@@ -1,4 +1,5 @@
-using NadekoBot.Services.Database.Models;
+#nullable disable warnings
+using NadekoBot.Services.Database.Models;
namespace NadekoBot.Db.Models;
diff --git a/src/NadekoBot/Migrations/Sqlite/20220727005807_linkonly-channels.Designer.cs b/src/NadekoBot/Migrations/Sqlite/20220727005807_linkonly-channels.Designer.cs
new file mode 100644
index 000000000..0df0a9cca
--- /dev/null
+++ b/src/NadekoBot/Migrations/Sqlite/20220727005807_linkonly-channels.Designer.cs
@@ -0,0 +1,2858 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using NadekoBot.Services.Database;
+
+#nullable disable
+
+namespace NadekoBot.Migrations
+{
+ [DbContext(typeof(SqliteContext))]
+ [Migration("20220727005807_linkonly-channels")]
+ partial class linkonlychannels
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "6.0.7");
+
+ modelBuilder.Entity("NadekoBot.Db.Models.BankUser", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Balance")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId")
+ .IsUnique();
+
+ b.ToTable("BankUsers");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.ClubApplicants", b =>
+ {
+ b.Property("ClubId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("ClubId", "UserId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("ClubApplicants");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.ClubBans", b =>
+ {
+ b.Property("ClubId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("ClubId", "UserId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("ClubBans");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.ClubInfo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .HasColumnType("TEXT");
+
+ b.Property("ImageUrl")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("TEXT");
+
+ b.Property("OwnerId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Xp")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasAlternateKey("Name");
+
+ b.HasIndex("OwnerId")
+ .IsUnique();
+
+ b.ToTable("Clubs");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.DiscordUser", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AvatarId")
+ .HasColumnType("TEXT");
+
+ b.Property("ClubId")
+ .HasColumnType("INTEGER");
+
+ b.Property("CurrencyAmount")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValue(0L);
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("Discriminator")
+ .HasColumnType("TEXT");
+
+ b.Property("IsClubAdmin")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValue(false);
+
+ b.Property("LastLevelUp")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT")
+ .HasDefaultValueSql("datetime('now')");
+
+ b.Property("LastXpGain")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT")
+ .HasDefaultValueSql("datetime('now', '-1 years')");
+
+ b.Property("NotifyOnLevelUp")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValue(0);
+
+ b.Property("TotalXp")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValue(0L);
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.Property("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("NadekoBot.Db.Models.FollowedStream", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Message")
+ .HasColumnType("TEXT");
+
+ b.Property("Type")
+ .HasColumnType("INTEGER");
+
+ b.Property("Username")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("FollowedStream");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.PatronQuota", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.Property("FeatureType")
+ .HasColumnType("INTEGER");
+
+ b.Property("Feature")
+ .HasColumnType("TEXT");
+
+ b.Property("DailyCount")
+ .HasColumnType("INTEGER");
+
+ b.Property("HourlyCount")
+ .HasColumnType("INTEGER");
+
+ b.Property("MonthlyCount")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("UserId", "FeatureType", "Feature");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("PatronQuotas");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.PatronUser", b =>
+ {
+ b.Property("UserId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AmountCents")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastCharge")
+ .HasColumnType("TEXT");
+
+ b.Property("UniquePlatformUserId")
+ .HasColumnType("TEXT");
+
+ b.Property("ValidThru")
+ .HasColumnType("TEXT");
+
+ b.HasKey("UserId");
+
+ b.HasIndex("UniquePlatformUserId")
+ .IsUnique();
+
+ b.ToTable("Patrons");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.StreamOnlineMessage", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("MessageId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("Type")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("StreamOnlineMessages");
+ });
+
+ modelBuilder.Entity("NadekoBot.Db.Models.XpShopOwnedItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("IsUsing")
+ .HasColumnType("INTEGER");
+
+ b.Property("ItemKey")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("ItemType")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId", "ItemType", "ItemKey")
+ .IsUnique();
+
+ b.ToTable("XpShopOwnedItem");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiAltSetting", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Action")
+ .HasColumnType("INTEGER");
+
+ b.Property("ActionDurationMinutes")
+ .HasColumnType("INTEGER");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("MinAge")
+ .HasColumnType("TEXT");
+
+ b.Property("RoleId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId")
+ .IsUnique();
+
+ b.ToTable("AntiAltSetting");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Action")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("PunishDuration")
+ .HasColumnType("INTEGER");
+
+ b.Property("Seconds")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserThreshold")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId")
+ .IsUnique();
+
+ b.ToTable("AntiRaidSetting");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AntiSpamSettingId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AntiSpamSettingId");
+
+ b.ToTable("AntiSpamIgnore");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Action")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("MessageThreshold")
+ .HasColumnType("INTEGER");
+
+ b.Property("MuteTime")
+ .HasColumnType("INTEGER");
+
+ b.Property("RoleId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId")
+ .IsUnique();
+
+ b.ToTable("AntiSpamSetting");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AutoCommand", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelName")
+ .HasColumnType("TEXT");
+
+ b.Property("CommandText")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("GuildName")
+ .HasColumnType("TEXT");
+
+ b.Property("Interval")
+ .HasColumnType("INTEGER");
+
+ b.Property("VoiceChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("VoiceChannelName")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("AutoCommands");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AutoTranslateChannel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AutoDelete")
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChannelId")
+ .IsUnique();
+
+ b.HasIndex("GuildId");
+
+ b.ToTable("AutoTranslateChannels");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.AutoTranslateUser", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("Source")
+ .HasColumnType("TEXT");
+
+ b.Property("Target")
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasAlternateKey("ChannelId", "UserId");
+
+ b.ToTable("AutoTranslateUsers");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.BanTemplate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Text")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildId")
+ .IsUnique();
+
+ b.ToTable("BanTemplates");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistEntry", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("ItemId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Type")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("Blacklist");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Mapping")
+ .HasColumnType("TEXT");
+
+ b.Property("Trigger")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("CommandAlias");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CommandName")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Seconds")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("CommandCooldown");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Amount")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("Extra")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Note")
+ .HasColumnType("TEXT");
+
+ b.Property("OtherId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValueSql("NULL");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("CurrencyTransactions");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.DelMsgOnCmdChannel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("State")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("DelMsgOnCmdChannel");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordPermOverride", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Command")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Perm")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildId", "Command")
+ .IsUnique();
+
+ b.ToTable("DiscordPermOverrides");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("ItemId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ItemType")
+ .HasColumnType("INTEGER");
+
+ b.Property("XpSettingsId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("XpSettingsId");
+
+ b.ToTable("ExcludedItem");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Url")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasAlternateKey("GuildConfigId", "Url");
+
+ b.ToTable("FeedSub");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("FilterChannelId");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Word")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("FilteredWord");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterLinksChannelId", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("FilterLinksChannelId");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterWordsChannelId", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("FilterWordsChannelId");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId");
+
+ b.ToTable("GCChannelId");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.GroupName", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildConfigId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("Number")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildConfigId", "Number")
+ .IsUnique();
+
+ b.ToTable("GroupName");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AutoAssignRoleIds")
+ .HasColumnType("TEXT");
+
+ b.Property("AutoDeleteByeMessagesTimer")
+ .HasColumnType("INTEGER");
+
+ b.Property("AutoDeleteGreetMessagesTimer")
+ .HasColumnType("INTEGER");
+
+ b.Property("AutoDeleteSelfAssignedRoleMessages")
+ .HasColumnType("INTEGER");
+
+ b.Property("BoostMessage")
+ .HasColumnType("TEXT");
+
+ b.Property("BoostMessageChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("BoostMessageDeleteAfter")
+ .HasColumnType("INTEGER");
+
+ b.Property("ByeMessageChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelByeMessageText")
+ .HasColumnType("TEXT");
+
+ b.Property("ChannelGreetMessageText")
+ .HasColumnType("TEXT");
+
+ b.Property("CleverbotEnabled")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("DeleteMessageOnCommand")
+ .HasColumnType("INTEGER");
+
+ b.Property("DeleteStreamOnlineMessage")
+ .HasColumnType("INTEGER");
+
+ b.Property("DmGreetMessageText")
+ .HasColumnType("TEXT");
+
+ b.Property("ExclusiveSelfAssignedRoles")
+ .HasColumnType("INTEGER");
+
+ b.Property("FilterInvites")
+ .HasColumnType("INTEGER");
+
+ b.Property("FilterLinks")
+ .HasColumnType("INTEGER");
+
+ b.Property("FilterWords")
+ .HasColumnType("INTEGER");
+
+ b.Property("GameVoiceChannel")
+ .HasColumnType("INTEGER");
+
+ b.Property("GreetMessageChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Locale")
+ .HasColumnType("TEXT");
+
+ b.Property("MuteRoleName")
+ .HasColumnType("TEXT");
+
+ b.Property("NotifyStreamOffline")
+ .HasColumnType("INTEGER");
+
+ b.Property("PermissionRole")
+ .HasColumnType("TEXT");
+
+ b.Property("Prefix")
+ .HasColumnType("TEXT");
+
+ b.Property("SendBoostMessage")
+ .HasColumnType("INTEGER");
+
+ b.Property("SendChannelByeMessage")
+ .HasColumnType("INTEGER");
+
+ b.Property("SendChannelGreetMessage")
+ .HasColumnType("INTEGER");
+
+ b.Property("SendDmGreetMessage")
+ .HasColumnType("INTEGER");
+
+ b.Property("TimeZoneId")
+ .HasColumnType("TEXT");
+
+ b.Property("VerboseErrors")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValue(true);
+
+ b.Property("VerbosePermissions")
+ .HasColumnType("INTEGER");
+
+ b.Property("WarnExpireAction")
+ .HasColumnType("INTEGER");
+
+ b.Property("WarnExpireHours")
+ .HasColumnType("INTEGER");
+
+ b.Property("WarningsInitialized")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildId")
+ .IsUnique();
+
+ b.HasIndex("WarnExpireHours");
+
+ b.ToTable("GuildConfigs");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("ItemType")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogItemId")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogSettingId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LogSettingId", "LogItemId", "ItemType")
+ .IsUnique();
+
+ b.ToTable("IgnoredLogChannels");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("LogSettingId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LogSettingId");
+
+ b.ToTable("IgnoredVoicePresenceCHannels");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.ImageOnlyChannel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Type")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChannelId")
+ .IsUnique();
+
+ b.ToTable("ImageOnlyChannels");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelCreatedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelDestroyedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ChannelUpdatedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAdded")
+ .HasColumnType("TEXT");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogOtherId")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogUserPresenceId")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogVoicePresenceId")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogVoicePresenceTTSId")
+ .HasColumnType("INTEGER");
+
+ b.Property("LogWarnsId")
+ .HasColumnType("INTEGER");
+
+ b.Property("MessageDeletedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("MessageUpdatedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserBannedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserJoinedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserLeftId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserMutedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserUnbannedId")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserUpdatedId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildId")
+ .IsUnique();
+
+ b.ToTable("LogSettings");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlayerSettings", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AutoDisconnect")
+ .HasColumnType("INTEGER");
+
+ b.Property("AutoPlay")
+ .HasColumnType("INTEGER");
+
+ b.Property("GuildId")
+ .HasColumnType("INTEGER");
+
+ b.Property("MusicChannelId")
+ .HasColumnType("INTEGER");
+
+ b.Property("PlayerRepeat")
+ .HasColumnType("INTEGER");
+
+ b.Property("QualityPreset")
+ .HasColumnType("INTEGER");
+
+ b.Property("Volume")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER")
+ .HasDefaultValue(100);
+
+ b.HasKey("Id");
+
+ b.HasIndex("GuildId")
+ .IsUnique();
+
+ b.ToTable("MusicPlayerSettings");
+ });
+
+ modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b =>
+ {
+ b.Property