Migrations again O.o
This commit is contained in:
		
							
								
								
									
										708
									
								
								src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										708
									
								
								src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,708 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore.Infrastructure;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore.Metadata;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore.Migrations;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database.Impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Migrations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [DbContext(typeof(NadekoSqliteContext))]
 | 
				
			||||||
 | 
					    [Migration("20161003170208_filtering")]
 | 
				
			||||||
 | 
					    partial class filtering
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            modelBuilder
 | 
				
			||||||
 | 
					                .HasAnnotation("ProductVersion", "1.0.0-rtm-21431");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ItemId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("Type");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("BlacklistItem");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("BufferSize");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<float>("CurrencyGenerationChance");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("CurrencyGenerationCooldown");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("CurrencyName");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("CurrencyPluralName");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("CurrencySign");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("DontJoinServers");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("ForwardMessages");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("ForwardToAllOwners");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("RemindMessageFormat");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("RotatingStatuses");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("BotConfig");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("BaseDestroyed");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("CallUser");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("ClashWarId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("Stars");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<DateTime>("TimeAdded");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("ClashWarId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("ClashCallers");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("EnemyClan");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GuildId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("Size");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<DateTime>("StartedAt");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("WarState");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("ClashOfClans");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("InternalTrigger");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<decimal>("Modifier");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("UnitType");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("ConversionUnits");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<long>("Amount");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("UserId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("UserId")
 | 
				
			||||||
 | 
					                        .IsUnique();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("Currency");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("Amount");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Name");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("UserId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("UserId")
 | 
				
			||||||
 | 
					                        .IsUnique();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("Donators");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Text");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("EightBallResponses");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("GuildConfigId1");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("GuildConfigId1");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("FilterChannelId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Word");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("FilteredWord");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GuildId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("LastStatus");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("Type");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Username");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("FollowedStream");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("AutoAssignRoleId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("AutoDeleteByeMessages");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("AutoDeleteGreetMessages");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("AutoDeleteGreetMessagesTimer");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("AutoDeleteSelfAssignedRoleMessages");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ByeMessageChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("ChannelByeMessageText");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("ChannelGreetMessageText");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<float>("DefaultMusicVolume");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("DeleteMessageOnCommand");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("DmGreetMessageText");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("ExclusiveSelfAssignedRoles");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("FilterInvites");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("FilterWords");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong?>("GenerateCurrencyChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GreetMessageChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GuildId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("PermissionRole");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("RootPermissionId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("SendChannelByeMessage");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("SendChannelGreetMessage");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("SendDmGreetMessage");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("VerbosePermissions");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("VoicePlusTextEnabled");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("GuildId")
 | 
				
			||||||
 | 
					                        .IsUnique();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("RootPermissionId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("GuildConfigs");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("IgnoredLogChannels");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("IgnoredVoicePresenceCHannels");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("ChannelCreated");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("ChannelDestroyed");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("ChannelUpdated");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("IsLogging");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("LogUserPresence");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("LogVoicePresence");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("MessageDeleted");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("MessageReceived");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("MessageUpdated");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("UserBanned");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("UserJoined");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("UserLeft");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("UserPresenceChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("UserUnbanned");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("UserUpdated");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("VoicePresenceChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("LogSettings");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("ModuleName");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Prefix");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("ModulePrefixes");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Author");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("AuthorId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Name");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("MusicPlaylists");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("NextId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("PrimaryTarget");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("PrimaryTargetId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("SecondaryTarget");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("SecondaryTargetName");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("State");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("NextId")
 | 
				
			||||||
 | 
					                        .IsUnique();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("Permission");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Status");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("PlayingStatus");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("MusicPlaylistId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Provider");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("ProviderType");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Query");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Title");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Uri");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("MusicPlaylistId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("PlaylistSong");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("AuthorId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("AuthorName")
 | 
				
			||||||
 | 
					                        .IsRequired();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GuildId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Keyword")
 | 
				
			||||||
 | 
					                        .IsRequired();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Text")
 | 
				
			||||||
 | 
					                        .IsRequired();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("Quotes");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Icon");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Name");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("RaceAnimals");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<bool>("IsPrivate");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Message");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ServerId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("UserId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<DateTime>("When");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("Reminders");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("ChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GuildId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<TimeSpan>("Interval");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Message");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("ChannelId")
 | 
				
			||||||
 | 
					                        .IsUnique();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("Repeaters");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("GuildId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("RoleId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("GuildId", "RoleId")
 | 
				
			||||||
 | 
					                        .IsUnique();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("SelfAssignableRoles");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Author");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Text");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("TypingArticles");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
 | 
				
			||||||
 | 
					                        .WithMany("Blacklist")
 | 
				
			||||||
 | 
					                        .HasForeignKey("BotConfigId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar")
 | 
				
			||||||
 | 
					                        .WithMany("Bases")
 | 
				
			||||||
 | 
					                        .HasForeignKey("ClashWarId")
 | 
				
			||||||
 | 
					                        .OnDelete(DeleteBehavior.Cascade);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
 | 
				
			||||||
 | 
					                        .WithMany("EightBallResponses")
 | 
				
			||||||
 | 
					                        .HasForeignKey("BotConfigId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
 | 
				
			||||||
 | 
					                        .WithMany("FilterInvitesChannelIds")
 | 
				
			||||||
 | 
					                        .HasForeignKey("GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
 | 
				
			||||||
 | 
					                        .WithMany("FilterWordsChannelIds")
 | 
				
			||||||
 | 
					                        .HasForeignKey("GuildConfigId1");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
 | 
				
			||||||
 | 
					                        .WithMany("FilteredWords")
 | 
				
			||||||
 | 
					                        .HasForeignKey("GuildConfigId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
 | 
				
			||||||
 | 
					                        .WithMany("FollowedStreams")
 | 
				
			||||||
 | 
					                        .HasForeignKey("GuildConfigId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
 | 
				
			||||||
 | 
					                        .WithMany()
 | 
				
			||||||
 | 
					                        .HasForeignKey("LogSettingId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission")
 | 
				
			||||||
 | 
					                        .WithMany()
 | 
				
			||||||
 | 
					                        .HasForeignKey("RootPermissionId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
 | 
				
			||||||
 | 
					                        .WithMany("IgnoredChannels")
 | 
				
			||||||
 | 
					                        .HasForeignKey("LogSettingId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
 | 
				
			||||||
 | 
					                        .WithMany("IgnoredVoicePresenceChannelIds")
 | 
				
			||||||
 | 
					                        .HasForeignKey("LogSettingId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig")
 | 
				
			||||||
 | 
					                        .WithMany("ModulePrefixes")
 | 
				
			||||||
 | 
					                        .HasForeignKey("BotConfigId")
 | 
				
			||||||
 | 
					                        .OnDelete(DeleteBehavior.Cascade);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next")
 | 
				
			||||||
 | 
					                        .WithOne("Previous")
 | 
				
			||||||
 | 
					                        .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
 | 
				
			||||||
 | 
					                        .WithMany("RotatingStatusMessages")
 | 
				
			||||||
 | 
					                        .HasForeignKey("BotConfigId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist")
 | 
				
			||||||
 | 
					                        .WithMany("Songs")
 | 
				
			||||||
 | 
					                        .HasForeignKey("MusicPlaylistId")
 | 
				
			||||||
 | 
					                        .OnDelete(DeleteBehavior.Cascade);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
 | 
				
			||||||
 | 
					                        .WithMany("RaceAnimals")
 | 
				
			||||||
 | 
					                        .HasForeignKey("BotConfigId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										103
									
								
								src/NadekoBot/Migrations/20161003170208_filtering.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								src/NadekoBot/Migrations/20161003170208_filtering.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore.Migrations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Migrations
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public partial class filtering : Migration
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        protected override void Up(MigrationBuilder migrationBuilder)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            migrationBuilder.CreateTable(
 | 
				
			||||||
 | 
					                name: "FilterChannelId",
 | 
				
			||||||
 | 
					                columns: table => new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Id = table.Column<int>(nullable: false)
 | 
				
			||||||
 | 
					                        .Annotation("Autoincrement", true),
 | 
				
			||||||
 | 
					                    ChannelId = table.Column<ulong>(nullable: false),
 | 
				
			||||||
 | 
					                    GuildConfigId = table.Column<int>(nullable: true),
 | 
				
			||||||
 | 
					                    GuildConfigId1 = table.Column<int>(nullable: true)
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                constraints: table =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    table.PrimaryKey("PK_FilterChannelId", x => x.Id);
 | 
				
			||||||
 | 
					                    table.ForeignKey(
 | 
				
			||||||
 | 
					                        name: "FK_FilterChannelId_GuildConfigs_GuildConfigId",
 | 
				
			||||||
 | 
					                        column: x => x.GuildConfigId,
 | 
				
			||||||
 | 
					                        principalTable: "GuildConfigs",
 | 
				
			||||||
 | 
					                        principalColumn: "Id",
 | 
				
			||||||
 | 
					                        onDelete: ReferentialAction.Restrict);
 | 
				
			||||||
 | 
					                    table.ForeignKey(
 | 
				
			||||||
 | 
					                        name: "FK_FilterChannelId_GuildConfigs_GuildConfigId1",
 | 
				
			||||||
 | 
					                        column: x => x.GuildConfigId1,
 | 
				
			||||||
 | 
					                        principalTable: "GuildConfigs",
 | 
				
			||||||
 | 
					                        principalColumn: "Id",
 | 
				
			||||||
 | 
					                        onDelete: ReferentialAction.Restrict);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateTable(
 | 
				
			||||||
 | 
					                name: "FilteredWord",
 | 
				
			||||||
 | 
					                columns: table => new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Id = table.Column<int>(nullable: false)
 | 
				
			||||||
 | 
					                        .Annotation("Autoincrement", true),
 | 
				
			||||||
 | 
					                    GuildConfigId = table.Column<int>(nullable: true),
 | 
				
			||||||
 | 
					                    Word = table.Column<string>(nullable: true)
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                constraints: table =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    table.PrimaryKey("PK_FilteredWord", x => x.Id);
 | 
				
			||||||
 | 
					                    table.ForeignKey(
 | 
				
			||||||
 | 
					                        name: "FK_FilteredWord_GuildConfigs_GuildConfigId",
 | 
				
			||||||
 | 
					                        column: x => x.GuildConfigId,
 | 
				
			||||||
 | 
					                        principalTable: "GuildConfigs",
 | 
				
			||||||
 | 
					                        principalColumn: "Id",
 | 
				
			||||||
 | 
					                        onDelete: ReferentialAction.Restrict);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.AddColumn<bool>(
 | 
				
			||||||
 | 
					                name: "FilterInvites",
 | 
				
			||||||
 | 
					                table: "GuildConfigs",
 | 
				
			||||||
 | 
					                nullable: false,
 | 
				
			||||||
 | 
					                defaultValue: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.AddColumn<bool>(
 | 
				
			||||||
 | 
					                name: "FilterWords",
 | 
				
			||||||
 | 
					                table: "GuildConfigs",
 | 
				
			||||||
 | 
					                nullable: false,
 | 
				
			||||||
 | 
					                defaultValue: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateIndex(
 | 
				
			||||||
 | 
					                name: "IX_FilterChannelId_GuildConfigId",
 | 
				
			||||||
 | 
					                table: "FilterChannelId",
 | 
				
			||||||
 | 
					                column: "GuildConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateIndex(
 | 
				
			||||||
 | 
					                name: "IX_FilterChannelId_GuildConfigId1",
 | 
				
			||||||
 | 
					                table: "FilterChannelId",
 | 
				
			||||||
 | 
					                column: "GuildConfigId1");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateIndex(
 | 
				
			||||||
 | 
					                name: "IX_FilteredWord_GuildConfigId",
 | 
				
			||||||
 | 
					                table: "FilteredWord",
 | 
				
			||||||
 | 
					                column: "GuildConfigId");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected override void Down(MigrationBuilder migrationBuilder)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            migrationBuilder.DropColumn(
 | 
				
			||||||
 | 
					                name: "FilterInvites",
 | 
				
			||||||
 | 
					                table: "GuildConfigs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.DropColumn(
 | 
				
			||||||
 | 
					                name: "FilterWords",
 | 
				
			||||||
 | 
					                table: "GuildConfigs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
 | 
					                name: "FilterChannelId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
 | 
					                name: "FilteredWord");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										217
									
								
								src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,217 @@
 | 
				
			|||||||
 | 
					using Discord;
 | 
				
			||||||
 | 
					using Discord.Commands;
 | 
				
			||||||
 | 
					using NadekoBot.Attributes;
 | 
				
			||||||
 | 
					using NadekoBot.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Concurrent;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Modules.Permissions
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public partial class Permissions
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [Group]
 | 
				
			||||||
 | 
					        public class FilterCommands
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public static HashSet<ulong> InviteFilteringChannels { get; set; }
 | 
				
			||||||
 | 
					            public static HashSet<ulong> InviteFilteringServers { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //serverid, filteredwords
 | 
				
			||||||
 | 
					            private static ConcurrentDictionary<ulong, HashSet<string>> ServerFilteredWords { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public static HashSet<ulong> WordFilteringChannels { get; set; }
 | 
				
			||||||
 | 
					            public static HashSet<ulong> WordFilteringServers { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public static HashSet<string> FilteredWordsForChannel(ulong channelId, ulong guildId)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var words = FilteredWordsForServer(guildId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!words.Any() || WordFilteringChannels.Contains(channelId))
 | 
				
			||||||
 | 
					                    return words;
 | 
				
			||||||
 | 
					                return new HashSet<string>();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public static HashSet<string> FilteredWordsForServer(ulong guildId)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var words = new HashSet<string>();
 | 
				
			||||||
 | 
					                ServerFilteredWords.TryGetValue(guildId, out words);
 | 
				
			||||||
 | 
					                return words;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            static FilterCommands()
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var guildConfigs = uow.GuildConfigs.GetAll();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    InviteFilteringServers = new HashSet<ulong>(guildConfigs.Where(gc => gc.FilterInvites).Select(gc => gc.GuildId));
 | 
				
			||||||
 | 
					                    InviteFilteringChannels = new HashSet<ulong>(guildConfigs.SelectMany(gc => gc.FilterInvitesChannelIds.Select(fci => fci.ChannelId)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var dict = guildConfigs.ToDictionary(gc => gc.GuildId, gc => new HashSet<string>(gc.FilteredWords.Select(fw => fw.Word)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    ServerFilteredWords = new ConcurrentDictionary<ulong, HashSet<string>>(dict);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var serverFiltering = guildConfigs.Where(gc => gc.FilterWords);
 | 
				
			||||||
 | 
					                    WordFilteringServers = new HashSet<ulong>(serverFiltering.Select(gc => gc.GuildId));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    WordFilteringChannels = new HashSet<ulong>(guildConfigs.SelectMany(gc => gc.FilterWordsChannelIds.Select(fwci => fwci.ChannelId)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            public async Task SrvrFilterInv(IUserMessage imsg)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var channel = (ITextChannel)imsg.Channel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                bool enabled;
 | 
				
			||||||
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var config = uow.GuildConfigs.For(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    enabled = config.FilterInvites = !config.FilterInvites;
 | 
				
			||||||
 | 
					                    await uow.CompleteAsync().ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (enabled)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    InviteFilteringServers.Add(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Invite filtering enabled on the whole server.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    InviteFilteringServers.Remove(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Invite filtering disabled on the whole server.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            public async Task ChnlFilterInv(IUserMessage imsg)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var channel = (ITextChannel)imsg.Channel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                int removed;
 | 
				
			||||||
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var config = uow.GuildConfigs.For(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    removed = config.FilterInvitesChannelIds.RemoveWhere(fc => fc.ChannelId == channel.Id);
 | 
				
			||||||
 | 
					                    if (removed == 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        config.FilterInvitesChannelIds.Add(new Services.Database.Models.FilterChannelId()
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            ChannelId = channel.Id
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    await uow.CompleteAsync().ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (removed == 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    InviteFilteringChannels.Add(channel.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Invite filtering enabled on this channel.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    InviteFilteringChannels.Remove(channel.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Invite filtering disabled on this channel.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            public async Task SrvrFilterWords(IUserMessage imsg)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var channel = (ITextChannel)imsg.Channel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                bool enabled;
 | 
				
			||||||
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var config = uow.GuildConfigs.For(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    enabled = config.FilterWords = !config.FilterWords;
 | 
				
			||||||
 | 
					                    await uow.CompleteAsync().ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (enabled)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    WordFilteringServers.Add(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Word filtering enabled on the whole server.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    WordFilteringServers.Remove(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Word filtering disabled on the whole server.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            public async Task ChnlFilterWords(IUserMessage imsg)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var channel = (ITextChannel)imsg.Channel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                int removed;
 | 
				
			||||||
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var config = uow.GuildConfigs.For(channel.Guild.Id);
 | 
				
			||||||
 | 
					                    removed = config.FilterWordsChannelIds.RemoveWhere(fc => fc.ChannelId == channel.Id);
 | 
				
			||||||
 | 
					                    if (removed == 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        config.FilterWordsChannelIds.Add(new Services.Database.Models.FilterChannelId()
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            ChannelId = channel.Id
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    await uow.CompleteAsync().ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (removed == 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    WordFilteringChannels.Add(channel.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Word filtering enabled on this channel.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    WordFilteringChannels.Remove(channel.Id);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Word filtering disabled on this channel.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            public async Task AddFilterWord(IUserMessage imsg, [Remainder] string word)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var channel = (ITextChannel)imsg.Channel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                word = word?.Trim().ToLowerInvariant();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (string.IsNullOrWhiteSpace(word))
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                bool contains;
 | 
				
			||||||
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var config = uow.GuildConfigs.For(channel.Guild.Id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    contains = config.FilteredWords.Any(fw => fw.Word == word);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (!contains)
 | 
				
			||||||
 | 
					                        config.FilteredWords.Add(new Services.Database.Models.FilteredWord() { Word = word});
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!contains)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var filteredWords = ServerFilteredWords.GetOrAdd(channel.Guild.Id, new HashSet<string>());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    filteredWords.Add(word);
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync($"Word `{word}` successfully added to the list of filtered words.");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user