Huge amount of work. Migrations, bugfixes, fixes to stream notifications, etc
This commit is contained in:
parent
633a6fb5ba
commit
eecaf9cd15
@ -1,712 +0,0 @@
|
|||||||
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("20161007091612_first")]
|
|
||||||
partial class first
|
|
||||||
{
|
|
||||||
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<string>("DMHelpString");
|
|
||||||
|
|
||||||
b.Property<bool>("DontJoinServers");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardToAllOwners");
|
|
||||||
|
|
||||||
b.Property<string>("HelpString");
|
|
||||||
|
|
||||||
b.Property<int>("MigrationVersion");
|
|
||||||
|
|
||||||
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>("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");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,737 +0,0 @@
|
|||||||
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("20161007210034_cmdcds")]
|
|
||||||
partial class cmdcds
|
|
||||||
{
|
|
||||||
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<string>("DMHelpString");
|
|
||||||
|
|
||||||
b.Property<bool>("DontJoinServers");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardToAllOwners");
|
|
||||||
|
|
||||||
b.Property<string>("HelpString");
|
|
||||||
|
|
||||||
b.Property<int>("MigrationVersion");
|
|
||||||
|
|
||||||
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.CommandCooldown", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<string>("CommandName");
|
|
||||||
|
|
||||||
b.Property<int?>("GuildConfigId");
|
|
||||||
|
|
||||||
b.Property<int>("Seconds");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId");
|
|
||||||
|
|
||||||
b.ToTable("CommandCooldown");
|
|
||||||
});
|
|
||||||
|
|
||||||
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>("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.CommandCooldown", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
|
|
||||||
.WithMany("CommandCooldowns")
|
|
||||||
.HasForeignKey("GuildConfigId");
|
|
||||||
});
|
|
||||||
|
|
||||||
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");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
namespace NadekoBot.Migrations
|
|
||||||
{
|
|
||||||
public partial class cmdcds : Migration
|
|
||||||
{
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "CommandCooldown",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(nullable: false)
|
|
||||||
.Annotation("Autoincrement", true),
|
|
||||||
CommandName = table.Column<string>(nullable: true),
|
|
||||||
GuildConfigId = table.Column<int>(nullable: true),
|
|
||||||
Seconds = table.Column<int>(nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_CommandCooldown", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_CommandCooldown_GuildConfigs_GuildConfigId",
|
|
||||||
column: x => x.GuildConfigId,
|
|
||||||
principalTable: "GuildConfigs",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Restrict);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_CommandCooldown_GuildConfigId",
|
|
||||||
table: "CommandCooldown",
|
|
||||||
column: "GuildConfigId");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "CommandCooldown");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,755 +0,0 @@
|
|||||||
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("20161008022813_customreactions")]
|
|
||||||
partial class customreactions
|
|
||||||
{
|
|
||||||
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<string>("DMHelpString");
|
|
||||||
|
|
||||||
b.Property<bool>("DontJoinServers");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardToAllOwners");
|
|
||||||
|
|
||||||
b.Property<string>("HelpString");
|
|
||||||
|
|
||||||
b.Property<int>("MigrationVersion");
|
|
||||||
|
|
||||||
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.CommandCooldown", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<string>("CommandName");
|
|
||||||
|
|
||||||
b.Property<int?>("GuildConfigId");
|
|
||||||
|
|
||||||
b.Property<int>("Seconds");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId");
|
|
||||||
|
|
||||||
b.ToTable("CommandCooldown");
|
|
||||||
});
|
|
||||||
|
|
||||||
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.CustomReaction", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong?>("GuildId");
|
|
||||||
|
|
||||||
b.Property<bool>("IsRegex");
|
|
||||||
|
|
||||||
b.Property<string>("Response");
|
|
||||||
|
|
||||||
b.Property<string>("Trigger");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("CustomReactions");
|
|
||||||
});
|
|
||||||
|
|
||||||
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>("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.CommandCooldown", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
|
|
||||||
.WithMany("CommandCooldowns")
|
|
||||||
.HasForeignKey("GuildConfigId");
|
|
||||||
});
|
|
||||||
|
|
||||||
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");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
namespace NadekoBot.Migrations
|
|
||||||
{
|
|
||||||
public partial class customreactions : Migration
|
|
||||||
{
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "CustomReactions",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(nullable: false)
|
|
||||||
.Annotation("Autoincrement", true),
|
|
||||||
GuildId = table.Column<ulong>(nullable: true),
|
|
||||||
IsRegex = table.Column<bool>(nullable: false),
|
|
||||||
Response = table.Column<string>(nullable: true),
|
|
||||||
Trigger = table.Column<string>(nullable: true)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_CustomReactions", x => x.Id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "CustomReactions");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
namespace NadekoBot.Migrations
|
|
||||||
{
|
|
||||||
public partial class second : Migration
|
|
||||||
{
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AddColumn<bool>(
|
|
||||||
name: "OwnerOnly",
|
|
||||||
table: "CustomReactions",
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "OwnerOnly",
|
|
||||||
table: "CustomReactions");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,8 +8,8 @@ using NadekoBot.Services.Database.Impl;
|
|||||||
namespace NadekoBot.Migrations
|
namespace NadekoBot.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(NadekoSqliteContext))]
|
[DbContext(typeof(NadekoSqliteContext))]
|
||||||
[Migration("20161009041508_second")]
|
[Migration("20161011031532_first")]
|
||||||
partial class second
|
partial class first
|
||||||
{
|
{
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
@ -269,8 +269,6 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
b.Property<ulong>("GuildId");
|
||||||
|
|
||||||
b.Property<bool>("LastStatus");
|
|
||||||
|
|
||||||
b.Property<int>("Type");
|
b.Property<int>("Type");
|
||||||
|
|
||||||
b.Property<string>("Username");
|
b.Property<string>("Username");
|
||||||
@ -282,6 +280,22 @@ namespace NadekoBot.Migrations
|
|||||||
b.ToTable("FollowedStream");
|
b.ToTable("FollowedStream");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<ulong>("ChannelId");
|
||||||
|
|
||||||
|
b.Property<int?>("GuildConfigId");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("GuildConfigId");
|
||||||
|
|
||||||
|
b.ToTable("GCChannelId");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("Id")
|
b.Property<int>("Id")
|
||||||
@ -315,8 +329,6 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<bool>("FilterWords");
|
b.Property<bool>("FilterWords");
|
||||||
|
|
||||||
b.Property<ulong?>("GenerateCurrencyChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GreetMessageChannelId");
|
b.Property<ulong>("GreetMessageChannelId");
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
b.Property<ulong>("GuildId");
|
||||||
@ -623,20 +635,6 @@ namespace NadekoBot.Migrations
|
|||||||
b.ToTable("SelfAssignableRoles");
|
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 =>
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
||||||
@ -691,6 +689,13 @@ namespace NadekoBot.Migrations
|
|||||||
.HasForeignKey("GuildConfigId");
|
.HasForeignKey("GuildConfigId");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
|
||||||
|
.WithMany("GenerateCurrencyChannelIds")
|
||||||
|
.HasForeignKey("GuildConfigId");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
|
b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
|
@ -81,6 +81,23 @@ namespace NadekoBot.Migrations
|
|||||||
table.PrimaryKey("PK_Currency", x => x.Id);
|
table.PrimaryKey("PK_Currency", x => x.Id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CustomReactions",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(nullable: false)
|
||||||
|
.Annotation("Autoincrement", true),
|
||||||
|
GuildId = table.Column<ulong>(nullable: true),
|
||||||
|
IsRegex = table.Column<bool>(nullable: false),
|
||||||
|
OwnerOnly = table.Column<bool>(nullable: false),
|
||||||
|
Response = table.Column<string>(nullable: true),
|
||||||
|
Trigger = table.Column<string>(nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CustomReactions", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "Donators",
|
name: "Donators",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@ -228,20 +245,6 @@ namespace NadekoBot.Migrations
|
|||||||
table.PrimaryKey("PK_SelfAssignableRoles", x => x.Id);
|
table.PrimaryKey("PK_SelfAssignableRoles", x => x.Id);
|
||||||
});
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "TypingArticles",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(nullable: false)
|
|
||||||
.Annotation("Autoincrement", true),
|
|
||||||
Author = table.Column<string>(nullable: true),
|
|
||||||
Text = table.Column<string>(nullable: true)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_TypingArticles", x => x.Id);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "BlacklistItem",
|
name: "BlacklistItem",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@ -452,7 +455,6 @@ namespace NadekoBot.Migrations
|
|||||||
ExclusiveSelfAssignedRoles = table.Column<bool>(nullable: false),
|
ExclusiveSelfAssignedRoles = table.Column<bool>(nullable: false),
|
||||||
FilterInvites = table.Column<bool>(nullable: false),
|
FilterInvites = table.Column<bool>(nullable: false),
|
||||||
FilterWords = table.Column<bool>(nullable: false),
|
FilterWords = table.Column<bool>(nullable: false),
|
||||||
GenerateCurrencyChannelId = table.Column<ulong>(nullable: true),
|
|
||||||
GreetMessageChannelId = table.Column<ulong>(nullable: false),
|
GreetMessageChannelId = table.Column<ulong>(nullable: false),
|
||||||
GuildId = table.Column<ulong>(nullable: false),
|
GuildId = table.Column<ulong>(nullable: false),
|
||||||
LogSettingId = table.Column<int>(nullable: true),
|
LogSettingId = table.Column<int>(nullable: true),
|
||||||
@ -481,6 +483,27 @@ namespace NadekoBot.Migrations
|
|||||||
onDelete: ReferentialAction.Restrict);
|
onDelete: ReferentialAction.Restrict);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CommandCooldown",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(nullable: false)
|
||||||
|
.Annotation("Autoincrement", true),
|
||||||
|
CommandName = table.Column<string>(nullable: true),
|
||||||
|
GuildConfigId = table.Column<int>(nullable: true),
|
||||||
|
Seconds = table.Column<int>(nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CommandCooldown", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CommandCooldown_GuildConfigs_GuildConfigId",
|
||||||
|
column: x => x.GuildConfigId,
|
||||||
|
principalTable: "GuildConfigs",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Restrict);
|
||||||
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "FilterChannelId",
|
name: "FilterChannelId",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@ -537,7 +560,6 @@ namespace NadekoBot.Migrations
|
|||||||
ChannelId = table.Column<ulong>(nullable: false),
|
ChannelId = table.Column<ulong>(nullable: false),
|
||||||
GuildConfigId = table.Column<int>(nullable: true),
|
GuildConfigId = table.Column<int>(nullable: true),
|
||||||
GuildId = table.Column<ulong>(nullable: false),
|
GuildId = table.Column<ulong>(nullable: false),
|
||||||
LastStatus = table.Column<bool>(nullable: false),
|
|
||||||
Type = table.Column<int>(nullable: false),
|
Type = table.Column<int>(nullable: false),
|
||||||
Username = table.Column<string>(nullable: true)
|
Username = table.Column<string>(nullable: true)
|
||||||
},
|
},
|
||||||
@ -552,6 +574,26 @@ namespace NadekoBot.Migrations
|
|||||||
onDelete: ReferentialAction.Restrict);
|
onDelete: ReferentialAction.Restrict);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "GCChannelId",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(nullable: false)
|
||||||
|
.Annotation("Autoincrement", true),
|
||||||
|
ChannelId = table.Column<ulong>(nullable: false),
|
||||||
|
GuildConfigId = table.Column<int>(nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_GCChannelId", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_GCChannelId_GuildConfigs_GuildConfigId",
|
||||||
|
column: x => x.GuildConfigId,
|
||||||
|
principalTable: "GuildConfigs",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Restrict);
|
||||||
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_BlacklistItem_BotConfigId",
|
name: "IX_BlacklistItem_BotConfigId",
|
||||||
table: "BlacklistItem",
|
table: "BlacklistItem",
|
||||||
@ -562,6 +604,11 @@ namespace NadekoBot.Migrations
|
|||||||
table: "ClashCallers",
|
table: "ClashCallers",
|
||||||
column: "ClashWarId");
|
column: "ClashWarId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CommandCooldown_GuildConfigId",
|
||||||
|
table: "CommandCooldown",
|
||||||
|
column: "GuildConfigId");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_Currency_UserId",
|
name: "IX_Currency_UserId",
|
||||||
table: "Currency",
|
table: "Currency",
|
||||||
@ -599,6 +646,11 @@ namespace NadekoBot.Migrations
|
|||||||
table: "FollowedStream",
|
table: "FollowedStream",
|
||||||
column: "GuildConfigId");
|
column: "GuildConfigId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_GCChannelId_GuildConfigId",
|
||||||
|
table: "GCChannelId",
|
||||||
|
column: "GuildConfigId");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_GuildConfigs_GuildId",
|
name: "IX_GuildConfigs_GuildId",
|
||||||
table: "GuildConfigs",
|
table: "GuildConfigs",
|
||||||
@ -672,12 +724,18 @@ namespace NadekoBot.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "ClashCallers");
|
name: "ClashCallers");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CommandCooldown");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "ConversionUnits");
|
name: "ConversionUnits");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "Currency");
|
name: "Currency");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CustomReactions");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "Donators");
|
name: "Donators");
|
||||||
|
|
||||||
@ -693,6 +751,9 @@ namespace NadekoBot.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "FollowedStream");
|
name: "FollowedStream");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "GCChannelId");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "IgnoredLogChannels");
|
name: "IgnoredLogChannels");
|
||||||
|
|
||||||
@ -723,9 +784,6 @@ namespace NadekoBot.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "SelfAssignableRoles");
|
name: "SelfAssignableRoles");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "TypingArticles");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "ClashOfClans");
|
name: "ClashOfClans");
|
||||||
|
|
@ -268,8 +268,6 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
b.Property<ulong>("GuildId");
|
||||||
|
|
||||||
b.Property<bool>("LastStatus");
|
|
||||||
|
|
||||||
b.Property<int>("Type");
|
b.Property<int>("Type");
|
||||||
|
|
||||||
b.Property<string>("Username");
|
b.Property<string>("Username");
|
||||||
@ -281,6 +279,22 @@ namespace NadekoBot.Migrations
|
|||||||
b.ToTable("FollowedStream");
|
b.ToTable("FollowedStream");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
b.Property<ulong>("ChannelId");
|
||||||
|
|
||||||
|
b.Property<int?>("GuildConfigId");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("GuildConfigId");
|
||||||
|
|
||||||
|
b.ToTable("GCChannelId");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("Id")
|
b.Property<int>("Id")
|
||||||
@ -314,8 +328,6 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<bool>("FilterWords");
|
b.Property<bool>("FilterWords");
|
||||||
|
|
||||||
b.Property<ulong?>("GenerateCurrencyChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GreetMessageChannelId");
|
b.Property<ulong>("GreetMessageChannelId");
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
b.Property<ulong>("GuildId");
|
||||||
@ -622,20 +634,6 @@ namespace NadekoBot.Migrations
|
|||||||
b.ToTable("SelfAssignableRoles");
|
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 =>
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
||||||
@ -690,6 +688,13 @@ namespace NadekoBot.Migrations
|
|||||||
.HasForeignKey("GuildConfigId");
|
.HasForeignKey("GuildConfigId");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("NadekoBot.Services.Database.Models.GuildConfig")
|
||||||
|
.WithMany("GenerateCurrencyChannelIds")
|
||||||
|
.HasForeignKey("GuildConfigId");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
|
b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
|
||||||
|
@ -13,6 +13,8 @@ using Newtonsoft.Json;
|
|||||||
using NLog;
|
using NLog;
|
||||||
using NadekoBot.Modules.Administration.Commands.Migration;
|
using NadekoBot.Modules.Administration.Commands.Migration;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
using NadekoBot.Extensions;
|
||||||
|
using NadekoBot.Services.Database;
|
||||||
|
|
||||||
namespace NadekoBot.Modules.Administration
|
namespace NadekoBot.Modules.Administration
|
||||||
{
|
{
|
||||||
@ -62,10 +64,158 @@ namespace NadekoBot.Modules.Administration
|
|||||||
|
|
||||||
private async Task Migrate0_9To1_0()
|
private async Task Migrate0_9To1_0()
|
||||||
{
|
{
|
||||||
Config0_9 oldData;
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
|
{
|
||||||
|
var botConfig = uow.BotConfig.GetOrCreate();
|
||||||
|
MigrateConfig0_9(botConfig);
|
||||||
|
MigratePermissions0_9(uow);
|
||||||
|
MigrateServerSpecificConfigs0_9(uow);
|
||||||
|
|
||||||
|
//NOW save it
|
||||||
|
botConfig.MigrationVersion = 1;
|
||||||
|
await uow.CompleteAsync().ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MigrateServerSpecificConfigs0_9(IUnitOfWork uow)
|
||||||
|
{
|
||||||
|
const string specificConfigsPath = "data/ServerSpecificConfigs.json";
|
||||||
|
var configs = new ConcurrentDictionary<ulong, ServerSpecificConfig>();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
oldData = JsonConvert.DeserializeObject<Config0_9>(File.ReadAllText("./data/config.json"));
|
configs = JsonConvert
|
||||||
|
.DeserializeObject<ConcurrentDictionary<ulong, ServerSpecificConfig>>(
|
||||||
|
File.ReadAllText(specificConfigsPath), new JsonSerializerSettings()
|
||||||
|
{
|
||||||
|
Error = (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.ErrorContext.Member.ToString() == "GenerateCurrencyChannels")
|
||||||
|
{
|
||||||
|
e.ErrorContext.Handled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_log.Warn(ex, "ServerSpecificConfig deserialization failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var config in configs)
|
||||||
|
{
|
||||||
|
var guildId = config.Key;
|
||||||
|
var data = config.Value;
|
||||||
|
|
||||||
|
var guildConfig = uow.GuildConfigs.For(guildId);
|
||||||
|
|
||||||
|
guildConfig.AutoAssignRoleId = data.AutoAssignedRole;
|
||||||
|
guildConfig.DeleteMessageOnCommand = data.AutoDeleteMessagesOnCommand;
|
||||||
|
guildConfig.DefaultMusicVolume = data.DefaultMusicVolume;
|
||||||
|
guildConfig.ExclusiveSelfAssignedRoles = data.ExclusiveSelfAssignedRoles;
|
||||||
|
guildConfig.GenerateCurrencyChannelIds = new HashSet<GCChannelId>(data.GenerateCurrencyChannels.Select(gc => new GCChannelId() { ChannelId = gc.Key }));
|
||||||
|
uow.SelfAssignedRoles.AddRange(data.ListOfSelfAssignableRoles.Select(r => new SelfAssignedRole() { GuildId = guildId, RoleId = r }).ToArray());
|
||||||
|
var logSetting = guildConfig.LogSetting;
|
||||||
|
guildConfig.LogSetting.IgnoredChannels = new HashSet<IgnoredLogChannel>(data.LogserverIgnoreChannels.Select(id => new IgnoredLogChannel() { ChannelId = id }));
|
||||||
|
guildConfig.FollowedStreams = new HashSet<FollowedStream>(data.ObservingStreams.Select(x =>
|
||||||
|
{
|
||||||
|
FollowedStream.FollowedStreamType type = FollowedStream.FollowedStreamType.Twitch;
|
||||||
|
switch (x.Type)
|
||||||
|
{
|
||||||
|
case StreamNotificationConfig0_9.StreamType.Twitch:
|
||||||
|
type = FollowedStream.FollowedStreamType.Twitch;
|
||||||
|
break;
|
||||||
|
case StreamNotificationConfig0_9.StreamType.Beam:
|
||||||
|
type = FollowedStream.FollowedStreamType.Beam;
|
||||||
|
break;
|
||||||
|
case StreamNotificationConfig0_9.StreamType.Hitbox:
|
||||||
|
type = FollowedStream.FollowedStreamType.Hitbox;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new FollowedStream()
|
||||||
|
{
|
||||||
|
ChannelId = x.ChannelId,
|
||||||
|
GuildId = guildId,
|
||||||
|
Username = x.Username.ToLowerInvariant(),
|
||||||
|
Type = type
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
guildConfig.VoicePlusTextEnabled = data.VoicePlusTextEnabled;
|
||||||
|
}
|
||||||
|
try { File.Move("data/ServerSpecificConfigs.json", "data/DELETE_ME_ServerSpecificCOnfigs.json"); } catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MigratePermissions0_9(IUnitOfWork uow)
|
||||||
|
{
|
||||||
|
var PermissionsDict = new ConcurrentDictionary<ulong, ServerPermissions0_9>();
|
||||||
|
Directory.CreateDirectory("data/permissions");
|
||||||
|
foreach (var file in Directory.EnumerateFiles("data/permissions/"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var strippedFileName = Path.GetFileNameWithoutExtension(file);
|
||||||
|
if (string.IsNullOrWhiteSpace(strippedFileName)) continue;
|
||||||
|
var id = ulong.Parse(strippedFileName);
|
||||||
|
var data = JsonConvert.DeserializeObject<ServerPermissions0_9>(File.ReadAllText(file));
|
||||||
|
PermissionsDict.TryAdd(id, data);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
foreach (var perms in PermissionsDict)
|
||||||
|
{
|
||||||
|
var guildId = perms.Key;
|
||||||
|
var data = perms.Value;
|
||||||
|
|
||||||
|
_log.Info("Migrating data from permissions folder for {0}", guildId);
|
||||||
|
|
||||||
|
var gconfig = uow.GuildConfigs.For(guildId);
|
||||||
|
|
||||||
|
gconfig.PermissionRole = data.PermissionsControllerRole;
|
||||||
|
gconfig.VerbosePermissions = data.Verbose;
|
||||||
|
gconfig.FilteredWords = new HashSet<FilteredWord>(data.Words.Select(w => w.ToLowerInvariant())
|
||||||
|
.Distinct()
|
||||||
|
.Select(w => new FilteredWord() { Word = w }));
|
||||||
|
gconfig.FilterWords = data.Permissions.FilterWords;
|
||||||
|
gconfig.FilterInvites = data.Permissions.FilterInvites;
|
||||||
|
|
||||||
|
gconfig.FilterInvitesChannelIds = new HashSet<FilterChannelId>();
|
||||||
|
gconfig.FilterInvitesChannelIds.AddRange(data.ChannelPermissions.Where(kvp => kvp.Value.FilterInvites)
|
||||||
|
.Select(cp => new FilterChannelId()
|
||||||
|
{
|
||||||
|
ChannelId = cp.Key
|
||||||
|
}));
|
||||||
|
|
||||||
|
gconfig.FilterWordsChannelIds = new HashSet<FilterChannelId>();
|
||||||
|
gconfig.FilterWordsChannelIds.AddRange(data.ChannelPermissions.Where(kvp => kvp.Value.FilterWords)
|
||||||
|
.Select(cp => new FilterChannelId()
|
||||||
|
{
|
||||||
|
ChannelId = cp.Key
|
||||||
|
}));
|
||||||
|
|
||||||
|
gconfig.CommandCooldowns = new HashSet<CommandCooldown>(data.CommandCooldowns
|
||||||
|
.Where(cc => !string.IsNullOrWhiteSpace(cc.Key) && cc.Value > 0)
|
||||||
|
.Select(cc => new CommandCooldown()
|
||||||
|
{
|
||||||
|
CommandName = cc.Key,
|
||||||
|
Seconds = cc.Value
|
||||||
|
}));
|
||||||
|
var smodules = data.Permissions.Modules.Where(m => !m.Value);
|
||||||
|
|
||||||
|
try { Directory.Move("data/permissions","data/DELETE_ME_permissions"); } catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MigrateConfig0_9(BotConfig botConfig)
|
||||||
|
{
|
||||||
|
Config0_9 oldConfig;
|
||||||
|
const string configPath = "./data/config.json";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
oldConfig = JsonConvert.DeserializeObject<Config0_9>(File.ReadAllText(configPath));
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException)
|
catch (FileNotFoundException)
|
||||||
{
|
{
|
||||||
@ -77,31 +227,29 @@ namespace NadekoBot.Modules.Administration
|
|||||||
_log.Error("Unknow error while deserializing file config.json, pls check its integrity, aborting migration");
|
_log.Error("Unknow error while deserializing file config.json, pls check its integrity, aborting migration");
|
||||||
throw new MigrationException();
|
throw new MigrationException();
|
||||||
}
|
}
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
|
||||||
{
|
|
||||||
var botConfig = uow.BotConfig.GetOrCreate();
|
|
||||||
|
|
||||||
//Basic
|
//Basic
|
||||||
botConfig.DontJoinServers = oldData.DontJoinServers;
|
botConfig.DontJoinServers = oldConfig.DontJoinServers;
|
||||||
botConfig.ForwardMessages = oldData.ForwardMessages;
|
botConfig.ForwardMessages = oldConfig.ForwardMessages;
|
||||||
botConfig.ForwardToAllOwners = oldData.ForwardToAllOwners;
|
botConfig.ForwardToAllOwners = oldConfig.ForwardToAllOwners;
|
||||||
botConfig.BufferSize = (ulong) oldData.BufferSize;
|
botConfig.BufferSize = (ulong)oldConfig.BufferSize;
|
||||||
botConfig.RemindMessageFormat = oldData.RemindMessageFormat;
|
botConfig.RemindMessageFormat = oldConfig.RemindMessageFormat;
|
||||||
botConfig.CurrencySign = oldData.CurrencySign;
|
botConfig.CurrencySign = oldConfig.CurrencySign;
|
||||||
botConfig.CurrencyName = oldData.CurrencyName;
|
botConfig.CurrencyName = oldConfig.CurrencyName;
|
||||||
botConfig.DMHelpString = oldData.DMHelpString;
|
botConfig.DMHelpString = oldConfig.DMHelpString;
|
||||||
botConfig.HelpString = oldData.HelpString;
|
botConfig.HelpString = oldConfig.HelpString;
|
||||||
|
|
||||||
//messages
|
//messages
|
||||||
botConfig.RotatingStatuses = oldData.IsRotatingStatus;
|
botConfig.RotatingStatuses = oldConfig.IsRotatingStatus;
|
||||||
var messages = new List<PlayingStatus>();
|
var messages = new List<PlayingStatus>();
|
||||||
|
|
||||||
oldData.RotatingStatuses.ForEach(i => messages.Add(new PlayingStatus { Status = i }));
|
oldConfig.RotatingStatuses.ForEach(i => messages.Add(new PlayingStatus { Status = i }));
|
||||||
botConfig.RotatingStatusMessages = messages;
|
botConfig.RotatingStatusMessages = messages;
|
||||||
|
|
||||||
//races
|
//races
|
||||||
var races = new HashSet<RaceAnimal>();
|
var races = new HashSet<RaceAnimal>();
|
||||||
oldData.RaceAnimals.ForEach(i => races.Add(new RaceAnimal() { Icon = i, Name = i }));
|
oldConfig.RaceAnimals.ForEach(i => races.Add(new RaceAnimal() { Icon = i, Name = i }));
|
||||||
|
if (races.Any())
|
||||||
botConfig.RaceAnimals = races;
|
botConfig.RaceAnimals = races;
|
||||||
|
|
||||||
//Prefix
|
//Prefix
|
||||||
@ -110,61 +258,58 @@ namespace NadekoBot.Modules.Administration
|
|||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "Administration",
|
ModuleName = "Administration",
|
||||||
Prefix = oldData.CommandPrefixes.Administration
|
Prefix = oldConfig.CommandPrefixes.Administration
|
||||||
},
|
},
|
||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "Searches",
|
ModuleName = "Searches",
|
||||||
Prefix = oldData.CommandPrefixes.Searches
|
Prefix = oldConfig.CommandPrefixes.Searches
|
||||||
},
|
},
|
||||||
new ModulePrefix() {ModuleName = "NSFW", Prefix = oldData.CommandPrefixes.NSFW},
|
new ModulePrefix() {ModuleName = "NSFW", Prefix = oldConfig.CommandPrefixes.NSFW},
|
||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "Conversations",
|
ModuleName = "Conversations",
|
||||||
Prefix = oldData.CommandPrefixes.Conversations
|
Prefix = oldConfig.CommandPrefixes.Conversations
|
||||||
},
|
},
|
||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "ClashOfClans",
|
ModuleName = "ClashOfClans",
|
||||||
Prefix = oldData.CommandPrefixes.ClashOfClans
|
Prefix = oldConfig.CommandPrefixes.ClashOfClans
|
||||||
},
|
},
|
||||||
new ModulePrefix() {ModuleName = "Help", Prefix = oldData.CommandPrefixes.Help},
|
new ModulePrefix() {ModuleName = "Help", Prefix = oldConfig.CommandPrefixes.Help},
|
||||||
new ModulePrefix() {ModuleName = "Music", Prefix = oldData.CommandPrefixes.Music},
|
new ModulePrefix() {ModuleName = "Music", Prefix = oldConfig.CommandPrefixes.Music},
|
||||||
new ModulePrefix() {ModuleName = "Trello", Prefix = oldData.CommandPrefixes.Trello},
|
new ModulePrefix() {ModuleName = "Trello", Prefix = oldConfig.CommandPrefixes.Trello},
|
||||||
new ModulePrefix() {ModuleName = "Games", Prefix = oldData.CommandPrefixes.Games},
|
new ModulePrefix() {ModuleName = "Games", Prefix = oldConfig.CommandPrefixes.Games},
|
||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "Gambling",
|
ModuleName = "Gambling",
|
||||||
Prefix = oldData.CommandPrefixes.Gambling
|
Prefix = oldConfig.CommandPrefixes.Gambling
|
||||||
},
|
},
|
||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "Permissions",
|
ModuleName = "Permissions",
|
||||||
Prefix = oldData.CommandPrefixes.Permissions
|
Prefix = oldConfig.CommandPrefixes.Permissions
|
||||||
},
|
},
|
||||||
new ModulePrefix()
|
new ModulePrefix()
|
||||||
{
|
{
|
||||||
ModuleName = "Programming",
|
ModuleName = "Programming",
|
||||||
Prefix = oldData.CommandPrefixes.Programming
|
Prefix = oldConfig.CommandPrefixes.Programming
|
||||||
},
|
},
|
||||||
new ModulePrefix() {ModuleName = "Pokemon", Prefix = oldData.CommandPrefixes.Pokemon},
|
new ModulePrefix() {ModuleName = "Pokemon", Prefix = oldConfig.CommandPrefixes.Pokemon},
|
||||||
new ModulePrefix() {ModuleName = "Utility", Prefix = oldData.CommandPrefixes.Utility}
|
new ModulePrefix() {ModuleName = "Utility", Prefix = oldConfig.CommandPrefixes.Utility}
|
||||||
};
|
};
|
||||||
botConfig.ModulePrefixes = prefix;
|
botConfig.ModulePrefixes = prefix;
|
||||||
|
|
||||||
//Blacklist
|
//Blacklist
|
||||||
var blacklist = oldData.ServerBlacklist.Select(server => new BlacklistItem() {ItemId = server, Type = BlacklistItem.BlacklistType.Server}).ToList();
|
var blacklist = new HashSet<BlacklistItem>(oldConfig.ServerBlacklist.Select(server => new BlacklistItem() { ItemId = server, Type = BlacklistItem.BlacklistType.Server }));
|
||||||
blacklist.AddRange(oldData.ChannelBlacklist.Select(channel => new BlacklistItem() {ItemId = channel, Type = BlacklistItem.BlacklistType.Channel}));
|
blacklist.AddRange(oldConfig.ChannelBlacklist.Select(channel => new BlacklistItem() { ItemId = channel, Type = BlacklistItem.BlacklistType.Channel }));
|
||||||
blacklist.AddRange(oldData.UserBlacklist.Select(user => new BlacklistItem() {ItemId = user, Type = BlacklistItem.BlacklistType.User}));
|
blacklist.AddRange(oldConfig.UserBlacklist.Select(user => new BlacklistItem() { ItemId = user, Type = BlacklistItem.BlacklistType.User }));
|
||||||
botConfig.Blacklist = new HashSet<BlacklistItem>(blacklist);
|
botConfig.Blacklist = blacklist;
|
||||||
|
|
||||||
//Eightball
|
//Eightball
|
||||||
botConfig.EightBallResponses = new HashSet<EightBallResponse>(oldData._8BallResponses.Select(response => new EightBallResponse() {Text = response}));
|
botConfig.EightBallResponses = new HashSet<EightBallResponse>(oldConfig._8BallResponses.Select(response => new EightBallResponse() { Text = response }));
|
||||||
|
|
||||||
//NOW save it
|
try { File.Move(configPath, "./data/DELETE_ME_config.json"); } catch { }
|
||||||
botConfig.MigrationVersion = 1;
|
|
||||||
await uow.CompleteAsync().ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -45,4 +46,153 @@ namespace NadekoBot.Modules.Administration.Commands.Migration
|
|||||||
public string DMHelpString { get; set; }
|
public string DMHelpString { get; set; }
|
||||||
public string HelpString { get; set; }
|
public string HelpString { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Holds a permission list
|
||||||
|
/// </summary>
|
||||||
|
public class Permissions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Name of the parent object whose permissions these are
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Module name with allowed/disallowed
|
||||||
|
/// </summary>
|
||||||
|
public ConcurrentDictionary<string, bool> Modules { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Command name with allowed/disallowed
|
||||||
|
/// </summary>
|
||||||
|
public ConcurrentDictionary<string, bool> Commands { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Should the bot filter invites to other discord servers (and ref links in the future)
|
||||||
|
/// </summary>
|
||||||
|
public bool FilterInvites { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Should the bot filter words which are specified in the Words hashset
|
||||||
|
/// </summary>
|
||||||
|
public bool FilterWords { get; set; }
|
||||||
|
|
||||||
|
public Permissions(string name)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
Modules = new ConcurrentDictionary<string, bool>();
|
||||||
|
Commands = new ConcurrentDictionary<string, bool>();
|
||||||
|
FilterInvites = false;
|
||||||
|
FilterWords = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CopyFrom(Permissions other)
|
||||||
|
{
|
||||||
|
Modules.Clear();
|
||||||
|
foreach (var mp in other.Modules)
|
||||||
|
Modules.AddOrUpdate(mp.Key, mp.Value, (s, b) => mp.Value);
|
||||||
|
Commands.Clear();
|
||||||
|
foreach (var cp in other.Commands)
|
||||||
|
Commands.AddOrUpdate(cp.Key, cp.Value, (s, b) => cp.Value);
|
||||||
|
FilterInvites = other.FilterInvites;
|
||||||
|
FilterWords = other.FilterWords;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
var toReturn = "";
|
||||||
|
var bannedModules = Modules.Where(kvp => kvp.Value == false);
|
||||||
|
var bannedModulesArray = bannedModules as KeyValuePair<string, bool>[] ?? bannedModules.ToArray();
|
||||||
|
if (bannedModulesArray.Any())
|
||||||
|
{
|
||||||
|
toReturn += "`Banned Modules:`\n";
|
||||||
|
toReturn = bannedModulesArray.Aggregate(toReturn, (current, m) => current + $"\t`[x] {m.Key}`\n");
|
||||||
|
}
|
||||||
|
var bannedCommands = Commands.Where(kvp => kvp.Value == false);
|
||||||
|
var bannedCommandsArr = bannedCommands as KeyValuePair<string, bool>[] ?? bannedCommands.ToArray();
|
||||||
|
if (bannedCommandsArr.Any())
|
||||||
|
{
|
||||||
|
toReturn += "`Banned Commands:`\n";
|
||||||
|
toReturn = bannedCommandsArr.Aggregate(toReturn, (current, c) => current + $"\t`[x] {c.Key}`\n");
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServerPermissions0_9
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The guy who can edit the permissions
|
||||||
|
/// </summary>
|
||||||
|
public string PermissionsControllerRole { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Does it print the error when a restriction occurs
|
||||||
|
/// </summary>
|
||||||
|
public bool Verbose { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// The id of the thing (user/server/channel)
|
||||||
|
/// </summary>
|
||||||
|
public ulong Id { get; set; } //a string because of the role name.
|
||||||
|
/// <summary>
|
||||||
|
/// Permission object bound to the id of something/role name
|
||||||
|
/// </summary>
|
||||||
|
public Permissions Permissions { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Banned words, usually profanities, like word "java"
|
||||||
|
/// </summary>
|
||||||
|
public HashSet<string> Words { get; set; }
|
||||||
|
|
||||||
|
public Dictionary<ulong, Permissions> UserPermissions { get; set; }
|
||||||
|
public Dictionary<ulong, Permissions> ChannelPermissions { get; set; }
|
||||||
|
public Dictionary<ulong, Permissions> RolePermissions { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Dictionary of command names with their respective cooldowns
|
||||||
|
/// </summary>
|
||||||
|
public ConcurrentDictionary<string, int> CommandCooldowns { get; set; }
|
||||||
|
|
||||||
|
public ServerPermissions0_9(ulong id, string name)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
PermissionsControllerRole = "Nadeko";
|
||||||
|
Verbose = true;
|
||||||
|
|
||||||
|
Permissions = new Permissions(name);
|
||||||
|
Permissions.Modules.TryAdd("NSFW", false);
|
||||||
|
UserPermissions = new Dictionary<ulong, Permissions>();
|
||||||
|
ChannelPermissions = new Dictionary<ulong, Permissions>();
|
||||||
|
RolePermissions = new Dictionary<ulong, Permissions>();
|
||||||
|
CommandCooldowns = new ConcurrentDictionary<string, int>();
|
||||||
|
Words = new HashSet<string>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ServerSpecificConfig
|
||||||
|
{
|
||||||
|
public bool VoicePlusTextEnabled { get; set; }
|
||||||
|
private bool SendPrivateMessageOnMention { get; set; }
|
||||||
|
private ulong? LogChannel { get; set; } = null;
|
||||||
|
public HashSet<ulong> LogserverIgnoreChannels { get; set; }
|
||||||
|
private ulong? LogPresenceChannel = null;
|
||||||
|
public ConcurrentDictionary<ulong, ulong> VoiceChannelLog { get; set; }
|
||||||
|
public HashSet<ulong> ListOfSelfAssignableRoles { get; set; }
|
||||||
|
public ulong AutoAssignedRole { get; set; }
|
||||||
|
public ConcurrentDictionary<ulong, int> GenerateCurrencyChannels { get; set; }
|
||||||
|
public bool AutoDeleteMessagesOnCommand { get; set; }
|
||||||
|
public bool ExclusiveSelfAssignedRoles { get; set; }
|
||||||
|
public float DefaultMusicVolume { get; set; }
|
||||||
|
public HashSet<StreamNotificationConfig0_9> ObservingStreams { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class StreamNotificationConfig0_9
|
||||||
|
{
|
||||||
|
public string Username { get; set; }
|
||||||
|
public StreamType Type { get; set; }
|
||||||
|
public ulong ServerId { get; set; }
|
||||||
|
public ulong ChannelId { get; set; }
|
||||||
|
public bool LastStatus { get; set; }
|
||||||
|
|
||||||
|
public enum StreamType
|
||||||
|
{
|
||||||
|
Twitch,
|
||||||
|
Beam,
|
||||||
|
Hitbox,
|
||||||
|
YoutubeGaming
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -19,7 +19,7 @@ namespace NadekoBot.Modules.ClashOfClans
|
|||||||
{
|
{
|
||||||
public static ConcurrentDictionary<ulong, List<ClashWar>> ClashWars { get; set; } = new ConcurrentDictionary<ulong, List<ClashWar>>();
|
public static ConcurrentDictionary<ulong, List<ClashWar>> ClashWars { get; set; } = new ConcurrentDictionary<ulong, List<ClashWar>>();
|
||||||
|
|
||||||
public ClashOfClans(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client)
|
static ClashOfClans()
|
||||||
{
|
{
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
@ -36,6 +36,9 @@ namespace NadekoBot.Modules.ClashOfClans
|
|||||||
.ToDictionary(g => g.Key, g => g.ToList()));
|
.ToDictionary(g => g.Key, g => g.ToList()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public ClashOfClans(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
private static async Task CheckWar(TimeSpan callExpire, ClashWar war)
|
private static async Task CheckWar(TimeSpan callExpire, ClashWar war)
|
||||||
{
|
{
|
||||||
|
@ -5,6 +5,7 @@ using NadekoBot.Attributes;
|
|||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Services;
|
using NadekoBot.Services;
|
||||||
using NadekoBot.Services.Database;
|
using NadekoBot.Services.Database;
|
||||||
|
using NadekoBot.Services.Database.Models;
|
||||||
using NLog;
|
using NLog;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
@ -33,7 +34,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
{
|
{
|
||||||
private Random rng;
|
private Random rng;
|
||||||
|
|
||||||
private ConcurrentDictionary<ulong, bool> generationChannels = new ConcurrentDictionary<ulong, bool>();
|
private ConcurrentHashSet<ulong> generationChannels = new ConcurrentHashSet<ulong>();
|
||||||
//channelid/message
|
//channelid/message
|
||||||
private ConcurrentDictionary<ulong, List<IUserMessage>> plantedFlowers = new ConcurrentDictionary<ulong, List<IUserMessage>>();
|
private ConcurrentDictionary<ulong, List<IUserMessage>> plantedFlowers = new ConcurrentDictionary<ulong, List<IUserMessage>>();
|
||||||
//channelId/last generation
|
//channelId/last generation
|
||||||
@ -53,9 +54,8 @@ namespace NadekoBot.Modules.Games
|
|||||||
{
|
{
|
||||||
var conf = uow.BotConfig.GetOrCreate();
|
var conf = uow.BotConfig.GetOrCreate();
|
||||||
var x =
|
var x =
|
||||||
generationChannels = new ConcurrentDictionary<ulong, bool>(uow.GuildConfigs.GetAll()
|
generationChannels = new ConcurrentHashSet<ulong>(uow.GuildConfigs.GetAll()
|
||||||
.Where(c => c.GenerateCurrencyChannelId != null)
|
.SelectMany(c => c.GenerateCurrencyChannelIds.Select(obj=>obj.ChannelId)));
|
||||||
.ToDictionary(c => c.GenerateCurrencyChannelId.Value, c => true));
|
|
||||||
chance = conf.CurrencyGenerationChance;
|
chance = conf.CurrencyGenerationChance;
|
||||||
cooldown = conf.CurrencyGenerationCooldown;
|
cooldown = conf.CurrencyGenerationCooldown;
|
||||||
}
|
}
|
||||||
@ -71,8 +71,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
if (channel == null)
|
if (channel == null)
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
bool shouldGenerate;
|
if (!generationChannels.Contains(channel.Id))
|
||||||
if (!generationChannels.TryGetValue(channel.Id, out shouldGenerate) || !shouldGenerate)
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
var t = Task.Run(async () =>
|
var t = Task.Run(async () =>
|
||||||
@ -135,8 +134,6 @@ namespace NadekoBot.Modules.Games
|
|||||||
public async Task Plant(IUserMessage imsg)
|
public async Task Plant(IUserMessage imsg)
|
||||||
{
|
{
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
var channel = (ITextChannel)imsg.Channel;
|
||||||
if (channel == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var removed = await CurrencyHandler.RemoveCurrencyAsync((IGuildUser)imsg.Author, "Planted a flower.", 1, false).ConfigureAwait(false);
|
var removed = await CurrencyHandler.RemoveCurrencyAsync((IGuildUser)imsg.Author, "Planted a flower.", 1, false).ConfigureAwait(false);
|
||||||
if (!removed)
|
if (!removed)
|
||||||
@ -167,25 +164,23 @@ namespace NadekoBot.Modules.Games
|
|||||||
public async Task Gencurrency(IUserMessage imsg)
|
public async Task Gencurrency(IUserMessage imsg)
|
||||||
{
|
{
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
var channel = (ITextChannel)imsg.Channel;
|
||||||
if (channel == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
bool enabled;
|
bool enabled;
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var guildConfig = uow.GuildConfigs.For(channel.Id);
|
var guildConfig = uow.GuildConfigs.For(channel.Id);
|
||||||
|
|
||||||
if (guildConfig.GenerateCurrencyChannelId == null)
|
var toAdd = new GCChannelId() { ChannelId = channel.Id };
|
||||||
|
if (guildConfig.GenerateCurrencyChannelIds.Contains(toAdd))
|
||||||
{
|
{
|
||||||
guildConfig.GenerateCurrencyChannelId = channel.Id;
|
guildConfig.GenerateCurrencyChannelIds.Add(toAdd);
|
||||||
generationChannels.TryAdd(channel.Id, true);
|
generationChannels.Add(channel.Id);
|
||||||
enabled = true;
|
enabled = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
guildConfig.GenerateCurrencyChannelId = null;
|
guildConfig.GenerateCurrencyChannelIds.Remove(toAdd);
|
||||||
bool throwaway;
|
generationChannels.TryRemove(channel.Id);
|
||||||
generationChannels.TryRemove(channel.Id, out throwaway);
|
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
await uow.CompleteAsync();
|
await uow.CompleteAsync();
|
||||||
|
@ -154,8 +154,8 @@ namespace NadekoBot.Modules.Help
|
|||||||
var channel = (ITextChannel)umsg.Channel;
|
var channel = (ITextChannel)umsg.Channel;
|
||||||
|
|
||||||
await channel.SendMessageAsync(
|
await channel.SendMessageAsync(
|
||||||
@"**LIST OF COMMANDS**: <http://nadekobot.readthedocs.io/en/latest/Commands%20List/>
|
@"**LIST OF COMMANDS**: <http://nadekobot.readthedocs.io/en/1.0/Commands%20List/>
|
||||||
**Hosting Guides and docs can be found here**: <http://nadekobot.rtfd.io>").ConfigureAwait(false);
|
**Hosting Guides and docs can be found here**: <http://nadekobot.readthedocs.io/en/1.0/>").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
[NadekoCommand, Usage, Description, Aliases]
|
[NadekoCommand, Usage, Description, Aliases]
|
||||||
@ -165,7 +165,7 @@ namespace NadekoBot.Modules.Help
|
|||||||
var channel = (ITextChannel)umsg.Channel;
|
var channel = (ITextChannel)umsg.Channel;
|
||||||
|
|
||||||
await channel.SendMessageAsync(
|
await channel.SendMessageAsync(
|
||||||
$@"You can support the project on patreon. <https://patreon.com/nadekobot> or
|
$@"You can support the NadekoBot project on patreon. <https://patreon.com/nadekobot> or
|
||||||
You can send donations to `nadekodiscordbot@gmail.com`
|
You can send donations to `nadekodiscordbot@gmail.com`
|
||||||
Don't forget to leave your discord name or id in the message.
|
Don't forget to leave your discord name or id in the message.
|
||||||
|
|
||||||
|
@ -18,17 +18,32 @@ namespace NadekoBot.Modules.Searches
|
|||||||
{
|
{
|
||||||
public partial class Searches
|
public partial class Searches
|
||||||
{
|
{
|
||||||
|
public class StreamStatus
|
||||||
|
{
|
||||||
|
public StreamStatus(string link, bool isLive, string views)
|
||||||
|
{
|
||||||
|
Link = link;
|
||||||
|
IsLive = isLive;
|
||||||
|
Views = views;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsLive { get; set; }
|
||||||
|
public string Link { get; set; }
|
||||||
|
public string Views { get; set; }
|
||||||
|
}
|
||||||
[Group]
|
[Group]
|
||||||
public class StreamNotificationCommands
|
public class StreamNotificationCommands
|
||||||
{
|
{
|
||||||
private Timer checkTimer { get; }
|
private Timer checkTimer { get; }
|
||||||
private ConcurrentDictionary<string, Tuple<bool, string>> cachedStatuses = new ConcurrentDictionary<string, Tuple<bool, string>>();
|
private ConcurrentDictionary<string, StreamStatus> oldCachedStatuses = new ConcurrentDictionary<string, StreamStatus>();
|
||||||
|
private ConcurrentDictionary<string, StreamStatus> cachedStatuses = new ConcurrentDictionary<string, StreamStatus>();
|
||||||
private bool FirstPass { get; set; } = true;
|
private bool FirstPass { get; set; } = true;
|
||||||
|
|
||||||
public StreamNotificationCommands()
|
public StreamNotificationCommands()
|
||||||
{
|
{
|
||||||
checkTimer = new Timer(async (state) =>
|
checkTimer = new Timer(async (state) =>
|
||||||
{
|
{
|
||||||
|
oldCachedStatuses = new ConcurrentDictionary<string, StreamStatus>(cachedStatuses);
|
||||||
cachedStatuses.Clear();
|
cachedStatuses.Clear();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -39,19 +54,23 @@ namespace NadekoBot.Modules.Searches
|
|||||||
}
|
}
|
||||||
foreach (var stream in streams)
|
foreach (var stream in streams)
|
||||||
{
|
{
|
||||||
Tuple<bool, string> data;
|
StreamStatus data;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
data = await GetStreamStatus(stream).ConfigureAwait(false);
|
data = await GetStreamStatus(stream).ConfigureAwait(false);
|
||||||
|
if (data == null)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.Item1 != stream.LastStatus)
|
StreamStatus oldData;
|
||||||
|
oldCachedStatuses.TryGetValue(data.Link, out oldData);
|
||||||
|
|
||||||
|
if (oldData == null || data.IsLive != oldData.IsLive)
|
||||||
{
|
{
|
||||||
stream.LastStatus = data.Item1;
|
|
||||||
if (FirstPass)
|
if (FirstPass)
|
||||||
continue;
|
continue;
|
||||||
var server = NadekoBot.Client.GetGuild(stream.GuildId);
|
var server = NadekoBot.Client.GetGuild(stream.GuildId);
|
||||||
@ -59,32 +78,30 @@ namespace NadekoBot.Modules.Searches
|
|||||||
if (channel == null)
|
if (channel == null)
|
||||||
continue;
|
continue;
|
||||||
var msg = $"`{stream.Username}`'s stream is now " +
|
var msg = $"`{stream.Username}`'s stream is now " +
|
||||||
$"**{(data.Item1 ? "ONLINE" : "OFFLINE")}** with " +
|
$"**{(data.IsLive ? "ONLINE" : "OFFLINE")}** with " +
|
||||||
$"**{data.Item2}** viewers.";
|
$"**{data.Views}** viewers.";
|
||||||
if (stream.LastStatus)
|
if (data.IsLive)
|
||||||
if (stream.Type == FollowedStream.FollowedStreamType.Hitbox)
|
if (stream.Type == FollowedStream.FollowedStreamType.Hitbox)
|
||||||
msg += $"\n`Here is the Link:`【 http://www.hitbox.tv/{stream.Username}/ 】";
|
msg += $"\n`Here is the Link:`【 http://www.hitbox.tv/{stream.Username}/ 】";
|
||||||
else if (stream.Type == FollowedStream.FollowedStreamType.Twitch)
|
else if (stream.Type == FollowedStream.FollowedStreamType.Twitch)
|
||||||
msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】";
|
msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】";
|
||||||
else if (stream.Type == FollowedStream.FollowedStreamType.Beam)
|
else if (stream.Type == FollowedStream.FollowedStreamType.Beam)
|
||||||
msg += $"\n`Here is the Link:`【 http://www.beam.pro/{stream.Username}/ 】";
|
msg += $"\n`Here is the Link:`【 http://www.beam.pro/{stream.Username}/ 】";
|
||||||
//else if (stream.Type == FollowedStream.FollowedStreamType.YoutubeGaming)
|
|
||||||
// msg += $"\n`Here is the Link:`【 not implemented yet - {stream.Username} 】";
|
|
||||||
try { await channel.SendMessageAsync(msg).ConfigureAwait(false); } catch { }
|
try { await channel.SendMessageAsync(msg).ConfigureAwait(false); } catch { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FirstPass = false;
|
FirstPass = false;
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}, null, TimeSpan.Zero, TimeSpan.FromSeconds(15));
|
}, null, TimeSpan.Zero, TimeSpan.FromSeconds(60));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Tuple<bool, string>> GetStreamStatus(FollowedStream stream, bool checkCache = true)
|
private async Task<StreamStatus> GetStreamStatus(FollowedStream stream, bool checkCache = true)
|
||||||
{
|
{
|
||||||
bool isLive;
|
bool isLive;
|
||||||
string response;
|
string response;
|
||||||
JObject data;
|
JObject data;
|
||||||
Tuple<bool, string> result;
|
StreamStatus result;
|
||||||
switch (stream.Type)
|
switch (stream.Type)
|
||||||
{
|
{
|
||||||
case FollowedStream.FollowedStreamType.Hitbox:
|
case FollowedStream.FollowedStreamType.Hitbox:
|
||||||
@ -97,7 +114,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
}
|
}
|
||||||
data = JObject.Parse(response);
|
data = JObject.Parse(response);
|
||||||
isLive = data["media_is_live"].ToString() == "1";
|
isLive = data["media_is_live"].ToString() == "1";
|
||||||
result = new Tuple<bool, string>(isLive, data["media_views"].ToString());
|
result = new StreamStatus(hitboxUrl, isLive, data["media_views"].ToString());
|
||||||
cachedStatuses.TryAdd(hitboxUrl, result);
|
cachedStatuses.TryAdd(hitboxUrl, result);
|
||||||
return result;
|
return result;
|
||||||
case FollowedStream.FollowedStreamType.Twitch:
|
case FollowedStream.FollowedStreamType.Twitch:
|
||||||
@ -110,7 +127,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
}
|
}
|
||||||
data = JObject.Parse(response);
|
data = JObject.Parse(response);
|
||||||
isLive = !string.IsNullOrWhiteSpace(data["stream"].ToString());
|
isLive = !string.IsNullOrWhiteSpace(data["stream"].ToString());
|
||||||
result = new Tuple<bool, string>(isLive, isLive ? data["stream"]["viewers"].ToString() : stream.Username);
|
result = new StreamStatus(twitchUrl, isLive, isLive ? data["stream"]["viewers"].ToString() : "0");
|
||||||
cachedStatuses.TryAdd(twitchUrl, result);
|
cachedStatuses.TryAdd(twitchUrl, result);
|
||||||
return result;
|
return result;
|
||||||
case FollowedStream.FollowedStreamType.Beam:
|
case FollowedStream.FollowedStreamType.Beam:
|
||||||
@ -123,13 +140,13 @@ namespace NadekoBot.Modules.Searches
|
|||||||
}
|
}
|
||||||
data = JObject.Parse(response);
|
data = JObject.Parse(response);
|
||||||
isLive = data["online"].ToObject<bool>() == true;
|
isLive = data["online"].ToObject<bool>() == true;
|
||||||
result = new Tuple<bool, string>(isLive, data["viewersCurrent"].ToString());
|
result = new StreamStatus(beamUrl, isLive, data["viewersCurrent"].ToString());
|
||||||
cachedStatuses.TryAdd(beamUrl, result);
|
cachedStatuses.TryAdd(beamUrl, result);
|
||||||
return result;
|
return result;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return new Tuple<bool, string>(false, "0");
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[NadekoCommand, Usage, Description, Aliases]
|
[NadekoCommand, Usage, Description, Aliases]
|
||||||
@ -181,6 +198,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
|
|
||||||
[NadekoCommand, Usage, Description, Aliases]
|
[NadekoCommand, Usage, Description, Aliases]
|
||||||
[RequireContext(ContextType.Guild)]
|
[RequireContext(ContextType.Guild)]
|
||||||
|
[RequirePermission(GuildPermission.ManageMessages)]
|
||||||
public async Task RemoveStream(IUserMessage msg, [Remainder] string username)
|
public async Task RemoveStream(IUserMessage msg, [Remainder] string username)
|
||||||
{
|
{
|
||||||
var channel = (ITextChannel)msg.Channel;
|
var channel = (ITextChannel)msg.Channel;
|
||||||
@ -223,9 +241,9 @@ namespace NadekoBot.Modules.Searches
|
|||||||
Username = stream,
|
Username = stream,
|
||||||
Type = platform
|
Type = platform
|
||||||
}));
|
}));
|
||||||
if (streamStatus.Item1)
|
if (streamStatus.IsLive)
|
||||||
{
|
{
|
||||||
await channel.SendMessageAsync($"`Streamer {username} is online with {streamStatus.Item2}.`");
|
await channel.SendMessageAsync($"`Streamer {username} is online with {streamStatus.Views} viewers.`");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -258,7 +276,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
await channel.SendMessageAsync($":anger: I am already following `{username}` ({type}) stream on this channel.").ConfigureAwait(false);
|
await channel.SendMessageAsync($":anger: I am already following `{username}` ({type}) stream on this channel.").ConfigureAwait(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Tuple<bool, string> data;
|
StreamStatus data;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
data = await GetStreamStatus(stream).ConfigureAwait(false);
|
data = await GetStreamStatus(stream).ConfigureAwait(false);
|
||||||
@ -268,17 +286,14 @@ namespace NadekoBot.Modules.Searches
|
|||||||
await channel.SendMessageAsync(":anger: Stream probably doesn't exist.").ConfigureAwait(false);
|
await channel.SendMessageAsync(":anger: Stream probably doesn't exist.").ConfigureAwait(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var msg = $"Stream is currently **{(data.Item1 ? "ONLINE" : "OFFLINE")}** with **{data.Item2}** viewers";
|
var msg = $"Stream is currently **{(data.IsLive ? "ONLINE" : "OFFLINE")}** with **{data.Views}** viewers";
|
||||||
if (data.Item1)
|
if (data.IsLive)
|
||||||
if (type == FollowedStream.FollowedStreamType.Hitbox)
|
if (type == FollowedStream.FollowedStreamType.Hitbox)
|
||||||
msg += $"\n`Here is the Link:`【 http://www.hitbox.tv/{stream.Username}/ 】";
|
msg += $"\n`Here is the Link:`【 http://www.hitbox.tv/{stream.Username}/ 】";
|
||||||
else if (type == FollowedStream.FollowedStreamType.Twitch)
|
else if (type == FollowedStream.FollowedStreamType.Twitch)
|
||||||
msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】";
|
msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】";
|
||||||
else if (type == FollowedStream.FollowedStreamType.Beam)
|
else if (type == FollowedStream.FollowedStreamType.Beam)
|
||||||
msg += $"\n`Here is the Link:`【 https://beam.pro/{stream.Username}/ 】";
|
msg += $"\n`Here is the Link:`【 https://beam.pro/{stream.Username}/ 】";
|
||||||
//else if (type == FollowedStream.FollowedStreamType.YoutubeGaming)
|
|
||||||
// msg += $"\n`Here is the Link:` not implemented yet - {stream.Username}";
|
|
||||||
stream.LastStatus = data.Item1;
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).FollowedStreams.Add(stream);
|
uow.GuildConfigs.For(channel.Guild.Id).FollowedStreams.Add(stream);
|
||||||
|
@ -44,7 +44,7 @@ For a specific command help, use `{1}h CommandName` (for example {1}h !!q)
|
|||||||
|
|
||||||
|
|
||||||
**LIST OF COMMANDS CAN BE FOUND ON THIS LINK**
|
**LIST OF COMMANDS CAN BE FOUND ON THIS LINK**
|
||||||
<https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>
|
<http://nadekobot.readthedocs.io/en/1.0/Commands%20List/>
|
||||||
|
|
||||||
|
|
||||||
Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY";
|
Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY";
|
||||||
|
@ -11,7 +11,6 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
public ulong ChannelId { get; set; }
|
public ulong ChannelId { get; set; }
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
public FollowedStreamType Type { get; set; }
|
public FollowedStreamType Type { get; set; }
|
||||||
public bool LastStatus { get; set; }
|
|
||||||
public ulong GuildId { get; set; }
|
public ulong GuildId { get; set; }
|
||||||
|
|
||||||
public enum FollowedStreamType
|
public enum FollowedStreamType
|
||||||
|
@ -41,7 +41,7 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
public HashSet<FollowedStream> FollowedStreams { get; set; } = new HashSet<FollowedStream>();
|
public HashSet<FollowedStream> FollowedStreams { get; set; } = new HashSet<FollowedStream>();
|
||||||
|
|
||||||
//currencyGeneration
|
//currencyGeneration
|
||||||
public ulong? GenerateCurrencyChannelId { get; set; }
|
public HashSet<GCChannelId> GenerateCurrencyChannelIds { get; set; } = new HashSet<GCChannelId>();
|
||||||
|
|
||||||
//permissions
|
//permissions
|
||||||
public Permission RootPermission { get; set; }
|
public Permission RootPermission { get; set; }
|
||||||
@ -64,8 +64,25 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
public ulong ChannelId { get; set; }
|
public ulong ChannelId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FilteredWord :DbEntity
|
public class FilteredWord : DbEntity
|
||||||
{
|
{
|
||||||
public string Word { get; set; }
|
public string Word { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GCChannelId : DbEntity
|
||||||
|
{
|
||||||
|
public ulong ChannelId { get; set; }
|
||||||
|
|
||||||
|
public override bool Equals(object obj)
|
||||||
|
{
|
||||||
|
var gc = obj as GCChannelId;
|
||||||
|
if (gc == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return gc.ChannelId == this.ChannelId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode() =>
|
||||||
|
this.ChannelId.GetHashCode();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
{
|
{
|
||||||
public bool IsLogging { get; set; }
|
public bool IsLogging { get; set; }
|
||||||
public ulong ChannelId { get; set; }
|
public ulong ChannelId { get; set; }
|
||||||
public ConcurrentHashSet<IgnoredLogChannel> IgnoredChannels { get; set; }
|
public HashSet<IgnoredLogChannel> IgnoredChannels { get; set; }
|
||||||
|
|
||||||
public bool MessageUpdated { get; set; } = true;
|
public bool MessageUpdated { get; set; } = true;
|
||||||
public bool MessageDeleted { get; set; } = true;
|
public bool MessageDeleted { get; set; } = true;
|
||||||
|
@ -24,6 +24,7 @@ namespace NadekoBot.Services.Database.Repositories.Impl
|
|||||||
.ThenInclude(gc => gc.Previous)
|
.ThenInclude(gc => gc.Previous)
|
||||||
.Include(gc => gc.RootPermission)
|
.Include(gc => gc.RootPermission)
|
||||||
.ThenInclude(gc => gc.Next)
|
.ThenInclude(gc => gc.Next)
|
||||||
|
.Include(gc => gc.GenerateCurrencyChannelIds)
|
||||||
.Include(gc => gc.FilterInvitesChannelIds)
|
.Include(gc => gc.FilterInvitesChannelIds)
|
||||||
.Include(gc => gc.FilterWordsChannelIds)
|
.Include(gc => gc.FilterWordsChannelIds)
|
||||||
.Include(gc => gc.FilteredWords)
|
.Include(gc => gc.FilteredWords)
|
||||||
@ -45,6 +46,7 @@ namespace NadekoBot.Services.Database.Repositories.Impl
|
|||||||
.Include(gc => gc.FilterInvitesChannelIds)
|
.Include(gc => gc.FilterInvitesChannelIds)
|
||||||
.Include(gc => gc.FilterWordsChannelIds)
|
.Include(gc => gc.FilterWordsChannelIds)
|
||||||
.Include(gc => gc.FilteredWords)
|
.Include(gc => gc.FilteredWords)
|
||||||
|
.Include(gc => gc.GenerateCurrencyChannelIds)
|
||||||
.Include(gc => gc.CommandCooldowns)
|
.Include(gc => gc.CommandCooldowns)
|
||||||
.FirstOrDefault(c => c.GuildId == guildId);
|
.FirstOrDefault(c => c.GuildId == guildId);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user