diff --git a/src/NadekoBot/Common/AsyncLazy.cs b/NadekoBot.Core/Common/AsyncLazy.cs similarity index 100% rename from src/NadekoBot/Common/AsyncLazy.cs rename to NadekoBot.Core/Common/AsyncLazy.cs diff --git a/src/NadekoBot/Common/Attributes/Aliases.cs b/NadekoBot.Core/Common/Attributes/Aliases.cs similarity index 91% rename from src/NadekoBot/Common/Attributes/Aliases.cs rename to NadekoBot.Core/Common/Attributes/Aliases.cs index e6c95f67..c57b89a3 100644 --- a/src/NadekoBot/Common/Attributes/Aliases.cs +++ b/NadekoBot.Core/Common/Attributes/Aliases.cs @@ -1,7 +1,7 @@ using System.Linq; using System.Runtime.CompilerServices; using Discord.Commands; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; namespace NadekoBot.Common.Attributes { public class Aliases : AliasAttribute diff --git a/src/NadekoBot/Common/Attributes/Description.cs b/NadekoBot.Core/Common/Attributes/Description.cs similarity index 90% rename from src/NadekoBot/Common/Attributes/Description.cs rename to NadekoBot.Core/Common/Attributes/Description.cs index 7ebbac47..efb7705e 100644 --- a/src/NadekoBot/Common/Attributes/Description.cs +++ b/NadekoBot.Core/Common/Attributes/Description.cs @@ -1,6 +1,6 @@ using System.Runtime.CompilerServices; using Discord.Commands; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; namespace NadekoBot.Common.Attributes { diff --git a/src/NadekoBot/Common/Attributes/NadekoCommand.cs b/NadekoBot.Core/Common/Attributes/NadekoCommand.cs similarity index 90% rename from src/NadekoBot/Common/Attributes/NadekoCommand.cs rename to NadekoBot.Core/Common/Attributes/NadekoCommand.cs index ee8b9d58..7cca5519 100644 --- a/src/NadekoBot/Common/Attributes/NadekoCommand.cs +++ b/NadekoBot.Core/Common/Attributes/NadekoCommand.cs @@ -1,6 +1,6 @@ using System.Runtime.CompilerServices; using Discord.Commands; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; namespace NadekoBot.Common.Attributes { diff --git a/src/NadekoBot/Common/Attributes/NadekoModuleAttribute.cs b/NadekoBot.Core/Common/Attributes/NadekoModuleAttribute.cs similarity index 100% rename from src/NadekoBot/Common/Attributes/NadekoModuleAttribute.cs rename to NadekoBot.Core/Common/Attributes/NadekoModuleAttribute.cs diff --git a/src/NadekoBot/Common/Attributes/OwnerOnlyAttribute.cs b/NadekoBot.Core/Common/Attributes/OwnerOnlyAttribute.cs similarity index 95% rename from src/NadekoBot/Common/Attributes/OwnerOnlyAttribute.cs rename to NadekoBot.Core/Common/Attributes/OwnerOnlyAttribute.cs index c5227daa..25bbe17d 100644 --- a/src/NadekoBot/Common/Attributes/OwnerOnlyAttribute.cs +++ b/NadekoBot.Core/Common/Attributes/OwnerOnlyAttribute.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; using Discord.Commands; -using NadekoBot.Services; +using NadekoBot.Core.Services; namespace NadekoBot.Common.Attributes { diff --git a/src/NadekoBot/Common/Attributes/Usage.cs b/NadekoBot.Core/Common/Attributes/Usage.cs similarity index 94% rename from src/NadekoBot/Common/Attributes/Usage.cs rename to NadekoBot.Core/Common/Attributes/Usage.cs index 391de638..223f0840 100644 --- a/src/NadekoBot/Common/Attributes/Usage.cs +++ b/NadekoBot.Core/Common/Attributes/Usage.cs @@ -1,6 +1,6 @@ using System.Runtime.CompilerServices; using Discord.Commands; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; using System.Linq; using Discord; @@ -18,7 +18,6 @@ namespace NadekoBot.Common.Attributes var usage = Localization.LoadCommand(memberName.ToLowerInvariant()).Usage; return string.Join(" or ", usage .Select(x => Format.Code(x))); - } } } diff --git a/src/NadekoBot/Common/BotConfigEditType.cs b/NadekoBot.Core/Common/BotConfigEditType.cs similarity index 100% rename from src/NadekoBot/Common/BotConfigEditType.cs rename to NadekoBot.Core/Common/BotConfigEditType.cs diff --git a/src/NadekoBot/Common/CREmbed.cs b/NadekoBot.Core/Common/CREmbed.cs similarity index 94% rename from src/NadekoBot/Common/CREmbed.cs rename to NadekoBot.Core/Common/CREmbed.cs index 8ef9d30d..b790a12a 100644 --- a/src/NadekoBot/Common/CREmbed.cs +++ b/NadekoBot.Core/Common/CREmbed.cs @@ -1,4 +1,4 @@ -using System; +using System; using Discord; using NadekoBot.Extensions; using Newtonsoft.Json; @@ -12,6 +12,7 @@ namespace NadekoBot.Common public string PlainText { get; set; } public string Title { get; set; } public string Description { get; set; } + public string Url { get; set; } public CREmbedFooter Footer { get; set; } public string Thumbnail { get; set; } public string Image { get; set; } @@ -26,6 +27,7 @@ namespace NadekoBot.Common public bool IsValid => !string.IsNullOrWhiteSpace(Title) || !string.IsNullOrWhiteSpace(Description) || + !string.IsNullOrWhiteSpace(Url) || !string.IsNullOrWhiteSpace(Thumbnail) || !string.IsNullOrWhiteSpace(Image) || (Footer != null && (!string.IsNullOrWhiteSpace(Footer.Text) || !string.IsNullOrWhiteSpace(Footer.IconUrl))) || @@ -39,6 +41,8 @@ namespace NadekoBot.Common embed.WithTitle(Title); if (!string.IsNullOrWhiteSpace(Description)) embed.WithDescription(Description); + if (Url != null && Uri.IsWellFormedUriString(Url, UriKind.Absolute)) + embed.WithUrl(Url); embed.WithColor(new Discord.Color(Color)); if (Footer != null) embed.WithFooter(efb => diff --git a/NadekoBot.Core/Common/Caching/FactoryCache.cs b/NadekoBot.Core/Common/Caching/FactoryCache.cs new file mode 100644 index 00000000..3d7bfbe4 --- /dev/null +++ b/NadekoBot.Core/Common/Caching/FactoryCache.cs @@ -0,0 +1,49 @@ +using System; + +namespace NadekoBot.Core.Common.Caching +{ + /// + /// A caching object which loads its value with a factory method when it expires. + /// + /// Type of the value which is cached. + public class FactoryCache : IFactoryCache + { + public DateTime LastUpdate { get; set; } = DateTime.MinValue; + private readonly object _locker = new object(); + private TimeSpan _expireAfter; + private readonly Func _factory; + private T Value; + + /// + /// Creates a new factory cache object. + /// + /// Method which loads the value when it expires or if it's not loaded the first time. + /// Time after which the value will be reloaded. + /// Should the value be loaded right away. If set to false, value will load when it's first retrieved. + public FactoryCache(Func factory, TimeSpan expireAfter, + bool loadImmediately = false) + { + _expireAfter = expireAfter; + _factory = factory; + if (loadImmediately) + { + Value = _factory(); + LastUpdate = DateTime.UtcNow; + } + } + + public T GetValue() + { + lock (_locker) + { + if (DateTime.UtcNow - LastUpdate > _expireAfter) + { + LastUpdate = DateTime.UtcNow; + return Value = _factory(); + } + + return Value; + } + } + } +} diff --git a/NadekoBot.Core/Common/Caching/IFactoryCache.cs b/NadekoBot.Core/Common/Caching/IFactoryCache.cs new file mode 100644 index 00000000..439152d4 --- /dev/null +++ b/NadekoBot.Core/Common/Caching/IFactoryCache.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Core.Common.Caching +{ + public interface IFactoryCache + { + + } +} diff --git a/src/NadekoBot/Common/Collections/ConcurrentHashSet.cs b/NadekoBot.Core/Common/Collections/ConcurrentHashSet.cs similarity index 100% rename from src/NadekoBot/Common/Collections/ConcurrentHashSet.cs rename to NadekoBot.Core/Common/Collections/ConcurrentHashSet.cs diff --git a/src/NadekoBot/Common/Collections/DisposableImutableList.cs b/NadekoBot.Core/Common/Collections/DisposableImutableList.cs similarity index 100% rename from src/NadekoBot/Common/Collections/DisposableImutableList.cs rename to NadekoBot.Core/Common/Collections/DisposableImutableList.cs diff --git a/src/NadekoBot/Common/Collections/IndexedCollection.cs b/NadekoBot.Core/Common/Collections/IndexedCollection.cs similarity index 96% rename from src/NadekoBot/Common/Collections/IndexedCollection.cs rename to NadekoBot.Core/Common/Collections/IndexedCollection.cs index 6ef057c8..64948970 100644 --- a/src/NadekoBot/Common/Collections/IndexedCollection.cs +++ b/NadekoBot.Core/Common/Collections/IndexedCollection.cs @@ -1,7 +1,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Common.Collections { @@ -10,6 +10,10 @@ namespace NadekoBot.Common.Collections public List Source { get; } private readonly object _locker = new object(); + public IndexedCollection() + { + Source = new List(); + } public IndexedCollection(IEnumerable source) { lock (_locker) diff --git a/src/NadekoBot/Common/Collections/PoopyRingBuffer.cs b/NadekoBot.Core/Common/Collections/PoopyRingBuffer.cs similarity index 100% rename from src/NadekoBot/Common/Collections/PoopyRingBuffer.cs rename to NadekoBot.Core/Common/Collections/PoopyRingBuffer.cs diff --git a/src/NadekoBot/Common/CommandData.cs b/NadekoBot.Core/Common/CommandData.cs similarity index 100% rename from src/NadekoBot/Common/CommandData.cs rename to NadekoBot.Core/Common/CommandData.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/IEarlyBlocker.cs b/NadekoBot.Core/Common/ModuleBehaviors/IEarlyBlocker.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/IEarlyBlocker.cs rename to NadekoBot.Core/Common/ModuleBehaviors/IEarlyBlocker.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/IEarlyBlockingExecutor.cs b/NadekoBot.Core/Common/ModuleBehaviors/IEarlyBlockingExecutor.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/IEarlyBlockingExecutor.cs rename to NadekoBot.Core/Common/ModuleBehaviors/IEarlyBlockingExecutor.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/IEarlyExecutor.cs b/NadekoBot.Core/Common/ModuleBehaviors/IEarlyExecutor.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/IEarlyExecutor.cs rename to NadekoBot.Core/Common/ModuleBehaviors/IEarlyExecutor.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/IINputTransformer.cs b/NadekoBot.Core/Common/ModuleBehaviors/IINputTransformer.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/IINputTransformer.cs rename to NadekoBot.Core/Common/ModuleBehaviors/IINputTransformer.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/ILateBlocker.cs b/NadekoBot.Core/Common/ModuleBehaviors/ILateBlocker.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/ILateBlocker.cs rename to NadekoBot.Core/Common/ModuleBehaviors/ILateBlocker.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/ILateBlockingExecutor.cs b/NadekoBot.Core/Common/ModuleBehaviors/ILateBlockingExecutor.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/ILateBlockingExecutor.cs rename to NadekoBot.Core/Common/ModuleBehaviors/ILateBlockingExecutor.cs diff --git a/src/NadekoBot/Common/ModuleBehaviors/ILateExecutor.cs b/NadekoBot.Core/Common/ModuleBehaviors/ILateExecutor.cs similarity index 100% rename from src/NadekoBot/Common/ModuleBehaviors/ILateExecutor.cs rename to NadekoBot.Core/Common/ModuleBehaviors/ILateExecutor.cs diff --git a/src/NadekoBot/Modules/NadekoModule.cs b/NadekoBot.Core/Common/NadekoModule.cs similarity index 98% rename from src/NadekoBot/Modules/NadekoModule.cs rename to NadekoBot.Core/Common/NadekoModule.cs index f6f06afd..5a563ba6 100644 --- a/src/NadekoBot/Modules/NadekoModule.cs +++ b/NadekoBot.Core/Common/NadekoModule.cs @@ -1,12 +1,12 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using NLog; using System.Globalization; using System.Threading.Tasks; using Discord.WebSocket; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; namespace NadekoBot.Modules { diff --git a/src/NadekoBot/Modules/NadekoModuleExtensions.cs b/NadekoBot.Core/Common/NadekoModuleExtensions.cs similarity index 100% rename from src/NadekoBot/Modules/NadekoModuleExtensions.cs rename to NadekoBot.Core/Common/NadekoModuleExtensions.cs diff --git a/src/NadekoBot/Common/NadekoRandom.cs b/NadekoBot.Core/Common/NadekoRandom.cs similarity index 100% rename from src/NadekoBot/Common/NadekoRandom.cs rename to NadekoBot.Core/Common/NadekoRandom.cs diff --git a/src/NadekoBot/Common/NoPublicBotPrecondition.cs b/NadekoBot.Core/Common/NoPublicBotPrecondition.cs similarity index 100% rename from src/NadekoBot/Common/NoPublicBotPrecondition.cs rename to NadekoBot.Core/Common/NoPublicBotPrecondition.cs diff --git a/src/NadekoBot/Common/PlatformHelper.cs b/NadekoBot.Core/Common/PlatformHelper.cs similarity index 100% rename from src/NadekoBot/Common/PlatformHelper.cs rename to NadekoBot.Core/Common/PlatformHelper.cs diff --git a/NadekoBot.Core/Common/Pokemon/PokemonNameId.cs b/NadekoBot.Core/Common/Pokemon/PokemonNameId.cs new file mode 100644 index 00000000..628b56d6 --- /dev/null +++ b/NadekoBot.Core/Common/Pokemon/PokemonNameId.cs @@ -0,0 +1,8 @@ +namespace NadekoBot.Core.Common.Pokemon +{ + public class PokemonNameId + { + public int Id { get; set; } + public string Name { get; set; } + } +} diff --git a/src/NadekoBot/Modules/Searches/Common/SearchPokemon.cs b/NadekoBot.Core/Common/Pokemon/SearchPokemon.cs similarity index 66% rename from src/NadekoBot/Modules/Searches/Common/SearchPokemon.cs rename to NadekoBot.Core/Common/Pokemon/SearchPokemon.cs index 29de4e00..fa541f8c 100644 --- a/src/NadekoBot/Modules/Searches/Common/SearchPokemon.cs +++ b/NadekoBot.Core/Common/Pokemon/SearchPokemon.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Modules.Searches.Common +namespace NadekoBot.Core.Common.Pokemon { public class SearchPokemon { @@ -9,6 +9,7 @@ namespace NadekoBot.Modules.Searches.Common public float M { get; set; } public float F { get; set; } } + public class BaseStatsClass { public int HP { get; set; } @@ -21,6 +22,7 @@ namespace NadekoBot.Modules.Searches.Common public override string ToString() => $@"**HP:** {HP,-4} **ATK:** {ATK,-4} **DEF:** {DEF,-4} **SPA:** {SPA,-4} **SPD:** {SPD,-4} **SPE:** {SPE,-4}"; } + public int Id { get; set; } public string Species { get; set; } public string[] Types { get; set; } @@ -32,24 +34,5 @@ namespace NadekoBot.Modules.Searches.Common public string Color { get; set; } public string[] Evos { get; set; } public string[] EggGroups { get; set; } - -// public override string ToString() => $@"`Name:` {Species} -//`Types:` {string.Join(", ", Types)} -//`Stats:` {BaseStats} -//`Height:` {HeightM,4}m `Weight:` {WeightKg}kg -//`Abilities:` {string.Join(", ", Abilities.Values)}"; - - } - - public class SearchPokemonAbility - { - public string Desc { get; set; } - public string ShortDesc { get; set; } - public string Name { get; set; } - public float Rating { get; set; } - -// public override string ToString() => $@"`Name:` : {Name} -//`Rating:` {Rating} -//`Description:` {Desc}"; } } diff --git a/NadekoBot.Core/Common/Pokemon/SearchPokemonAbility.cs b/NadekoBot.Core/Common/Pokemon/SearchPokemonAbility.cs new file mode 100644 index 00000000..0173749d --- /dev/null +++ b/NadekoBot.Core/Common/Pokemon/SearchPokemonAbility.cs @@ -0,0 +1,10 @@ +namespace NadekoBot.Core.Common.Pokemon +{ + public class SearchPokemonAbility + { + public string Desc { get; set; } + public string ShortDesc { get; set; } + public string Name { get; set; } + public float Rating { get; set; } + } +} diff --git a/src/NadekoBot/Common/Replacements/ReplacementBuilder.cs b/NadekoBot.Core/Common/Replacements/ReplacementBuilder.cs similarity index 98% rename from src/NadekoBot/Common/Replacements/ReplacementBuilder.cs rename to NadekoBot.Core/Common/Replacements/ReplacementBuilder.cs index 4df63980..ad6a2710 100644 --- a/src/NadekoBot/Common/Replacements/ReplacementBuilder.cs +++ b/NadekoBot.Core/Common/Replacements/ReplacementBuilder.cs @@ -6,8 +6,8 @@ using Discord; using Discord.Commands; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Modules.Administration.Services; using NadekoBot.Modules.Music.Services; +using NadekoBot.Modules.Administration.Services; namespace NadekoBot.Common.Replacements { @@ -97,7 +97,7 @@ namespace NadekoBot.Common.Replacements try { var mp = ms.MusicPlayers.FirstOrDefault(); - var title = mp.Value?.Current.Current?.Title; + var title = mp.Value?.Current.Current?.Title; return title ?? "No songs"; } catch diff --git a/src/NadekoBot/Common/Replacements/Replacer.cs b/NadekoBot.Core/Common/Replacements/Replacer.cs similarity index 100% rename from src/NadekoBot/Common/Replacements/Replacer.cs rename to NadekoBot.Core/Common/Replacements/Replacer.cs diff --git a/src/NadekoBot/Common/ShardCom/IShardComMessage.cs b/NadekoBot.Core/Common/ShardCom/ShardComMessage.cs similarity index 54% rename from src/NadekoBot/Common/ShardCom/IShardComMessage.cs rename to NadekoBot.Core/Common/ShardCom/ShardComMessage.cs index 1ea37c67..2baf9f0e 100644 --- a/src/NadekoBot/Common/ShardCom/IShardComMessage.cs +++ b/NadekoBot.Core/Common/ShardCom/ShardComMessage.cs @@ -9,5 +9,14 @@ namespace NadekoBot.Common.ShardCom public ConnectionState ConnectionState { get; set; } public int Guilds { get; set; } public DateTime Time { get; set; } + + public ShardComMessage Clone() => + new ShardComMessage + { + ShardId = ShardId, + ConnectionState = ConnectionState, + Guilds = Guilds, + Time = Time, + }; } } diff --git a/NadekoBot.Core/Common/ShardCom/ShardComServer.cs b/NadekoBot.Core/Common/ShardCom/ShardComServer.cs new file mode 100644 index 00000000..cc612ec9 --- /dev/null +++ b/NadekoBot.Core/Common/ShardCom/ShardComServer.cs @@ -0,0 +1,31 @@ +using System; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; +using NadekoBot.Core.Services; + +namespace NadekoBot.Common.ShardCom +{ + public class ShardComServer + { + private readonly IDataCache _cache; + + public ShardComServer(IDataCache cache) + { + _cache = cache; + } + + public void Start() + { + var sub = _cache.Redis.GetSubscriber(); + sub.SubscribeAsync("shardcoord_send", (ch, data) => + { + var _ = OnDataReceived(JsonConvert.DeserializeObject(data)); + }, StackExchange.Redis.CommandFlags.FireAndForget); + } + + public event Func OnDataReceived = delegate { return Task.CompletedTask; }; + } +} diff --git a/src/NadekoBot/Services/Discord/SocketMessageEventWrapper.cs b/NadekoBot.Core/Common/SocketMessageEventWrapper.cs similarity index 98% rename from src/NadekoBot/Services/Discord/SocketMessageEventWrapper.cs rename to NadekoBot.Core/Common/SocketMessageEventWrapper.cs index 3c3aabf9..05e94025 100644 --- a/src/NadekoBot/Services/Discord/SocketMessageEventWrapper.cs +++ b/NadekoBot.Core/Common/SocketMessageEventWrapper.cs @@ -3,7 +3,7 @@ using Discord.WebSocket; using System; using System.Threading.Tasks; -namespace NadekoBot.Services.Discord +namespace NadekoBot.Common { public class ReactionEventWrapper : IDisposable { diff --git a/src/NadekoBot/Common/TypeReaders/AddRemove.cs b/NadekoBot.Core/Common/TypeReaders/AddRemove.cs similarity index 100% rename from src/NadekoBot/Common/TypeReaders/AddRemove.cs rename to NadekoBot.Core/Common/TypeReaders/AddRemove.cs diff --git a/src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs b/NadekoBot.Core/Common/TypeReaders/BotCommandTypeReader.cs similarity index 77% rename from src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs rename to NadekoBot.Core/Common/TypeReaders/BotCommandTypeReader.cs index d80fbd52..32e4ee6b 100644 --- a/src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs +++ b/NadekoBot.Core/Common/TypeReaders/BotCommandTypeReader.cs @@ -2,13 +2,19 @@ using System.Linq; using System.Threading.Tasks; using Discord.Commands; +using NadekoBot.Core.Services; using NadekoBot.Modules.CustomReactions.Services; -using NadekoBot.Services; +using NadekoBot.Core.Common.TypeReaders; +using Discord.WebSocket; namespace NadekoBot.Common.TypeReaders { - public class CommandTypeReader : TypeReader + public class CommandTypeReader : NadekoTypeReader { + public CommandTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) + { + } + public override Task Read(ICommandContext context, string input, IServiceProvider services) { var _cmds = ((INServiceProvider)services).GetService(); @@ -29,8 +35,16 @@ namespace NadekoBot.Common.TypeReaders } } - public class CommandOrCrTypeReader : CommandTypeReader + public class CommandOrCrTypeReader : NadekoTypeReader { + private readonly DiscordSocketClient _client; + private readonly CommandService _cmds; + public CommandOrCrTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) + { + _client = client; + _cmds = cmds; + } + public override async Task Read(ICommandContext context, string input, IServiceProvider services) { input = input.ToUpperInvariant(); @@ -53,7 +67,7 @@ namespace NadekoBot.Common.TypeReaders } } - var cmd = await base.Read(context, input, services); + var cmd = await new CommandTypeReader(_client, _cmds).Read(context, input, services); if (cmd.IsSuccess) { return TypeReaderResult.FromSuccess(new CommandOrCrInfo(((CommandInfo)cmd.Values.First().Value).Name)); diff --git a/src/NadekoBot/Common/TypeReaders/GuildDateTimeTypeReader.cs b/NadekoBot.Core/Common/TypeReaders/GuildDateTimeTypeReader.cs similarity index 83% rename from src/NadekoBot/Common/TypeReaders/GuildDateTimeTypeReader.cs rename to NadekoBot.Core/Common/TypeReaders/GuildDateTimeTypeReader.cs index b1fa1f00..3103cbf3 100644 --- a/src/NadekoBot/Common/TypeReaders/GuildDateTimeTypeReader.cs +++ b/NadekoBot.Core/Common/TypeReaders/GuildDateTimeTypeReader.cs @@ -2,11 +2,17 @@ using System.Threading.Tasks; using Discord.Commands; using NadekoBot.Modules.Administration.Services; +using NadekoBot.Core.Common.TypeReaders; +using Discord.WebSocket; namespace NadekoBot.Common.TypeReaders { - public class GuildDateTimeTypeReader : TypeReader + public class GuildDateTimeTypeReader : NadekoTypeReader { + public GuildDateTimeTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) + { + } + public override Task Read(ICommandContext context, string input, IServiceProvider services) { var _gts = (GuildTimezoneService)services.GetService(typeof(GuildTimezoneService)); diff --git a/src/NadekoBot/Common/TypeReaders/GuildTypeReader.cs b/NadekoBot.Core/Common/TypeReaders/GuildTypeReader.cs similarity index 81% rename from src/NadekoBot/Common/TypeReaders/GuildTypeReader.cs rename to NadekoBot.Core/Common/TypeReaders/GuildTypeReader.cs index 132e1f0f..cad1a8e4 100644 --- a/src/NadekoBot/Common/TypeReaders/GuildTypeReader.cs +++ b/NadekoBot.Core/Common/TypeReaders/GuildTypeReader.cs @@ -3,17 +3,20 @@ using System.Linq; using System.Threading.Tasks; using Discord.Commands; using Discord.WebSocket; +using NadekoBot.Core.Common.TypeReaders; +using Discord; namespace NadekoBot.Common.TypeReaders { - public class GuildTypeReader : TypeReader + public class GuildTypeReader : NadekoTypeReader { private readonly DiscordSocketClient _client; - public GuildTypeReader(DiscordSocketClient client) + public GuildTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) { _client = client; } + public override Task Read(ICommandContext context, string input, IServiceProvider _) { input = input.Trim().ToLowerInvariant(); diff --git a/src/NadekoBot/Common/TypeReaders/Models/PermissionAction.cs b/NadekoBot.Core/Common/TypeReaders/Models/PermissionAction.cs similarity index 100% rename from src/NadekoBot/Common/TypeReaders/Models/PermissionAction.cs rename to NadekoBot.Core/Common/TypeReaders/Models/PermissionAction.cs diff --git a/src/NadekoBot/Common/TypeReaders/ModuleTypeReader.cs b/NadekoBot.Core/Common/TypeReaders/ModuleTypeReader.cs similarity index 80% rename from src/NadekoBot/Common/TypeReaders/ModuleTypeReader.cs rename to NadekoBot.Core/Common/TypeReaders/ModuleTypeReader.cs index 1978732d..e7f49ec7 100644 --- a/src/NadekoBot/Common/TypeReaders/ModuleTypeReader.cs +++ b/NadekoBot.Core/Common/TypeReaders/ModuleTypeReader.cs @@ -3,14 +3,16 @@ using System.Linq; using System.Threading.Tasks; using Discord.Commands; using NadekoBot.Extensions; +using NadekoBot.Core.Common.TypeReaders; +using Discord.WebSocket; namespace NadekoBot.Common.TypeReaders { - public class ModuleTypeReader : TypeReader + public class ModuleTypeReader : NadekoTypeReader { private readonly CommandService _cmds; - public ModuleTypeReader(CommandService cmds) + public ModuleTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) { _cmds = cmds; } @@ -26,11 +28,11 @@ namespace NadekoBot.Common.TypeReaders } } - public class ModuleOrCrTypeReader : TypeReader + public class ModuleOrCrTypeReader : NadekoTypeReader { private readonly CommandService _cmds; - public ModuleOrCrTypeReader(CommandService cmds) + public ModuleOrCrTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) { _cmds = cmds; } diff --git a/NadekoBot.Core/Common/TypeReaders/NadekoTypeReader.cs b/NadekoBot.Core/Common/TypeReaders/NadekoTypeReader.cs new file mode 100644 index 00000000..062b4537 --- /dev/null +++ b/NadekoBot.Core/Common/TypeReaders/NadekoTypeReader.cs @@ -0,0 +1,19 @@ +using Discord.Commands; +using Discord.WebSocket; + +namespace NadekoBot.Core.Common.TypeReaders +{ + public abstract class NadekoTypeReader : TypeReader where + T : class + { + private readonly DiscordSocketClient _client; + private readonly CommandService _cmds; + + private NadekoTypeReader() { } + public NadekoTypeReader(DiscordSocketClient client, CommandService cmds) + { + _client = client; + _cmds = cmds; + } + } +} diff --git a/src/NadekoBot/Common/TypeReaders/PermissionActionTypeReader.cs b/NadekoBot.Core/Common/TypeReaders/PermissionActionTypeReader.cs similarity index 83% rename from src/NadekoBot/Common/TypeReaders/PermissionActionTypeReader.cs rename to NadekoBot.Core/Common/TypeReaders/PermissionActionTypeReader.cs index 82e16e16..c9455b98 100644 --- a/src/NadekoBot/Common/TypeReaders/PermissionActionTypeReader.cs +++ b/NadekoBot.Core/Common/TypeReaders/PermissionActionTypeReader.cs @@ -1,15 +1,21 @@ using System; using System.Threading.Tasks; using Discord.Commands; +using Discord.WebSocket; using NadekoBot.Common.TypeReaders.Models; +using NadekoBot.Core.Common.TypeReaders; namespace NadekoBot.Common.TypeReaders { /// /// Used instead of bool for more flexible keywords for true/false only in the permission module /// - public class PermissionActionTypeReader : TypeReader + public class PermissionActionTypeReader : NadekoTypeReader { + public PermissionActionTypeReader(DiscordSocketClient client, CommandService cmds) : base(client, cmds) + { + } + public override Task Read(ICommandContext context, string input, IServiceProvider _) { input = input.ToUpperInvariant(); diff --git a/src/NadekoBot/Migrations/20161011200458_first.Designer.cs b/NadekoBot.Core/Migrations/20161011200458_first.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20161011200458_first.Designer.cs rename to NadekoBot.Core/Migrations/20161011200458_first.Designer.cs index 3f80251a..6abdaa2a 100644 --- a/src/NadekoBot/Migrations/20161011200458_first.Designer.cs +++ b/NadekoBot.Core/Migrations/20161011200458_first.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -92,7 +92,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -114,7 +114,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -132,7 +132,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -148,7 +148,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -165,7 +165,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -185,7 +185,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -204,7 +204,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -220,7 +220,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -240,7 +240,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -256,7 +256,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -278,7 +278,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -294,7 +294,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -359,7 +359,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -375,7 +375,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -391,7 +391,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -467,7 +467,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -492,7 +492,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -508,7 +508,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -532,7 +532,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -555,7 +555,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -573,7 +573,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -595,7 +595,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -616,7 +616,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -633,124 +633,124 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161011200458_first.cs b/NadekoBot.Core/Migrations/20161011200458_first.cs similarity index 100% rename from src/NadekoBot/Migrations/20161011200458_first.cs rename to NadekoBot.Core/Migrations/20161011200458_first.cs diff --git a/src/NadekoBot/Migrations/20161015005020_CurrencyTransaction.Designer.cs b/NadekoBot.Core/Migrations/20161015005020_CurrencyTransaction.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161015005020_CurrencyTransaction.Designer.cs rename to NadekoBot.Core/Migrations/20161015005020_CurrencyTransaction.Designer.cs index 52db3bf9..36187eec 100644 --- a/src/NadekoBot/Migrations/20161015005020_CurrencyTransaction.Designer.cs +++ b/NadekoBot.Core/Migrations/20161015005020_CurrencyTransaction.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -92,7 +92,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -114,7 +114,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -132,7 +132,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -148,7 +148,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -165,7 +165,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -181,7 +181,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -201,7 +201,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -220,7 +220,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -236,7 +236,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -256,7 +256,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -272,7 +272,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -294,7 +294,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -310,7 +310,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -375,7 +375,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -391,7 +391,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -407,7 +407,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -449,7 +449,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -467,7 +467,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -483,7 +483,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -508,7 +508,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -524,7 +524,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -548,7 +548,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -571,7 +571,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -589,7 +589,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -611,7 +611,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -632,7 +632,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -649,124 +649,124 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161015005020_CurrencyTransaction.cs b/NadekoBot.Core/Migrations/20161015005020_CurrencyTransaction.cs similarity index 100% rename from src/NadekoBot/Migrations/20161015005020_CurrencyTransaction.cs rename to NadekoBot.Core/Migrations/20161015005020_CurrencyTransaction.cs diff --git a/src/NadekoBot/Migrations/20161015102407_coc.Designer.cs b/NadekoBot.Core/Migrations/20161015102407_coc.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161015102407_coc.Designer.cs rename to NadekoBot.Core/Migrations/20161015102407_coc.Designer.cs index fd104e1a..3b22fd98 100644 --- a/src/NadekoBot/Migrations/20161015102407_coc.Designer.cs +++ b/NadekoBot.Core/Migrations/20161015102407_coc.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -377,7 +377,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -409,7 +409,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -469,7 +469,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -485,7 +485,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -510,7 +510,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -526,7 +526,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -550,7 +550,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -573,7 +573,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -591,7 +591,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -613,7 +613,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -634,7 +634,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -651,124 +651,124 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161015102407_coc.cs b/NadekoBot.Core/Migrations/20161015102407_coc.cs similarity index 100% rename from src/NadekoBot/Migrations/20161015102407_coc.cs rename to NadekoBot.Core/Migrations/20161015102407_coc.cs diff --git a/src/NadekoBot/Migrations/20161019055137_MuteRoleName.Designer.cs b/NadekoBot.Core/Migrations/20161019055137_MuteRoleName.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161019055137_MuteRoleName.Designer.cs rename to NadekoBot.Core/Migrations/20161019055137_MuteRoleName.Designer.cs index f86d532c..8f4db4e6 100644 --- a/src/NadekoBot/Migrations/20161019055137_MuteRoleName.Designer.cs +++ b/NadekoBot.Core/Migrations/20161019055137_MuteRoleName.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -379,7 +379,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -395,7 +395,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -453,7 +453,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -471,7 +471,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -487,7 +487,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -512,7 +512,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -528,7 +528,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -552,7 +552,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -575,7 +575,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -593,7 +593,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -615,7 +615,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -636,7 +636,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -653,124 +653,124 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161019055137_MuteRoleName.cs b/NadekoBot.Core/Migrations/20161019055137_MuteRoleName.cs similarity index 100% rename from src/NadekoBot/Migrations/20161019055137_MuteRoleName.cs rename to NadekoBot.Core/Migrations/20161019055137_MuteRoleName.cs diff --git a/src/NadekoBot/Migrations/20161107213222_Cleverbot.Designer.cs b/NadekoBot.Core/Migrations/20161107213222_Cleverbot.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161107213222_Cleverbot.Designer.cs rename to NadekoBot.Core/Migrations/20161107213222_Cleverbot.Designer.cs index 50ac3309..6de7b38d 100644 --- a/src/NadekoBot/Migrations/20161107213222_Cleverbot.Designer.cs +++ b/NadekoBot.Core/Migrations/20161107213222_Cleverbot.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -381,7 +381,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -397,7 +397,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -413,7 +413,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -455,7 +455,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -473,7 +473,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -489,7 +489,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -514,7 +514,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -530,7 +530,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -554,7 +554,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -577,7 +577,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -595,7 +595,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -617,7 +617,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -638,7 +638,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -655,124 +655,124 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161107213222_Cleverbot.cs b/NadekoBot.Core/Migrations/20161107213222_Cleverbot.cs similarity index 100% rename from src/NadekoBot/Migrations/20161107213222_Cleverbot.cs rename to NadekoBot.Core/Migrations/20161107213222_Cleverbot.cs diff --git a/src/NadekoBot/Migrations/20161122100602_Greet and bye improved.Designer.cs b/NadekoBot.Core/Migrations/20161122100602_Greet and bye improved.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161122100602_Greet and bye improved.Designer.cs rename to NadekoBot.Core/Migrations/20161122100602_Greet and bye improved.Designer.cs index 8a9f83eb..81a967e6 100644 --- a/src/NadekoBot/Migrations/20161122100602_Greet and bye improved.Designer.cs +++ b/NadekoBot.Core/Migrations/20161122100602_Greet and bye improved.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -457,7 +457,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -491,7 +491,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -516,7 +516,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -532,7 +532,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -556,7 +556,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -579,7 +579,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -597,7 +597,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -619,7 +619,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -640,7 +640,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -657,124 +657,124 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161122100602_Greet and bye improved.cs b/NadekoBot.Core/Migrations/20161122100602_Greet and bye improved.cs similarity index 100% rename from src/NadekoBot/Migrations/20161122100602_Greet and bye improved.cs rename to NadekoBot.Core/Migrations/20161122100602_Greet and bye improved.cs diff --git a/src/NadekoBot/Migrations/20161127233843_PokeGame.Designer.cs b/NadekoBot.Core/Migrations/20161127233843_PokeGame.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161127233843_PokeGame.Designer.cs rename to NadekoBot.Core/Migrations/20161127233843_PokeGame.Designer.cs index b1856225..b8ecfa48 100644 --- a/src/NadekoBot/Migrations/20161127233843_PokeGame.Designer.cs +++ b/NadekoBot.Core/Migrations/20161127233843_PokeGame.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -457,7 +457,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -491,7 +491,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -516,7 +516,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -532,7 +532,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -556,7 +556,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -579,7 +579,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -597,7 +597,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -619,7 +619,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -640,7 +640,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -657,7 +657,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -674,124 +674,124 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161127233843_PokeGame.cs b/NadekoBot.Core/Migrations/20161127233843_PokeGame.cs similarity index 100% rename from src/NadekoBot/Migrations/20161127233843_PokeGame.cs rename to NadekoBot.Core/Migrations/20161127233843_PokeGame.cs diff --git a/src/NadekoBot/Migrations/20161213025624_mutedusers.Designer.cs b/NadekoBot.Core/Migrations/20161213025624_mutedusers.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161213025624_mutedusers.Designer.cs rename to NadekoBot.Core/Migrations/20161213025624_mutedusers.Designer.cs index f142b4fc..69660b6d 100644 --- a/src/NadekoBot/Migrations/20161213025624_mutedusers.Designer.cs +++ b/NadekoBot.Core/Migrations/20161213025624_mutedusers.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -457,7 +457,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -491,7 +491,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -507,7 +507,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -532,7 +532,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -548,7 +548,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -595,7 +595,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -613,7 +613,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -635,7 +635,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -656,7 +656,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -673,7 +673,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -690,131 +690,131 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161213025624_mutedusers.cs b/NadekoBot.Core/Migrations/20161213025624_mutedusers.cs similarity index 100% rename from src/NadekoBot/Migrations/20161213025624_mutedusers.cs rename to NadekoBot.Core/Migrations/20161213025624_mutedusers.cs diff --git a/src/NadekoBot/Migrations/20161224032833_logsettings.Designer.cs b/NadekoBot.Core/Migrations/20161224032833_logsettings.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20161224032833_logsettings.Designer.cs rename to NadekoBot.Core/Migrations/20161224032833_logsettings.Designer.cs index 6f288421..fda45918 100644 --- a/src/NadekoBot/Migrations/20161224032833_logsettings.Designer.cs +++ b/NadekoBot.Core/Migrations/20161224032833_logsettings.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -487,7 +487,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -505,7 +505,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -521,7 +521,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -537,7 +537,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -562,7 +562,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -578,7 +578,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -602,7 +602,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -625,7 +625,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -643,7 +643,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -665,7 +665,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Repeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -686,7 +686,7 @@ namespace NadekoBot.Migrations b.ToTable("Repeaters"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -703,7 +703,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -720,131 +720,131 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20161224032833_logsettings.cs b/NadekoBot.Core/Migrations/20161224032833_logsettings.cs similarity index 100% rename from src/NadekoBot/Migrations/20161224032833_logsettings.cs rename to NadekoBot.Core/Migrations/20161224032833_logsettings.cs diff --git a/src/NadekoBot/Migrations/20170110111159_repeater-drop.Designer.cs b/NadekoBot.Core/Migrations/20170110111159_repeater-drop.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20170110111159_repeater-drop.Designer.cs rename to NadekoBot.Core/Migrations/20170110111159_repeater-drop.Designer.cs index 2a3fb271..01b8eb37 100644 --- a/src/NadekoBot/Migrations/20170110111159_repeater-drop.Designer.cs +++ b/NadekoBot.Core/Migrations/20170110111159_repeater-drop.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -487,7 +487,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -505,7 +505,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -521,7 +521,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -537,7 +537,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -562,7 +562,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -578,7 +578,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -602,7 +602,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -625,7 +625,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -643,7 +643,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -665,7 +665,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -682,7 +682,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -699,131 +699,131 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170110111159_repeater-drop.cs b/NadekoBot.Core/Migrations/20170110111159_repeater-drop.cs similarity index 100% rename from src/NadekoBot/Migrations/20170110111159_repeater-drop.cs rename to NadekoBot.Core/Migrations/20170110111159_repeater-drop.cs diff --git a/src/NadekoBot/Migrations/20170110111302_repeater-new.Designer.cs b/NadekoBot.Core/Migrations/20170110111302_repeater-new.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20170110111302_repeater-new.Designer.cs rename to NadekoBot.Core/Migrations/20170110111302_repeater-new.Designer.cs index b8a72c04..359fe543 100644 --- a/src/NadekoBot/Migrations/20170110111302_repeater-new.Designer.cs +++ b/NadekoBot.Core/Migrations/20170110111302_repeater-new.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -34,7 +34,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -70,7 +70,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -94,7 +94,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -116,7 +116,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -134,7 +134,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -167,7 +167,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -203,7 +203,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -222,7 +222,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -238,7 +238,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -405,7 +405,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -421,7 +421,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -437,7 +437,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -509,7 +509,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -527,7 +527,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -543,7 +543,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -559,7 +559,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -584,7 +584,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -600,7 +600,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -624,7 +624,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -647,7 +647,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -665,7 +665,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -687,7 +687,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -704,7 +704,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -721,138 +721,138 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170110111302_repeater-new.cs b/NadekoBot.Core/Migrations/20170110111302_repeater-new.cs similarity index 100% rename from src/NadekoBot/Migrations/20170110111302_repeater-new.cs rename to NadekoBot.Core/Migrations/20170110111302_repeater-new.cs diff --git a/src/NadekoBot/Migrations/20170110180534_protection.Designer.cs b/NadekoBot.Core/Migrations/20170110180534_protection.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170110180534_protection.Designer.cs rename to NadekoBot.Core/Migrations/20170110180534_protection.Designer.cs index f85c57c4..081d4ee4 100644 --- a/src/NadekoBot/Migrations/20170110180534_protection.Designer.cs +++ b/NadekoBot.Core/Migrations/20170110180534_protection.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -37,7 +37,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -53,7 +53,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -72,7 +72,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -90,7 +90,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -126,7 +126,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -150,7 +150,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -172,7 +172,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -190,7 +190,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -223,7 +223,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -239,7 +239,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -259,7 +259,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -278,7 +278,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -294,7 +294,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -314,7 +314,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -330,7 +330,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -352,7 +352,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -368,7 +368,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -439,7 +439,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -461,7 +461,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -477,7 +477,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -565,7 +565,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -583,7 +583,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -599,7 +599,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -615,7 +615,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -640,7 +640,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -656,7 +656,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -680,7 +680,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -703,7 +703,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -721,7 +721,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -743,7 +743,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -760,7 +760,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -777,161 +777,161 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170110180534_protection.cs b/NadekoBot.Core/Migrations/20170110180534_protection.cs similarity index 100% rename from src/NadekoBot/Migrations/20170110180534_protection.cs rename to NadekoBot.Core/Migrations/20170110180534_protection.cs diff --git a/src/NadekoBot/Migrations/20170112185538_currency-modifications.Designer.cs b/NadekoBot.Core/Migrations/20170112185538_currency-modifications.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170112185538_currency-modifications.Designer.cs rename to NadekoBot.Core/Migrations/20170112185538_currency-modifications.Designer.cs index 6550cc1d..f3a3d38c 100644 --- a/src/NadekoBot/Migrations/20170112185538_currency-modifications.Designer.cs +++ b/NadekoBot.Core/Migrations/20170112185538_currency-modifications.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -37,7 +37,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -53,7 +53,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -72,7 +72,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -90,7 +90,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -140,7 +140,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -164,7 +164,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -186,7 +186,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -204,7 +204,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -225,7 +225,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -241,7 +241,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -258,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -274,7 +274,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -294,7 +294,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -313,7 +313,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -329,7 +329,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -349,7 +349,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -365,7 +365,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -387,7 +387,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -403,7 +403,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -474,7 +474,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -496,7 +496,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -512,7 +512,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -528,7 +528,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -600,7 +600,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -618,7 +618,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -634,7 +634,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -650,7 +650,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -675,7 +675,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -691,7 +691,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -715,7 +715,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -738,7 +738,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -756,7 +756,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -778,7 +778,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -795,7 +795,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -812,168 +812,168 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170112185538_currency-modifications.cs b/NadekoBot.Core/Migrations/20170112185538_currency-modifications.cs similarity index 100% rename from src/NadekoBot/Migrations/20170112185538_currency-modifications.cs rename to NadekoBot.Core/Migrations/20170112185538_currency-modifications.cs diff --git a/src/NadekoBot/Migrations/20170118202307_ok-error-colors.Designer.cs b/NadekoBot.Core/Migrations/20170118202307_ok-error-colors.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170118202307_ok-error-colors.Designer.cs rename to NadekoBot.Core/Migrations/20170118202307_ok-error-colors.Designer.cs index 8bfa7330..a08693c8 100644 --- a/src/NadekoBot/Migrations/20170118202307_ok-error-colors.Designer.cs +++ b/NadekoBot.Core/Migrations/20170118202307_ok-error-colors.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -37,7 +37,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -53,7 +53,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -72,7 +72,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -90,7 +90,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -144,7 +144,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -168,7 +168,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -190,7 +190,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -208,7 +208,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -229,7 +229,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -245,7 +245,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -262,7 +262,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -278,7 +278,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -298,7 +298,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -317,7 +317,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -333,7 +333,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -353,7 +353,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -369,7 +369,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -391,7 +391,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -407,7 +407,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -478,7 +478,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -500,7 +500,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -516,7 +516,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -532,7 +532,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -604,7 +604,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -622,7 +622,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -638,7 +638,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -654,7 +654,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -679,7 +679,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -695,7 +695,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -719,7 +719,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -742,7 +742,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -760,7 +760,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -782,7 +782,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -799,7 +799,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -816,168 +816,168 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170118202307_ok-error-colors.cs b/NadekoBot.Core/Migrations/20170118202307_ok-error-colors.cs similarity index 100% rename from src/NadekoBot/Migrations/20170118202307_ok-error-colors.cs rename to NadekoBot.Core/Migrations/20170118202307_ok-error-colors.cs diff --git a/src/NadekoBot/Migrations/20170122044958_waifus.Designer.cs b/NadekoBot.Core/Migrations/20170122044958_waifus.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170122044958_waifus.Designer.cs rename to NadekoBot.Core/Migrations/20170122044958_waifus.Designer.cs index 0db0f6a2..cc799a91 100644 --- a/src/NadekoBot/Migrations/20170122044958_waifus.Designer.cs +++ b/NadekoBot.Core/Migrations/20170122044958_waifus.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -37,7 +37,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -53,7 +53,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -72,7 +72,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -90,7 +90,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -144,7 +144,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -168,7 +168,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -190,7 +190,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -208,7 +208,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -229,7 +229,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -245,7 +245,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -262,7 +262,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -278,7 +278,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -298,7 +298,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -353,7 +353,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -373,7 +373,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -389,7 +389,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -427,7 +427,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -498,7 +498,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -520,7 +520,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -536,7 +536,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -552,7 +552,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -624,7 +624,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -642,7 +642,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -658,7 +658,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -674,7 +674,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -699,7 +699,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -715,7 +715,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -739,7 +739,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -762,7 +762,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -780,7 +780,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -802,7 +802,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -819,7 +819,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -836,7 +836,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -861,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -885,199 +885,199 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170122044958_waifus.cs b/NadekoBot.Core/Migrations/20170122044958_waifus.cs similarity index 100% rename from src/NadekoBot/Migrations/20170122044958_waifus.cs rename to NadekoBot.Core/Migrations/20170122044958_waifus.cs diff --git a/src/NadekoBot/Migrations/20170213164350_guild-timezone-and-locale.Designer.cs b/NadekoBot.Core/Migrations/20170213164350_guild-timezone-and-locale.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170213164350_guild-timezone-and-locale.Designer.cs rename to NadekoBot.Core/Migrations/20170213164350_guild-timezone-and-locale.Designer.cs index e5515381..ccb91e07 100644 --- a/src/NadekoBot/Migrations/20170213164350_guild-timezone-and-locale.Designer.cs +++ b/NadekoBot.Core/Migrations/20170213164350_guild-timezone-and-locale.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -37,7 +37,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -53,7 +53,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -72,7 +72,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -90,7 +90,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -146,7 +146,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -170,7 +170,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -192,7 +192,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -210,7 +210,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -231,7 +231,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -247,7 +247,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -264,7 +264,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -280,7 +280,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -320,7 +320,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -339,7 +339,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -375,7 +375,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -391,7 +391,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -413,7 +413,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -429,7 +429,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -504,7 +504,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -526,7 +526,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -542,7 +542,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -558,7 +558,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -630,7 +630,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -648,7 +648,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -664,7 +664,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -680,7 +680,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -705,7 +705,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -721,7 +721,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -745,7 +745,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -768,7 +768,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -786,7 +786,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -808,7 +808,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -825,7 +825,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -842,7 +842,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -867,7 +867,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -891,199 +891,199 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170213164350_guild-timezone-and-locale.cs b/NadekoBot.Core/Migrations/20170213164350_guild-timezone-and-locale.cs similarity index 100% rename from src/NadekoBot/Migrations/20170213164350_guild-timezone-and-locale.cs rename to NadekoBot.Core/Migrations/20170213164350_guild-timezone-and-locale.cs diff --git a/src/NadekoBot/Migrations/20170222162505_dateadded.Designer.cs b/NadekoBot.Core/Migrations/20170222162505_dateadded.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20170222162505_dateadded.Designer.cs rename to NadekoBot.Core/Migrations/20170222162505_dateadded.Designer.cs index 9ab4340d..954f1709 100644 --- a/src/NadekoBot/Migrations/20170222162505_dateadded.Designer.cs +++ b/NadekoBot.Core/Migrations/20170222162505_dateadded.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -249,7 +249,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -267,7 +267,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -286,7 +286,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -326,7 +326,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -348,7 +348,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -369,7 +369,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -387,7 +387,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -409,7 +409,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -427,7 +427,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -469,7 +469,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -546,7 +546,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -570,7 +570,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -588,7 +588,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -606,7 +606,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -680,7 +680,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -700,7 +700,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -718,7 +718,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -736,7 +736,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -763,7 +763,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -781,7 +781,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -807,7 +807,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -832,7 +832,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -852,7 +852,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -876,7 +876,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -895,7 +895,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -914,7 +914,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -941,7 +941,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -967,199 +967,199 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170222162505_dateadded.cs b/NadekoBot.Core/Migrations/20170222162505_dateadded.cs similarity index 100% rename from src/NadekoBot/Migrations/20170222162505_dateadded.cs rename to NadekoBot.Core/Migrations/20170222162505_dateadded.cs diff --git a/src/NadekoBot/Migrations/20170308033058_permsv2.Designer.cs b/NadekoBot.Core/Migrations/20170308033058_permsv2.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20170308033058_permsv2.Designer.cs rename to NadekoBot.Core/Migrations/20170308033058_permsv2.Designer.cs index e0717137..9c4fd39e 100644 --- a/src/NadekoBot/Migrations/20170308033058_permsv2.Designer.cs +++ b/NadekoBot.Core/Migrations/20170308033058_permsv2.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -249,7 +249,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -267,7 +267,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -286,7 +286,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -326,7 +326,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -348,7 +348,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -369,7 +369,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -387,7 +387,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -409,7 +409,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -427,7 +427,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -469,7 +469,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -546,7 +546,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -570,7 +570,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -588,7 +588,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -606,7 +606,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -680,7 +680,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -700,7 +700,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -718,7 +718,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -736,7 +736,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -763,7 +763,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -791,7 +791,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -809,7 +809,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -860,7 +860,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -880,7 +880,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -904,7 +904,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -923,7 +923,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -942,7 +942,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -969,7 +969,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -995,206 +995,206 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170308033058_permsv2.cs b/NadekoBot.Core/Migrations/20170308033058_permsv2.cs similarity index 100% rename from src/NadekoBot/Migrations/20170308033058_permsv2.cs rename to NadekoBot.Core/Migrations/20170308033058_permsv2.cs diff --git a/src/NadekoBot/Migrations/20170310210952_unmute-timers.Designer.cs b/NadekoBot.Core/Migrations/20170310210952_unmute-timers.Designer.cs similarity index 76% rename from src/NadekoBot/Migrations/20170310210952_unmute-timers.Designer.cs rename to NadekoBot.Core/Migrations/20170310210952_unmute-timers.Designer.cs index 34517ca8..dbee3fc0 100644 --- a/src/NadekoBot/Migrations/20170310210952_unmute-timers.Designer.cs +++ b/NadekoBot.Core/Migrations/20170310210952_unmute-timers.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -249,7 +249,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -267,7 +267,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -286,7 +286,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -326,7 +326,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -348,7 +348,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -369,7 +369,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -387,7 +387,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -409,7 +409,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -427,7 +427,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -469,7 +469,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -546,7 +546,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -570,7 +570,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -588,7 +588,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -606,7 +606,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -680,7 +680,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -700,7 +700,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -718,7 +718,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -736,7 +736,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -763,7 +763,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -791,7 +791,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -809,7 +809,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -860,7 +860,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -880,7 +880,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -904,7 +904,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -923,7 +923,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -943,7 +943,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -962,7 +962,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -989,7 +989,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1015,213 +1015,213 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170310210952_unmute-timers.cs b/NadekoBot.Core/Migrations/20170310210952_unmute-timers.cs similarity index 100% rename from src/NadekoBot/Migrations/20170310210952_unmute-timers.cs rename to NadekoBot.Core/Migrations/20170310210952_unmute-timers.cs diff --git a/src/NadekoBot/Migrations/20170311054632_vcrole.Designer.cs b/NadekoBot.Core/Migrations/20170311054632_vcrole.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170311054632_vcrole.Designer.cs rename to NadekoBot.Core/Migrations/20170311054632_vcrole.Designer.cs index 99dcee74..efdcec54 100644 --- a/src/NadekoBot/Migrations/20170311054632_vcrole.Designer.cs +++ b/NadekoBot.Core/Migrations/20170311054632_vcrole.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -249,7 +249,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -267,7 +267,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -286,7 +286,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -326,7 +326,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -348,7 +348,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -369,7 +369,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -387,7 +387,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -409,7 +409,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -427,7 +427,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -469,7 +469,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -546,7 +546,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -570,7 +570,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -588,7 +588,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -606,7 +606,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -680,7 +680,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -700,7 +700,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -718,7 +718,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -736,7 +736,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -763,7 +763,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -791,7 +791,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -809,7 +809,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -860,7 +860,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -880,7 +880,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -904,7 +904,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -923,7 +923,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -943,7 +943,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -962,7 +962,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -982,7 +982,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1009,7 +1009,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1035,220 +1035,220 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170311054632_vcrole.cs b/NadekoBot.Core/Migrations/20170311054632_vcrole.cs similarity index 100% rename from src/NadekoBot/Migrations/20170311054632_vcrole.cs rename to NadekoBot.Core/Migrations/20170311054632_vcrole.cs diff --git a/src/NadekoBot/Migrations/20170318190018_crad-and-crdm.Designer.cs b/NadekoBot.Core/Migrations/20170318190018_crad-and-crdm.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170318190018_crad-and-crdm.Designer.cs rename to NadekoBot.Core/Migrations/20170318190018_crad-and-crdm.Designer.cs index 3b25cdab..73bf155a 100644 --- a/src/NadekoBot/Migrations/20170318190018_crad-and-crdm.Designer.cs +++ b/NadekoBot.Core/Migrations/20170318190018_crad-and-crdm.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -249,7 +249,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -267,7 +267,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -286,7 +286,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -330,7 +330,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -352,7 +352,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -373,7 +373,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -391,7 +391,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -413,7 +413,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -431,7 +431,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -455,7 +455,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -473,7 +473,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -550,7 +550,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -574,7 +574,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -592,7 +592,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -610,7 +610,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -684,7 +684,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -704,7 +704,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -722,7 +722,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -740,7 +740,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -767,7 +767,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -795,7 +795,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -813,7 +813,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -839,7 +839,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -864,7 +864,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -884,7 +884,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -908,7 +908,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -927,7 +927,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -947,7 +947,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -966,7 +966,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -986,7 +986,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1013,7 +1013,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1039,220 +1039,220 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170318190018_crad-and-crdm.cs b/NadekoBot.Core/Migrations/20170318190018_crad-and-crdm.cs similarity index 100% rename from src/NadekoBot/Migrations/20170318190018_crad-and-crdm.cs rename to NadekoBot.Core/Migrations/20170318190018_crad-and-crdm.cs diff --git a/src/NadekoBot/Migrations/20170320090138_command-aliasing.Designer.cs b/NadekoBot.Core/Migrations/20170320090138_command-aliasing.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170320090138_command-aliasing.Designer.cs rename to NadekoBot.Core/Migrations/20170320090138_command-aliasing.Designer.cs index 7fe32ff1..0031a051 100644 --- a/src/NadekoBot/Migrations/20170320090138_command-aliasing.Designer.cs +++ b/NadekoBot.Core/Migrations/20170320090138_command-aliasing.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -570,7 +570,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -594,7 +594,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -612,7 +612,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -630,7 +630,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -704,7 +704,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -724,7 +724,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -742,7 +742,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -760,7 +760,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -787,7 +787,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -815,7 +815,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -833,7 +833,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -859,7 +859,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -884,7 +884,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -904,7 +904,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -928,7 +928,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -947,7 +947,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -967,7 +967,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -986,7 +986,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1006,7 +1006,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1033,7 +1033,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1059,227 +1059,227 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); diff --git a/src/NadekoBot/Migrations/20170320090138_command-aliasing.cs b/NadekoBot.Core/Migrations/20170320090138_command-aliasing.cs similarity index 100% rename from src/NadekoBot/Migrations/20170320090138_command-aliasing.cs rename to NadekoBot.Core/Migrations/20170320090138_command-aliasing.cs diff --git a/src/NadekoBot/Migrations/20170330000613_warning-commands.Designer.cs b/NadekoBot.Core/Migrations/20170330000613_warning-commands.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170330000613_warning-commands.Designer.cs rename to NadekoBot.Core/Migrations/20170330000613_warning-commands.Designer.cs index 5cb6a428..57f29a43 100644 --- a/src/NadekoBot/Migrations/20170330000613_warning-commands.Designer.cs +++ b/NadekoBot.Core/Migrations/20170330000613_warning-commands.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -614,7 +614,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -632,7 +632,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -706,7 +706,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -726,7 +726,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -744,7 +744,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -762,7 +762,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -789,7 +789,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -817,7 +817,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -861,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -886,7 +886,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -906,7 +906,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -949,7 +949,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -969,7 +969,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -988,7 +988,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1008,7 +1008,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1035,7 +1035,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1061,7 +1061,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1085,7 +1085,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1107,235 +1107,235 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170330000613_warning-commands.cs b/NadekoBot.Core/Migrations/20170330000613_warning-commands.cs similarity index 100% rename from src/NadekoBot/Migrations/20170330000613_warning-commands.cs rename to NadekoBot.Core/Migrations/20170330000613_warning-commands.cs diff --git a/src/NadekoBot/Migrations/20170331093025_startup-commands.Designer.cs b/NadekoBot.Core/Migrations/20170331093025_startup-commands.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170331093025_startup-commands.Designer.cs rename to NadekoBot.Core/Migrations/20170331093025_startup-commands.Designer.cs index 1ba8cc51..8a7566bf 100644 --- a/src/NadekoBot/Migrations/20170331093025_startup-commands.Designer.cs +++ b/NadekoBot.Core/Migrations/20170331093025_startup-commands.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -614,7 +614,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -632,7 +632,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -706,7 +706,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -726,7 +726,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -744,7 +744,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -762,7 +762,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -789,7 +789,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -817,7 +817,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -861,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -886,7 +886,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -906,7 +906,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -949,7 +949,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -981,7 +981,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1001,7 +1001,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1020,7 +1020,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1040,7 +1040,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1067,7 +1067,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1093,7 +1093,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1117,7 +1117,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1139,242 +1139,242 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170331093025_startup-commands.cs b/NadekoBot.Core/Migrations/20170331093025_startup-commands.cs similarity index 100% rename from src/NadekoBot/Migrations/20170331093025_startup-commands.cs rename to NadekoBot.Core/Migrations/20170331093025_startup-commands.cs diff --git a/src/NadekoBot/Migrations/20170401161600_slowmode-whitelist.Designer.cs b/NadekoBot.Core/Migrations/20170401161600_slowmode-whitelist.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170401161600_slowmode-whitelist.Designer.cs rename to NadekoBot.Core/Migrations/20170401161600_slowmode-whitelist.Designer.cs index a6cdb622..5416fe51 100644 --- a/src/NadekoBot/Migrations/20170401161600_slowmode-whitelist.Designer.cs +++ b/NadekoBot.Core/Migrations/20170401161600_slowmode-whitelist.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -614,7 +614,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -632,7 +632,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -706,7 +706,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -726,7 +726,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -744,7 +744,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -762,7 +762,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -789,7 +789,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -817,7 +817,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -861,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -886,7 +886,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -906,7 +906,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -949,7 +949,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -967,7 +967,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -985,7 +985,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1017,7 +1017,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1037,7 +1037,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1056,7 +1056,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1076,7 +1076,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1103,7 +1103,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1129,7 +1129,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1153,7 +1153,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1175,256 +1175,256 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170401161600_slowmode-whitelist.cs b/NadekoBot.Core/Migrations/20170401161600_slowmode-whitelist.cs similarity index 100% rename from src/NadekoBot/Migrations/20170401161600_slowmode-whitelist.cs rename to NadekoBot.Core/Migrations/20170401161600_slowmode-whitelist.cs diff --git a/src/NadekoBot/Migrations/20170401205753_patreon-rewards.Designer.cs b/NadekoBot.Core/Migrations/20170401205753_patreon-rewards.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170401205753_patreon-rewards.Designer.cs rename to NadekoBot.Core/Migrations/20170401205753_patreon-rewards.Designer.cs index 2c60d6c8..8c314a7e 100644 --- a/src/NadekoBot/Migrations/20170401205753_patreon-rewards.Designer.cs +++ b/NadekoBot.Core/Migrations/20170401205753_patreon-rewards.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -614,7 +614,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -632,7 +632,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -706,7 +706,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -726,7 +726,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -744,7 +744,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -762,7 +762,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -789,7 +789,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -817,7 +817,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -861,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -886,7 +886,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -906,7 +906,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -951,7 +951,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -970,7 +970,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -988,7 +988,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1006,7 +1006,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1038,7 +1038,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1058,7 +1058,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1077,7 +1077,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1097,7 +1097,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1124,7 +1124,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1150,7 +1150,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1174,7 +1174,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1196,256 +1196,256 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170401205753_patreon-rewards.cs b/NadekoBot.Core/Migrations/20170401205753_patreon-rewards.cs similarity index 100% rename from src/NadekoBot/Migrations/20170401205753_patreon-rewards.cs rename to NadekoBot.Core/Migrations/20170401205753_patreon-rewards.cs diff --git a/src/NadekoBot/Migrations/20170405161814_flower-shop.Designer.cs b/NadekoBot.Core/Migrations/20170405161814_flower-shop.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170405161814_flower-shop.Designer.cs rename to NadekoBot.Core/Migrations/20170405161814_flower-shop.Designer.cs index a9836330..8c977e61 100644 --- a/src/NadekoBot/Migrations/20170405161814_flower-shop.Designer.cs +++ b/NadekoBot.Core/Migrations/20170405161814_flower-shop.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -614,7 +614,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -632,7 +632,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -706,7 +706,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -726,7 +726,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -744,7 +744,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -762,7 +762,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -789,7 +789,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -817,7 +817,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -835,7 +835,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -861,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -886,7 +886,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -906,7 +906,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -951,7 +951,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -970,7 +970,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1000,7 +1000,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1018,7 +1018,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1036,7 +1036,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1054,7 +1054,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1086,7 +1086,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1106,7 +1106,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1125,7 +1125,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1145,7 +1145,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1172,7 +1172,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1198,7 +1198,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1222,7 +1222,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1244,270 +1244,270 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170405161814_flower-shop.cs b/NadekoBot.Core/Migrations/20170405161814_flower-shop.cs similarity index 100% rename from src/NadekoBot/Migrations/20170405161814_flower-shop.cs rename to NadekoBot.Core/Migrations/20170405161814_flower-shop.cs diff --git a/src/NadekoBot/Migrations/20170408162851_game-voice-channel.Designer.cs b/NadekoBot.Core/Migrations/20170408162851_game-voice-channel.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170408162851_game-voice-channel.Designer.cs rename to NadekoBot.Core/Migrations/20170408162851_game-voice-channel.Designer.cs index ff8d5d8d..cbce7eaa 100644 --- a/src/NadekoBot/Migrations/20170408162851_game-voice-channel.Designer.cs +++ b/NadekoBot.Core/Migrations/20170408162851_game-voice-channel.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -156,7 +156,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -182,7 +182,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -206,7 +206,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -226,7 +226,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -246,7 +246,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -269,7 +269,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -287,7 +287,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -306,7 +306,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -350,7 +350,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -393,7 +393,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -411,7 +411,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -451,7 +451,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -475,7 +475,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -493,7 +493,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -574,7 +574,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -598,7 +598,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -616,7 +616,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -634,7 +634,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -708,7 +708,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -728,7 +728,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -746,7 +746,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -764,7 +764,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -791,7 +791,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -819,7 +819,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -837,7 +837,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -863,7 +863,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -888,7 +888,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -908,7 +908,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -932,7 +932,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -953,7 +953,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -972,7 +972,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1002,7 +1002,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1020,7 +1020,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1038,7 +1038,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1056,7 +1056,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1088,7 +1088,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1108,7 +1108,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1127,7 +1127,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1147,7 +1147,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1174,7 +1174,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1200,7 +1200,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1224,7 +1224,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1246,270 +1246,270 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170408162851_game-voice-channel.cs b/NadekoBot.Core/Migrations/20170408162851_game-voice-channel.cs similarity index 100% rename from src/NadekoBot/Migrations/20170408162851_game-voice-channel.cs rename to NadekoBot.Core/Migrations/20170408162851_game-voice-channel.cs diff --git a/src/NadekoBot/Migrations/20170409193757_gmod-and-cmod.Designer.cs b/NadekoBot.Core/Migrations/20170409193757_gmod-and-cmod.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170409193757_gmod-and-cmod.Designer.cs rename to NadekoBot.Core/Migrations/20170409193757_gmod-and-cmod.Designer.cs index 98eb17ff..4da980d9 100644 --- a/src/NadekoBot/Migrations/20170409193757_gmod-and-cmod.Designer.cs +++ b/NadekoBot.Core/Migrations/20170409193757_gmod-and-cmod.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -120,7 +120,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -178,7 +178,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -204,7 +204,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -228,7 +228,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -248,7 +248,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -268,7 +268,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -291,7 +291,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -309,7 +309,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -328,7 +328,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -346,7 +346,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -394,7 +394,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -455,7 +455,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -473,7 +473,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -497,7 +497,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -515,7 +515,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -620,7 +620,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -638,7 +638,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -656,7 +656,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -730,7 +730,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -750,7 +750,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -768,7 +768,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -786,7 +786,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -813,7 +813,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -841,7 +841,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -859,7 +859,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -885,7 +885,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -910,7 +910,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -954,7 +954,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -975,7 +975,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -994,7 +994,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1024,7 +1024,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1042,7 +1042,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1060,7 +1060,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1078,7 +1078,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1110,7 +1110,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1130,7 +1130,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1149,7 +1149,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1169,7 +1169,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1196,7 +1196,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1222,7 +1222,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1246,7 +1246,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1268,281 +1268,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170409193757_gmod-and-cmod.cs b/NadekoBot.Core/Migrations/20170409193757_gmod-and-cmod.cs similarity index 100% rename from src/NadekoBot/Migrations/20170409193757_gmod-and-cmod.cs rename to NadekoBot.Core/Migrations/20170409193757_gmod-and-cmod.cs diff --git a/src/NadekoBot/Migrations/20170501103455_patreon-id.Designer.cs b/NadekoBot.Core/Migrations/20170501103455_patreon-id.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170501103455_patreon-id.Designer.cs rename to NadekoBot.Core/Migrations/20170501103455_patreon-id.Designer.cs index 3ca47b2c..c3b82dc2 100644 --- a/src/NadekoBot/Migrations/20170501103455_patreon-id.Designer.cs +++ b/NadekoBot.Core/Migrations/20170501103455_patreon-id.Designer.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; namespace NadekoBot.Migrations { @@ -16,7 +16,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.0-rtm-22752"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -39,7 +39,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -57,7 +57,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -78,7 +78,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -98,7 +98,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -120,7 +120,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -178,7 +178,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -204,7 +204,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -228,7 +228,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -248,7 +248,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -268,7 +268,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -291,7 +291,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -309,7 +309,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -328,7 +328,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -346,7 +346,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -372,7 +372,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -394,7 +394,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -415,7 +415,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -433,7 +433,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -455,7 +455,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -473,7 +473,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -497,7 +497,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -515,7 +515,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -596,7 +596,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -620,7 +620,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -638,7 +638,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -656,7 +656,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -730,7 +730,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -750,7 +750,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -768,7 +768,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -786,7 +786,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -813,7 +813,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -841,7 +841,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -859,7 +859,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -885,7 +885,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -910,7 +910,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +930,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -954,7 +954,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -977,7 +977,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -996,7 +996,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1026,7 +1026,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1044,7 +1044,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1062,7 +1062,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1080,7 +1080,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1112,7 +1112,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1132,7 +1132,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1151,7 +1151,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1171,7 +1171,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1198,7 +1198,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1224,7 +1224,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1248,7 +1248,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1270,281 +1270,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170501103455_patreon-id.cs b/NadekoBot.Core/Migrations/20170501103455_patreon-id.cs similarity index 100% rename from src/NadekoBot/Migrations/20170501103455_patreon-id.cs rename to NadekoBot.Core/Migrations/20170501103455_patreon-id.cs diff --git a/src/NadekoBot/Migrations/20170528001839_permissions-version.Designer.cs b/NadekoBot.Core/Migrations/20170528001839_permissions-version.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170528001839_permissions-version.Designer.cs rename to NadekoBot.Core/Migrations/20170528001839_permissions-version.Designer.cs index b46dd601..31a1d795 100644 --- a/src/NadekoBot/Migrations/20170528001839_permissions-version.Designer.cs +++ b/NadekoBot.Core/Migrations/20170528001839_permissions-version.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -181,7 +181,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -207,7 +207,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -231,7 +231,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -251,7 +251,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -271,7 +271,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -294,7 +294,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -312,7 +312,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -331,7 +331,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -349,7 +349,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -375,7 +375,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -397,7 +397,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -418,7 +418,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -436,7 +436,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -458,7 +458,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -476,7 +476,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -500,7 +500,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -518,7 +518,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -599,7 +599,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -623,7 +623,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -641,7 +641,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -659,7 +659,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -733,7 +733,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -753,7 +753,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -771,7 +771,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -789,7 +789,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -816,7 +816,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -844,7 +844,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -862,7 +862,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -888,7 +888,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -913,7 +913,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -933,7 +933,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -957,7 +957,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -980,7 +980,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -999,7 +999,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1029,7 +1029,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1047,7 +1047,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1065,7 +1065,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1083,7 +1083,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1115,7 +1115,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1135,7 +1135,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1154,7 +1154,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1174,7 +1174,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1201,7 +1201,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1227,7 +1227,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1251,7 +1251,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1273,281 +1273,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170528001839_permissions-version.cs b/NadekoBot.Core/Migrations/20170528001839_permissions-version.cs similarity index 100% rename from src/NadekoBot/Migrations/20170528001839_permissions-version.cs rename to NadekoBot.Core/Migrations/20170528001839_permissions-version.cs diff --git a/src/NadekoBot/Migrations/20170530033406_guild-prefixes.Designer.cs b/NadekoBot.Core/Migrations/20170530033406_guild-prefixes.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170530033406_guild-prefixes.Designer.cs rename to NadekoBot.Core/Migrations/20170530033406_guild-prefixes.Designer.cs index 4a11493b..7925b10b 100644 --- a/src/NadekoBot/Migrations/20170530033406_guild-prefixes.Designer.cs +++ b/NadekoBot.Core/Migrations/20170530033406_guild-prefixes.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -209,7 +209,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -233,7 +233,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -253,7 +253,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -314,7 +314,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -333,7 +333,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -351,7 +351,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -377,7 +377,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -420,7 +420,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -438,7 +438,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -460,7 +460,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -478,7 +478,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -502,7 +502,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -520,7 +520,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -603,7 +603,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -627,7 +627,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -645,7 +645,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -663,7 +663,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -737,7 +737,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -757,7 +757,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -775,7 +775,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -793,7 +793,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -820,7 +820,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -848,7 +848,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -866,7 +866,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -892,7 +892,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -917,7 +917,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -937,7 +937,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -961,7 +961,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -984,7 +984,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1003,7 +1003,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1033,7 +1033,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1051,7 +1051,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1069,7 +1069,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1087,7 +1087,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1119,7 +1119,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1139,7 +1139,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1158,7 +1158,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1178,7 +1178,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1205,7 +1205,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1231,7 +1231,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1255,7 +1255,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1277,281 +1277,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170530033406_guild-prefixes.cs b/NadekoBot.Core/Migrations/20170530033406_guild-prefixes.cs similarity index 100% rename from src/NadekoBot/Migrations/20170530033406_guild-prefixes.cs rename to NadekoBot.Core/Migrations/20170530033406_guild-prefixes.cs diff --git a/src/NadekoBot/Migrations/20170612094138_verbose-errors.Designer.cs b/NadekoBot.Core/Migrations/20170612094138_verbose-errors.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170612094138_verbose-errors.Designer.cs rename to NadekoBot.Core/Migrations/20170612094138_verbose-errors.Designer.cs index c4ebb7cc..90c9c0a5 100644 --- a/src/NadekoBot/Migrations/20170612094138_verbose-errors.Designer.cs +++ b/NadekoBot.Core/Migrations/20170612094138_verbose-errors.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -209,7 +209,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -233,7 +233,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -253,7 +253,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -314,7 +314,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -333,7 +333,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -351,7 +351,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -377,7 +377,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -420,7 +420,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -438,7 +438,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -460,7 +460,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -478,7 +478,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -502,7 +502,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -520,7 +520,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -605,7 +605,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -629,7 +629,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -647,7 +647,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -665,7 +665,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -739,7 +739,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -759,7 +759,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -777,7 +777,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -795,7 +795,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -822,7 +822,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -850,7 +850,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -868,7 +868,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -894,7 +894,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -919,7 +919,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -939,7 +939,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -963,7 +963,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -986,7 +986,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1005,7 +1005,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1035,7 +1035,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1053,7 +1053,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1071,7 +1071,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1089,7 +1089,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1121,7 +1121,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1141,7 +1141,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1160,7 +1160,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1180,7 +1180,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1207,7 +1207,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1233,7 +1233,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1257,7 +1257,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1279,281 +1279,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170612094138_verbose-errors.cs b/NadekoBot.Core/Migrations/20170612094138_verbose-errors.cs similarity index 100% rename from src/NadekoBot/Migrations/20170612094138_verbose-errors.cs rename to NadekoBot.Core/Migrations/20170612094138_verbose-errors.cs diff --git a/src/NadekoBot/Migrations/20170612234751_repeat time of day.Designer.cs b/NadekoBot.Core/Migrations/20170612234751_repeat time of day.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170612234751_repeat time of day.Designer.cs rename to NadekoBot.Core/Migrations/20170612234751_repeat time of day.Designer.cs index c97b4d1c..85b4f59b 100644 --- a/src/NadekoBot/Migrations/20170612234751_repeat time of day.Designer.cs +++ b/NadekoBot.Core/Migrations/20170612234751_repeat time of day.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -183,7 +183,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -209,7 +209,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -233,7 +233,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -253,7 +253,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -296,7 +296,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -314,7 +314,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -333,7 +333,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -351,7 +351,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -377,7 +377,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -399,7 +399,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -420,7 +420,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -438,7 +438,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -460,7 +460,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -478,7 +478,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -502,7 +502,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -520,7 +520,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -605,7 +605,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -631,7 +631,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -649,7 +649,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -667,7 +667,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -741,7 +741,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -761,7 +761,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -779,7 +779,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -797,7 +797,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -824,7 +824,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -852,7 +852,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -870,7 +870,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -896,7 +896,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -921,7 +921,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -941,7 +941,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -965,7 +965,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -988,7 +988,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1007,7 +1007,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1037,7 +1037,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1055,7 +1055,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1073,7 +1073,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1091,7 +1091,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1123,7 +1123,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1143,7 +1143,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1162,7 +1162,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1182,7 +1182,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1209,7 +1209,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1235,7 +1235,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1259,7 +1259,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1281,281 +1281,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170612234751_repeat time of day.cs b/NadekoBot.Core/Migrations/20170612234751_repeat time of day.cs similarity index 100% rename from src/NadekoBot/Migrations/20170612234751_repeat time of day.cs rename to NadekoBot.Core/Migrations/20170612234751_repeat time of day.cs diff --git a/src/NadekoBot/Migrations/20170613231358_maxdropamount.Designer.cs b/NadekoBot.Core/Migrations/20170613231358_maxdropamount.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170613231358_maxdropamount.Designer.cs rename to NadekoBot.Core/Migrations/20170613231358_maxdropamount.Designer.cs index c007c907..ccedbe5a 100644 --- a/src/NadekoBot/Migrations/20170613231358_maxdropamount.Designer.cs +++ b/NadekoBot.Core/Migrations/20170613231358_maxdropamount.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -185,7 +185,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -211,7 +211,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -235,7 +235,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -255,7 +255,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -275,7 +275,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -298,7 +298,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -316,7 +316,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -335,7 +335,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -353,7 +353,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -379,7 +379,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -401,7 +401,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -422,7 +422,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -440,7 +440,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -462,7 +462,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -480,7 +480,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -504,7 +504,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -522,7 +522,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -607,7 +607,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -633,7 +633,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -651,7 +651,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -669,7 +669,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -743,7 +743,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -763,7 +763,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -781,7 +781,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -799,7 +799,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -826,7 +826,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -854,7 +854,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -872,7 +872,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -898,7 +898,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -923,7 +923,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -943,7 +943,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -967,7 +967,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -990,7 +990,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1009,7 +1009,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1039,7 +1039,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1057,7 +1057,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1075,7 +1075,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1093,7 +1093,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1125,7 +1125,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1145,7 +1145,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1164,7 +1164,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1184,7 +1184,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1211,7 +1211,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1237,7 +1237,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1261,7 +1261,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1283,281 +1283,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170613231358_maxdropamount.cs b/NadekoBot.Core/Migrations/20170613231358_maxdropamount.cs similarity index 100% rename from src/NadekoBot/Migrations/20170613231358_maxdropamount.cs rename to NadekoBot.Core/Migrations/20170613231358_maxdropamount.cs diff --git a/src/NadekoBot/Migrations/20170616154106_crstartswith.Designer.cs b/NadekoBot.Core/Migrations/20170616154106_crstartswith.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170616154106_crstartswith.Designer.cs rename to NadekoBot.Core/Migrations/20170616154106_crstartswith.Designer.cs index 57e8960b..85ab2f4e 100644 --- a/src/NadekoBot/Migrations/20170616154106_crstartswith.Designer.cs +++ b/NadekoBot.Core/Migrations/20170616154106_crstartswith.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -187,7 +187,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -213,7 +213,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -237,7 +237,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -257,7 +257,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -381,7 +381,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -403,7 +403,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -424,7 +424,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -442,7 +442,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -464,7 +464,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -482,7 +482,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -506,7 +506,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -524,7 +524,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -609,7 +609,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -635,7 +635,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -653,7 +653,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -671,7 +671,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -745,7 +745,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -765,7 +765,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -783,7 +783,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -801,7 +801,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -828,7 +828,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -856,7 +856,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -874,7 +874,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -900,7 +900,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -925,7 +925,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -945,7 +945,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -969,7 +969,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -992,7 +992,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1011,7 +1011,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1041,7 +1041,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1059,7 +1059,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1077,7 +1077,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1095,7 +1095,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1127,7 +1127,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1147,7 +1147,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1166,7 +1166,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1186,7 +1186,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1213,7 +1213,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1239,7 +1239,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1263,7 +1263,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1285,281 +1285,281 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170616154106_crstartswith.cs b/NadekoBot.Core/Migrations/20170616154106_crstartswith.cs similarity index 100% rename from src/NadekoBot/Migrations/20170616154106_crstartswith.cs rename to NadekoBot.Core/Migrations/20170616154106_crstartswith.cs diff --git a/src/NadekoBot/Migrations/20170714021615_stream-role.Designer.cs b/NadekoBot.Core/Migrations/20170714021615_stream-role.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170714021615_stream-role.Designer.cs rename to NadekoBot.Core/Migrations/20170714021615_stream-role.Designer.cs index a1621e42..2ffa1bf9 100644 --- a/src/NadekoBot/Migrations/20170714021615_stream-role.Designer.cs +++ b/NadekoBot.Core/Migrations/20170714021615_stream-role.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -187,7 +187,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -213,7 +213,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -237,7 +237,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -257,7 +257,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -381,7 +381,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -403,7 +403,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -424,7 +424,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -442,7 +442,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -464,7 +464,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -482,7 +482,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -506,7 +506,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -524,7 +524,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -609,7 +609,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -635,7 +635,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -653,7 +653,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -671,7 +671,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -745,7 +745,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -765,7 +765,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -783,7 +783,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -801,7 +801,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -828,7 +828,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -856,7 +856,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -874,7 +874,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -900,7 +900,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -925,7 +925,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -945,7 +945,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -969,7 +969,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -992,7 +992,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1011,7 +1011,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1041,7 +1041,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1059,7 +1059,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1077,7 +1077,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1095,7 +1095,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1127,7 +1127,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1148,7 +1148,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1168,7 +1168,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1187,7 +1187,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1207,7 +1207,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1234,7 +1234,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1260,7 +1260,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1284,7 +1284,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1306,289 +1306,289 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170714021615_stream-role.cs b/NadekoBot.Core/Migrations/20170714021615_stream-role.cs similarity index 100% rename from src/NadekoBot/Migrations/20170714021615_stream-role.cs rename to NadekoBot.Core/Migrations/20170714021615_stream-role.cs diff --git a/src/NadekoBot/Migrations/20170719023924_streamrole-kw-bl-wl.Designer.cs b/NadekoBot.Core/Migrations/20170719023924_streamrole-kw-bl-wl.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170719023924_streamrole-kw-bl-wl.Designer.cs rename to NadekoBot.Core/Migrations/20170719023924_streamrole-kw-bl-wl.Designer.cs index 222865ec..aa3880e6 100644 --- a/src/NadekoBot/Migrations/20170719023924_streamrole-kw-bl-wl.Designer.cs +++ b/NadekoBot.Core/Migrations/20170719023924_streamrole-kw-bl-wl.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -187,7 +187,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -213,7 +213,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -237,7 +237,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -257,7 +257,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -381,7 +381,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -403,7 +403,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -424,7 +424,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -442,7 +442,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -464,7 +464,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -482,7 +482,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -506,7 +506,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -524,7 +524,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -609,7 +609,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -635,7 +635,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -653,7 +653,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -671,7 +671,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -745,7 +745,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -765,7 +765,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -783,7 +783,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -801,7 +801,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -828,7 +828,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -856,7 +856,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -874,7 +874,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -900,7 +900,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -925,7 +925,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -945,7 +945,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -969,7 +969,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -992,7 +992,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1011,7 +1011,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1041,7 +1041,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1059,7 +1059,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1077,7 +1077,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1095,7 +1095,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1127,7 +1127,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1147,7 +1147,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1172,7 +1172,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1192,7 +1192,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1212,7 +1212,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1231,7 +1231,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1251,7 +1251,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1278,7 +1278,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1304,7 +1304,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1328,7 +1328,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1350,303 +1350,303 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170719023924_streamrole-kw-bl-wl.cs b/NadekoBot.Core/Migrations/20170719023924_streamrole-kw-bl-wl.cs similarity index 100% rename from src/NadekoBot/Migrations/20170719023924_streamrole-kw-bl-wl.cs rename to NadekoBot.Core/Migrations/20170719023924_streamrole-kw-bl-wl.cs diff --git a/src/NadekoBot/Migrations/20170721004230_nsfw-blacklist.Designer.cs b/NadekoBot.Core/Migrations/20170721004230_nsfw-blacklist.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170721004230_nsfw-blacklist.Designer.cs rename to NadekoBot.Core/Migrations/20170721004230_nsfw-blacklist.Designer.cs index 918bf926..205632ba 100644 --- a/src/NadekoBot/Migrations/20170721004230_nsfw-blacklist.Designer.cs +++ b/NadekoBot.Core/Migrations/20170721004230_nsfw-blacklist.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -187,7 +187,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -213,7 +213,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -237,7 +237,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -257,7 +257,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -381,7 +381,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -403,7 +403,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -424,7 +424,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -442,7 +442,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -464,7 +464,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -482,7 +482,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -506,7 +506,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -524,7 +524,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -609,7 +609,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -635,7 +635,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -653,7 +653,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -671,7 +671,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -745,7 +745,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -765,7 +765,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -783,7 +783,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -801,7 +801,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -819,7 +819,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -846,7 +846,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -874,7 +874,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -892,7 +892,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -918,7 +918,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -943,7 +943,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -963,7 +963,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -987,7 +987,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1010,7 +1010,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1029,7 +1029,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1059,7 +1059,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1077,7 +1077,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1095,7 +1095,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1113,7 +1113,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1145,7 +1145,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1165,7 +1165,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1190,7 +1190,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1210,7 +1210,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1230,7 +1230,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1249,7 +1249,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1269,7 +1269,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1296,7 +1296,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1322,7 +1322,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1346,7 +1346,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1368,310 +1368,310 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170721004230_nsfw-blacklist.cs b/NadekoBot.Core/Migrations/20170721004230_nsfw-blacklist.cs similarity index 100% rename from src/NadekoBot/Migrations/20170721004230_nsfw-blacklist.cs rename to NadekoBot.Core/Migrations/20170721004230_nsfw-blacklist.cs diff --git a/src/NadekoBot/Migrations/20170722074959_cr-ca.Designer.cs b/NadekoBot.Core/Migrations/20170722074959_cr-ca.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170722074959_cr-ca.Designer.cs rename to NadekoBot.Core/Migrations/20170722074959_cr-ca.Designer.cs index df888de6..87e8e223 100644 --- a/src/NadekoBot/Migrations/20170722074959_cr-ca.Designer.cs +++ b/NadekoBot.Core/Migrations/20170722074959_cr-ca.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -187,7 +187,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -213,7 +213,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -237,7 +237,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -257,7 +257,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -405,7 +405,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -426,7 +426,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -444,7 +444,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -466,7 +466,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -484,7 +484,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -508,7 +508,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -526,7 +526,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -611,7 +611,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -637,7 +637,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -655,7 +655,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -673,7 +673,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -747,7 +747,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -767,7 +767,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -785,7 +785,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -803,7 +803,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -821,7 +821,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -848,7 +848,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -876,7 +876,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -894,7 +894,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -920,7 +920,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -945,7 +945,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -965,7 +965,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -989,7 +989,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1012,7 +1012,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1031,7 +1031,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1061,7 +1061,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1079,7 +1079,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1097,7 +1097,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1115,7 +1115,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1147,7 +1147,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1167,7 +1167,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1192,7 +1192,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1212,7 +1212,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1232,7 +1232,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1251,7 +1251,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1271,7 +1271,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1298,7 +1298,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1324,7 +1324,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1348,7 +1348,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1370,310 +1370,310 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170722074959_cr-ca.cs b/NadekoBot.Core/Migrations/20170722074959_cr-ca.cs similarity index 100% rename from src/NadekoBot/Migrations/20170722074959_cr-ca.cs rename to NadekoBot.Core/Migrations/20170722074959_cr-ca.cs diff --git a/src/NadekoBot/Migrations/20170814044636_waifu-items.Designer.cs b/NadekoBot.Core/Migrations/20170814044636_waifu-items.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170814044636_waifu-items.Designer.cs rename to NadekoBot.Core/Migrations/20170814044636_waifu-items.Designer.cs index c76dcc33..a9b85a2b 100644 --- a/src/NadekoBot/Migrations/20170814044636_waifu-items.Designer.cs +++ b/NadekoBot.Core/Migrations/20170814044636_waifu-items.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -79,7 +79,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -99,7 +99,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -121,7 +121,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -187,7 +187,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -213,7 +213,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -237,7 +237,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -257,7 +257,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -300,7 +300,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -318,7 +318,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -337,7 +337,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -355,7 +355,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -383,7 +383,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -405,7 +405,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -426,7 +426,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -444,7 +444,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -466,7 +466,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -484,7 +484,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -508,7 +508,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -526,7 +526,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -611,7 +611,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -637,7 +637,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -655,7 +655,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -673,7 +673,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -747,7 +747,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -767,7 +767,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -785,7 +785,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -803,7 +803,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -821,7 +821,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -848,7 +848,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -876,7 +876,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -894,7 +894,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -920,7 +920,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -945,7 +945,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -965,7 +965,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -989,7 +989,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1012,7 +1012,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1031,7 +1031,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1061,7 +1061,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1079,7 +1079,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1097,7 +1097,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1115,7 +1115,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1147,7 +1147,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1167,7 +1167,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1192,7 +1192,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1212,7 +1212,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1232,7 +1232,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1251,7 +1251,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1271,7 +1271,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1298,7 +1298,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1320,7 +1320,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1346,7 +1346,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1370,7 +1370,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1392,317 +1392,317 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170814044636_waifu-items.cs b/NadekoBot.Core/Migrations/20170814044636_waifu-items.cs similarity index 100% rename from src/NadekoBot/Migrations/20170814044636_waifu-items.cs rename to NadekoBot.Core/Migrations/20170814044636_waifu-items.cs diff --git a/src/NadekoBot/Migrations/20170815222316_mute-time-antispam.Designer.cs b/NadekoBot.Core/Migrations/20170815222316_mute-time-antispam.Designer.cs similarity index 75% rename from src/NadekoBot/Migrations/20170815222316_mute-time-antispam.Designer.cs rename to NadekoBot.Core/Migrations/20170815222316_mute-time-antispam.Designer.cs index fcab240e..4c4201c0 100644 --- a/src/NadekoBot/Migrations/20170815222316_mute-time-antispam.Designer.cs +++ b/NadekoBot.Core/Migrations/20170815222316_mute-time-antispam.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -81,7 +81,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -101,7 +101,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -123,7 +123,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -189,7 +189,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -215,7 +215,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -239,7 +239,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -259,7 +259,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -279,7 +279,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -302,7 +302,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -320,7 +320,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -339,7 +339,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -357,7 +357,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -385,7 +385,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -407,7 +407,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -428,7 +428,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -446,7 +446,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -468,7 +468,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -486,7 +486,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -510,7 +510,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -528,7 +528,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -613,7 +613,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -639,7 +639,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -657,7 +657,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -675,7 +675,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -749,7 +749,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -769,7 +769,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -787,7 +787,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -805,7 +805,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -823,7 +823,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -850,7 +850,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -878,7 +878,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -896,7 +896,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -922,7 +922,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -947,7 +947,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -967,7 +967,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -991,7 +991,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1014,7 +1014,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1033,7 +1033,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1063,7 +1063,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1081,7 +1081,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1099,7 +1099,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1117,7 +1117,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1149,7 +1149,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1169,7 +1169,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1194,7 +1194,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1214,7 +1214,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1234,7 +1234,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1253,7 +1253,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1273,7 +1273,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1300,7 +1300,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1322,7 +1322,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1348,7 +1348,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1372,7 +1372,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1394,317 +1394,317 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); diff --git a/src/NadekoBot/Migrations/20170815222316_mute-time-antispam.cs b/NadekoBot.Core/Migrations/20170815222316_mute-time-antispam.cs similarity index 100% rename from src/NadekoBot/Migrations/20170815222316_mute-time-antispam.cs rename to NadekoBot.Core/Migrations/20170815222316_mute-time-antispam.cs diff --git a/src/NadekoBot/Migrations/20170908230730_xp-and-clubs.Designer.cs b/NadekoBot.Core/Migrations/20170908230730_xp-and-clubs.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170908230730_xp-and-clubs.Designer.cs rename to NadekoBot.Core/Migrations/20170908230730_xp-and-clubs.Designer.cs index 6b324c08..b6d86975 100644 --- a/src/NadekoBot/Migrations/20170908230730_xp-and-clubs.Designer.cs +++ b/NadekoBot.Core/Migrations/20170908230730_xp-and-clubs.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -81,7 +81,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -101,7 +101,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -123,7 +123,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -197,7 +197,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -223,7 +223,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -247,7 +247,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -260,7 +260,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -344,7 +344,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -367,7 +367,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -385,7 +385,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -404,7 +404,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -422,7 +422,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -450,7 +450,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -482,7 +482,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -503,7 +503,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -521,7 +521,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -541,7 +541,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -563,7 +563,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -581,7 +581,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -605,7 +605,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -623,7 +623,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -708,7 +708,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -734,7 +734,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -752,7 +752,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -770,7 +770,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -844,7 +844,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -864,7 +864,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -882,7 +882,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -900,7 +900,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -918,7 +918,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -945,7 +945,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -973,7 +973,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -991,7 +991,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1017,7 +1017,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1042,7 +1042,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1062,7 +1062,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1086,7 +1086,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1109,7 +1109,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1128,7 +1128,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1158,7 +1158,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1176,7 +1176,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1194,7 +1194,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1212,7 +1212,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1244,7 +1244,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1264,7 +1264,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1289,7 +1289,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1309,7 +1309,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1329,7 +1329,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1348,7 +1348,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1377,7 +1377,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1397,7 +1397,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1424,7 +1424,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1446,7 +1446,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1472,7 +1472,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1496,7 +1496,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1518,7 +1518,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1540,7 +1540,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1563,381 +1563,381 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); } diff --git a/src/NadekoBot/Migrations/20170908230730_xp-and-clubs.cs b/NadekoBot.Core/Migrations/20170908230730_xp-and-clubs.cs similarity index 100% rename from src/NadekoBot/Migrations/20170908230730_xp-and-clubs.cs rename to NadekoBot.Core/Migrations/20170908230730_xp-and-clubs.cs diff --git a/src/NadekoBot/Migrations/20170911200031_lastXpGain.Designer.cs b/NadekoBot.Core/Migrations/20170911200031_lastXpGain.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170911200031_lastXpGain.Designer.cs rename to NadekoBot.Core/Migrations/20170911200031_lastXpGain.Designer.cs index e5c805df..6918f1a1 100644 --- a/src/NadekoBot/Migrations/20170911200031_lastXpGain.Designer.cs +++ b/NadekoBot.Core/Migrations/20170911200031_lastXpGain.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -81,7 +81,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -101,7 +101,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -123,7 +123,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -197,7 +197,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -223,7 +223,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -247,7 +247,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -260,7 +260,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -344,7 +344,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -367,7 +367,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -385,7 +385,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -404,7 +404,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -422,7 +422,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -450,7 +450,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -484,7 +484,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -505,7 +505,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -523,7 +523,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -543,7 +543,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -565,7 +565,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -583,7 +583,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -607,7 +607,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -625,7 +625,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -710,7 +710,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -736,7 +736,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -754,7 +754,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -772,7 +772,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -846,7 +846,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -866,7 +866,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -884,7 +884,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -902,7 +902,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -920,7 +920,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -947,7 +947,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -975,7 +975,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -993,7 +993,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1019,7 +1019,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1044,7 +1044,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1064,7 +1064,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1088,7 +1088,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1111,7 +1111,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1130,7 +1130,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1160,7 +1160,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1178,7 +1178,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1196,7 +1196,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1214,7 +1214,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1246,7 +1246,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1266,7 +1266,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1291,7 +1291,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1311,7 +1311,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1331,7 +1331,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1350,7 +1350,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1379,7 +1379,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1399,7 +1399,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1426,7 +1426,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1448,7 +1448,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1474,7 +1474,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1498,7 +1498,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1520,7 +1520,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1542,7 +1542,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1565,381 +1565,381 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); } diff --git a/src/NadekoBot/Migrations/20170911200031_lastXpGain.cs b/NadekoBot.Core/Migrations/20170911200031_lastXpGain.cs similarity index 100% rename from src/NadekoBot/Migrations/20170911200031_lastXpGain.cs rename to NadekoBot.Core/Migrations/20170911200031_lastXpGain.cs diff --git a/src/NadekoBot/Migrations/20170913022654_total-xp.Designer.cs b/NadekoBot.Core/Migrations/20170913022654_total-xp.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170913022654_total-xp.Designer.cs rename to NadekoBot.Core/Migrations/20170913022654_total-xp.Designer.cs index 6764dd56..2780805f 100644 --- a/src/NadekoBot/Migrations/20170913022654_total-xp.Designer.cs +++ b/NadekoBot.Core/Migrations/20170913022654_total-xp.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -81,7 +81,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -101,7 +101,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -123,7 +123,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -197,7 +197,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -223,7 +223,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -247,7 +247,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -260,7 +260,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -344,7 +344,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -367,7 +367,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -385,7 +385,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -404,7 +404,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -422,7 +422,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -450,7 +450,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -486,7 +486,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -507,7 +507,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -525,7 +525,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -545,7 +545,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -567,7 +567,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -585,7 +585,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -609,7 +609,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -627,7 +627,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -712,7 +712,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -738,7 +738,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -756,7 +756,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -774,7 +774,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -848,7 +848,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -868,7 +868,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -886,7 +886,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -904,7 +904,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -922,7 +922,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -949,7 +949,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -977,7 +977,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -995,7 +995,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1021,7 +1021,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1046,7 +1046,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1066,7 +1066,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1090,7 +1090,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1113,7 +1113,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1132,7 +1132,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1162,7 +1162,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1180,7 +1180,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1198,7 +1198,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1216,7 +1216,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1248,7 +1248,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1268,7 +1268,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1293,7 +1293,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1313,7 +1313,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1333,7 +1333,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1352,7 +1352,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1381,7 +1381,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1401,7 +1401,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1428,7 +1428,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1450,7 +1450,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1476,7 +1476,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1500,7 +1500,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1522,7 +1522,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1544,7 +1544,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1567,381 +1567,381 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); } diff --git a/src/NadekoBot/Migrations/20170913022654_total-xp.cs b/NadekoBot.Core/Migrations/20170913022654_total-xp.cs similarity index 100% rename from src/NadekoBot/Migrations/20170913022654_total-xp.cs rename to NadekoBot.Core/Migrations/20170913022654_total-xp.cs diff --git a/src/NadekoBot/Migrations/20170915034808_club-admins.Designer.cs b/NadekoBot.Core/Migrations/20170915034808_club-admins.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170915034808_club-admins.Designer.cs rename to NadekoBot.Core/Migrations/20170915034808_club-admins.Designer.cs index d7b4c4d9..d43b815a 100644 --- a/src/NadekoBot/Migrations/20170915034808_club-admins.Designer.cs +++ b/NadekoBot.Core/Migrations/20170915034808_club-admins.Designer.cs @@ -3,8 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Migrations { @@ -17,7 +17,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "1.1.1"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -40,7 +40,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -58,7 +58,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -81,7 +81,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -101,7 +101,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -123,7 +123,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -197,7 +197,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -223,7 +223,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -247,7 +247,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -260,7 +260,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -273,7 +273,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -304,7 +304,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -324,7 +324,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -344,7 +344,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -367,7 +367,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -385,7 +385,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -404,7 +404,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -422,7 +422,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -450,7 +450,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -488,7 +488,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -509,7 +509,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -527,7 +527,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -547,7 +547,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -569,7 +569,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -587,7 +587,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -611,7 +611,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -629,7 +629,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -714,7 +714,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -740,7 +740,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -758,7 +758,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -776,7 +776,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -850,7 +850,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -870,7 +870,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -888,7 +888,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -906,7 +906,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -924,7 +924,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -951,7 +951,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -979,7 +979,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -997,7 +997,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1023,7 +1023,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1048,7 +1048,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1068,7 +1068,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1092,7 +1092,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1115,7 +1115,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1134,7 +1134,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1164,7 +1164,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1182,7 +1182,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1200,7 +1200,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1218,7 +1218,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1250,7 +1250,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1270,7 +1270,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1295,7 +1295,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1315,7 +1315,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1335,7 +1335,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1354,7 +1354,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1383,7 +1383,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1403,7 +1403,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1430,7 +1430,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1452,7 +1452,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1478,7 +1478,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1502,7 +1502,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1524,7 +1524,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1546,7 +1546,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1569,381 +1569,381 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); } diff --git a/src/NadekoBot/Migrations/20170915034808_club-admins.cs b/NadekoBot.Core/Migrations/20170915034808_club-admins.cs similarity index 100% rename from src/NadekoBot/Migrations/20170915034808_club-admins.cs rename to NadekoBot.Core/Migrations/20170915034808_club-admins.cs diff --git a/src/NadekoBot/Migrations/20170921185313_feeds.Designer.cs b/NadekoBot.Core/Migrations/20170921185313_feeds.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170921185313_feeds.Designer.cs rename to NadekoBot.Core/Migrations/20170921185313_feeds.Designer.cs index 86ee94cc..41a76330 100644 --- a/src/NadekoBot/Migrations/20170921185313_feeds.Designer.cs +++ b/NadekoBot.Core/Migrations/20170921185313_feeds.Designer.cs @@ -5,8 +5,8 @@ using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage.Internal; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; using System; namespace NadekoBot.Migrations @@ -21,7 +21,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -44,7 +44,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -62,7 +62,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -85,7 +85,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -105,7 +105,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -127,7 +127,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -201,7 +201,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -227,7 +227,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -251,7 +251,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -264,7 +264,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -308,7 +308,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -328,7 +328,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -348,7 +348,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -371,7 +371,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -389,7 +389,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -408,7 +408,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -426,7 +426,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -454,7 +454,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -492,7 +492,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -513,7 +513,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -531,7 +531,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -551,7 +551,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("FeedSub"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -594,7 +594,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -612,7 +612,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -636,7 +636,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -654,7 +654,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -739,7 +739,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -765,7 +765,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -783,7 +783,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -801,7 +801,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -875,7 +875,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -895,7 +895,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -913,7 +913,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -931,7 +931,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -949,7 +949,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -976,7 +976,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1004,7 +1004,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1022,7 +1022,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1048,7 +1048,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1073,7 +1073,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1093,7 +1093,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1117,7 +1117,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1140,7 +1140,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1159,7 +1159,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1189,7 +1189,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1207,7 +1207,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1225,7 +1225,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1243,7 +1243,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1275,7 +1275,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1295,7 +1295,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1320,7 +1320,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1340,7 +1340,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1360,7 +1360,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1379,7 +1379,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1408,7 +1408,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1428,7 +1428,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1455,7 +1455,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1477,7 +1477,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1503,7 +1503,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1527,7 +1527,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1549,7 +1549,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1571,7 +1571,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1594,389 +1594,389 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithMany("FeedSubs") .HasForeignKey("GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); #pragma warning restore 612, 618 diff --git a/src/NadekoBot/Migrations/20170921185313_feeds.cs b/NadekoBot.Core/Migrations/20170921185313_feeds.cs similarity index 100% rename from src/NadekoBot/Migrations/20170921185313_feeds.cs rename to NadekoBot.Core/Migrations/20170921185313_feeds.cs diff --git a/src/NadekoBot/Migrations/20170923002439_xprr-fix.Designer.cs b/NadekoBot.Core/Migrations/20170923002439_xprr-fix.Designer.cs similarity index 74% rename from src/NadekoBot/Migrations/20170923002439_xprr-fix.Designer.cs rename to NadekoBot.Core/Migrations/20170923002439_xprr-fix.Designer.cs index 79e0e678..2941d0d6 100644 --- a/src/NadekoBot/Migrations/20170923002439_xprr-fix.Designer.cs +++ b/NadekoBot.Core/Migrations/20170923002439_xprr-fix.Designer.cs @@ -5,8 +5,8 @@ using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage.Internal; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; using System; namespace NadekoBot.Migrations @@ -21,7 +21,7 @@ namespace NadekoBot.Migrations modelBuilder .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -44,7 +44,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -62,7 +62,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -85,7 +85,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -105,7 +105,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -127,7 +127,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -201,7 +201,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -227,7 +227,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashCallers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashWar", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -251,7 +251,7 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -264,7 +264,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -277,7 +277,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -308,7 +308,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -328,7 +328,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -348,7 +348,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -371,7 +371,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -389,7 +389,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -408,7 +408,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -426,7 +426,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -454,7 +454,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -492,7 +492,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -513,7 +513,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -531,7 +531,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -551,7 +551,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -572,7 +572,7 @@ namespace NadekoBot.Migrations b.ToTable("FeedSub"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -594,7 +594,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -612,7 +612,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -636,7 +636,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -654,7 +654,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -739,7 +739,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -765,7 +765,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -783,7 +783,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -801,7 +801,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -875,7 +875,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -895,7 +895,7 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -913,7 +913,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -931,7 +931,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -949,7 +949,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -976,7 +976,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1004,7 +1004,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1022,7 +1022,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1048,7 +1048,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1073,7 +1073,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1093,7 +1093,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1117,7 +1117,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1140,7 +1140,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1159,7 +1159,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1189,7 +1189,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1207,7 +1207,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1225,7 +1225,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1243,7 +1243,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1275,7 +1275,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1295,7 +1295,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1320,7 +1320,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1340,7 +1340,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1360,7 +1360,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1379,7 +1379,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1408,7 +1408,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1428,7 +1428,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1455,7 +1455,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1477,7 +1477,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1503,7 +1503,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1527,7 +1527,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1549,7 +1549,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1570,7 +1570,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1593,390 +1593,390 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClashCaller", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClashWar", "ClashWar") .WithMany("Bases") .HasForeignKey("ClashWarId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithMany("FeedSubs") .HasForeignKey("GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ModulePrefix", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("ModulePrefixes") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings", "XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); #pragma warning restore 612, 618 diff --git a/src/NadekoBot/Migrations/20170923002439_xprr-fix.cs b/NadekoBot.Core/Migrations/20170923002439_xprr-fix.cs similarity index 100% rename from src/NadekoBot/Migrations/20170923002439_xprr-fix.cs rename to NadekoBot.Core/Migrations/20170923002439_xprr-fix.cs diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/NadekoBot.Core/Migrations/20171013055008_clear-and-loadedpackage.Designer.cs similarity index 72% rename from src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs rename to NadekoBot.Core/Migrations/20171013055008_clear-and-loadedpackage.Designer.cs index dee868e0..94bdf200 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/NadekoBot.Core/Migrations/20171013055008_clear-and-loadedpackage.Designer.cs @@ -5,22 +5,23 @@ using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage.Internal; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; using System; namespace NadekoBot.Migrations { [DbContext(typeof(NadekoContext))] - partial class NadekoSqliteContextModelSnapshot : ModelSnapshot + [Migration("20171013055008_clear-and-loadedpackage")] + partial class clearandloadedpackage { - protected override void BuildModel(ModelBuilder modelBuilder) + protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -43,7 +44,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiRaidSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -61,7 +62,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamIgnore"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -84,7 +85,7 @@ namespace NadekoBot.Migrations b.ToTable("AntiSpamSetting"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -104,7 +105,7 @@ namespace NadekoBot.Migrations b.ToTable("BlacklistItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -126,7 +127,7 @@ namespace NadekoBot.Migrations b.ToTable("BlockedCmdOrMdl"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -200,57 +201,7 @@ namespace NadekoBot.Migrations b.ToTable("BotConfig"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BaseDestroyed"); - - b.Property("CallUser"); - - b.Property("ClashWarId"); - - b.Property("DateAdded"); - - b.Property("SequenceNumber"); - - b.Property("Stars"); - - b.Property("TimeAdded"); - - b.HasKey("Id"); - - b.HasIndex("ClashWarId"); - - b.ToTable("ClashCallers"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("DateAdded"); - - b.Property("EnemyClan"); - - b.Property("GuildId"); - - b.Property("Size"); - - b.Property("StartedAt"); - - b.Property("WarState"); - - b.HasKey("Id"); - - b.ToTable("ClashOfClans"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { b.Property("ClubId"); @@ -263,7 +214,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubApplicants"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { b.Property("ClubId"); @@ -276,7 +227,7 @@ namespace NadekoBot.Migrations b.ToTable("ClubBans"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -307,7 +258,7 @@ namespace NadekoBot.Migrations b.ToTable("Clubs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -327,7 +278,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandAlias"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -347,7 +298,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandCooldown"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -370,7 +321,7 @@ namespace NadekoBot.Migrations b.ToTable("CommandPrice"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ConvertUnit", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -388,7 +339,7 @@ namespace NadekoBot.Migrations b.ToTable("ConversionUnits"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -407,7 +358,7 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CurrencyTransaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -425,7 +376,7 @@ namespace NadekoBot.Migrations b.ToTable("CurrencyTransactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -453,7 +404,7 @@ namespace NadekoBot.Migrations b.ToTable("CustomReactions"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -491,7 +442,7 @@ namespace NadekoBot.Migrations b.ToTable("DiscordUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -512,7 +463,7 @@ namespace NadekoBot.Migrations b.ToTable("Donators"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -530,7 +481,7 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -550,7 +501,7 @@ namespace NadekoBot.Migrations b.ToTable("ExcludedItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -571,7 +522,7 @@ namespace NadekoBot.Migrations b.ToTable("FeedSub"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -593,7 +544,7 @@ namespace NadekoBot.Migrations b.ToTable("FilterChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -611,7 +562,7 @@ namespace NadekoBot.Migrations b.ToTable("FilteredWord"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -635,7 +586,7 @@ namespace NadekoBot.Migrations b.ToTable("FollowedStream"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -653,7 +604,7 @@ namespace NadekoBot.Migrations b.ToTable("GCChannelId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -738,7 +689,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildConfigs"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -764,7 +715,7 @@ namespace NadekoBot.Migrations b.ToTable("GuildRepeater"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -782,7 +733,7 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredLogChannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -800,7 +751,25 @@ namespace NadekoBot.Migrations b.ToTable("IgnoredVoicePresenceCHannels"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -874,27 +843,7 @@ namespace NadekoBot.Migrations b.ToTable("LogSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("DateAdded"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -912,7 +861,7 @@ namespace NadekoBot.Migrations b.ToTable("MusicPlaylists"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -930,7 +879,7 @@ namespace NadekoBot.Migrations b.ToTable("MutedUserId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -948,7 +897,7 @@ namespace NadekoBot.Migrations b.ToTable("NsfwBlacklitedTag"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -975,7 +924,7 @@ namespace NadekoBot.Migrations b.ToTable("Permission"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1003,7 +952,7 @@ namespace NadekoBot.Migrations b.ToTable("Permissionv2"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1021,7 +970,7 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1047,7 +996,7 @@ namespace NadekoBot.Migrations b.ToTable("PlaylistSong"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1072,7 +1021,7 @@ namespace NadekoBot.Migrations b.ToTable("Quotes"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1092,7 +1041,7 @@ namespace NadekoBot.Migrations b.ToTable("RaceAnimals"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1116,7 +1065,7 @@ namespace NadekoBot.Migrations b.ToTable("Reminders"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1139,7 +1088,7 @@ namespace NadekoBot.Migrations b.ToTable("RewardedUsers"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1158,7 +1107,7 @@ namespace NadekoBot.Migrations b.ToTable("SelfAssignableRoles"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1188,7 +1137,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntry"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1206,7 +1155,7 @@ namespace NadekoBot.Migrations b.ToTable("ShopEntryItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1224,7 +1173,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredRole"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1242,7 +1191,7 @@ namespace NadekoBot.Migrations b.ToTable("SlowmodeIgnoredUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1274,7 +1223,7 @@ namespace NadekoBot.Migrations b.ToTable("StartupCommand"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1294,7 +1243,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleBlacklistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1319,7 +1268,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1339,7 +1288,7 @@ namespace NadekoBot.Migrations b.ToTable("StreamRoleWhitelistedUser"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1359,7 +1308,7 @@ namespace NadekoBot.Migrations b.ToTable("UnmuteTimer"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserPokeTypes", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1378,7 +1327,7 @@ namespace NadekoBot.Migrations b.ToTable("PokeGame"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UserXpStats", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1407,7 +1356,7 @@ namespace NadekoBot.Migrations b.ToTable("UserXpStats"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1427,7 +1376,7 @@ namespace NadekoBot.Migrations b.ToTable("VcRoleInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1454,7 +1403,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuInfo"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1476,7 +1425,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuItem"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1502,7 +1451,7 @@ namespace NadekoBot.Migrations b.ToTable("WaifuUpdates"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Warning", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1526,7 +1475,7 @@ namespace NadekoBot.Migrations b.ToTable("Warnings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1548,7 +1497,7 @@ namespace NadekoBot.Migrations b.ToTable("WarningPunishment"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1569,7 +1518,7 @@ namespace NadekoBot.Migrations b.ToTable("XpRoleReward"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { b.Property("Id") .ValueGeneratedOnAdd(); @@ -1592,390 +1541,382 @@ namespace NadekoBot.Migrations b.ToTable("XpSettings"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiRaidSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiRaidSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamIgnore", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => { - b.HasOne("NadekoBot.Services.Database.Models.AntiSpamSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") .WithMany("IgnoredChannels") .HasForeignKey("AntiSpamSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiSpamSetting", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("AntiSpamSetting") - .HasForeignKey("NadekoBot.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("Blacklist") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlockedCmdOrMdl", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedCommands") .HasForeignKey("BotConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("BlockedModules") .HasForeignKey("BotConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubApplicants", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Applicants") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubBans", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Bans") .HasForeignKey("ClubId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClubInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Owner") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.ClubInfo", "OwnerId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandAlias", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandAliases") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("CommandCooldowns") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandPrice", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("CommandPrices") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.DiscordUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.ClubInfo", "Club") + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") .WithMany("Users") .HasForeignKey("ClubId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("EightBallResponses") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ExcludedItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") .WithMany("ExclusionList") .HasForeignKey("XpSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FeedSub", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithMany("FeedSubs") .HasForeignKey("GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterInvitesChannelIds") .HasForeignKey("GuildConfigId"); - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilterWordsChannelIds") .HasForeignKey("GuildConfigId1"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FilteredWords") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("FollowedStreams") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GCChannelId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GenerateCurrencyChannelIds") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") .WithMany() .HasForeignKey("RootPermissionId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildRepeater", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("GuildRepeaters") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredChannels") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") .WithMany("IgnoredVoicePresenceChannelIds") .HasForeignKey("LogSettingId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("ModulePrefixes") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.MutedUserId", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("MutedUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.NsfwBlacklitedTag", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("NsfwBlacklistedTags") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permissionv2", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("Permissions") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RotatingStatusMessages") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") .WithMany("Songs") .HasForeignKey("MusicPlaylistId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("RaceAnimals") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntry", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("ShopEntries") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.ShopEntryItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.ShopEntry") + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") .WithMany("Items") .HasForeignKey("ShopEntryId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredRole", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredRoles") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.SlowmodeIgnoredUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("SlowmodeIgnoredUsers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StartupCommand", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") .WithMany("StartupCommands") .HasForeignKey("BotConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleBlacklistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Blacklist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("StreamRole") - .HasForeignKey("NadekoBot.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.StreamRoleWhitelistedUser", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => { - b.HasOne("NadekoBot.Services.Database.Models.StreamRoleSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") .WithMany("Whitelist") .HasForeignKey("StreamRoleSettingsId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.UnmuteTimer", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("UnmuteTimers") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.VcRoleInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("VcRoleInfos") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuInfo", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Affinity") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") .WithMany() .HasForeignKey("AffinityId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Claimer") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") .WithMany() .HasForeignKey("ClaimerId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Waifu") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") .WithOne() - .HasForeignKey("NadekoBot.Services.Database.Models.WaifuInfo", "WaifuId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuItem", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => { - b.HasOne("NadekoBot.Services.Database.Models.WaifuInfo") + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") .WithMany("Items") .HasForeignKey("WaifuInfoId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WaifuUpdate", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => { - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "New") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") .WithMany() .HasForeignKey("NewId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "Old") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") .WithMany() .HasForeignKey("OldId"); - b.HasOne("NadekoBot.Services.Database.Models.DiscordUser", "User") + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.WarningPunishment", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") .WithMany("WarnPunishments") .HasForeignKey("GuildConfigId"); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpRoleReward", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => { - b.HasOne("NadekoBot.Services.Database.Models.XpSettings", "XpSettings") + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") .WithMany("RoleRewards") .HasForeignKey("XpSettingsId") .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("NadekoBot.Services.Database.Models.XpSettings", b => + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig", "GuildConfig") + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") .WithOne("XpSettings") - .HasForeignKey("NadekoBot.Services.Database.Models.XpSettings", "GuildConfigId") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") .OnDelete(DeleteBehavior.Cascade); }); #pragma warning restore 612, 618 diff --git a/NadekoBot.Core/Migrations/20171013055008_clear-and-loadedpackage.cs b/NadekoBot.Core/Migrations/20171013055008_clear-and-loadedpackage.cs new file mode 100644 index 00000000..a120354b --- /dev/null +++ b/NadekoBot.Core/Migrations/20171013055008_clear-and-loadedpackage.cs @@ -0,0 +1,129 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class clearandloadedpackage : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ClashCallers"); + + migrationBuilder.DropTable( + name: "ModulePrefixes"); + + migrationBuilder.DropTable( + name: "ClashOfClans"); + + migrationBuilder.CreateTable( + name: "LoadedPackages", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + BotConfigId = table.Column(type: "INTEGER", nullable: true), + DateAdded = table.Column(type: "TEXT", nullable: true), + Name = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_LoadedPackages", x => x.Id); + table.ForeignKey( + name: "FK_LoadedPackages_BotConfig_BotConfigId", + column: x => x.BotConfigId, + principalTable: "BotConfig", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_LoadedPackages_BotConfigId", + table: "LoadedPackages", + column: "BotConfigId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "LoadedPackages"); + + migrationBuilder.CreateTable( + name: "ClashOfClans", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + ChannelId = table.Column(nullable: false), + DateAdded = table.Column(nullable: true), + EnemyClan = table.Column(nullable: true), + GuildId = table.Column(nullable: false), + Size = table.Column(nullable: false), + StartedAt = table.Column(nullable: false), + WarState = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClashOfClans", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ModulePrefixes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + BotConfigId = table.Column(nullable: true), + DateAdded = table.Column(nullable: true), + ModuleName = table.Column(nullable: true), + Prefix = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ModulePrefixes", x => x.Id); + table.ForeignKey( + name: "FK_ModulePrefixes_BotConfig_BotConfigId", + column: x => x.BotConfigId, + principalTable: "BotConfig", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ClashCallers", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + BaseDestroyed = table.Column(nullable: false), + CallUser = table.Column(nullable: true), + ClashWarId = table.Column(nullable: false), + DateAdded = table.Column(nullable: true), + SequenceNumber = table.Column(nullable: true), + Stars = table.Column(nullable: false), + TimeAdded = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClashCallers", x => x.Id); + table.ForeignKey( + name: "FK_ClashCallers_ClashOfClans_ClashWarId", + column: x => x.ClashWarId, + principalTable: "ClashOfClans", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_ClashCallers_ClashWarId", + table: "ClashCallers", + column: "ClashWarId"); + + migrationBuilder.CreateIndex( + name: "IX_ModulePrefixes_BotConfigId", + table: "ModulePrefixes", + column: "BotConfigId"); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171016091343_remove-convertunits.Designer.cs b/NadekoBot.Core/Migrations/20171016091343_remove-convertunits.Designer.cs new file mode 100644 index 00000000..5448c9b0 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171016091343_remove-convertunits.Designer.cs @@ -0,0 +1,1907 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171016091343_remove-convertunits")] + partial class removeconvertunits + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171016091343_remove-convertunits.cs b/NadekoBot.Core/Migrations/20171016091343_remove-convertunits.cs new file mode 100644 index 00000000..e7c85be2 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171016091343_remove-convertunits.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class removeconvertunits : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ConversionUnits"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ConversionUnits", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + DateAdded = table.Column(nullable: true), + InternalTrigger = table.Column(nullable: true), + Modifier = table.Column(nullable: false), + UnitType = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ConversionUnits", x => x.Id); + }); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171021092614_tesar-grouping.Designer.cs b/NadekoBot.Core/Migrations/20171021092614_tesar-grouping.Designer.cs new file mode 100644 index 00000000..39ec6ae2 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171021092614_tesar-grouping.Designer.cs @@ -0,0 +1,1911 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171021092614_tesar-grouping")] + partial class tesargrouping + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171021092614_tesar-grouping.cs b/NadekoBot.Core/Migrations/20171021092614_tesar-grouping.cs new file mode 100644 index 00000000..03990456 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171021092614_tesar-grouping.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class tesargrouping : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Group", + table: "SelfAssignableRoles", + type: "INTEGER", + nullable: false, + defaultValue: 0) + .Annotation("Sqlite:Autoincrement", true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Group", + table: "SelfAssignableRoles"); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171022144733_vc-auto-dc.Designer.cs b/NadekoBot.Core/Migrations/20171022144733_vc-auto-dc.Designer.cs new file mode 100644 index 00000000..aeecdd80 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171022144733_vc-auto-dc.Designer.cs @@ -0,0 +1,1913 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171022144733_vc-auto-dc")] + partial class vcautodc + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDcFromVc"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171022144733_vc-auto-dc.cs b/NadekoBot.Core/Migrations/20171022144733_vc-auto-dc.cs new file mode 100644 index 00000000..99975efc --- /dev/null +++ b/NadekoBot.Core/Migrations/20171022144733_vc-auto-dc.cs @@ -0,0 +1,26 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class vcautodc : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "AutoDcFromVc", + table: "GuildConfigs", + type: "INTEGER", + nullable: false, + defaultValue: false); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "AutoDcFromVc", + table: "GuildConfigs"); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171026090236_timely.Designer.cs b/NadekoBot.Core/Migrations/20171026090236_timely.Designer.cs new file mode 100644 index 00000000..9c5be4c2 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171026090236_timely.Designer.cs @@ -0,0 +1,1917 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171026090236_timely")] + partial class timely + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TimelyCurrency"); + + b.Property("TimelyCurrencyPeriod"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDcFromVc"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171026090236_timely.cs b/NadekoBot.Core/Migrations/20171026090236_timely.cs new file mode 100644 index 00000000..a95c7a2e --- /dev/null +++ b/NadekoBot.Core/Migrations/20171026090236_timely.cs @@ -0,0 +1,37 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class timely : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "TimelyCurrency", + table: "BotConfig", + type: "INTEGER", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "TimelyCurrencyPeriod", + table: "BotConfig", + type: "INTEGER", + nullable: false, + defaultValue: 0); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "TimelyCurrency", + table: "BotConfig"); + + migrationBuilder.DropColumn( + name: "TimelyCurrencyPeriod", + table: "BotConfig"); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171027155001_poll-rewrite.Designer.cs b/NadekoBot.Core/Migrations/20171027155001_poll-rewrite.Designer.cs new file mode 100644 index 00000000..d7348099 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171027155001_poll-rewrite.Designer.cs @@ -0,0 +1,1992 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171027155001_poll-rewrite")] + partial class pollrewrite + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TimelyCurrency"); + + b.Property("TimelyCurrencyPeriod"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDcFromVc"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Poll", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Question"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.ToTable("Poll"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Index"); + + b.Property("PollId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollAnswer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("PollId"); + + b.Property("UserId"); + + b.Property("VoteIndex"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollVote"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Answers") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Votes") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171027155001_poll-rewrite.cs b/NadekoBot.Core/Migrations/20171027155001_poll-rewrite.cs new file mode 100644 index 00000000..51e612d4 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171027155001_poll-rewrite.cs @@ -0,0 +1,100 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class pollrewrite : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Poll", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + ChannelId = table.Column(type: "INTEGER", nullable: false), + DateAdded = table.Column(type: "TEXT", nullable: true), + GuildId = table.Column(type: "INTEGER", nullable: false), + Question = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Poll", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "PollAnswer", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + DateAdded = table.Column(type: "TEXT", nullable: true), + Index = table.Column(type: "INTEGER", nullable: false), + PollId = table.Column(type: "INTEGER", nullable: true), + Text = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PollAnswer", x => x.Id); + table.ForeignKey( + name: "FK_PollAnswer_Poll_PollId", + column: x => x.PollId, + principalTable: "Poll", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "PollVote", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + DateAdded = table.Column(type: "TEXT", nullable: true), + PollId = table.Column(type: "INTEGER", nullable: true), + UserId = table.Column(type: "INTEGER", nullable: false), + VoteIndex = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PollVote", x => x.Id); + table.ForeignKey( + name: "FK_PollVote_Poll_PollId", + column: x => x.PollId, + principalTable: "Poll", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_Poll_GuildId", + table: "Poll", + column: "GuildId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_PollAnswer_PollId", + table: "PollAnswer", + column: "PollId"); + + migrationBuilder.CreateIndex( + name: "IX_PollVote_PollId", + table: "PollVote", + column: "PollId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "PollAnswer"); + + migrationBuilder.DropTable( + name: "PollVote"); + + migrationBuilder.DropTable( + name: "Poll"); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171107131810_sar-level-req.Designer.cs b/NadekoBot.Core/Migrations/20171107131810_sar-level-req.Designer.cs new file mode 100644 index 00000000..67a7bb4a --- /dev/null +++ b/NadekoBot.Core/Migrations/20171107131810_sar-level-req.Designer.cs @@ -0,0 +1,1994 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171107131810_sar-level-req")] + partial class sarlevelreq + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TimelyCurrency"); + + b.Property("TimelyCurrencyPeriod"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDcFromVc"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Poll", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Question"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.ToTable("Poll"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Index"); + + b.Property("PollId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollAnswer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("PollId"); + + b.Property("UserId"); + + b.Property("VoteIndex"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollVote"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("LevelRequirement"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Answers") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Votes") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171107131810_sar-level-req.cs b/NadekoBot.Core/Migrations/20171107131810_sar-level-req.cs new file mode 100644 index 00000000..93ebe455 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171107131810_sar-level-req.cs @@ -0,0 +1,26 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class sarlevelreq : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "LevelRequirement", + table: "SelfAssignableRoles", + type: "INTEGER", + nullable: false, + defaultValue: 0); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LevelRequirement", + table: "SelfAssignableRoles"); + } + } +} diff --git a/NadekoBot.Core/Migrations/20171115040313_currency level up reward.Designer.cs b/NadekoBot.Core/Migrations/20171115040313_currency level up reward.Designer.cs new file mode 100644 index 00000000..53ee737a --- /dev/null +++ b/NadekoBot.Core/Migrations/20171115040313_currency level up reward.Designer.cs @@ -0,0 +1,2022 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + [Migration("20171115040313_currency level up reward")] + partial class currencylevelupreward + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TimelyCurrency"); + + b.Property("TimelyCurrencyPeriod"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDcFromVc"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Poll", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Question"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.ToTable("Poll"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Index"); + + b.Property("PollId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollAnswer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("PollId"); + + b.Property("UserId"); + + b.Property("VoteIndex"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollVote"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("LevelRequirement"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpCurrencyReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("XpCurrencyReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Answers") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Votes") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpCurrencyReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("CurrencyRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NadekoBot.Core/Migrations/20171115040313_currency level up reward.cs b/NadekoBot.Core/Migrations/20171115040313_currency level up reward.cs new file mode 100644 index 00000000..98deb186 --- /dev/null +++ b/NadekoBot.Core/Migrations/20171115040313_currency level up reward.cs @@ -0,0 +1,45 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Migrations +{ + public partial class currencylevelupreward : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "XpCurrencyReward", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Amount = table.Column(type: "INTEGER", nullable: false), + DateAdded = table.Column(type: "TEXT", nullable: true), + Level = table.Column(type: "INTEGER", nullable: false), + XpSettingsId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_XpCurrencyReward", x => x.Id); + table.ForeignKey( + name: "FK_XpCurrencyReward_XpSettings_XpSettingsId", + column: x => x.XpSettingsId, + principalTable: "XpSettings", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_XpCurrencyReward_XpSettingsId", + table: "XpCurrencyReward", + column: "XpSettingsId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "XpCurrencyReward"); + } + } +} diff --git a/src/NadekoBot/Migrations/MigrationQueries.cs b/NadekoBot.Core/Migrations/MigrationQueries.cs similarity index 100% rename from src/NadekoBot/Migrations/MigrationQueries.cs rename to NadekoBot.Core/Migrations/MigrationQueries.cs diff --git a/NadekoBot.Core/Migrations/NadekoSqliteContextModelSnapshot.cs b/NadekoBot.Core/Migrations/NadekoSqliteContextModelSnapshot.cs new file mode 100644 index 00000000..ed80cf0e --- /dev/null +++ b/NadekoBot.Core/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -0,0 +1,2021 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services.Database.Models; +using System; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoContext))] + partial class NadekoSqliteContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.Property("UserThreshold"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiRaidSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AntiSpamSettingId"); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.HasKey("Id"); + + b.HasIndex("AntiSpamSettingId"); + + b.ToTable("AntiSpamIgnore"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Action"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("MessageThreshold"); + + b.Property("MuteTime"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("AntiSpamSetting"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("BotConfigId1"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("BotConfigId1"); + + b.ToTable("BlockedCmdOrMdl"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BetflipMultiplier"); + + b.Property("Betroll100Multiplier"); + + b.Property("Betroll67Multiplier"); + + b.Property("Betroll91Multiplier"); + + b.Property("BufferSize"); + + b.Property("CurrencyDropAmount"); + + b.Property("CurrencyDropAmountMax"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("CustomReactionsStartWith"); + + b.Property("DMHelpString"); + + b.Property("DateAdded"); + + b.Property("DefaultPrefix"); + + b.Property("ErrorColor"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("Locale"); + + b.Property("MigrationVersion"); + + b.Property("MinimumBetAmount"); + + b.Property("OkColor"); + + b.Property("PermissionVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.Property("TimelyCurrency"); + + b.Property("TimelyCurrencyPeriod"); + + b.Property("TriviaCurrencyReward"); + + b.Property("XpMinutesTimeout") + .ValueGeneratedOnAdd() + .HasDefaultValue(5); + + b.Property("XpPerMessage") + .ValueGeneratedOnAdd() + .HasDefaultValue(3); + + b.HasKey("Id"); + + b.ToTable("BotConfig"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubApplicants"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.Property("ClubId"); + + b.Property("UserId"); + + b.HasKey("ClubId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ClubBans"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Discrim"); + + b.Property("ImageUrl"); + + b.Property("MinimumLevelReq"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20); + + b.Property("OwnerId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasAlternateKey("Name", "Discrim"); + + b.HasIndex("OwnerId") + .IsUnique(); + + b.ToTable("Clubs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Mapping"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandAlias"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("CommandName"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.HasIndex("Price") + .IsUnique(); + + b.ToTable("CommandPrice"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CurrencyTransaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("CurrencyTransactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoDeleteTrigger"); + + b.Property("ContainsAnywhere"); + + b.Property("DateAdded"); + + b.Property("DmResponse"); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AvatarId"); + + b.Property("ClubId"); + + b.Property("DateAdded"); + + b.Property("Discriminator"); + + b.Property("IsClubAdmin"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 305, DateTimeKind.Local)); + + b.Property("LastXpGain"); + + b.Property("NotifyOnLevelUp"); + + b.Property("TotalXp"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasAlternateKey("UserId"); + + b.HasIndex("ClubId"); + + b.ToTable("DiscordUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ItemId"); + + b.Property("ItemType"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("ExcludedItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Url") + .IsRequired(); + + b.HasKey("Id"); + + b.HasAlternateKey("GuildConfigId", "Url"); + + b.ToTable("FeedSub"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GCChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDcFromVc"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteByeMessagesTimer"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("CleverbotEnabled"); + + b.Property("DateAdded"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GameVoiceChannel"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("Locale"); + + b.Property("LogSettingId"); + + b.Property("MuteRoleName"); + + b.Property("PermissionRole"); + + b.Property("Prefix"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("TimeZoneId"); + + b.Property("VerboseErrors"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.Property("WarningsInitialized"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.Property("StartTimeOfDay"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("GuildRepeater"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("LoadedPackages"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelCreatedId"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelDestroyedId"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("ChannelUpdatedId"); + + b.Property("DateAdded"); + + b.Property("IsLogging"); + + b.Property("LogOtherId"); + + b.Property("LogUserPresence"); + + b.Property("LogUserPresenceId"); + + b.Property("LogVoicePresence"); + + b.Property("LogVoicePresenceId"); + + b.Property("LogVoicePresenceTTSId"); + + b.Property("MessageDeleted"); + + b.Property("MessageDeletedId"); + + b.Property("MessageUpdated"); + + b.Property("MessageUpdatedId"); + + b.Property("UserBanned"); + + b.Property("UserBannedId"); + + b.Property("UserJoined"); + + b.Property("UserJoinedId"); + + b.Property("UserLeft"); + + b.Property("UserLeftId"); + + b.Property("UserMutedId"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUnbannedId"); + + b.Property("UserUpdated"); + + b.Property("UserUpdatedId"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("MutedUserId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Tag"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("NsfwBlacklitedTag"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NextId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("NextId") + .IsUnique(); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permissionv2"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("MusicPlaylistId"); + + b.Property("Provider"); + + b.Property("ProviderType"); + + b.Property("Query"); + + b.Property("Title"); + + b.Property("Uri"); + + b.HasKey("Id"); + + b.HasIndex("MusicPlaylistId"); + + b.ToTable("PlaylistSong"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Poll", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Question"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.ToTable("Poll"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Index"); + + b.Property("PollId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollAnswer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("PollId"); + + b.Property("UserId"); + + b.Property("VoteIndex"); + + b.HasKey("Id"); + + b.HasIndex("PollId"); + + b.ToTable("PollVote"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("DateAdded"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("DateAdded"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RewardedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmountRewardedThisMonth"); + + b.Property("DateAdded"); + + b.Property("LastReward"); + + b.Property("PatreonUserId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("RewardedUsers"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Group") + .ValueGeneratedOnAdd() + .HasDefaultValue(0); + + b.Property("GuildId"); + + b.Property("LevelRequirement"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Index"); + + b.Property("Name"); + + b.Property("Price"); + + b.Property("RoleId"); + + b.Property("RoleName"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("ShopEntry"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("ShopEntryId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("ShopEntryId"); + + b.ToTable("ShopEntryItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredRole"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("SlowmodeIgnoredUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ChannelId"); + + b.Property("ChannelName"); + + b.Property("CommandText"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("GuildName"); + + b.Property("Index"); + + b.Property("VoiceChannelId"); + + b.Property("VoiceChannelName"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("StartupCommand"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleBlacklistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddRoleId"); + + b.Property("DateAdded"); + + b.Property("Enabled"); + + b.Property("FromRoleId"); + + b.Property("GuildConfigId"); + + b.Property("Keyword"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("StreamRoleSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("StreamRoleSettingsId"); + + b.Property("UserId"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("StreamRoleSettingsId"); + + b.ToTable("StreamRoleWhitelistedUser"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("UnmuteAt"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("UnmuteTimer"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserPokeTypes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("UserId"); + + b.Property("type"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("PokeGame"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UserXpStats", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AwardedXp"); + + b.Property("DateAdded"); + + b.Property("GuildId"); + + b.Property("LastLevelUp") + .ValueGeneratedOnAdd() + .HasDefaultValue(new DateTime(2017, 9, 21, 20, 53, 13, 307, DateTimeKind.Local)); + + b.Property("NotifyOnLevelUp"); + + b.Property("UserId"); + + b.Property("Xp"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "GuildId") + .IsUnique(); + + b.ToTable("UserXpStats"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("RoleId"); + + b.Property("VoiceChannelId"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("VcRoleInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AffinityId"); + + b.Property("ClaimerId"); + + b.Property("DateAdded"); + + b.Property("Price"); + + b.Property("WaifuId"); + + b.HasKey("Id"); + + b.HasIndex("AffinityId"); + + b.HasIndex("ClaimerId"); + + b.HasIndex("WaifuId") + .IsUnique(); + + b.ToTable("WaifuInfo"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Item"); + + b.Property("ItemEmoji"); + + b.Property("Price"); + + b.Property("WaifuInfoId"); + + b.HasKey("Id"); + + b.HasIndex("WaifuInfoId"); + + b.ToTable("WaifuItem"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("NewId"); + + b.Property("OldId"); + + b.Property("UpdateType"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("NewId"); + + b.HasIndex("OldId"); + + b.HasIndex("UserId"); + + b.ToTable("WaifuUpdates"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Warning", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Forgiven"); + + b.Property("ForgivenBy"); + + b.Property("GuildId"); + + b.Property("Moderator"); + + b.Property("Reason"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.ToTable("Warnings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("Punishment"); + + b.Property("Time"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("WarningPunishment"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpCurrencyReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId"); + + b.ToTable("XpCurrencyReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("Level"); + + b.Property("RoleId"); + + b.Property("XpSettingsId"); + + b.HasKey("Id"); + + b.HasIndex("XpSettingsId", "Level") + .IsUnique(); + + b.ToTable("XpRoleReward"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("GuildConfigId"); + + b.Property("NotifyMessage"); + + b.Property("ServerExcluded"); + + b.Property("XpRoleRewardExclusive"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId") + .IsUnique(); + + b.ToTable("XpSettings"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiRaidSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiRaidSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamIgnore", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.AntiSpamSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("AntiSpamSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("AntiSpamSetting") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.AntiSpamSetting", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.BlockedCmdOrMdl", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedCommands") + .HasForeignKey("BotConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("BlockedModules") + .HasForeignKey("BotConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubApplicants", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Applicants") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubBans", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Bans") + .HasForeignKey("ClubId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ClubInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Owner") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.ClubInfo", "OwnerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandAlias", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandAliases") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.CommandPrice", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("CommandPrices") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.DiscordUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ClubInfo", "Club") + .WithMany("Users") + .HasForeignKey("ClubId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ExcludedItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings") + .WithMany("ExclusionList") + .HasForeignKey("XpSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FeedSub", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithMany("FeedSubs") + .HasForeignKey("GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GCChannelId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GenerateCurrencyChannelIds") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.GuildRepeater", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("GuildRepeaters") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.LoadedPackage", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("LoadedPackages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.MutedUserId", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("MutedUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.NsfwBlacklitedTag", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("NsfwBlacklistedTags") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.Permissionv2", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollAnswer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Answers") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.PollVote", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.Poll") + .WithMany("Votes") + .HasForeignKey("PollId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntry", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("ShopEntries") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.ShopEntryItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.ShopEntry") + .WithMany("Items") + .HasForeignKey("ShopEntryId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredRole", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredRoles") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.SlowmodeIgnoredUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("SlowmodeIgnoredUsers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StartupCommand", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.BotConfig") + .WithMany("StartupCommands") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleBlacklistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Blacklist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("StreamRole") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.StreamRoleSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.StreamRoleWhitelistedUser", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.StreamRoleSettings") + .WithMany("Whitelist") + .HasForeignKey("StreamRoleSettingsId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.UnmuteTimer", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("UnmuteTimers") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.VcRoleInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("VcRoleInfos") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuInfo", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Affinity") + .WithMany() + .HasForeignKey("AffinityId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Claimer") + .WithMany() + .HasForeignKey("ClaimerId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Waifu") + .WithOne() + .HasForeignKey("NadekoBot.Core.Services.Database.Models.WaifuInfo", "WaifuId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuItem", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.WaifuInfo") + .WithMany("Items") + .HasForeignKey("WaifuInfoId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WaifuUpdate", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "New") + .WithMany() + .HasForeignKey("NewId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "Old") + .WithMany() + .HasForeignKey("OldId"); + + b.HasOne("NadekoBot.Core.Services.Database.Models.DiscordUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.WarningPunishment", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig") + .WithMany("WarnPunishments") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpCurrencyReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("CurrencyRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpRoleReward", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.XpSettings", "XpSettings") + .WithMany("RoleRewards") + .HasForeignKey("XpSettingsId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Core.Services.Database.Models.XpSettings", b => + { + b.HasOne("NadekoBot.Core.Services.Database.Models.GuildConfig", "GuildConfig") + .WithOne("XpSettings") + .HasForeignKey("NadekoBot.Core.Services.Database.Models.XpSettings", "GuildConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/NadekoBot.Core/Modules/Administration/Administration.cs similarity index 98% rename from src/NadekoBot/Modules/Administration/Administration.cs rename to NadekoBot.Core/Modules/Administration/Administration.cs index 5c943b27..bafd390a 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/NadekoBot.Core/Modules/Administration/Administration.cs @@ -6,9 +6,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; -using NadekoBot.Services; +using NadekoBot.Core.Services; using NadekoBot.Modules.Administration.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Administration { @@ -261,7 +261,7 @@ namespace NadekoBot.Modules.Administration public async Task CreatVoiChanl([Remainder] string channelName) { var ch = await Context.Guild.CreateVoiceChannelAsync(channelName).ConfigureAwait(false); - await ReplyConfirmLocalized("createvoich",Format.Bold(ch.Name)).ConfigureAwait(false); + await ReplyConfirmLocalized("createvoich", Format.Bold(ch.Name)).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -312,7 +312,7 @@ namespace NadekoBot.Modules.Administration [RequireUserPermission(GuildPermission.MentionEveryone)] public async Task MentionRole(params IRole[] roles) { - string send = "❕" +GetText("menrole",Context.User.Mention); + string send = "❕" + GetText("menrole", Context.User.Mention); foreach (var role in roles) { send += $"\n**{role.Name}**\n"; diff --git a/src/NadekoBot/Modules/Administration/AutoAssignRoleCommands.cs b/NadekoBot.Core/Modules/Administration/AutoAssignRoleCommands.cs similarity index 65% rename from src/NadekoBot/Modules/Administration/AutoAssignRoleCommands.cs rename to NadekoBot.Core/Modules/Administration/AutoAssignRoleCommands.cs index 54d2e244..7ae5149f 100644 --- a/src/NadekoBot/Modules/Administration/AutoAssignRoleCommands.cs +++ b/NadekoBot.Core/Modules/Administration/AutoAssignRoleCommands.cs @@ -1,7 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; @@ -31,29 +31,14 @@ namespace NadekoBot.Modules.Administration if (Context.User.Id != guser.Guild.OwnerId && guser.GetRoles().Max(x => x.Position) <= role.Position) return; - using (var uow = _db.UnitOfWork) - { - var conf = uow.GuildConfigs.For(Context.Guild.Id, set => set); - if (role == null) - { - conf.AutoAssignRoleId = 0; - _service.AutoAssignedRoles.TryRemove(Context.Guild.Id, out _); - } - else - { - conf.AutoAssignRoleId = role.Id; - _service.AutoAssignedRoles.AddOrUpdate(Context.Guild.Id, role.Id, (key, val) => role.Id); - } - - await uow.CompleteAsync().ConfigureAwait(false); - } - if (role == null) { + _service.DisableAar(Context.Guild.Id); await ReplyConfirmLocalized("aar_disabled").ConfigureAwait(false); return; } + _service.EnableAar(Context.Guild.Id, role.Id); await ReplyConfirmLocalized("aar_enabled").ConfigureAwait(false); } } diff --git a/src/NadekoBot/Modules/Administration/Common/ProtectionStats.cs b/NadekoBot.Core/Modules/Administration/Common/ProtectionStats.cs similarity index 93% rename from src/NadekoBot/Modules/Administration/Common/ProtectionStats.cs rename to NadekoBot.Core/Modules/Administration/Common/ProtectionStats.cs index 6c1a5dea..18ca4d47 100644 --- a/src/NadekoBot/Modules/Administration/Common/ProtectionStats.cs +++ b/NadekoBot.Core/Modules/Administration/Common/ProtectionStats.cs @@ -1,7 +1,7 @@ using System.Collections.Concurrent; using Discord; using NadekoBot.Common.Collections; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Administration.Common { diff --git a/src/NadekoBot/Modules/Administration/Common/Ratelimiter.cs b/NadekoBot.Core/Modules/Administration/Common/Ratelimiter.cs similarity index 100% rename from src/NadekoBot/Modules/Administration/Common/Ratelimiter.cs rename to NadekoBot.Core/Modules/Administration/Common/Ratelimiter.cs diff --git a/src/NadekoBot/Modules/Administration/Common/UserSpamStats.cs b/NadekoBot.Core/Modules/Administration/Common/UserSpamStats.cs similarity index 100% rename from src/NadekoBot/Modules/Administration/Common/UserSpamStats.cs rename to NadekoBot.Core/Modules/Administration/Common/UserSpamStats.cs diff --git a/NadekoBot.Core/Modules/Administration/DangerousCommands.cs b/NadekoBot.Core/Modules/Administration/DangerousCommands.cs new file mode 100644 index 00000000..7c38a801 --- /dev/null +++ b/NadekoBot.Core/Modules/Administration/DangerousCommands.cs @@ -0,0 +1,92 @@ +using Discord.Commands; +using Microsoft.EntityFrameworkCore; +using NadekoBot.Common.Attributes; +using NadekoBot.Extensions; +using NadekoBot.Core.Services; +using System; +using System.Threading.Tasks; +using Discord; + +#if !GLOBAL_NADEKO +namespace NadekoBot.Modules.Administration +{ + public partial class Administration + { + [Group] + [OwnerOnly] + public class DangerousCommands : NadekoSubmodule + { + private readonly DbService _db; + + public DangerousCommands(DbService db) + { + _db = db; + } + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public async Task ExecSql([Remainder]string sql) + { + try + { + var msg = await Context.Channel.EmbedAsync(new EmbedBuilder() + .WithOkColor() + .WithTitle(GetText("sql_confirm_exec")) + .WithDescription(Format.Code(sql)) + .WithFooter("yes/no")).ConfigureAwait(false); + + var input = await GetUserInputAsync(Context.User.Id, Context.Channel.Id); + input = input?.ToLowerInvariant().ToString(); + + if (input != "yes" && input != "y") + { + return; + } + var _ = msg.DeleteAsync(); + + int res; + using (var uow = _db.UnitOfWork) + { + res = uow._context.Database.ExecuteSqlCommand(sql); + } + + await Context.Channel.SendConfirmAsync(res.ToString()); + } + catch (Exception ex) + { + await Context.Channel.SendErrorAsync(ex.ToString()); + } + } + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public Task DeleteWaifus() => + ExecSql(@"DELETE FROM WaifuUpdates; +DELETE FROM WaifuItem; +DELETE FROM WaifuInfo;"); + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public Task DeleteCurrency() => + ExecSql("DELETE FROM Currency; DELETE FROM CurrencyTransactions;"); + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public Task DeletePlaylists() => + ExecSql("DELETE FROM MusicPlaylists;"); + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public Task DeleteExp() => + ExecSql(@"DELETE FROM UserXpStats; +UPDATE DiscordUser +SET ClubId=NULL, + IsClubAdmin=0, + TotalXp=0; +DELETE FROM ClubApplicants; +DELETE FROM ClubBans; +DELETE FROM Clubs;"); + } + } +} +#endif \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/GameChannelCommands.cs b/NadekoBot.Core/Modules/Administration/GameChannelCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Administration/GameChannelCommands.cs rename to NadekoBot.Core/Modules/Administration/GameChannelCommands.cs index 647874a6..81ad7396 100644 --- a/src/NadekoBot/Modules/Administration/GameChannelCommands.cs +++ b/NadekoBot.Core/Modules/Administration/GameChannelCommands.cs @@ -1,6 +1,6 @@ using Discord; using Discord.Commands; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Administration.Services; diff --git a/src/NadekoBot/Modules/Administration/LocalizationCommands.cs b/NadekoBot.Core/Modules/Administration/LocalizationCommands.cs similarity index 97% rename from src/NadekoBot/Modules/Administration/LocalizationCommands.cs rename to NadekoBot.Core/Modules/Administration/LocalizationCommands.cs index bdef0799..677eff0d 100644 --- a/src/NadekoBot/Modules/Administration/LocalizationCommands.cs +++ b/NadekoBot.Core/Modules/Administration/LocalizationCommands.cs @@ -28,6 +28,7 @@ namespace NadekoBot.Modules.Administration {"da-DK", "Dansk, Danmark" }, {"de-DE", "Deutsch, Deutschland"}, {"he-IL", "עברית, ישראל"}, + {"hu-HU", "Magyar, Magyarország" }, {"id-ID", "Bahasa Indonesia, Indonesia" }, {"it-IT", "Italiano, Italia" }, {"ja-JP", "日本語, 日本"}, @@ -40,11 +41,13 @@ namespace NadekoBot.Modules.Administration {"sr-Cyrl-RS", "Српски, Србија"}, {"es-ES", "Español, España"}, {"sv-SE", "Svenska, Sverige"}, - {"tr-TR", "Türkçe, Türkiye"} + {"tr-TR", "Türkçe, Türkiye"}, + {"ts-TS", "Tsundere, You Baka"}, }.ToImmutableDictionary(); [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [Priority(0)] public async Task LanguageSet() { var cul = _localization.GetCultureInfo(Context.Guild); @@ -55,6 +58,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequireUserPermission(GuildPermission.Administrator)] + [Priority(1)] public async Task LanguageSet(string name) { try diff --git a/src/NadekoBot/Modules/Administration/LogCommands.cs b/NadekoBot.Core/Modules/Administration/LogCommands.cs similarity index 70% rename from src/NadekoBot/Modules/Administration/LogCommands.cs rename to NadekoBot.Core/Modules/Administration/LogCommands.cs index c3415246..b1fe07df 100644 --- a/src/NadekoBot/Modules/Administration/LogCommands.cs +++ b/NadekoBot.Core/Modules/Administration/LogCommands.cs @@ -1,8 +1,10 @@ -using Discord; + +#if !GLOBAL_NADEKO +using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Linq; using System.Threading.Tasks; @@ -104,11 +106,60 @@ namespace NadekoBot.Modules.Administration [OwnerOnly] public async Task LogEvents() { + _service.GuildLogSettings.TryGetValue(Context.Guild.Id, out LogSetting l); + var str = string.Join("\n", Enum.GetNames(typeof(LogType)) + .Select(x => + { + var val = l == null ? null : GetLogProperty(l, Enum.Parse(x)); + if (val != null) + return $"{Format.Bold(x)} <#{val}>"; + return Format.Bold(x); + })); + await Context.Channel.SendConfirmAsync(Format.Bold(GetText("log_events")) + "\n" + - $"```fix\n{string.Join(", ", Enum.GetNames(typeof(LogType)).Cast())}```") + str) .ConfigureAwait(false); } + private ulong? GetLogProperty(LogSetting l, LogType type) + { + switch (type) + { + case LogType.Other: + return l.LogOtherId; + case LogType.MessageUpdated: + return l.MessageUpdatedId; + case LogType.MessageDeleted: + return l.MessageDeletedId; + case LogType.UserJoined: + return l.UserJoinedId; + case LogType.UserLeft: + return l.UserLeftId; + case LogType.UserBanned: + return l.UserBannedId; + case LogType.UserUnbanned: + return l.UserUnbannedId; + case LogType.UserUpdated: + return l.UserUpdatedId; + case LogType.ChannelCreated: + return l.ChannelCreatedId; + case LogType.ChannelDestroyed: + return l.ChannelDestroyedId; + case LogType.ChannelUpdated: + return l.ChannelUpdatedId; + case LogType.UserPresence: + return l.LogUserPresenceId; + case LogType.VoicePresence: + return l.LogVoicePresenceId; + case LogType.VoicePresenceTTS: + return l.LogVoicePresenceTTSId; + case LogType.UserMuted: + return l.UserMutedId; + default: + return null; + } + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequireUserPermission(GuildPermission.Administrator)] @@ -124,49 +175,49 @@ namespace NadekoBot.Modules.Administration switch (type) { case LogType.Other: - channelId = logSetting.LogOtherId = (logSetting.LogOtherId == null ? channel.Id : default); + channelId = logSetting.LogOtherId = (logSetting.LogOtherId == null ? (ulong?)channel.Id : default); break; case LogType.MessageUpdated: - channelId = logSetting.MessageUpdatedId = (logSetting.MessageUpdatedId == null ? channel.Id : default); + channelId = logSetting.MessageUpdatedId = (logSetting.MessageUpdatedId == null ? (ulong?)channel.Id : default); break; case LogType.MessageDeleted: - channelId = logSetting.MessageDeletedId = (logSetting.MessageDeletedId == null ? channel.Id : default); + channelId = logSetting.MessageDeletedId = (logSetting.MessageDeletedId == null ? (ulong?)channel.Id : default); break; case LogType.UserJoined: - channelId = logSetting.UserJoinedId = (logSetting.UserJoinedId == null ? channel.Id : default); + channelId = logSetting.UserJoinedId = (logSetting.UserJoinedId == null ? (ulong?)channel.Id : default); break; case LogType.UserLeft: - channelId = logSetting.UserLeftId = (logSetting.UserLeftId == null ? channel.Id : default); + channelId = logSetting.UserLeftId = (logSetting.UserLeftId == null ? (ulong?)channel.Id : default); break; case LogType.UserBanned: - channelId = logSetting.UserBannedId = (logSetting.UserBannedId == null ? channel.Id : default); + channelId = logSetting.UserBannedId = (logSetting.UserBannedId == null ? (ulong?)channel.Id : default); break; case LogType.UserUnbanned: - channelId = logSetting.UserUnbannedId = (logSetting.UserUnbannedId == null ? channel.Id : default); + channelId = logSetting.UserUnbannedId = (logSetting.UserUnbannedId == null ? (ulong?)channel.Id : default); break; case LogType.UserUpdated: - channelId = logSetting.UserUpdatedId = (logSetting.UserUpdatedId == null ? channel.Id : default); + channelId = logSetting.UserUpdatedId = (logSetting.UserUpdatedId == null ? (ulong?)channel.Id : default); break; case LogType.UserMuted: - channelId = logSetting.UserMutedId = (logSetting.UserMutedId == null ? channel.Id : default); + channelId = logSetting.UserMutedId = (logSetting.UserMutedId == null ? (ulong?)channel.Id : default); break; case LogType.ChannelCreated: - channelId = logSetting.ChannelCreatedId = (logSetting.ChannelCreatedId == null ? channel.Id : default); + channelId = logSetting.ChannelCreatedId = (logSetting.ChannelCreatedId == null ? (ulong?)channel.Id : default); break; case LogType.ChannelDestroyed: - channelId = logSetting.ChannelDestroyedId = (logSetting.ChannelDestroyedId == null ? channel.Id : default); + channelId = logSetting.ChannelDestroyedId = (logSetting.ChannelDestroyedId == null ? (ulong?)channel.Id : default); break; case LogType.ChannelUpdated: - channelId = logSetting.ChannelUpdatedId = (logSetting.ChannelUpdatedId == null ? channel.Id : default); + channelId = logSetting.ChannelUpdatedId = (logSetting.ChannelUpdatedId == null ? (ulong?)channel.Id : default); break; case LogType.UserPresence: - channelId = logSetting.LogUserPresenceId = (logSetting.LogUserPresenceId == null ? channel.Id : default); + channelId = logSetting.LogUserPresenceId = (logSetting.LogUserPresenceId == null ? (ulong?)channel.Id : default); break; case LogType.VoicePresence: - channelId = logSetting.LogVoicePresenceId = (logSetting.LogVoicePresenceId == null ? channel.Id : default); + channelId = logSetting.LogVoicePresenceId = (logSetting.LogVoicePresenceId == null ? (ulong?)channel.Id : default); break; case LogType.VoicePresenceTTS: - channelId = logSetting.LogVoicePresenceTTSId = (logSetting.LogVoicePresenceTTSId == null ? channel.Id : default); + channelId = logSetting.LogVoicePresenceTTSId = (logSetting.LogVoicePresenceTTSId == null ? (ulong?)channel.Id : default); break; } @@ -180,4 +231,5 @@ namespace NadekoBot.Modules.Administration } } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/NadekoBot.Core/Modules/Administration/ModuleCommands.cs b/NadekoBot.Core/Modules/Administration/ModuleCommands.cs new file mode 100644 index 00000000..251d218c --- /dev/null +++ b/NadekoBot.Core/Modules/Administration/ModuleCommands.cs @@ -0,0 +1,91 @@ +//using Discord.Commands; +//using NadekoBot.Common.Attributes; +//using NadekoBot.Modules.Administration.Services; +//using NadekoBot.Extensions; +//using System; +//using System.IO; +//using System.Reflection; +//using System.Text.RegularExpressions; +//using System.Threading.Tasks; +//using System.Linq; + +//namespace NadekoBot.Modules.Administration +//{ +// public partial class Administration +// { +// [Group] +// public class PackagesCommands : NadekoSubmodule +// { +// private readonly NadekoBot _bot; + +// public PackagesCommands(NadekoBot bot) +// { +// _bot = bot; +// } + +// [NadekoCommand, Usage, Description, Aliases] +// [RequireContext(ContextType.Guild)] +// public async Task PackageList() +// { +// _service.ReloadAvailablePackages(); +// await Context.Channel.SendConfirmAsync( +// string.Join( +// "\n", +// _service.Packages +// .Select(x => _bot.LoadedPackages.Contains(x) +// ? "【✘】" + x +// : "【 】" + x))); +// } + +// [NadekoCommand, Usage, Description, Aliases] +// [RequireContext(ContextType.Guild)] +// [OwnerOnly] +// public async Task PackageUnload(string name) +// { +// if (name.Contains(":") || name.Contains(".") || name.Contains("\\") || name.Contains("/") || name.Contains("~")) +// return; +// name = name.ToTitleCase(); +// var package = Assembly.LoadFrom(Path.Combine(AppContext.BaseDirectory, +// "modules", +// $"NadekoBot.Modules.{name}", +// $"NadekoBot.Modules.{name}.dll")); + +// await _bot.UnloadPackage(name).ConfigureAwait(false); +// await ReplyAsync(":ok:"); +// } + +// [NadekoCommand, Usage, Description, Aliases] +// [RequireContext(ContextType.Guild)] +// [OwnerOnly] +// public async Task PackageLoad(string name) +// { +// if (name.Contains(".") || name.Contains("\\") || name.Contains("/") || name.Contains("~")) +// return; +// name = name.ToTitleCase(); + +// if (await _bot.LoadPackage(name)) +// await ReplyAsync(":ok:"); +// else +// await ReplyAsync(":x:"); +// } + +// [NadekoCommand, Usage, Description, Aliases] +// [RequireContext(ContextType.Guild)] +// [OwnerOnly] +// public async Task PackageReload(string name) +// { +// if (name.Contains(".") || name.Contains("\\") || name.Contains("/") || name.Contains("~")) +// return; +// name = name.ToTitleCase(); + +// if (await _bot.UnloadPackage(name)) +// { +// await _bot.LoadPackage(name); +// await ReplyAsync(":ok:"); +// } +// else +// await ReplyAsync(":x:"); +// } +// } +// } +//} diff --git a/src/NadekoBot/Modules/Administration/MuteCommands.cs b/NadekoBot.Core/Modules/Administration/MuteCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Administration/MuteCommands.cs rename to NadekoBot.Core/Modules/Administration/MuteCommands.cs index a8322de4..076bc920 100644 --- a/src/NadekoBot/Modules/Administration/MuteCommands.cs +++ b/NadekoBot.Core/Modules/Administration/MuteCommands.cs @@ -1,6 +1,6 @@ using Discord; using Discord.Commands; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Threading.Tasks; using NadekoBot.Common.Attributes; diff --git a/src/NadekoBot/Modules/Administration/PlayingRotateCommands.cs b/NadekoBot.Core/Modules/Administration/PlayingRotateCommands.cs similarity index 88% rename from src/NadekoBot/Modules/Administration/PlayingRotateCommands.cs rename to NadekoBot.Core/Modules/Administration/PlayingRotateCommands.cs index 4cccf226..5d50b6e8 100644 --- a/src/NadekoBot/Modules/Administration/PlayingRotateCommands.cs +++ b/NadekoBot.Core/Modules/Administration/PlayingRotateCommands.cs @@ -1,10 +1,11 @@ using Discord.Commands; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Administration.Services; +using Microsoft.EntityFrameworkCore; namespace NadekoBot.Modules.Administration { @@ -28,7 +29,7 @@ namespace NadekoBot.Modules.Administration bool enabled; using (var uow = _db.UnitOfWork) { - var config = uow.BotConfig.GetOrCreate(); + var config = uow.BotConfig.GetOrCreate(set => set); enabled = config.RotatingStatuses = !config.RotatingStatuses; uow.Complete(); @@ -45,7 +46,7 @@ namespace NadekoBot.Modules.Administration { using (var uow = _db.UnitOfWork) { - var config = uow.BotConfig.GetOrCreate(); + var config = uow.BotConfig.GetOrCreate(set => set.Include(x => x.RotatingStatusMessages)); var toAdd = new PlayingStatus { Status = status }; config.RotatingStatusMessages.Add(toAdd); await uow.CompleteAsync(); @@ -79,7 +80,7 @@ namespace NadekoBot.Modules.Administration string msg; using (var uow = _db.UnitOfWork) { - var config = uow.BotConfig.GetOrCreate(); + var config = uow.BotConfig.GetOrCreate(set => set.Include(x => x.RotatingStatusMessages)); if (index >= config.RotatingStatusMessages.Count) return; diff --git a/src/NadekoBot/Modules/Administration/PrefixCommands.cs b/NadekoBot.Core/Modules/Administration/PrefixCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Administration/PrefixCommands.cs rename to NadekoBot.Core/Modules/Administration/PrefixCommands.cs index 617ebc30..c8a981b2 100644 --- a/src/NadekoBot/Modules/Administration/PrefixCommands.cs +++ b/NadekoBot.Core/Modules/Administration/PrefixCommands.cs @@ -35,7 +35,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] - public async Task DefPrefix([Remainder]string prefix) + public async Task DefPrefix([Remainder]string prefix = null) { if (string.IsNullOrWhiteSpace(prefix)) { diff --git a/src/NadekoBot/Modules/Administration/ProtectionCommands.cs b/NadekoBot.Core/Modules/Administration/ProtectionCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Administration/ProtectionCommands.cs rename to NadekoBot.Core/Modules/Administration/ProtectionCommands.cs index 6a09692a..d1bc0406 100644 --- a/src/NadekoBot/Modules/Administration/ProtectionCommands.cs +++ b/NadekoBot.Core/Modules/Administration/ProtectionCommands.cs @@ -2,8 +2,8 @@ using Discord.Commands; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Linq; using System.Threading.Tasks; diff --git a/src/NadekoBot/Modules/Administration/PruneCommands.cs b/NadekoBot.Core/Modules/Administration/PruneCommands.cs similarity index 96% rename from src/NadekoBot/Modules/Administration/PruneCommands.cs rename to NadekoBot.Core/Modules/Administration/PruneCommands.cs index 5fa42f28..089c2c4b 100644 --- a/src/NadekoBot/Modules/Administration/PruneCommands.cs +++ b/NadekoBot.Core/Modules/Administration/PruneCommands.cs @@ -13,7 +13,7 @@ namespace NadekoBot.Modules.Administration [Group] public class PruneCommands : NadekoSubmodule { - private readonly TimeSpan twoWeeks = TimeSpan.FromDays(14); + private static readonly TimeSpan twoWeeks = TimeSpan.FromDays(14); //delets her own messages, no perm required [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Administration/RatelimitCommands.cs b/NadekoBot.Core/Modules/Administration/RatelimitCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Administration/RatelimitCommands.cs rename to NadekoBot.Core/Modules/Administration/RatelimitCommands.cs index 40b37884..d2069e8b 100644 --- a/src/NadekoBot/Modules/Administration/RatelimitCommands.cs +++ b/NadekoBot.Core/Modules/Administration/RatelimitCommands.cs @@ -2,8 +2,8 @@ using Discord; using Discord.Commands; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; diff --git a/src/NadekoBot/Modules/Administration/SelfAssignedRolesCommands.cs b/NadekoBot.Core/Modules/Administration/SelfAssignedRolesCommands.cs similarity index 64% rename from src/NadekoBot/Modules/Administration/SelfAssignedRolesCommands.cs rename to NadekoBot.Core/Modules/Administration/SelfAssignedRolesCommands.cs index 79e76a1d..b6d3ba2f 100644 --- a/src/NadekoBot/Modules/Administration/SelfAssignedRolesCommands.cs +++ b/NadekoBot.Core/Modules/Administration/SelfAssignedRolesCommands.cs @@ -1,9 +1,8 @@ using Discord; using Discord.Commands; -using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; @@ -11,6 +10,8 @@ using System.Text; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Common.Collections; +using Microsoft.EntityFrameworkCore; +using NadekoBot.Modules.Xp.Common; namespace NadekoBot.Modules.Administration { @@ -46,7 +47,15 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequireUserPermission(GuildPermission.ManageRoles)] - public async Task Asar([Remainder] IRole role) + [Priority(1)] + public Task Asar([Remainder] IRole role) => + Asar(0, role); + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [RequireUserPermission(GuildPermission.ManageRoles)] + [Priority(0)] + public async Task Asar(int group, [Remainder] IRole role) { IEnumerable roles; @@ -58,7 +67,8 @@ namespace NadekoBot.Modules.Administration var error = false; using (var uow = _db.UnitOfWork) { - roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id); + roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id) + .SelectMany(x => x); if (roles.Any(s => s.RoleId == role.Id && s.GuildId == role.Guild.Id)) { msg = GetText("role_in_list", Format.Bold(role.Name)); @@ -68,11 +78,12 @@ namespace NadekoBot.Modules.Administration { uow.SelfAssignedRoles.Add(new SelfAssignedRole { + Group = group, RoleId = role.Id, GuildId = role.Guild.Id }); await uow.CompleteAsync(); - msg = GetText("role_added", Format.Bold(role.Name)); + msg = GetText("role_added", Format.Bold(role.Name), Format.Bold(group.ToString())); } } if (error) @@ -113,40 +124,54 @@ namespace NadekoBot.Modules.Administration var toRemove = new ConcurrentHashSet(); var removeMsg = new StringBuilder(); - var roles = new List(); + var rolesStr = new StringBuilder(); var roleCnt = 0; + var exclusive = false; using (var uow = _db.UnitOfWork) { - var roleModels = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id).ToList(); - - foreach (var roleModel in roleModels) + exclusive = uow.GuildConfigs.For(Context.Guild.Id, set => set) + .ExclusiveSelfAssignedRoles; + var roleModels = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id) + .Skip(page * 20) + .Take(20) + .ToDictionary(x => x.Key, x => x.AsEnumerable().ToArray()) + .OrderBy(x => x.Key); + foreach (var kvp in roleModels) { - var role = Context.Guild.Roles.FirstOrDefault(r => r.Id == roleModel.RoleId); - if (role == null) + rolesStr.AppendLine("\t\t\t\t『" + Format.Bold(GetText("self_assign_group", kvp.Key)) + "』"); + foreach (var roleModel in kvp.Value) { - toRemove.Add(roleModel); - uow.SelfAssignedRoles.Remove(roleModel); - } - else - { - roles.Add(Format.Bold(role.Name)); - roleCnt++; + var role = Context.Guild.Roles.FirstOrDefault(r => r.Id == roleModel.RoleId); + if (role == null) + { + toRemove.Add(roleModel); + uow.SelfAssignedRoles.Remove(roleModel); + } + else + { + if (roleModel.LevelRequirement == 0) + rolesStr.AppendLine(Format.Bold(role.Name)); + else + rolesStr.AppendLine(Format.Bold(role.Name) + $" (lvl {roleModel.LevelRequirement}+)"); + roleCnt++; + } } } + if(toRemove.Any()) + rolesStr.AppendLine("\t\t\t\t『』"); foreach (var role in toRemove) { - roles.Add(GetText("role_clean", role.RoleId)); + rolesStr.AppendLine(GetText("role_clean", role.RoleId)); } await uow.CompleteAsync(); } - await Context.Channel.SendPaginatedConfirmAsync((DiscordSocketClient)Context.Client, page, (curPage) => - { - return new EmbedBuilder() - .WithTitle(GetText("self_assign_list", roleCnt)) - .WithDescription(string.Join("\n", roles.Skip(curPage * 10).Take(10))) - .WithOkColor(); - }, roles.Count / 10); + await Context.Channel.SendConfirmAsync("", + Format.Bold(GetText("self_assign_list", roleCnt)) + + "\n\n" + rolesStr.ToString(), + footer: exclusive + ? GetText("self_assign_are_exclusive") + : GetText("self_assign_are_not_exclusive")).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -162,12 +187,48 @@ namespace NadekoBot.Modules.Administration areExclusive = config.ExclusiveSelfAssignedRoles = !config.ExclusiveSelfAssignedRoles; await uow.CompleteAsync(); } - if(areExclusive) + if (areExclusive) await ReplyConfirmLocalized("self_assign_excl").ConfigureAwait(false); else await ReplyConfirmLocalized("self_assign_no_excl").ConfigureAwait(false); } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [RequireUserPermission(GuildPermission.ManageRoles)] + public async Task RoleLevelReq(int level, [Remainder] IRole role) + { + if (level < 0) + return; + + bool notExists = false; + using (var uow = _db.UnitOfWork) + { + //todo add firacode font to visual studio + var roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id); + var sar = roles.SelectMany(x => x).FirstOrDefault(x => x.RoleId == role.Id); + if (sar != null) + { + sar.LevelRequirement = level; + uow.Complete(); + } + else + { + notExists = true; + } + } + + if (notExists) + { + await ReplyErrorLocalized("self_assign_not").ConfigureAwait(false); + return; + } + + await ReplyConfirmLocalized("self_assign_level_req", + Format.Bold(role.Name), + Format.Bold(level.ToString())).ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Iam([Remainder] IRole role) @@ -176,27 +237,42 @@ namespace NadekoBot.Modules.Administration GuildConfig conf; SelfAssignedRole[] roles; + LevelStats userLevelData; using (var uow = _db.UnitOfWork) { conf = uow.GuildConfigs.For(Context.Guild.Id, set => set); - roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id).ToArray(); + roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id) + .SelectMany(x => x) + .ToArray(); + + var stats = uow.Xp.GetOrCreateUser(Context.Guild.Id, Context.User.Id); + userLevelData = new LevelStats(stats.Xp + stats.AwardedXp); } - if (roles.FirstOrDefault(r=>r.RoleId == role.Id) == null) + var theRoleYouWant = roles.FirstOrDefault(r => r.RoleId == role.Id); + if (theRoleYouWant == null) { await ReplyErrorLocalized("self_assign_not").ConfigureAwait(false); return; } + if (theRoleYouWant.LevelRequirement > userLevelData.Level) + { + await ReplyErrorLocalized("self_assign_not_level", Format.Bold(theRoleYouWant.LevelRequirement.ToString())).ConfigureAwait(false); + return; + } if (guildUser.RoleIds.Contains(role.Id)) { await ReplyErrorLocalized("self_assign_already", Format.Bold(role.Name)).ConfigureAwait(false); return; } - var roleIds = roles.Select(x => x.RoleId).ToArray(); + var roleIds = roles + .Where(x => x.Group == theRoleYouWant.Group) + .Select(x => x.RoleId).ToArray(); if (conf.ExclusiveSelfAssignedRoles) { - var sameRoles = guildUser.RoleIds.Where(r => roleIds.Contains(r)); - + var sameRoles = guildUser.RoleIds + .Where(r => roleIds.Contains(r)); + foreach (var roleId in sameRoles) { var sameRole = Context.Guild.GetRole(roleId); @@ -224,7 +300,7 @@ namespace NadekoBot.Modules.Administration _log.Info(ex); return; } - var msg = await ReplyConfirmLocalized("self_assign_success",Format.Bold(role.Name)).ConfigureAwait(false); + var msg = await ReplyConfirmLocalized("self_assign_success", Format.Bold(role.Name)).ConfigureAwait(false); if (conf.AutoDeleteSelfAssignedRoleMessages) { @@ -244,7 +320,9 @@ namespace NadekoBot.Modules.Administration using (var uow = _db.UnitOfWork) { autoDeleteSelfAssignedRoleMessages = uow.GuildConfigs.For(Context.Guild.Id, set => set).AutoDeleteSelfAssignedRoleMessages; - roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id); + roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id) + .SelectMany(x => x) + .ToArray(); } if (roles.FirstOrDefault(r => r.RoleId == role.Id) == null) { @@ -253,7 +331,7 @@ namespace NadekoBot.Modules.Administration } if (!guildUser.RoleIds.Contains(role.Id)) { - await ReplyErrorLocalized("self_assign_not_have",Format.Bold(role.Name)).ConfigureAwait(false); + await ReplyErrorLocalized("self_assign_not_have", Format.Bold(role.Name)).ConfigureAwait(false); return; } try @@ -275,4 +353,4 @@ namespace NadekoBot.Modules.Administration } } } -} +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/SelfCommands.cs b/NadekoBot.Core/Modules/Administration/SelfCommands.cs similarity index 79% rename from src/NadekoBot/Modules/Administration/SelfCommands.cs rename to NadekoBot.Core/Modules/Administration/SelfCommands.cs index 344b8379..38fe17de 100644 --- a/src/NadekoBot/Modules/Administration/SelfCommands.cs +++ b/NadekoBot.Core/Modules/Administration/SelfCommands.cs @@ -8,13 +8,15 @@ using System.Linq; using System.Net.Http; using System.Threading.Tasks; using Discord.WebSocket; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; using System.Diagnostics; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Administration.Services; -using NadekoBot.Modules.Music.Services; +using Newtonsoft.Json; +using NadekoBot.Common.ShardCom; +using Discord.Net; namespace NadekoBot.Modules.Administration { @@ -27,23 +29,22 @@ namespace NadekoBot.Modules.Administration private static readonly object _locker = new object(); private readonly DiscordSocketClient _client; - private readonly IImagesService _images; - private readonly MusicService _music; + private readonly IImageCache _images; private readonly IBotConfigProvider _bc; private readonly NadekoBot _bot; private readonly IBotCredentials _creds; + private readonly IDataCache _cache; public SelfCommands(DbService db, NadekoBot bot, DiscordSocketClient client, - MusicService music, IImagesService images, IBotConfigProvider bc, - IBotCredentials creds) + IBotConfigProvider bc, IBotCredentials creds, IDataCache cache) { _db = db; _client = client; - _images = images; - _music = music; + _images = cache.LocalImages; _bc = bc; _bot = bot; _creds = creds; + _cache = cache; } [NadekoCommand, Usage, Description, Aliases] @@ -51,6 +52,9 @@ namespace NadekoBot.Modules.Administration [OwnerOnly] public async Task StartupCommandAdd([Remainder] string cmdText) { + if (cmdText.StartsWith(Prefix + "die")) + return; + var guser = ((IGuildUser)Context.User); var cmd = new StartupCommand() { @@ -185,7 +189,7 @@ namespace NadekoBot.Modules.Administration { using (var uow = _db.UnitOfWork) { - var config = uow.BotConfig.GetOrCreate(); + var config = uow.BotConfig.GetOrCreate(set => set); config.ForwardMessages = !config.ForwardMessages; uow.Complete(); } @@ -203,7 +207,7 @@ namespace NadekoBot.Modules.Administration { using (var uow = _db.UnitOfWork) { - var config = uow.BotConfig.GetOrCreate(); + var config = uow.BotConfig.GetOrCreate(set => set); lock (_locker) config.ForwardToAllOwners = !config.ForwardToAllOwners; uow.Complete(); @@ -217,28 +221,62 @@ namespace NadekoBot.Modules.Administration } - //todo 2 shard commands - //[NadekoCommand, Usage, Description, Aliases] - //[Shard0Precondition] - //[OwnerOnly] - //public async Task RestartShard(int shardid) - //{ - // if (shardid == 0 || shardid > b) - // { - // await ReplyErrorLocalized("no_shard_id").ConfigureAwait(false); - // return; - // } - // try - // { - // await ReplyConfirmLocalized("shard_reconnecting", Format.Bold("#" + shardid)).ConfigureAwait(false); - // await shard.StartAsync().ConfigureAwait(false); - // await ReplyConfirmLocalized("shard_reconnected", Format.Bold("#" + shardid)).ConfigureAwait(false); - // } - // catch (Exception ex) - // { - // _log.Warn(ex); - // } - //} + [NadekoCommand, Usage, Description, Aliases] + public async Task ShardStats(int page = 1) + { + if (--page < 0) + return; + var db = _cache.Redis.GetDatabase(); + var statuses = db.ListRange(_creds.RedisKey() + "_shardstats") + .Select(x => JsonConvert.DeserializeObject(x)); + + var status = string.Join(", ", statuses + .GroupBy(x => x.ConnectionState) + .Select(x => $"{x.Count()} {x.Key}") + .ToArray()); + + var allShardStrings = statuses + .Select(x => + { + var timeDiff = DateTime.UtcNow - x.Time; + if (timeDiff >= TimeSpan.FromSeconds(30)) + return $"Shard #{Format.Bold(x.ShardId.ToString())} **UNRESPONSIVE** for {timeDiff.ToString(@"hh\:mm\:ss")}"; + return GetText("shard_stats_txt", x.ShardId.ToString(), + Format.Bold(x.ConnectionState.ToString()), Format.Bold(x.Guilds.ToString()), timeDiff.ToString(@"hh\:mm\:ss")); + }) + .ToArray(); + + await Context.Channel.SendPaginatedConfirmAsync(_client, page, (curPage) => + { + + var str = string.Join("\n", allShardStrings.Skip(25 * curPage).Take(25)); + + if (string.IsNullOrWhiteSpace(str)) + str = GetText("no_shards_on_page"); + + return new EmbedBuilder() + .WithAuthor(a => a.WithName(GetText("shard_stats"))) + .WithTitle(status) + .WithOkColor() + .WithDescription(str); + }, allShardStrings.Length, 25); + } + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public async Task RestartShard(int shardid) + { + if (shardid < 0 || shardid >= _creds.TotalShards) + { + await ReplyErrorLocalized("no_shard_id").ConfigureAwait(false); + return; + } + var pub = _cache.Redis.GetSubscriber(); + pub.Publish(_creds.RedisKey() + "_shardcoord_restart", + JsonConvert.SerializeObject(_client.ShardId), + StackExchange.Redis.CommandFlags.FireAndForget); + await ReplyConfirmLocalized("shard_reconnecting", Format.Bold("#" + shardid)).ConfigureAwait(false); + } [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] @@ -279,8 +317,8 @@ namespace NadekoBot.Modules.Administration // ignored } await Task.Delay(2000).ConfigureAwait(false); - try { await _music.DestroyAllPlayers().ConfigureAwait(false); } catch { } - Environment.Exit(0); + var sub = _cache.Redis.GetSubscriber(); + sub.Publish(_creds.RedisKey() + "_die", "", StackExchange.Redis.CommandFlags.FireAndForget); } [NadekoCommand, Usage, Description, Aliases] @@ -296,7 +334,8 @@ namespace NadekoBot.Modules.Administration await ReplyConfirmLocalized("restarting").ConfigureAwait(false); Process.Start(cmd.Cmd, cmd.Args); - Environment.Exit(0); + var sub = _cache.Redis.GetSubscriber(); + sub.Publish(_creds.RedisKey() + "_die", "", StackExchange.Redis.CommandFlags.FireAndForget); } [NadekoCommand, Usage, Description, Aliases] @@ -306,7 +345,14 @@ namespace NadekoBot.Modules.Administration if (string.IsNullOrWhiteSpace(newName)) return; - await _client.CurrentUser.ModifyAsync(u => u.Username = newName).ConfigureAwait(false); + try + { + await _client.CurrentUser.ModifyAsync(u => u.Username = newName).ConfigureAwait(false); + } + catch (RateLimitedException) + { + _log.Warn("You've been ratelimited. Wait 2 hours to change your name."); + } await ReplyConfirmLocalized("bot_name", Format.Bold(newName)).ConfigureAwait(false); } @@ -435,9 +481,11 @@ namespace NadekoBot.Modules.Administration public async Task ReloadImages() { var sw = Stopwatch.StartNew(); - _images.Reload(); - sw.Stop(); - await ReplyConfirmLocalized("images_loaded", sw.Elapsed.TotalSeconds.ToString("F3")).ConfigureAwait(false); + var sub = _cache.Redis.GetSubscriber(); + sub.Publish(_creds.RedisKey() + "_reload_images", + "", + StackExchange.Redis.CommandFlags.FireAndForget); + await ReplyConfirmLocalized("images_loaded", 0).ConfigureAwait(false); } private static UserStatus SettableUserStatusToUserStatus(SettableUserStatus sus) diff --git a/src/NadekoBot/Modules/Administration/ServerGreetCommands.cs b/NadekoBot.Core/Modules/Administration/ServerGreetCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Administration/ServerGreetCommands.cs rename to NadekoBot.Core/Modules/Administration/ServerGreetCommands.cs index 0f94e002..d8bac136 100644 --- a/src/NadekoBot/Modules/Administration/ServerGreetCommands.cs +++ b/NadekoBot.Core/Modules/Administration/ServerGreetCommands.cs @@ -1,8 +1,8 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Threading.Tasks; using NadekoBot.Common.Attributes; diff --git a/src/NadekoBot/Modules/Administration/Services/AdministrationService.cs b/NadekoBot.Core/Modules/Administration/Services/AdministrationService.cs similarity index 82% rename from src/NadekoBot/Modules/Administration/Services/AdministrationService.cs rename to NadekoBot.Core/Modules/Administration/Services/AdministrationService.cs index 57ec29a8..a89381e2 100644 --- a/src/NadekoBot/Modules/Administration/Services/AdministrationService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/AdministrationService.cs @@ -1,13 +1,11 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Discord; using Discord.Commands; using Discord.WebSocket; using NadekoBot.Common.Collections; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -16,12 +14,16 @@ namespace NadekoBot.Modules.Administration.Services { public readonly ConcurrentHashSet DeleteMessagesOnCommand; private readonly Logger _log; + private readonly NadekoBot _bot; - public AdministrationService(IEnumerable gcs, CommandHandler cmdHandler) + public AdministrationService(NadekoBot bot, CommandHandler cmdHandler) { _log = LogManager.GetCurrentClassLogger(); + _bot = bot; - DeleteMessagesOnCommand = new ConcurrentHashSet(gcs.Where(g => g.DeleteMessageOnCommand).Select(g => g.GuildId)); + DeleteMessagesOnCommand = new ConcurrentHashSet(bot.AllGuildConfigs + .Where(g => g.DeleteMessageOnCommand) + .Select(g => g.GuildId)); cmdHandler.CommandExecuted += DelMsgOnCmd_Handler; } diff --git a/NadekoBot.Core/Modules/Administration/Services/AutoAssignRoleService.cs b/NadekoBot.Core/Modules/Administration/Services/AutoAssignRoleService.cs new file mode 100644 index 00000000..cd7e4a78 --- /dev/null +++ b/NadekoBot.Core/Modules/Administration/Services/AutoAssignRoleService.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Concurrent; +using System.Linq; +using System.Threading.Tasks; +using Discord.WebSocket; +using NadekoBot.Core.Services; +using NLog; +using Discord; + +namespace NadekoBot.Modules.Administration.Services +{ + public class AutoAssignRoleService : INService + { + private readonly Logger _log; + private readonly DiscordSocketClient _client; + private readonly DbService _db; + + //guildid/roleid + public ConcurrentDictionary AutoAssignedRoles { get; } + public BlockingCollection<(IGuildUser, ulong)> AutoAssignQueue { get; } = new BlockingCollection<(IGuildUser, ulong)>(); + + public AutoAssignRoleService(DiscordSocketClient client, NadekoBot bot, DbService db) + { + _log = LogManager.GetCurrentClassLogger(); + _client = client; + _db = db; + + AutoAssignedRoles = new ConcurrentDictionary( + bot.AllGuildConfigs + .Where(x => x.AutoAssignRoleId != 0) + .ToDictionary(k => k.GuildId, v => v.AutoAssignRoleId)); + + var _queueRunner = Task.Run(async () => + { + while (true) + { + var (user, roleId) = AutoAssignQueue.Take(); + try + { + var role = user.Guild.Roles.FirstOrDefault(r => r.Id == roleId); + + if (role != null) + await user.AddRoleAsync(role).ConfigureAwait(false); + else + { + _log.Warn($"Disabled 'Auto assign role' feature on {0} server the role doesn't exist.", + roleId); + DisableAar(user.GuildId); + } + } + catch (Discord.Net.HttpException ex) when (ex.HttpCode == System.Net.HttpStatusCode.Forbidden) + { + _log.Warn($"Disabled 'Auto assign role' feature on {0} server because I don't have role management permissions.", + roleId); + DisableAar(user.GuildId); + } + catch (Exception ex) + { + _log.Warn(ex); + } + } + }); + + _client.UserJoined += (user) => + { + if (AutoAssignedRoles.TryGetValue(user.Guild.Id, out ulong roleId) + && roleId != 0) + { + AutoAssignQueue.Add((user, roleId)); + } + return Task.CompletedTask; + }; + } + + public void EnableAar(ulong guildId, ulong roleId) + { + using (var uow = _db.UnitOfWork) + { + var gc = uow.GuildConfigs.For(guildId, set => set); + gc.AutoAssignRoleId = roleId; + uow.Complete(); + } + AutoAssignedRoles.AddOrUpdate(guildId, + roleId, + delegate { return roleId; }); + } + + public void DisableAar(ulong guildId) + { + using (var uow = _db.UnitOfWork) + { + var gc = uow.GuildConfigs.For(guildId, set => set); + gc.AutoAssignRoleId = 0; + uow.Complete(); + } + AutoAssignedRoles.TryRemove(guildId, out _); + } + } +} diff --git a/src/NadekoBot/Modules/Administration/Services/GameVoiceChannelService.cs b/NadekoBot.Core/Modules/Administration/Services/GameVoiceChannelService.cs similarity index 92% rename from src/NadekoBot/Modules/Administration/Services/GameVoiceChannelService.cs rename to NadekoBot.Core/Modules/Administration/Services/GameVoiceChannelService.cs index e97e0eb7..12bb7dcb 100644 --- a/src/NadekoBot/Modules/Administration/Services/GameVoiceChannelService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/GameVoiceChannelService.cs @@ -5,8 +5,8 @@ using System.Threading.Tasks; using Discord.WebSocket; using NadekoBot.Common.Collections; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -19,14 +19,14 @@ namespace NadekoBot.Modules.Administration.Services private readonly DbService _db; private readonly DiscordSocketClient _client; - public GameVoiceChannelService(DiscordSocketClient client, DbService db, IEnumerable gcs) + public GameVoiceChannelService(DiscordSocketClient client, DbService db, NadekoBot bot) { _log = LogManager.GetCurrentClassLogger(); _db = db; _client = client; GameVoiceChannels = new ConcurrentHashSet( - gcs.Where(gc => gc.GameVoiceChannel != null) + bot.AllGuildConfigs.Where(gc => gc.GameVoiceChannel != null) .Select(gc => gc.GameVoiceChannel.Value)); _client.UserVoiceStateUpdated += Client_UserVoiceStateUpdated; diff --git a/src/NadekoBot/Modules/Administration/Services/GuildTimezoneService.cs b/NadekoBot.Core/Modules/Administration/Services/GuildTimezoneService.cs similarity index 87% rename from src/NadekoBot/Modules/Administration/Services/GuildTimezoneService.cs rename to NadekoBot.Core/Modules/Administration/Services/GuildTimezoneService.cs index fdef20c5..fd542baf 100644 --- a/src/NadekoBot/Modules/Administration/Services/GuildTimezoneService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/GuildTimezoneService.cs @@ -4,8 +4,8 @@ using System.Collections.Generic; using System.Linq; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Administration.Services { @@ -16,9 +16,9 @@ namespace NadekoBot.Modules.Administration.Services private ConcurrentDictionary _timezones; private readonly DbService _db; - public GuildTimezoneService(DiscordSocketClient client, IEnumerable gcs, DbService db) + public GuildTimezoneService(DiscordSocketClient client, NadekoBot bot, DbService db) { - _timezones = gcs + _timezones = bot.AllGuildConfigs .Select(x => { TimeZoneInfo tz; @@ -33,10 +33,10 @@ namespace NadekoBot.Modules.Administration.Services { tz = null; } - return (x.GuildId, tz); + return (x.GuildId, Timezone: tz); }) - .Where(x => x.Item2 != null) - .ToDictionary(x => x.Item1, x => x.Item2) + .Where(x => x.Timezone != null) + .ToDictionary(x => x.GuildId, x => x.Timezone) .ToConcurrent(); var curUser = client.CurrentUser; diff --git a/src/NadekoBot/Modules/Administration/Services/LogCommandService.cs b/NadekoBot.Core/Modules/Administration/Services/LogCommandService.cs similarity index 97% rename from src/NadekoBot/Modules/Administration/Services/LogCommandService.cs rename to NadekoBot.Core/Modules/Administration/Services/LogCommandService.cs index 37b2781e..e6ed19cf 100644 --- a/src/NadekoBot/Modules/Administration/Services/LogCommandService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/LogCommandService.cs @@ -1,4 +1,6 @@ -using System; + +#if !GLOBAL_NADEKO +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -8,15 +10,13 @@ using Discord; using Discord.WebSocket; using NadekoBot.Extensions; using NadekoBot.Modules.Administration.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; -using NadekoBot.Common; namespace NadekoBot.Modules.Administration.Services { - [NoPublicBot] public class LogCommandService : INService { @@ -50,7 +50,7 @@ namespace NadekoBot.Modules.Administration.Services private readonly GuildTimezoneService _tz; public LogCommandService(DiscordSocketClient client, NadekoStrings strings, - IEnumerable gcs, DbService db, MuteService mute, ProtectionService prot, GuildTimezoneService tz) + NadekoBot bot, DbService db, MuteService mute, ProtectionService prot, GuildTimezoneService tz) { _client = client; _log = LogManager.GetCurrentClassLogger(); @@ -60,7 +60,7 @@ namespace NadekoBot.Modules.Administration.Services _prot = prot; _tz = tz; - GuildLogSettings = gcs + GuildLogSettings = bot.AllGuildConfigs .ToDictionary(g => g.GuildId, g => g.LogSetting) .ToConcurrent(); @@ -154,10 +154,10 @@ namespace NadekoBot.Modules.Administration.Services .WithFooter(fb => fb.WithText(CurrentTime(g))) .WithOkColor(); - if (Uri.IsWellFormedUriString(before.GetAvatarUrl(), UriKind.Absolute)) - embed.WithThumbnailUrl(before.GetAvatarUrl()); - if (Uri.IsWellFormedUriString(after.GetAvatarUrl(), UriKind.Absolute)) - embed.WithImageUrl(after.GetAvatarUrl()); + if (Uri.IsWellFormedUriString(before.RealAvatarUrl(), UriKind.Absolute)) + embed.WithThumbnailUrl(before.RealAvatarUrl()); + if (Uri.IsWellFormedUriString(after.RealAvatarUrl(), UriKind.Absolute)) + embed.WithImageUrl(after.RealAvatarUrl()); } else { @@ -412,7 +412,7 @@ namespace NadekoBot.Modules.Administration.Services } logChannel = null; - if (logSetting.LogUserPresenceId != null && (logChannel = await TryGetLogChannel(before.Guild, logSetting, LogType.UserPresence)) != null) + if (!before.IsBot && logSetting.LogUserPresenceId != null && (logChannel = await TryGetLogChannel(before.Guild, logSetting, LogType.UserPresence)) != null) { if (before.Status != after.Status) { @@ -571,7 +571,7 @@ namespace NadekoBot.Modules.Administration.Services try { var usr = iusr as IGuildUser; - if (usr == null) + if (usr == null || usr.IsBot) return; var beforeVch = before.VoiceChannel; @@ -711,8 +711,10 @@ namespace NadekoBot.Modules.Administration.Services var embed = new EmbedBuilder() .WithOkColor() .WithTitle("✅ " + GetText(logChannel.Guild, "user_joined")) - .WithDescription($"{usr}") + .WithDescription($"{usr.Mention} `{usr}`") .AddField(efb => efb.WithName("Id").WithValue(usr.Id.ToString())) + .AddField(fb => fb.WithName(GetText(logChannel.Guild, "joined_server")).WithValue($"{usr.JoinedAt?.ToString("dd.MM.yyyy HH:mm") ?? "?"}").WithIsInline(true)) + .AddField(fb => fb.WithName(GetText(logChannel.Guild, "joined_discord")).WithValue($"{usr.CreatedAt:dd.MM.yyyy HH:mm}").WithIsInline(true)) .WithFooter(efb => efb.WithText(CurrentTime(usr.Guild))); if (Uri.IsWellFormedUriString(usr.GetAvatarUrl(), UriKind.Absolute)) @@ -950,7 +952,7 @@ namespace NadekoBot.Modules.Administration.Services break; } - if (!id.HasValue) + if (!id.HasValue || id == 0) { UnsetLogSetting(guild.Id, logChannelType); return null; @@ -1024,4 +1026,6 @@ namespace NadekoBot.Modules.Administration.Services } } } + } +#endif diff --git a/src/NadekoBot/Modules/Administration/Services/MuteService.cs b/NadekoBot.Core/Modules/Administration/Services/MuteService.cs similarity index 92% rename from src/NadekoBot/Modules/Administration/Services/MuteService.cs rename to NadekoBot.Core/Modules/Administration/Services/MuteService.cs index 77b4136c..c4bc33bd 100644 --- a/src/NadekoBot/Modules/Administration/Services/MuteService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/MuteService.cs @@ -9,8 +9,8 @@ using Discord.WebSocket; using Microsoft.EntityFrameworkCore; using NadekoBot.Common.Collections; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -38,22 +38,25 @@ namespace NadekoBot.Modules.Administration.Services private readonly DiscordSocketClient _client; private readonly DbService _db; - public MuteService(DiscordSocketClient client, IEnumerable gcs, DbService db) + public MuteService(DiscordSocketClient client, NadekoBot bot, DbService db) { _client = client; _db = db; - GuildMuteRoles = gcs - .Where(c => !string.IsNullOrWhiteSpace(c.MuteRoleName)) - .ToDictionary(c => c.GuildId, c => c.MuteRoleName) - .ToConcurrent(); + GuildMuteRoles = bot + .AllGuildConfigs + .Where(c => !string.IsNullOrWhiteSpace(c.MuteRoleName)) + .ToDictionary(c => c.GuildId, c => c.MuteRoleName) + .ToConcurrent(); - MutedUsers = new ConcurrentDictionary>(gcs.ToDictionary( - k => k.GuildId, - v => new ConcurrentHashSet(v.MutedUsers.Select(m => m.UserId)) + MutedUsers = new ConcurrentDictionary>(bot + .AllGuildConfigs + .ToDictionary( + k => k.GuildId, + v => new ConcurrentHashSet(v.MutedUsers.Select(m => m.UserId)) )); - foreach (var conf in gcs) + foreach (var conf in bot.AllGuildConfigs) { foreach (var x in conf.UnmuteTimers) { @@ -189,7 +192,8 @@ namespace NadekoBot.Modules.Administration.Services { try { - if (!toOverwrite.PermissionOverwrites.Select(x => x.Permissions).Contains(denyOverwrite)) + if (!toOverwrite.PermissionOverwrites.Any(x => x.TargetId == muteRole.Id + && x.TargetType == PermissionTarget.Role)) { await toOverwrite.AddPermissionOverwriteAsync(muteRole, denyOverwrite) .ConfigureAwait(false); diff --git a/NadekoBot.Core/Modules/Administration/Services/PackagesService.cs b/NadekoBot.Core/Modules/Administration/Services/PackagesService.cs new file mode 100644 index 00000000..2cfdf377 --- /dev/null +++ b/NadekoBot.Core/Modules/Administration/Services/PackagesService.cs @@ -0,0 +1,31 @@ +//using NadekoBot.Core.Services; +//using System; +//using System.Collections.Generic; +//using System.IO; +//using System.Linq; +//using System.Text.RegularExpressions; + +//namespace NadekoBot.Modules.Administration.Services +//{ +// public class PackagesService : INService +// { +// public IEnumerable Packages { get; private set; } + +// public PackagesService() +// { +// ReloadAvailablePackages(); +// } + +// public void ReloadAvailablePackages() +// { +// Packages = Directory.GetDirectories(Path.Combine(AppContext.BaseDirectory, "modules\\"), "NadekoBot.Modules.*", SearchOption.AllDirectories) +// .SelectMany(x => Directory.GetFiles(x, "NadekoBot.Modules.*.dll")) +// .Select(x => Path.GetFileNameWithoutExtension(x)) +// .Select(x => +// { +// var m = Regex.Match(x, @"NadekoBot\.Modules\.(?.*)"); +// return m.Groups["name"].Value; +// }); +// } +// } +//} diff --git a/src/NadekoBot/Modules/Administration/Services/PlayingRotateService.cs b/NadekoBot.Core/Modules/Administration/Services/PlayingRotateService.cs similarity index 90% rename from src/NadekoBot/Modules/Administration/Services/PlayingRotateService.cs rename to NadekoBot.Core/Modules/Administration/Services/PlayingRotateService.cs index d0cd5eef..50d222c2 100644 --- a/src/NadekoBot/Modules/Administration/Services/PlayingRotateService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/PlayingRotateService.cs @@ -3,11 +3,10 @@ using System.Linq; using System.Threading; using Discord.WebSocket; using NadekoBot.Common.Replacements; -using NadekoBot.Modules.Music.Services; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; -using System.Threading.Tasks; +using NadekoBot.Modules.Music.Services; namespace NadekoBot.Modules.Administration.Services { @@ -15,7 +14,6 @@ namespace NadekoBot.Modules.Administration.Services { private readonly Timer _t; private readonly DiscordSocketClient _client; - private readonly MusicService _music; private readonly Logger _log; private readonly IDataCache _cache; private readonly Replacer _rep; @@ -29,12 +27,11 @@ namespace NadekoBot.Modules.Administration.Services public int Index { get; set; } } - public PlayingRotateService(DiscordSocketClient client, IBotConfigProvider bcp, - MusicService music, DbService db, IDataCache cache, NadekoBot bot) + public PlayingRotateService(DiscordSocketClient client, IBotConfigProvider bcp, + DbService db, IDataCache cache, NadekoBot bot, MusicService music) { _client = client; _bcp = bcp; - _music = music; _db = db; _log = LogManager.GetCurrentClassLogger(); _cache = cache; diff --git a/src/NadekoBot/Modules/Administration/Services/ProtectionService.cs b/NadekoBot.Core/Modules/Administration/Services/ProtectionService.cs similarity index 96% rename from src/NadekoBot/Modules/Administration/Services/ProtectionService.cs rename to NadekoBot.Core/Modules/Administration/Services/ProtectionService.cs index ea65fd3f..22362a45 100644 --- a/src/NadekoBot/Modules/Administration/Services/ProtectionService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/ProtectionService.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Concurrent; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Discord; using Discord.WebSocket; using NadekoBot.Modules.Administration.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -26,13 +25,13 @@ namespace NadekoBot.Modules.Administration.Services private readonly DiscordSocketClient _client; private readonly MuteService _mute; - public ProtectionService(DiscordSocketClient client, IEnumerable gcs, MuteService mute) + public ProtectionService(DiscordSocketClient client, NadekoBot bot, MuteService mute) { _log = LogManager.GetCurrentClassLogger(); _client = client; _mute = mute; - foreach (var gc in gcs) + foreach (var gc in bot.AllGuildConfigs) { var raid = gc.AntiRaidSetting; var spam = gc.AntiSpamSetting; diff --git a/src/NadekoBot/Modules/Administration/Services/PruneService.cs b/NadekoBot.Core/Modules/Administration/Services/PruneService.cs similarity index 98% rename from src/NadekoBot/Modules/Administration/Services/PruneService.cs rename to NadekoBot.Core/Modules/Administration/Services/PruneService.cs index 4f25e3c3..b1da3348 100644 --- a/src/NadekoBot/Modules/Administration/Services/PruneService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/PruneService.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Discord; using NadekoBot.Common.Collections; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; namespace NadekoBot.Modules.Administration.Services { diff --git a/src/NadekoBot/Modules/Administration/Services/RatelimitService.cs b/NadekoBot.Core/Modules/Administration/Services/RatelimitService.cs similarity index 88% rename from src/NadekoBot/Modules/Administration/Services/RatelimitService.cs rename to NadekoBot.Core/Modules/Administration/Services/RatelimitService.cs index 9667d193..68393b01 100644 --- a/src/NadekoBot/Modules/Administration/Services/RatelimitService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/RatelimitService.cs @@ -8,8 +8,8 @@ using Discord.WebSocket; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; using NadekoBot.Modules.Administration.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -23,17 +23,17 @@ namespace NadekoBot.Modules.Administration.Services private readonly Logger _log; private readonly DiscordSocketClient _client; - public SlowmodeService(DiscordSocketClient client, IEnumerable gcs) + public SlowmodeService(DiscordSocketClient client, NadekoBot bot) { _log = LogManager.GetCurrentClassLogger(); _client = client; IgnoredRoles = new ConcurrentDictionary>( - gcs.ToDictionary(x => x.GuildId, + bot.AllGuildConfigs.ToDictionary(x => x.GuildId, x => new HashSet(x.SlowmodeIgnoredRoles.Select(y => y.RoleId)))); IgnoredUsers = new ConcurrentDictionary>( - gcs.ToDictionary(x => x.GuildId, + bot.AllGuildConfigs.ToDictionary(x => x.GuildId, x => new HashSet(x.SlowmodeIgnoredUsers.Select(y => y.UserId)))); } diff --git a/src/NadekoBot/Modules/Administration/Services/SelfService.cs b/NadekoBot.Core/Modules/Administration/Services/SelfService.cs similarity index 87% rename from src/NadekoBot/Modules/Administration/Services/SelfService.cs rename to NadekoBot.Core/Modules/Administration/Services/SelfService.cs index 93699858..157c35e4 100644 --- a/src/NadekoBot/Modules/Administration/Services/SelfService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/SelfService.cs @@ -7,9 +7,10 @@ using Discord.WebSocket; using NadekoBot.Common; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Impl; using NLog; +using StackExchange.Redis; namespace NadekoBot.Modules.Administration.Services { @@ -17,7 +18,8 @@ namespace NadekoBot.Modules.Administration.Services { public bool ForwardDMs => _bc.BotConfig.ForwardMessages; public bool ForwardDMsToAllOwners => _bc.BotConfig.ForwardToAllOwners; - + + private readonly ConnectionMultiplexer _redis; private readonly NadekoBot _bot; private readonly CommandHandler _cmdHandler; private readonly DbService _db; @@ -28,10 +30,13 @@ namespace NadekoBot.Modules.Administration.Services private readonly IBotCredentials _creds; private ImmutableArray> ownerChannels = new ImmutableArray>(); private readonly IBotConfigProvider _bc; + private readonly IImageCache _imgs; public SelfService(DiscordSocketClient client, NadekoBot bot, CommandHandler cmdHandler, DbService db, - IBotConfigProvider bc, ILocalization localization, NadekoStrings strings, IBotCredentials creds) + IBotConfigProvider bc, ILocalization localization, NadekoStrings strings, IBotCredentials creds, + IDataCache cache) { + _redis = cache.Redis; _bot = bot; _cmdHandler = cmdHandler; _db = db; @@ -41,26 +46,33 @@ namespace NadekoBot.Modules.Administration.Services _client = client; _creds = creds; _bc = bc; + _imgs = cache.LocalImages; - var _ = Task.Run(async () => + var sub = _redis.GetSubscriber(); + sub.Subscribe(_creds.RedisKey() + "_reload_images", + delegate { _imgs.Reload(); }, CommandFlags.FireAndForget); + + Task.Run(async () => { await bot.Ready.Task.ConfigureAwait(false); foreach (var cmd in bc.BotConfig.StartupCommands) { + var prefix = _cmdHandler.GetPrefix(cmd.GuildId); + //if someone already has .die as their startup command, ignore it + if (cmd.CommandText.StartsWith(prefix + "die")) + continue; await cmdHandler.ExecuteExternal(cmd.GuildId, cmd.ChannelId, cmd.CommandText); await Task.Delay(400).ConfigureAwait(false); } }); - var ___ = Task.Run(async () => + Task.Run(async () => { await bot.Ready.Task.ConfigureAwait(false); await Task.Delay(5000); - _client.Guilds.SelectMany(g => g.Users); - if(client.ShardId == 0) LoadOwnerChannels(); }); diff --git a/src/NadekoBot/Modules/Administration/Services/UserPunishService.cs b/NadekoBot.Core/Modules/Administration/Services/UserPunishService.cs similarity index 97% rename from src/NadekoBot/Modules/Administration/Services/UserPunishService.cs rename to NadekoBot.Core/Modules/Administration/Services/UserPunishService.cs index 55b886f3..532e3ca3 100644 --- a/src/NadekoBot/Modules/Administration/Services/UserPunishService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/UserPunishService.cs @@ -4,8 +4,8 @@ using System.Linq; using System.Threading.Tasks; using Discord; using Microsoft.EntityFrameworkCore; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Administration.Services { diff --git a/src/NadekoBot/Modules/Administration/Services/VcRoleService.cs b/NadekoBot.Core/Modules/Administration/Services/VcRoleService.cs similarity index 95% rename from src/NadekoBot/Modules/Administration/Services/VcRoleService.cs rename to NadekoBot.Core/Modules/Administration/Services/VcRoleService.cs index 9f4f1b53..01872a9f 100644 --- a/src/NadekoBot/Modules/Administration/Services/VcRoleService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/VcRoleService.cs @@ -5,8 +5,8 @@ using System.Linq; using System.Threading.Tasks; using Discord; using Discord.WebSocket; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Administration.Services public ConcurrentDictionary> VcRoles { get; } - public VcRoleService(DiscordSocketClient client, IEnumerable gcs, DbService db) + public VcRoleService(DiscordSocketClient client, NadekoBot bot, DbService db) { _log = LogManager.GetCurrentClassLogger(); _db = db; @@ -28,7 +28,7 @@ namespace NadekoBot.Modules.Administration.Services _client.UserVoiceStateUpdated += ClientOnUserVoiceStateUpdated; VcRoles = new ConcurrentDictionary>(); var missingRoles = new List(); - foreach (var gconf in gcs) + foreach (var gconf in bot.AllGuildConfigs) { var g = _client.GetGuild(gconf.GuildId); if (g == null) diff --git a/src/NadekoBot/Modules/Administration/Services/VplusTService.cs b/NadekoBot.Core/Modules/Administration/Services/VplusTService.cs similarity index 94% rename from src/NadekoBot/Modules/Administration/Services/VplusTService.cs rename to NadekoBot.Core/Modules/Administration/Services/VplusTService.cs index 9ffd8dcb..36d4ba79 100644 --- a/src/NadekoBot/Modules/Administration/Services/VplusTService.cs +++ b/NadekoBot.Core/Modules/Administration/Services/VplusTService.cs @@ -9,9 +9,9 @@ using Discord; using Discord.WebSocket; using NadekoBot.Common.Collections; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; namespace NadekoBot.Modules.Administration.Services @@ -28,7 +28,7 @@ namespace NadekoBot.Modules.Administration.Services private readonly DbService _db; private readonly Logger _log; - public VplusTService(DiscordSocketClient client, IEnumerable gcs, NadekoStrings strings, + public VplusTService(DiscordSocketClient client, NadekoBot bot, NadekoStrings strings, DbService db) { _client = client; @@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Administration.Services _db = db; _log = LogManager.GetCurrentClassLogger(); - VoicePlusTextCache = new ConcurrentHashSet(gcs.Where(g => g.VoicePlusTextEnabled).Select(g => g.GuildId)); + VoicePlusTextCache = new ConcurrentHashSet(bot.AllGuildConfigs.Where(g => g.VoicePlusTextEnabled).Select(g => g.GuildId)); _client.UserVoiceStateUpdated += UserUpdatedEventHandler; } diff --git a/src/NadekoBot/Modules/Administration/TimeZoneCommands.cs b/NadekoBot.Core/Modules/Administration/TimeZoneCommands.cs similarity index 97% rename from src/NadekoBot/Modules/Administration/TimeZoneCommands.cs rename to NadekoBot.Core/Modules/Administration/TimeZoneCommands.cs index 25d55dd2..3c433973 100644 --- a/src/NadekoBot/Modules/Administration/TimeZoneCommands.cs +++ b/NadekoBot.Core/Modules/Administration/TimeZoneCommands.cs @@ -34,7 +34,7 @@ namespace NadekoBot.Modules.Administration .WithOkColor() .WithTitle(GetText("timezones_available")) .WithDescription(string.Join("\n", timezones.Skip(curPage * timezonesPerPage).Take(timezonesPerPage).Select(x => $"`{x.Id,-25}` {(x.BaseUtcOffset < TimeSpan.Zero? "-" : "+")}{x.BaseUtcOffset:hhmm}"))), - timezones.Length / timezonesPerPage); + timezones.Length, timezonesPerPage); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Administration/UserPunishCommands.cs b/NadekoBot.Core/Modules/Administration/UserPunishCommands.cs similarity index 78% rename from src/NadekoBot/Modules/Administration/UserPunishCommands.cs rename to NadekoBot.Core/Modules/Administration/UserPunishCommands.cs index fbfd813b..6f2de5a7 100644 --- a/src/NadekoBot/Modules/Administration/UserPunishCommands.cs +++ b/NadekoBot.Core/Modules/Administration/UserPunishCommands.cs @@ -3,8 +3,8 @@ using Discord.Commands; using Discord.WebSocket; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; @@ -18,10 +18,15 @@ namespace NadekoBot.Modules.Administration public class UserPunishCommands : NadekoSubmodule { private readonly DbService _db; + private readonly CurrencyService _cs; + private readonly IBotConfigProvider _bc; - public UserPunishCommands(DbService db, MuteService muteService) + public UserPunishCommands(DbService db, MuteService muteService, + CurrencyService cs, IBotConfigProvider bc) { _db = db; + _cs = cs; + _bc = bc; } [NadekoCommand, Usage, Description, Aliases] @@ -29,6 +34,11 @@ namespace NadekoBot.Modules.Administration [RequireUserPermission(GuildPermission.BanMembers)] public async Task Warn(IGuildUser user, [Remainder] string reason = null) { + if (Context.User.Id != user.Guild.OwnerId && (user.GetRoles().Select(r => r.Position).Max() >= ((IGuildUser)Context.User).GetRoles().Select(r => r.Position).Max())) + { + await ReplyErrorLocalized("hierarchy").ConfigureAwait(false); + return; + } try { await (await user.GetOrCreateDMChannelAsync()).EmbedAsync(new EmbedBuilder().WithErrorColor() @@ -96,7 +106,7 @@ namespace NadekoBot.Modules.Administration var embed = new EmbedBuilder().WithOkColor() .WithTitle(GetText("warnlog_for", (Context.Guild as SocketGuild)?.GetUser(userId)?.ToString() ?? userId.ToString())) - .WithFooter(efb => efb.WithText(GetText("page", page + 1))); + .WithFooter(efb => efb.WithText(GetText("page", page + 1))); if (!warnings.Any()) { @@ -149,7 +159,7 @@ namespace NadekoBot.Modules.Administration .WithTitle(GetText("warnings_list")) .WithDescription(string.Join("\n", ws)); - }, warnings.Length / 15); + }, warnings.Length, 15); } [NadekoCommand, Usage, Description, Aliases] @@ -197,8 +207,8 @@ namespace NadekoBot.Modules.Administration uow.Complete(); } - await ReplyConfirmLocalized("warn_punish_set", - Format.Bold(punish.ToString()), + await ReplyConfirmLocalized("warn_punish_set", + Format.Bold(punish.ToString()), Format.Bold(number.ToString())).ConfigureAwait(false); } @@ -276,7 +286,7 @@ namespace NadekoBot.Modules.Administration } } - await Context.Guild.AddBanAsync(user, 7).ConfigureAwait(false); + await Context.Guild.AddBanAsync(user, 7, msg).ConfigureAwait(false); await Context.Channel.EmbedAsync(new EmbedBuilder().WithOkColor() .WithTitle("⛔️ " + GetText("banned_user")) .AddField(efb => efb.WithName(GetText("username")).WithValue(user.ToString()).WithIsInline(true)) @@ -385,13 +395,99 @@ namespace NadekoBot.Modules.Administration catch { } } - await user.KickAsync().ConfigureAwait(false); + await user.KickAsync(msg).ConfigureAwait(false); await Context.Channel.EmbedAsync(new EmbedBuilder().WithOkColor() .WithTitle(GetText("kicked_user")) .AddField(efb => efb.WithName(GetText("username")).WithValue(user.ToString()).WithIsInline(true)) .AddField(efb => efb.WithName("ID").WithValue(user.Id.ToString()).WithIsInline(true))) .ConfigureAwait(false); } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [RequireUserPermission(GuildPermission.BanMembers)] + [RequireBotPermission(GuildPermission.BanMembers)] + [OwnerOnly] + public async Task MassKill([Remainder] string people) + { + if (string.IsNullOrWhiteSpace(people)) + return; + + var gusers = ((SocketGuild)Context.Guild).Users; + //get user objects and reasons + var bans = people.Split("\n") + .Select(x => + { + var split = x.Trim().Split(" "); + + var reason = string.Join(" ", split.Skip(1)); + + if (ulong.TryParse(split[0], out var id)) + return (Original: split[0], Id: id, Reason: reason); + + return (Original: split[0], + Id: gusers + .FirstOrDefault(u => u.ToString().ToLowerInvariant() == x) + ?.Id, + Reason: reason); + }) + .ToArray(); + + //if user is null, means that person couldn't be found + var missing = bans + .Where(x => !x.Id.HasValue) + .ToArray(); + + //get only data for found users + var found = bans + .Where(x => x.Id.HasValue) + .Select(x => x.Id.Value) + .ToArray(); + + var missStr = string.Join("\n", missing); + if (string.IsNullOrWhiteSpace(missStr)) + missStr = "-"; + + //send a message but don't wait for it + var banningMessageTask = Context.Channel.EmbedAsync(new EmbedBuilder() + .WithDescription(GetText("mass_kill_in_progress", bans.Length)) + .AddField(GetText("invalid", missing.Length), missStr) + .WithOkColor()); + + using (var uow = _db.UnitOfWork) + { + var bc = uow.BotConfig.GetOrCreate(set => set.Include(x => x.Blacklist)); + //blacklist the users + bc.Blacklist.AddRange(found.Select(x => + new BlacklistItem + { + ItemId = x, + Type = BlacklistType.User, + })); + //clear their currencies + uow.Currency.RemoveFromMany(found.Select(x => (long)x).ToList()); + uow.Complete(); + } + + _bc.Reload(); + + //do the banning + await Task.WhenAll(bans + .Where(x => x.Id.HasValue) + .Select(x => Context.Guild.AddBanAsync(x.Id.Value, 7, x.Reason, new RequestOptions() { + RetryMode = RetryMode.AlwaysRetry, + }))) + .ConfigureAwait(false); + + //wait for the message and edit it + var banningMessage = await banningMessageTask.ConfigureAwait(false); + + await banningMessage.ModifyAsync(x => x.Embed = new EmbedBuilder() + .WithDescription(GetText("mass_kill_completed", bans.Length)) + .AddField(GetText("invalid", missing.Length), missStr) + .WithOkColor() + .Build()).ConfigureAwait(false); + } } } } diff --git a/src/NadekoBot/Modules/Administration/VcRoleCommands.cs b/NadekoBot.Core/Modules/Administration/VcRoleCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Administration/VcRoleCommands.cs rename to NadekoBot.Core/Modules/Administration/VcRoleCommands.cs index ad0c7feb..0f8940fd 100644 --- a/src/NadekoBot/Modules/Administration/VcRoleCommands.cs +++ b/NadekoBot.Core/Modules/Administration/VcRoleCommands.cs @@ -8,8 +8,8 @@ using Microsoft.EntityFrameworkCore; using NadekoBot.Common.Attributes; using NadekoBot.Extensions; using NadekoBot.Modules.Administration.Services; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Administration { diff --git a/src/NadekoBot/Modules/Administration/VoicePlusTextCommands.cs b/NadekoBot.Core/Modules/Administration/VoicePlusTextCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Administration/VoicePlusTextCommands.cs rename to NadekoBot.Core/Modules/Administration/VoicePlusTextCommands.cs index ee063f8b..26af5560 100644 --- a/src/NadekoBot/Modules/Administration/VoicePlusTextCommands.cs +++ b/NadekoBot.Core/Modules/Administration/VoicePlusTextCommands.cs @@ -1,7 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/NadekoBot.Core/Modules/CustomReactions/CustomReactions.cs similarity index 98% rename from src/NadekoBot/Modules/CustomReactions/CustomReactions.cs rename to NadekoBot.Core/Modules/CustomReactions/CustomReactions.cs index 4902293f..ca380d72 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/NadekoBot.Core/Modules/CustomReactions/CustomReactions.cs @@ -1,8 +1,8 @@ using System.Linq; using System.Threading.Tasks; using Discord.Commands; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using Discord; using NadekoBot.Extensions; using Discord.WebSocket; @@ -152,7 +152,6 @@ namespace NadekoBot.Modules.CustomReactions return; } - var lastPage = customReactions.Length / 20; await Context.Channel.SendPaginatedConfirmAsync(_client, page, curPage => new EmbedBuilder().WithOkColor() .WithTitle(GetText("name")) @@ -171,7 +170,7 @@ namespace NadekoBot.Modules.CustomReactions str = "📪" + str; } return str; - }))), lastPage) + }))), customReactions.Length, 20) .ConfigureAwait(false); } @@ -230,16 +229,15 @@ namespace NadekoBot.Modules.CustomReactions .GroupBy(cr => cr.Trigger) .OrderBy(cr => cr.Key) .ToList(); - - var lastPage = ordered.Count / 20; + await Context.Channel.SendPaginatedConfirmAsync(_client, page, (curPage) => new EmbedBuilder().WithOkColor() .WithTitle(GetText("name")) .WithDescription(string.Join("\r\n", ordered .Skip(curPage * 20) .Take(20) - .Select(cr => $"**{cr.Key.Trim().ToLowerInvariant()}** `x{cr.Count()}`"))), lastPage) - .ConfigureAwait(false); + .Select(cr => $"**{cr.Key.Trim().ToLowerInvariant()}** `x{cr.Count()}`"))), + ordered.Count, 20).ConfigureAwait(false); } } @@ -492,12 +490,12 @@ namespace NadekoBot.Modules.CustomReactions var ordered = _service.ReactionStats.OrderByDescending(x => x.Value).ToArray(); if (!ordered.Any()) return; - var lastPage = ordered.Length / 9; await Context.Channel.SendPaginatedConfirmAsync(_client, page, (curPage) => ordered.Skip(curPage * 9) .Take(9) .Aggregate(new EmbedBuilder().WithOkColor().WithTitle(GetText("stats")), - (agg, cur) => agg.AddField(efb => efb.WithName(cur.Key).WithValue(cur.Value.ToString()).WithIsInline(true))), lastPage) + (agg, cur) => agg.AddField(efb => efb.WithName(cur.Key).WithValue(cur.Value.ToString()).WithIsInline(true))), + ordered.Length, 9) .ConfigureAwait(false); } } diff --git a/src/NadekoBot/Modules/CustomReactions/Extensions/Extensions.cs b/NadekoBot.Core/Modules/CustomReactions/Extensions/Extensions.cs similarity index 83% rename from src/NadekoBot/Modules/CustomReactions/Extensions/Extensions.cs rename to NadekoBot.Core/Modules/CustomReactions/Extensions/Extensions.cs index f24effb1..b88fd3c0 100644 --- a/src/NadekoBot/Modules/CustomReactions/Extensions/Extensions.cs +++ b/NadekoBot.Core/Modules/CustomReactions/Extensions/Extensions.cs @@ -2,16 +2,16 @@ using AngleSharp.Dom.Html; using Discord; using Discord.WebSocket; +using NadekoBot.Common; +using NadekoBot.Common.Replacements; +using NadekoBot.Core.Services.Database.Models; using NadekoBot.Extensions; using NadekoBot.Modules.CustomReactions.Services; -using NadekoBot.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; -using NadekoBot.Common; -using NadekoBot.Common.Replacements; namespace NadekoBot.Modules.CustomReactions.Extensions { @@ -89,7 +89,7 @@ namespace NadekoBot.Modules.CustomReactions.Extensions public static string TriggerWithContext(this CustomReaction cr, IUserMessage ctx, DiscordSocketClient client) => cr.Trigger.ResolveTriggerString(ctx, client); - public static Task ResponseWithContextAsync(this CustomReaction cr, IUserMessage ctx, DiscordSocketClient client, bool containsAnywhere) + public static Task ResponseWithContextAsync(this CustomReaction cr, IUserMessage ctx, DiscordSocketClient client, bool containsAnywhere) => cr.Response.ResolveResponseStringAsync(ctx, client, cr.Trigger.ResolveTriggerString(ctx, client), containsAnywhere); public static async Task Send(this CustomReaction cr, IUserMessage ctx, DiscordSocketClient client, CustomReactionsService crs) @@ -127,14 +127,35 @@ namespace NadekoBot.Modules.CustomReactions.Extensions public static WordPosition GetWordPosition(this string str, string word) { - if (str.StartsWith(word + " ")) - return WordPosition.Start; - else if (str.EndsWith(" " + word)) - return WordPosition.End; - else if (str.Contains(" " + word + " ")) - return WordPosition.Middle; - else + var wordIndex = str.IndexOf(word); + if (wordIndex == -1) return WordPosition.None; + + if (wordIndex == 0) + { + if (word.Length < str.Length && str.isValidWordDivider(word.Length)) + return WordPosition.Start; + } + else if ((wordIndex + word.Length) == str.Length) + { + if (str.isValidWordDivider(wordIndex - 1)) + return WordPosition.End; + } + else if (str.isValidWordDivider(wordIndex - 1) && str.isValidWordDivider(wordIndex + word.Length)) + return WordPosition.Middle; + + return WordPosition.None; + } + + private static bool isValidWordDivider(this string str, int index) + { + var ch = str[index]; + if (ch >= 'a' && ch <= 'z') + return false; + if (ch >= 'A' && ch <= 'Z') + return false; + + return true; } } @@ -145,4 +166,4 @@ namespace NadekoBot.Modules.CustomReactions.Extensions Middle, End, } -} +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/CustomReactions/Services/CustomReactionsService.cs b/NadekoBot.Core/Modules/CustomReactions/Services/CustomReactionsService.cs similarity index 98% rename from src/NadekoBot/Modules/CustomReactions/Services/CustomReactionsService.cs rename to NadekoBot.Core/Modules/CustomReactions/Services/CustomReactionsService.cs index f45bcb53..08cd3a25 100644 --- a/src/NadekoBot/Modules/CustomReactions/Services/CustomReactionsService.cs +++ b/NadekoBot.Core/Modules/CustomReactions/Services/CustomReactionsService.cs @@ -1,6 +1,6 @@ using Discord; using Discord.WebSocket; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NLog; using System.Collections.Concurrent; using System.Linq; @@ -9,12 +9,12 @@ using System.Threading.Tasks; using NadekoBot.Common; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; -using NadekoBot.Services.Database; -using NadekoBot.Services; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services; using NadekoBot.Modules.CustomReactions.Extensions; using NadekoBot.Modules.Permissions.Common; using NadekoBot.Modules.Permissions.Services; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; using Newtonsoft.Json; namespace NadekoBot.Modules.CustomReactions.Services diff --git a/src/NadekoBot/Modules/Gambling/AnimalRacingCommands.cs b/NadekoBot.Core/Modules/Gambling/AnimalRacingCommands.cs similarity index 92% rename from src/NadekoBot/Modules/Gambling/AnimalRacingCommands.cs rename to NadekoBot.Core/Modules/Gambling/AnimalRacingCommands.cs index 2802e6e1..b5c130bf 100644 --- a/src/NadekoBot/Modules/Gambling/AnimalRacingCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/AnimalRacingCommands.cs @@ -2,29 +2,26 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; -using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Gambling.Common.AnimalRacing.Exceptions; using NadekoBot.Modules.Gambling.Common.AnimalRacing; +using NadekoBot.Modules.Gambling.Services; namespace NadekoBot.Modules.Gambling { public partial class Gambling { [Group] - public class AnimalRacingCommands : NadekoSubmodule + public class AnimalRacingCommands : NadekoSubmodule { private readonly IBotConfigProvider _bc; private readonly CurrencyService _cs; private readonly DiscordSocketClient _client; - - public static ConcurrentDictionary AnimalRaces { get; } = new ConcurrentDictionary(); - public AnimalRacingCommands(IBotConfigProvider bc, CurrencyService cs, DiscordSocketClient client) { _bc = bc; @@ -39,7 +36,7 @@ namespace NadekoBot.Modules.Gambling public Task Race() { var ar = new AnimalRace(_cs, _bc.BotConfig.RaceAnimals.Shuffle().ToArray()); - if (!AnimalRaces.TryAdd(Context.Guild.Id, ar)) + if (!_service.AnimalRaces.TryAdd(Context.Guild.Id, ar)) return Context.Channel.SendErrorAsync(GetText("animal_race"), GetText("animal_race_already_started")); ar.Initialize(); @@ -66,7 +63,7 @@ namespace NadekoBot.Modules.Gambling Task Ar_OnEnded(AnimalRace race) { _client.MessageReceived -= _client_MessageReceived; - AnimalRaces.TryRemove(Context.Guild.Id, out _); + _service.AnimalRaces.TryRemove(Context.Guild.Id, out _); var winner = race.FinishedUsers[0]; if (race.FinishedUsers[0].Bet > 0) { @@ -126,7 +123,7 @@ namespace NadekoBot.Modules.Gambling private Task Ar_OnStartingFailed(AnimalRace race) { - AnimalRaces.TryRemove(Context.Guild.Id, out _); + _service.AnimalRaces.TryRemove(Context.Guild.Id, out _); return ReplyErrorLocalized("animal_race_failed"); } @@ -134,7 +131,7 @@ namespace NadekoBot.Modules.Gambling [RequireContext(ContextType.Guild)] public async Task JoinRace(int amount = 0) { - if (!AnimalRaces.TryGetValue(Context.Guild.Id, out var ar)) + if (!_service.AnimalRaces.TryGetValue(Context.Guild.Id, out var ar)) { await ReplyErrorLocalized("race_not_exist").ConfigureAwait(false); return; diff --git a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/AnimalRace.cs b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/AnimalRace.cs similarity index 98% rename from src/NadekoBot/Modules/Gambling/Common/AnimalRacing/AnimalRace.cs rename to NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/AnimalRace.cs index bf1c51ac..0edbb918 100644 --- a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/AnimalRace.cs +++ b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/AnimalRace.cs @@ -1,8 +1,8 @@ using NadekoBot.Common; using NadekoBot.Extensions; using NadekoBot.Modules.Gambling.Common.AnimalRacing.Exceptions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/AnimalRacingUser.cs b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/AnimalRacingUser.cs similarity index 94% rename from src/NadekoBot/Modules/Gambling/Common/AnimalRacing/AnimalRacingUser.cs rename to NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/AnimalRacingUser.cs index ea9bc453..38d45ba5 100644 --- a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/AnimalRacingUser.cs +++ b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/AnimalRacingUser.cs @@ -1,4 +1,4 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Gambling.Common.AnimalRacing { diff --git a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyJoinedException.cs b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyJoinedException.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyJoinedException.cs rename to NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyJoinedException.cs diff --git a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyStartedException.cs b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyStartedException.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyStartedException.cs rename to NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/AlreadyStartedException.cs diff --git a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/AnimalRaceFullException.cs b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/AnimalRaceFullException.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/AnimalRaceFullException.cs rename to NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/AnimalRaceFullException.cs diff --git a/src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/NotEnoughFundsException.cs b/NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/NotEnoughFundsException.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/Common/AnimalRacing/Exceptions/NotEnoughFundsException.cs rename to NadekoBot.Core/Modules/Gambling/Common/AnimalRacing/Exceptions/NotEnoughFundsException.cs diff --git a/src/NadekoBot/Modules/Gambling/Common/Cards.cs b/NadekoBot.Core/Modules/Gambling/Common/Cards.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/Common/Cards.cs rename to NadekoBot.Core/Modules/Gambling/Common/Cards.cs diff --git a/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/CurrencyEvent.cs b/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/CurrencyEvent.cs new file mode 100644 index 00000000..92dc6e7a --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/CurrencyEvent.cs @@ -0,0 +1,12 @@ +using Discord; +using Discord.Commands; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Gambling.Common +{ + public abstract class CurrencyEvent + { + public abstract Task Stop(); + public abstract Task Start(IUserMessage msg, ICommandContext channel); + } +} diff --git a/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/ReactionEvent.cs b/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/ReactionEvent.cs new file mode 100644 index 00000000..1c13dd9b --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/ReactionEvent.cs @@ -0,0 +1,144 @@ +using Discord; +using Discord.Commands; +using Discord.WebSocket; +using NadekoBot.Common.Collections; +using NadekoBot.Extensions; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NLog; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Gambling.Common +{ + public class ReactionEvent : CurrencyEvent + { + private readonly ConcurrentHashSet _reactionAwardedUsers = new ConcurrentHashSet(); + private readonly BotConfig _bc; + private readonly Logger _log; + private readonly DiscordSocketClient _client; + private readonly CurrencyService _cs; + private readonly SocketSelfUser _botUser; + + private IUserMessage StartingMessage { get; set; } + + private CancellationTokenSource Source { get; } + private CancellationToken CancelToken { get; } + + private readonly ConcurrentQueue _toGiveTo = new ConcurrentQueue(); + private readonly int _amount; + + public ReactionEvent(BotConfig bc, DiscordSocketClient client, CurrencyService cs, int amount) + { + _bc = bc; + _log = LogManager.GetCurrentClassLogger(); + _client = client; + _cs = cs; + _botUser = client.CurrentUser; + _amount = amount; + Source = new CancellationTokenSource(); + CancelToken = Source.Token; + + var _ = Task.Run(async () => + { + var users = new List(); + while (!CancelToken.IsCancellationRequested) + { + await Task.Delay(1000).ConfigureAwait(false); + while (_toGiveTo.TryDequeue(out var usrId)) + { + users.Add(usrId); + } + + if (users.Count > 0) + { + await _cs.AddToManyAsync("Reaction Event", _amount, users.ToArray()).ConfigureAwait(false); + } + + users.Clear(); + } + }, CancelToken); + } + + public override async Task Stop() + { + if (StartingMessage != null) + await StartingMessage.DeleteAsync().ConfigureAwait(false); + + if (!Source.IsCancellationRequested) + Source.Cancel(); + + _client.MessageDeleted -= MessageDeletedEventHandler; + } + + private Task MessageDeletedEventHandler(Cacheable msg, ISocketMessageChannel channel) + { + if (StartingMessage?.Id == msg.Id) + { + _log.Warn("Stopping flower reaction event because message is deleted."); + var __ = Task.Run(Stop); + } + + return Task.CompletedTask; + } + + public override async Task Start(IUserMessage umsg, ICommandContext context) + { + StartingMessage = umsg; + _client.MessageDeleted += MessageDeletedEventHandler; + + IEmote iemote; + if (Emote.TryParse(_bc.CurrencySign, out var emote)) + { + iemote = emote; + } + else + iemote = new Emoji(_bc.CurrencySign); + try { await StartingMessage.AddReactionAsync(iemote).ConfigureAwait(false); } + catch + { + try { await StartingMessage.AddReactionAsync(iemote).ConfigureAwait(false); } + catch + { + try { await StartingMessage.DeleteAsync().ConfigureAwait(false); } + catch { return; } + } + } + using (StartingMessage.OnReaction(_client, (r) => + { + try + { + if (r.UserId == _botUser.Id) + return; + + if (r.Emote.Name == iemote.Name && r.User.IsSpecified && ((DateTime.UtcNow - r.User.Value.CreatedAt).TotalDays > 5) && _reactionAwardedUsers.Add(r.User.Value.Id)) + { + _toGiveTo.Enqueue(r.UserId); + } + } + catch + { + // ignored + } + })) + { + try + { + await Task.Delay(TimeSpan.FromHours(24), CancelToken).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + + } + if (CancelToken.IsCancellationRequested) + return; + + _log.Warn("Stopping flower reaction event because it expired."); + await Stop(); + } + } + } +} diff --git a/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/SneakyEvent.cs b/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/SneakyEvent.cs new file mode 100644 index 00000000..07ec808e --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Common/CurrencyEvents/SneakyEvent.cs @@ -0,0 +1,99 @@ +using Discord; +using Discord.Commands; +using Discord.WebSocket; +using NadekoBot.Common; +using NadekoBot.Common.Collections; +using NadekoBot.Core.Services; +using System; +using System.Linq; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Gambling.Common.CurrencyEvents +{ + public class SneakyEvent : CurrencyEvent + { + public event Action OnEnded; + public string Code { get; private set; } = string.Empty; + private readonly ConcurrentHashSet _sneakyGameAwardedUsers = new ConcurrentHashSet(); + + private readonly char[] _sneakyGameStatusChars = Enumerable.Range(48, 10) + .Concat(Enumerable.Range(65, 26)) + .Concat(Enumerable.Range(97, 26)) + .Select(x => (char)x) + .ToArray(); + + private readonly CurrencyService _cs; + private readonly DiscordSocketClient _client; + private readonly IBotConfigProvider _bc; + private readonly int _length; + + public SneakyEvent(CurrencyService cs, DiscordSocketClient client, + IBotConfigProvider bc, int len) + { + _cs = cs; + _client = client; + _bc = bc; + _length = len; + } + + public override async Task Start(IUserMessage msg, ICommandContext channel) + { + GenerateCode(); + + //start the event + _client.MessageReceived += SneakyGameMessageReceivedEventHandler; + await _client.SetGameAsync($"type {Code} for " + _bc.BotConfig.CurrencyPluralName) + .ConfigureAwait(false); + await Task.Delay(_length * 1000).ConfigureAwait(false); + await Stop().ConfigureAwait(false); + } + + private void GenerateCode() + { + var rng = new NadekoRandom(); + + for (var i = 0; i < 5; i++) + { + Code += _sneakyGameStatusChars[rng.Next(0, _sneakyGameStatusChars.Length)]; + } + } + + public override async Task Stop() + { + try + { + _client.MessageReceived -= SneakyGameMessageReceivedEventHandler; + Code = string.Empty; + _sneakyGameAwardedUsers.Clear(); + await _client.SetGameAsync(null).ConfigureAwait(false); + } + catch { } + finally + { + + OnEnded?.Invoke(); + } + } + + private Task SneakyGameMessageReceivedEventHandler(SocketMessage arg) + { + if (arg.Content == Code && + _sneakyGameAwardedUsers.Add(arg.Author.Id)) + { + var _ = Task.Run(async () => + { + await _cs.AddAsync(arg.Author, "Sneaky Game Event", 100, false) + .ConfigureAwait(false); + + try { await arg.DeleteAsync(new RequestOptions() { RetryMode = RetryMode.AlwaysFail }).ConfigureAwait(false); } + catch + { + // ignored + } + }); + } + + return Task.CompletedTask; + } + } +} diff --git a/NadekoBot.Core/Modules/Gambling/Common/CurrencyRaffleGame.cs b/NadekoBot.Core/Modules/Gambling/Common/CurrencyRaffleGame.cs new file mode 100644 index 00000000..7e13b9f8 --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Common/CurrencyRaffleGame.cs @@ -0,0 +1,85 @@ +using Discord; +using NadekoBot.Common; +using NLog; +using System.Collections.Generic; +using System.Linq; + +namespace NadekoBot.Core.Modules.Gambling.Common +{ + public class CurrencyRaffleGame + { + public enum Type { + Mixed, + Normal + } + + public class User + { + public IUser DiscordUser { get; set; } + public int Amount { get; set; } + + public override int GetHashCode() + { + return DiscordUser.GetHashCode(); + } + + public override bool Equals(object obj) + { + return obj is User u + ? u.DiscordUser == DiscordUser + : false; + } + } + + private readonly HashSet _users = new HashSet(); + public IEnumerable Users => _users; + public Type GameType { get; } + private readonly Logger _log; + + public CurrencyRaffleGame(Type type) + { + GameType = type; + _log = LogManager.GetCurrentClassLogger(); + } + + public bool AddUser(IUser usr, int amount) + { + // if game type is normal, and someone already joined the game + // (that's the user who created it) + if (GameType == Type.Normal && _users.Count > 0 && + _users.First().Amount != amount) + return false; + + if (!_users.Add(new User + { + DiscordUser = usr, + Amount = amount, + })) + { + return false; + } + + return true; + } + + public User GetWinner() + { + var rng = new NadekoRandom(); + if (GameType == Type.Mixed) + { + var num = rng.Next(0, Users.Sum(x => x.Amount)); + var sum = 0; + foreach (var u in Users) + { + sum += u.Amount; + if (sum > num) + return u; + } + _log.Error("Woah. Report this.\nRoll: {0}\nAmounts: {1}", num, string.Join(",", Users.Select(x => x.Amount))); + } + + var usrs = _users.ToArray(); + return usrs[rng.Next(0, usrs.Length)]; + } + } +} diff --git a/src/NadekoBot/Modules/Gambling/Common/WheelOfFortune/WheelOfFortune.cs b/NadekoBot.Core/Modules/Gambling/Common/WheelOfFortune/WheelOfFortune.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/Common/WheelOfFortune/WheelOfFortune.cs rename to NadekoBot.Core/Modules/Gambling/Common/WheelOfFortune/WheelOfFortune.cs diff --git a/NadekoBot.Core/Modules/Gambling/CurrencyEventsCommands.cs b/NadekoBot.Core/Modules/Gambling/CurrencyEventsCommands.cs new file mode 100644 index 00000000..0c54165d --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/CurrencyEventsCommands.cs @@ -0,0 +1,91 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Extensions; +using NadekoBot.Core.Services; +using System.Threading.Tasks; +using Discord.WebSocket; +using NadekoBot.Common.Attributes; +using NadekoBot.Modules.Gambling.Common; +using NadekoBot.Modules.Gambling.Services; +using NadekoBot.Modules.Gambling.Common.CurrencyEvents; + +namespace NadekoBot.Modules.Gambling +{ + public partial class Gambling + { + [Group] + public class CurrencyEventsCommands : NadekoSubmodule + { + public enum CurrencyEvent + { + Reaction, + SneakyGameStatus + } + + private readonly DiscordSocketClient _client; + private readonly IBotConfigProvider _bc; + private readonly CurrencyService _cs; + + public CurrencyEventsCommands(DiscordSocketClient client, IBotConfigProvider bc, CurrencyService cs) + { + _client = client; + _bc = bc; + _cs = cs; + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task StartEvent(CurrencyEvent e, int arg = -1) + { + switch (e) + { + case CurrencyEvent.Reaction: + await ReactionEvent(Context, arg).ConfigureAwait(false); + break; + case CurrencyEvent.SneakyGameStatus: + await SneakyGameStatusEvent(Context, arg).ConfigureAwait(false); + break; + } + } + + private async Task SneakyGameStatusEvent(ICommandContext context, int num) + { + if (num < 10 || num > 600) + num = 60; + + var ev = new SneakyEvent(_cs, _client, _bc, num); + if (!await _service.StartSneakyEvent(ev, context.Message, context)) + return; + try + { + var title = GetText("sneakygamestatus_title"); + var desc = GetText("sneakygamestatus_desc", + Format.Bold(100.ToString()) + _bc.BotConfig.CurrencySign, + Format.Bold(num.ToString())); + await context.Channel.SendConfirmAsync(title, desc) + .ConfigureAwait(false); + } + catch + { + // ignored + } + } + + public async Task ReactionEvent(ICommandContext context, int amount) + { + if (amount <= 0) + amount = 100; + + var title = GetText("reaction_title"); + var desc = GetText("reaction_desc", _bc.BotConfig.CurrencySign, Format.Bold(amount.ToString()) + _bc.BotConfig.CurrencySign); + var footer = GetText("reaction_footer", 24); + var re = new ReactionEvent(_bc.BotConfig, _client, _cs, amount); + var msg = await context.Channel.SendConfirmAsync(title, + desc, footer: footer) + .ConfigureAwait(false); + await re.Start(msg, context); + } + } + } +} diff --git a/NadekoBot.Core/Modules/Gambling/CurrencyRaffleCommands.cs b/NadekoBot.Core/Modules/Gambling/CurrencyRaffleCommands.cs new file mode 100644 index 00000000..31043fda --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/CurrencyRaffleCommands.cs @@ -0,0 +1,62 @@ +using NadekoBot.Common.Attributes; +using NadekoBot.Core.Modules.Gambling.Services; +using System.Threading.Tasks; +using Discord; +using NadekoBot.Core.Services; +using NadekoBot.Extensions; +using System.Linq; +using Discord.Commands; + +namespace NadekoBot.Modules.Gambling +{ + public partial class Gambling + { + public class CurrencyRaffleCommands : NadekoSubmodule + { + private readonly IBotConfigProvider _bc; + + public CurrencyRaffleCommands(IBotConfigProvider bc) + { + _bc = bc; + } + + public enum Mixed { Mixed } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [Priority(0)] + public Task RaffleCur(Mixed _, int amount) => + RaffleCur(amount, true); + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [Priority(1)] + public async Task RaffleCur(int amount, bool mixed = false) + { + if (amount < 1) + return; + async Task OnEnded(IUser arg, int won) + { + await Context.Channel.SendConfirmAsync(GetText("rafflecur_ended", _bc.BotConfig.CurrencyName, Format.Bold(arg.ToString()), won + _bc.BotConfig.CurrencySign)); + } + var res = await _service.JoinOrCreateGame(Context.Channel.Id, + Context.User, amount, mixed, OnEnded) + .ConfigureAwait(false); + + if (res.Item1 != null) + { + await Context.Channel.SendConfirmAsync(GetText("rafflecur", res.Item1.GameType.ToString()), + string.Join("\n", res.Item1.Users.Select(x => $"{x.DiscordUser} ({x.Amount})")), + footer: GetText("rafflecur_joined", Context.User.ToString())).ConfigureAwait(false); + } + else + { + if (res.Item2 == CurrencyRaffleService.JoinErrorType.AlreadyJoinedOrInvalidAmount) + await ReplyErrorLocalized("rafflecur_already_joined").ConfigureAwait(false); + else if (res.Item2 == CurrencyRaffleService.JoinErrorType.NotEnoughCurrency) + await ReplyErrorLocalized("not_enough", _bc.BotConfig.CurrencySign).ConfigureAwait(false); + } + } + } + } +} diff --git a/src/NadekoBot/Modules/Gambling/DiceRollCommands.cs b/NadekoBot.Core/Modules/Gambling/DiceRollCommands.cs similarity index 91% rename from src/NadekoBot/Modules/Gambling/DiceRollCommands.cs rename to NadekoBot.Core/Modules/Gambling/DiceRollCommands.cs index cb2c3b3c..550a9cb9 100644 --- a/src/NadekoBot/Modules/Gambling/DiceRollCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/DiceRollCommands.cs @@ -1,7 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Collections.Generic; using System.IO; @@ -20,18 +20,17 @@ namespace NadekoBot.Modules.Gambling [Group] public class DriceRollCommands : NadekoSubmodule { - private readonly Regex dndRegex = new Regex(@"^(?\d+)d(?\d+)(?:\+(?\d+))?(?:\-(?\d+))?$", RegexOptions.Compiled); - private readonly Regex fudgeRegex = new Regex(@"^(?\d+)d(?:F|f)$", RegexOptions.Compiled); + private static readonly Regex dndRegex = new Regex(@"^(?\d+)d(?\d+)(?:\+(?\d+))?(?:\-(?\d+))?$", RegexOptions.Compiled); + private static readonly Regex fudgeRegex = new Regex(@"^(?\d+)d(?:F|f)$", RegexOptions.Compiled); - private readonly char[] _fateRolls = { '-', ' ', '+' }; - private readonly IImagesService _images; + private static readonly char[] _fateRolls = { '-', ' ', '+' }; + private readonly IImageCache _images; - public DriceRollCommands(IImagesService images) + public DriceRollCommands(IDataCache data) { - _images = images; + _images = data.LocalImages; } - [NadekoCommand, Usage, Description, Aliases] public async Task Roll() { @@ -141,10 +140,8 @@ namespace NadekoBot.Modules.Gambling private async Task InternallDndRoll(string arg, bool ordered) { Match match; - int n1; - int n2; if ((match = fudgeRegex.Match(arg)).Length != 0 && - int.TryParse(match.Groups["n1"].ToString(), out n1) && + int.TryParse(match.Groups["n1"].ToString(), out int n1) && n1 > 0 && n1 < 500) { var rng = new NadekoRandom(); @@ -164,13 +161,11 @@ namespace NadekoBot.Modules.Gambling { var rng = new NadekoRandom(); if (int.TryParse(match.Groups["n1"].ToString(), out n1) && - int.TryParse(match.Groups["n2"].ToString(), out n2) && + int.TryParse(match.Groups["n2"].ToString(), out int n2) && n1 <= 50 && n2 <= 100000 && n1 > 0 && n2 > 0) { - var add = 0; - var sub = 0; - int.TryParse(match.Groups["add"].Value, out add); - int.TryParse(match.Groups["sub"].Value, out sub); + int.TryParse(match.Groups["add"].Value, out int add); + int.TryParse(match.Groups["sub"].Value, out int sub); var arr = new int[n1]; for (int i = 0; i < n1; i++) @@ -179,7 +174,7 @@ namespace NadekoBot.Modules.Gambling } var sum = arr.Sum(); - var embed = new EmbedBuilder().WithOkColor().WithDescription(Context.User.Mention + " " +GetText("dice_rolled_num", n1) + $"`1 - {n2}`") + var embed = new EmbedBuilder().WithOkColor().WithDescription(Context.User.Mention + " " + GetText("dice_rolled_num", n1) + $"`1 - {n2}`") .AddField(efb => efb.WithName(Format.Bold("Rolls")) .WithValue(string.Join(" ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => Format.Code(x.ToString()))))) .AddField(efb => efb.WithName(Format.Bold("Sum")) diff --git a/src/NadekoBot/Modules/Gambling/DrawCommands.cs b/NadekoBot.Core/Modules/Gambling/DrawCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Gambling/DrawCommands.cs rename to NadekoBot.Core/Modules/Gambling/DrawCommands.cs diff --git a/src/NadekoBot/Modules/Gambling/FlipCoinCommands.cs b/NadekoBot.Core/Modules/Gambling/FlipCoinCommands.cs similarity index 84% rename from src/NadekoBot/Modules/Gambling/FlipCoinCommands.cs rename to NadekoBot.Core/Modules/Gambling/FlipCoinCommands.cs index 96e69acf..3bb6c01b 100644 --- a/src/NadekoBot/Modules/Gambling/FlipCoinCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/FlipCoinCommands.cs @@ -1,7 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -17,17 +17,19 @@ namespace NadekoBot.Modules.Gambling [Group] public class FlipCoinCommands : NadekoSubmodule { - private readonly IImagesService _images; + private readonly IImageCache _images; private readonly IBotConfigProvider _bc; private readonly CurrencyService _cs; + private readonly DbService _db; + private static readonly NadekoRandom rng = new NadekoRandom(); - private readonly NadekoRandom rng = new NadekoRandom(); - - public FlipCoinCommands(IImagesService images, CurrencyService cs, IBotConfigProvider bc) + public FlipCoinCommands(IDataCache data, CurrencyService cs, + IBotConfigProvider bc, DbService db) { - _images = images; + _images = data.LocalImages; _bc = bc; _cs = cs; + _db = db; } [NadekoCommand, Usage, Description, Aliases] @@ -86,7 +88,18 @@ namespace NadekoBot.Modules.Gambling } [NadekoCommand, Usage, Description, Aliases] - public async Task Betflip(int amount, BetFlipGuess guess) + public Task Betflip(Allin _, BetFlipGuess guess) + { + long cur; + using (var uow = _db.UnitOfWork) + { + cur = uow.Currency.GetUserCurrency(Context.User.Id); + } + return Betflip(cur, guess); + } + + [NadekoCommand, Usage, Description, Aliases] + public async Task Betflip(long amount, BetFlipGuess guess) { if (amount < _bc.BotConfig.MinimumBetAmount) { diff --git a/src/NadekoBot/Modules/Gambling/FlowerShopCommands.cs b/NadekoBot.Core/Modules/Gambling/FlowerShopCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Gambling/FlowerShopCommands.cs rename to NadekoBot.Core/Modules/Gambling/FlowerShopCommands.cs index 6f50b7c3..27faf749 100644 --- a/src/NadekoBot/Modules/Gambling/FlowerShopCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/FlowerShopCommands.cs @@ -3,8 +3,8 @@ using Discord.Commands; using Discord.WebSocket; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; @@ -73,7 +73,7 @@ namespace NadekoBot.Modules.Gambling embed.AddField(efb => efb.WithName($"#{curPage * 9 + i + 1} - {entry.Price}{_bc.BotConfig.CurrencySign}").WithValue(EntryToString(entry)).WithIsInline(true)); } return embed; - }, entries.Count / 9, true); + }, entries.Count, 9, true); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/NadekoBot.Core/Modules/Gambling/Gambling.cs similarity index 67% rename from src/NadekoBot/Modules/Gambling/Gambling.cs rename to NadekoBot.Core/Modules/Gambling/Gambling.cs index 2ecda7d7..8a70d855 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/NadekoBot.Core/Modules/Gambling/Gambling.cs @@ -3,11 +3,12 @@ using Discord.Commands; using NadekoBot.Extensions; using System.Linq; using System.Threading.Tasks; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using NadekoBot.Common; using NadekoBot.Common.Attributes; +using System; namespace NadekoBot.Modules.Gambling { @@ -15,17 +16,20 @@ namespace NadekoBot.Modules.Gambling { private readonly IBotConfigProvider _bc; private readonly DbService _db; - private readonly CurrencyService _currency; + private readonly CurrencyService _cs; + private readonly IDataCache _cache; private string CurrencyName => _bc.BotConfig.CurrencyName; private string CurrencyPluralName => _bc.BotConfig.CurrencyPluralName; private string CurrencySign => _bc.BotConfig.CurrencySign; - public Gambling(IBotConfigProvider bc, DbService db, CurrencyService currency) + public Gambling(IBotConfigProvider bc, DbService db, CurrencyService currency, + IDataCache cache) { _bc = bc; _db = db; - _currency = currency; + _cs = currency; + _cache = cache; } public long GetCurrency(ulong id) @@ -36,6 +40,57 @@ namespace NadekoBot.Modules.Gambling } } + [NadekoCommand, Usage, Description, Aliases] + public async Task Timely() + { + var val = _bc.BotConfig.TimelyCurrency; + var period = _bc.BotConfig.TimelyCurrencyPeriod; + if (val <= 0 || period <= 0) + { + await ReplyErrorLocalized("timely_none").ConfigureAwait(false); + return; + } + + TimeSpan? rem; + if ((rem = _cache.AddTimelyClaim(Context.User.Id, period)) != null) + { + await ReplyErrorLocalized("timely_already_claimed", rem?.ToString(@"dd\d\ hh\h\ mm\m\ ss\s")).ConfigureAwait(false); + return; + } + + await _cs.AddAsync(Context.User.Id, "Timely claim", val).ConfigureAwait(false); + + await ReplyConfirmLocalized("timely", val + _bc.BotConfig.CurrencySign, period).ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public async Task TimelyReset() + { + _cache.RemoveAllTimelyClaims(); + await ReplyConfirmLocalized("timely_reset").ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public async Task TimelySet(int num, int period = 24) + { + if (num < 0 || period < 0) + return; + using (var uow = _db.UnitOfWork) + { + var bc = uow.BotConfig.GetOrCreate(set => set); + bc.TimelyCurrency = num; + bc.TimelyCurrencyPeriod = period; + uow.Complete(); + } + _bc.Reload(); + if(num == 0) + await ReplyConfirmLocalized("timely_set_none").ConfigureAwait(false); + else + await ReplyConfirmLocalized("timely_set", Format.Bold(num + _bc.BotConfig.CurrencySign), Format.Bold(period.ToString())).ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Raffle([Remainder] IRole role = null) @@ -46,12 +101,28 @@ namespace NadekoBot.Modules.Gambling var membersArray = members as IUser[] ?? members.ToArray(); if (membersArray.Length == 0) { - + return; } var usr = membersArray[new NadekoRandom().Next(0, membersArray.Length)]; await Context.Channel.SendConfirmAsync("🎟 "+ GetText("raffled_user"), $"**{usr.Username}#{usr.Discriminator}**", footer: $"ID: {usr.Id}").ConfigureAwait(false); } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task RaffleAny([Remainder] IRole role = null) + { + role = role ?? Context.Guild.EveryoneRole; + + var members = (await role.GetMembersAsync()); + var membersArray = members as IUser[] ?? members.ToArray(); + if (membersArray.Length == 0) + { + return; + } + var usr = membersArray[new NadekoRandom().Next(0, membersArray.Length)]; + await Context.Channel.SendConfirmAsync("🎟 " + GetText("raffled_user"), $"**{usr.Username}#{usr.Discriminator}**", footer: $"ID: {usr.Id}").ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] [Priority(1)] public async Task Cash([Remainder] IUser user = null) @@ -75,13 +146,13 @@ namespace NadekoBot.Modules.Gambling { if (amount <= 0 || Context.User.Id == receiver.Id) return; - var success = await _currency.RemoveAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, false).ConfigureAwait(false); + var success = await _cs.RemoveAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, false).ConfigureAwait(false); if (!success) { await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false); return; } - await _currency.AddAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false); + await _cs.AddAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false); await ReplyConfirmLocalized("gifted", amount + CurrencySign, Format.Bold(receiver.ToString())) .ConfigureAwait(false); } @@ -101,7 +172,7 @@ namespace NadekoBot.Modules.Gambling if (amount <= 0) return; - await _currency.AddAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false); + await _cs.AddAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false); await ReplyConfirmLocalized("awarded", amount + CurrencySign, $"<@{usrId}>").ConfigureAwait(false); } @@ -114,7 +185,7 @@ namespace NadekoBot.Modules.Gambling var users = (await Context.Guild.GetUsersAsync()) .Where(u => u.GetRoles().Contains(role)) .ToList(); - await Task.WhenAll(users.Select(u => _currency.AddAsync(u.Id, + await Task.WhenAll(users.Select(u => _cs.AddAsync(u.Id, $"Awarded by bot owner to **{role.Name}** role. ({Context.User.Username}/{Context.User.Id})", amount))) .ConfigureAwait(false); @@ -133,7 +204,7 @@ namespace NadekoBot.Modules.Gambling if (amount <= 0) return; - if (await _currency.RemoveAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false)) + if (await _cs.RemoveAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false)) await ReplyConfirmLocalized("take", amount+CurrencySign, Format.Bold(user.ToString())).ConfigureAwait(false); else await ReplyErrorLocalized("take_fail", amount + CurrencySign, Format.Bold(user.ToString()), CurrencyPluralName).ConfigureAwait(false); @@ -147,7 +218,7 @@ namespace NadekoBot.Modules.Gambling if (amount <= 0) return; - if (await _currency.RemoveAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false)) + if (await _cs.RemoveAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false)) await ReplyConfirmLocalized("take", amount + CurrencySign, $"<@{usrId}>").ConfigureAwait(false); else await ReplyErrorLocalized("take_fail", amount + CurrencySign, Format.Code(usrId.ToString()), CurrencyPluralName).ConfigureAwait(false); @@ -207,14 +278,14 @@ namespace NadekoBot.Modules.Gambling // }); // return Task.CompletedTask; //} + public enum Allin { Allin = int.MinValue, All = int.MinValue } - [NadekoCommand, Usage, Description, Aliases] - public async Task BetRoll(long amount) + private async Task InternallBetroll(long amount) { if (amount < 1) return; - if (!await _currency.RemoveAsync(Context.User, "Betroll Gamble", amount, false).ConfigureAwait(false)) + if (!await _cs.RemoveAsync(Context.User, "Betroll Gamble", amount, false).ConfigureAwait(false)) { await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false); return; @@ -231,25 +302,40 @@ namespace NadekoBot.Modules.Gambling if (rnd < 91) { str += GetText("br_win", (amount * _bc.BotConfig.Betroll67Multiplier) + CurrencySign, 66); - await _currency.AddAsync(Context.User, "Betroll Gamble", - (int) (amount * _bc.BotConfig.Betroll67Multiplier), false).ConfigureAwait(false); + await _cs.AddAsync(Context.User, "Betroll Gamble", + (int)(amount * _bc.BotConfig.Betroll67Multiplier), false).ConfigureAwait(false); } else if (rnd < 100) { str += GetText("br_win", (amount * _bc.BotConfig.Betroll91Multiplier) + CurrencySign, 90); - await _currency.AddAsync(Context.User, "Betroll Gamble", - (int) (amount * _bc.BotConfig.Betroll91Multiplier), false).ConfigureAwait(false); + await _cs.AddAsync(Context.User, "Betroll Gamble", + (int)(amount * _bc.BotConfig.Betroll91Multiplier), false).ConfigureAwait(false); } else { - str += GetText("br_win", (amount * _bc.BotConfig.Betroll100Multiplier) + CurrencySign, 100) + " 👑"; - await _currency.AddAsync(Context.User, "Betroll Gamble", - (int) (amount * _bc.BotConfig.Betroll100Multiplier), false).ConfigureAwait(false); + str += GetText("br_win", (amount * _bc.BotConfig.Betroll100Multiplier) + CurrencySign, 99) + " 👑"; + await _cs.AddAsync(Context.User, "Betroll Gamble", + (int)(amount * _bc.BotConfig.Betroll100Multiplier), false).ConfigureAwait(false); } } await Context.Channel.SendConfirmAsync(str).ConfigureAwait(false); } + [NadekoCommand, Usage, Description, Aliases] + public Task BetRoll(long amount) + => InternallBetroll(amount); + + [NadekoCommand, Usage, Description, Aliases] + public Task BetRoll(Allin _) + { + long cur; + using (var uow = _db.UnitOfWork) + { + cur = uow.Currency.GetUserCurrency(Context.User.Id); + } + return InternallBetroll(cur); + } + [NadekoCommand, Usage, Description, Aliases] public async Task Leaderboard(int page = 1) { diff --git a/NadekoBot.Core/Modules/Gambling/Services/AnimalRaceService.cs b/NadekoBot.Core/Modules/Gambling/Services/AnimalRaceService.cs new file mode 100644 index 00000000..6ad6b6b4 --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Services/AnimalRaceService.cs @@ -0,0 +1,21 @@ +using System.Threading.Tasks; +using NadekoBot.Core.Services; +using System.Collections.Concurrent; +using NadekoBot.Modules.Gambling.Common.AnimalRacing; + +namespace NadekoBot.Modules.Gambling.Services +{ + public class AnimalRaceService : INService, IUnloadableService + { + public ConcurrentDictionary AnimalRaces { get; } = new ConcurrentDictionary(); + + public Task Unload() + { + foreach (var kvp in AnimalRaces) + { + try { kvp.Value.Dispose(); } catch { } + } + return Task.CompletedTask; + } + } +} diff --git a/NadekoBot.Core/Modules/Gambling/Services/CurrencyEventsService.cs b/NadekoBot.Core/Modules/Gambling/Services/CurrencyEventsService.cs new file mode 100644 index 00000000..3dcd34e9 --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Services/CurrencyEventsService.cs @@ -0,0 +1,66 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Modules.Gambling.Common; +using NadekoBot.Modules.Gambling.Common.CurrencyEvents; +using NadekoBot.Core.Services; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Gambling.Services +{ + public class CurrencyEventsService : INService, IUnloadableService + { + public ConcurrentDictionary> ReactionEvents { get; } + + public SneakyEvent SneakyEvent { get; private set; } = null; + private SemaphoreSlim _sneakyLock = new SemaphoreSlim(1, 1); + + public CurrencyEventsService() + { + ReactionEvents = new ConcurrentDictionary>(); + } + + public async Task StartSneakyEvent(SneakyEvent ev, IUserMessage msg, ICommandContext ctx) + { + await _sneakyLock.WaitAsync().ConfigureAwait(false); + try + { + if (SneakyEvent != null) + return false; + + SneakyEvent = ev; + ev.OnEnded += () => SneakyEvent = null; + var _ = SneakyEvent.Start(msg, ctx).ConfigureAwait(false); + } + finally + { + _sneakyLock.Release(); + } + return true; + } + + public async Task Unload() + { + foreach (var kvp in ReactionEvents) + { + foreach (var ev in kvp.Value) + { + try { await ev.Stop().ConfigureAwait(false); } catch { } + } + } + ReactionEvents.Clear(); + + await _sneakyLock.WaitAsync().ConfigureAwait(false); + try + { + await SneakyEvent.Stop().ConfigureAwait(false); + } + finally + { + _sneakyLock.Release(); + } + } + } +} diff --git a/NadekoBot.Core/Modules/Gambling/Services/CurrencyRaffleService.cs b/NadekoBot.Core/Modules/Gambling/Services/CurrencyRaffleService.cs new file mode 100644 index 00000000..e47909ec --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Services/CurrencyRaffleService.cs @@ -0,0 +1,97 @@ +using System.Threading.Tasks; +using NadekoBot.Core.Services; +using NadekoBot.Core.Modules.Gambling.Common; +using System.Threading; +using System.Linq; +using System.Collections.Generic; +using Discord; +using System; + +namespace NadekoBot.Core.Modules.Gambling.Services +{ + public class CurrencyRaffleService : INService + { + public enum JoinErrorType + { + NotEnoughCurrency, + AlreadyJoinedOrInvalidAmount + } + private readonly SemaphoreSlim _locker = new SemaphoreSlim(1, 1); + private readonly DbService _db; + private readonly CurrencyService _cs; + + public Dictionary Games { get; } = new Dictionary(); + + public CurrencyRaffleService(DbService db, CurrencyService cs) + { + _db = db; + _cs = cs; + } + + public async Task<(CurrencyRaffleGame, JoinErrorType?)> JoinOrCreateGame(ulong channelId, IUser user, int amount, bool mixed, Func onEnded) + { + await _locker.WaitAsync().ConfigureAwait(false); + try + { + var newGame = false; + if (!Games.TryGetValue(channelId, out var crg)) + { + newGame = true; + crg = new CurrencyRaffleGame(mixed + ? CurrencyRaffleGame.Type.Mixed + : CurrencyRaffleGame.Type.Normal); + Games.Add(channelId, crg); + } + using (var uow = _db.UnitOfWork) + { + //remove money, and stop the game if this + // user created it and doesn't have the money + if (!await _cs.RemoveAsync(user.Id, "Currency Raffle Join", amount, uow).ConfigureAwait(false)) + { + if (newGame) + Games.Remove(channelId); + return (null, JoinErrorType.NotEnoughCurrency); + } + + if (!crg.AddUser(user, amount)) + { + await _cs.AddAsync(user.Id, "Curency Raffle Refund", amount, uow).ConfigureAwait(false); + return (null, JoinErrorType.AlreadyJoinedOrInvalidAmount); + } + + uow.Complete(); + } + if (newGame) + { + var _t = Task.Run(async () => + { + await Task.Delay(60000).ConfigureAwait(false); + await _locker.WaitAsync().ConfigureAwait(false); + try + { + var winner = crg.GetWinner(); + var won = crg.Users.Sum(x => x.Amount); + + using (var uow = _db.UnitOfWork) + { + await _cs.AddAsync(winner.DiscordUser.Id, "Currency Raffle Win", + won, uow); + + uow.Complete(); + } + Games.Remove(channelId, out _); + var oe = onEnded(winner.DiscordUser, won); + } + catch { } + finally { _locker.Release(); } + }); + } + return (crg, null); + } + finally + { + _locker.Release(); + } + } + } +} \ No newline at end of file diff --git a/NadekoBot.Core/Modules/Gambling/Services/WaifuService.cs b/NadekoBot.Core/Modules/Gambling/Services/WaifuService.cs new file mode 100644 index 00000000..d2fbdcef --- /dev/null +++ b/NadekoBot.Core/Modules/Gambling/Services/WaifuService.cs @@ -0,0 +1,49 @@ +using Discord; +using NadekoBot.Core.Services; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Gambling.Services +{ + public class WaifuService : INService + { + private readonly DbService _db; + private readonly CurrencyService _cs; + + public WaifuService(DbService db, CurrencyService cs) + { + _db = db; + _cs = cs; + } + + public async Task WaifuTransfer(IUser owner, ulong waifuId, IUser newOwner) + { + if (owner.Id == newOwner.Id || waifuId == newOwner.Id) + return false; + using (var uow = _db.UnitOfWork) + { + var waifu = uow.Waifus.ByWaifuUserId(waifuId); + var ownerUser = uow.DiscordUsers.GetOrCreate(owner); + + // owner has to be the owner of the waifu + if (waifu == null || waifu.ClaimerId != ownerUser.Id) + return false; + + if (!await _cs.RemoveAsync(owner.Id, + "Waifu Transfer", + waifu.Price / 10, + uow).ConfigureAwait(false)) + { + return false; + } + + //new claimerId is the id of the new owner + var newOwnerUser = uow.DiscordUsers.GetOrCreate(newOwner); + waifu.ClaimerId = newOwnerUser.Id; + + await uow.CompleteAsync().ConfigureAwait(false); + } + + return true; + } + } +} diff --git a/src/NadekoBot/Modules/Gambling/SlotCommands.cs b/NadekoBot.Core/Modules/Gambling/SlotCommands.cs similarity index 96% rename from src/NadekoBot/Modules/Gambling/SlotCommands.cs rename to NadekoBot.Core/Modules/Gambling/SlotCommands.cs index 43cfb8d4..dd31dbe3 100644 --- a/src/NadekoBot/Modules/Gambling/SlotCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/SlotCommands.cs @@ -2,7 +2,7 @@ using Discord.Commands; using ImageSharp; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Collections.Generic; using System.Linq; @@ -32,12 +32,12 @@ namespace NadekoBot.Modules.Gambling //https://lh6.googleusercontent.com/-i1hjAJy_kN4/UswKxmhrbPI/AAAAAAAAB1U/82wq_4ZZc-Y/DE6B0895-6FC1-48BE-AC4F-14D1B91AB75B.jpg //thanks to judge for helping me with this - private readonly IImagesService _images; + private readonly IImageCache _images; private readonly CurrencyService _cs; - public SlotCommands(IImagesService images, IBotConfigProvider bc, CurrencyService cs) + public SlotCommands(IDataCache data, IBotConfigProvider bc, CurrencyService cs) { - _images = images; + _images = data.LocalImages; _bc = bc; _cs = cs; } @@ -176,7 +176,7 @@ namespace NadekoBot.Modules.Gambling using (var file = _images.SlotEmojis[numbers[i]].ToStream()) using (var randomImage = ImageSharp.Image.Load(file)) { - bgImage.DrawImage(randomImage, 100, default(Size), new Point(95 + 142 * i, 330)); + bgImage.DrawImage(randomImage, 100, default, new Point(95 + 142 * i, 330)); } } @@ -189,7 +189,7 @@ namespace NadekoBot.Modules.Gambling using (var fs = _images.SlotNumbers[digit].ToStream()) using (var img = ImageSharp.Image.Load(fs)) { - bgImage.DrawImage(img, 100, default(Size), new Point(230 - n * 16, 462)); + bgImage.DrawImage(img, 100, default, new Point(230 - n * 16, 462)); } n++; } while ((printWon /= 10) != 0); @@ -202,7 +202,7 @@ namespace NadekoBot.Modules.Gambling using (var fs = _images.SlotNumbers[digit].ToStream()) using (var img = ImageSharp.Image.Load(fs)) { - bgImage.DrawImage(img, 100, default(Size), new Point(395 - n * 16, 462)); + bgImage.DrawImage(img, 100, default, new Point(395 - n * 16, 462)); } n++; } while ((printAmount /= 10) != 0); diff --git a/src/NadekoBot/Modules/Gambling/WaifuClaimCommands.cs b/NadekoBot.Core/Modules/Gambling/WaifuClaimCommands.cs similarity index 88% rename from src/NadekoBot/Modules/Gambling/WaifuClaimCommands.cs rename to NadekoBot.Core/Modules/Gambling/WaifuClaimCommands.cs index 5d46f976..619c6248 100644 --- a/src/NadekoBot/Modules/Gambling/WaifuClaimCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/WaifuClaimCommands.cs @@ -1,15 +1,16 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common; using NadekoBot.Common.Attributes; +using NadekoBot.Modules.Gambling.Services; +using Discord.WebSocket; namespace NadekoBot.Modules.Gambling { @@ -46,23 +47,28 @@ namespace NadekoBot.Modules.Gambling } [Group] - public class WaifuClaimCommands : NadekoSubmodule + public class WaifuClaimCommands : NadekoSubmodule { - private static ConcurrentDictionary _divorceCooldowns { get; } = new ConcurrentDictionary(); - private static ConcurrentDictionary _affinityCooldowns { get; } = new ConcurrentDictionary(); - enum WaifuClaimResult { Success, NotEnoughFunds, InsufficientAmount } + private readonly IBotConfigProvider _bc; + private readonly CurrencyService _cs; + private readonly DbService _db; + private readonly IDataCache _cache; + private readonly DiscordSocketClient _client; - public WaifuClaimCommands(IBotConfigProvider bc, CurrencyService cs, DbService db) + public WaifuClaimCommands(IDataCache cache, IBotConfigProvider bc, + CurrencyService cs, DbService db, DiscordSocketClient client) { _bc = bc; _cs = cs; _db = db; + _cache = cache; + _client = client; } [NadekoCommand, Usage, Description, Aliases] @@ -186,6 +192,23 @@ namespace NadekoBot.Modules.Gambling await Context.Channel.SendConfirmAsync(Context.User.Mention + msg).ConfigureAwait(false); } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task WaifuTransfer(IUser waifu, IUser newOwner) + { + if(!await _service.WaifuTransfer(Context.User, waifu.Id, newOwner) + .ConfigureAwait(false)) + { + await ReplyErrorLocalized("waifu_transfer_fail").ConfigureAwait(false); + return; + } + + await ReplyConfirmLocalized("waifu_transfer_success", + Format.Bold(waifu.ToString()), + Format.Bold(Context.User.ToString()), + Format.Bold(newOwner.ToString())).ConfigureAwait(false); + } + public enum DivorceResult { Success, @@ -194,8 +217,6 @@ namespace NadekoBot.Modules.Gambling Cooldown } - - private static readonly TimeSpan _divorceLimit = TimeSpan.FromHours(6); [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [Priority(0)] @@ -210,7 +231,7 @@ namespace NadekoBot.Modules.Gambling return; DivorceResult result; - var difference = TimeSpan.Zero; + TimeSpan? remaining = null; var amount = 0; WaifuInfo w = null; using (var uow = _db.UnitOfWork) @@ -219,9 +240,7 @@ namespace NadekoBot.Modules.Gambling var now = DateTime.UtcNow; if (w?.Claimer == null || w.Claimer.UserId != Context.User.Id) result = DivorceResult.NotYourWife; - else if (_divorceCooldowns.AddOrUpdate(Context.User.Id, - now, - (key, old) => ((difference = now.Subtract(old)) > _divorceLimit) ? now : old) != now) + else if (!_cache.TryAddDivorceCooldown(Context.User.Id, out remaining)) { result = DivorceResult.Cooldown; } @@ -270,18 +289,12 @@ namespace NadekoBot.Modules.Gambling } else { - var remaining = _divorceLimit.Subtract(difference); await ReplyErrorLocalized("waifu_recent_divorce", - Format.Bold(((int)remaining.TotalHours).ToString()), - Format.Bold(remaining.Minutes.ToString())).ConfigureAwait(false); + Format.Bold(((int)remaining?.TotalHours).ToString()), + Format.Bold(remaining?.Minutes.ToString())).ConfigureAwait(false); } } - private static readonly TimeSpan _affinityLimit = TimeSpan.FromMinutes(30); - private readonly IBotConfigProvider _bc; - private readonly CurrencyService _cs; - private readonly DbService _db; - [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task WaifuClaimerAffinity([Remainder]IGuildUser u = null) @@ -293,8 +306,7 @@ namespace NadekoBot.Modules.Gambling } DiscordUser oldAff = null; var sucess = false; - var cooldown = false; - var difference = TimeSpan.Zero; + TimeSpan? remaining = null; using (var uow = _db.UnitOfWork) { var w = uow.Waifus.ByWaifuUserId(Context.User.Id); @@ -302,12 +314,10 @@ namespace NadekoBot.Modules.Gambling var now = DateTime.UtcNow; if (w?.Affinity?.UserId == u?.Id) { + } - else if (_affinityCooldowns.AddOrUpdate(Context.User.Id, - now, - (key, old) => ((difference = now.Subtract(old)) > _affinityLimit) ? now : old) != now) + else if (!_cache.TryAddAffinityCooldown(Context.User.Id, out remaining)) { - cooldown = true; } else if (w == null) { @@ -349,12 +359,11 @@ namespace NadekoBot.Modules.Gambling } if (!sucess) { - if (cooldown) + if (remaining != null) { - var remaining = _affinityLimit.Subtract(difference); await ReplyErrorLocalized("waifu_affinity_cooldown", - Format.Bold(((int)remaining.TotalHours).ToString()), - Format.Bold(remaining.Minutes.ToString())).ConfigureAwait(false); + Format.Bold(((int)remaining?.TotalHours).ToString()), + Format.Bold(remaining?.Minutes.ToString())).ConfigureAwait(false); } else { @@ -468,18 +477,27 @@ namespace NadekoBot.Modules.Gambling [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [Priority(1)] - public async Task WaifuGift() + public async Task WaifuGift(int page = 1) { - var embed = new EmbedBuilder() - .WithTitle(GetText("waifu_gift_shop")) - .WithOkColor(); + if (--page < 0 || page > 2) + return; - Enum.GetValues(typeof(WaifuItem.ItemName)) - .Cast() - .Select(x => WaifuItem.GetItem(x)) - .ForEach(x => embed.AddField(f => f.WithName(x.ItemEmoji + " " + x.Item).WithValue(x.Price).WithIsInline(true))); + await Context.Channel.SendPaginatedConfirmAsync(_client, page, (cur) => + { + var embed = new EmbedBuilder() + .WithTitle(GetText("waifu_gift_shop")) + .WithOkColor(); - await Context.Channel.EmbedAsync(embed).ConfigureAwait(false); + Enum.GetValues(typeof(WaifuItem.ItemName)) + .Cast() + .Select(x => WaifuItem.GetItem(x)) + .OrderBy(x => x.Price) + .Skip(9 * cur) + .Take(9) + .ForEach(x => embed.AddField(f => f.WithName(x.ItemEmoji + " " + x.Item).WithValue(x.Price).WithIsInline(true))); + + return embed; + }, Enum.GetValues(typeof(WaifuItem.ItemName)).Length, 9); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Gambling/WheelOfFortuneCommands.cs b/NadekoBot.Core/Modules/Gambling/WheelOfFortuneCommands.cs similarity index 81% rename from src/NadekoBot/Modules/Gambling/WheelOfFortuneCommands.cs rename to NadekoBot.Core/Modules/Gambling/WheelOfFortuneCommands.cs index cd3de369..eb4bf99f 100644 --- a/src/NadekoBot/Modules/Gambling/WheelOfFortuneCommands.cs +++ b/NadekoBot.Core/Modules/Gambling/WheelOfFortuneCommands.cs @@ -3,7 +3,7 @@ using Discord.Commands; using NadekoBot.Common.Attributes; using NadekoBot.Extensions; using NadekoBot.Modules.Gambling.Common.WheelOfFortune; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Threading.Tasks; using Wof = NadekoBot.Modules.Gambling.Common.WheelOfFortune.WheelOfFortune; @@ -15,16 +15,31 @@ namespace NadekoBot.Modules.Gambling { private readonly CurrencyService _cs; private readonly IBotConfigProvider _bc; + private readonly DbService _db; - public WheelOfFortuneCommands(CurrencyService cs, IBotConfigProvider bc) + public WheelOfFortuneCommands(CurrencyService cs, IBotConfigProvider bc, + DbService db) { _cs = cs; _bc = bc; + _db = db; + } + + public enum Allin { Allin = int.MinValue, All = int.MinValue } + + [NadekoCommand, Usage, Description, Aliases] + public Task WheelOfFortune(Allin _) + { + long cur; + using (var uow = _db.UnitOfWork) + { + cur = uow.Currency.GetUserCurrency(Context.User.Id); + } + return WheelOfFortune(cur); } [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task WheelOfFortune(int bet) + public async Task WheelOfFortune(long bet) { const int minBet = 10; if (bet < minBet) diff --git a/src/NadekoBot/Modules/Games/AcropobiaCommands.cs b/NadekoBot.Core/Modules/Games/AcropobiaCommands.cs similarity index 93% rename from src/NadekoBot/Modules/Games/AcropobiaCommands.cs rename to NadekoBot.Core/Modules/Games/AcropobiaCommands.cs index f933d3bf..7b98c638 100644 --- a/src/NadekoBot/Modules/Games/AcropobiaCommands.cs +++ b/NadekoBot.Core/Modules/Games/AcropobiaCommands.cs @@ -2,26 +2,23 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Extensions; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Games.Common.Acrophobia; +using NadekoBot.Modules.Games.Services; namespace NadekoBot.Modules.Games { public partial class Games { [Group] - public class AcropobiaCommands : NadekoSubmodule + public class AcropobiaCommands : NadekoSubmodule { private readonly DiscordSocketClient _client; - //channelId, game - public static ConcurrentDictionary AcrophobiaGames { get; } = new ConcurrentDictionary(); - public AcropobiaCommands(DiscordSocketClient client) { _client = client; @@ -36,7 +33,7 @@ namespace NadekoBot.Modules.Games var channel = (ITextChannel)Context.Channel; var game = new Acrophobia(submissionTime); - if (AcrophobiaGames.TryAdd(channel.Id, game)) + if (_service.AcrophobiaGames.TryAdd(channel.Id, game)) { try { @@ -50,7 +47,7 @@ namespace NadekoBot.Modules.Games finally { _client.MessageReceived -= _client_MessageReceived; - AcrophobiaGames.TryRemove(channel.Id, out game); + _service.AcrophobiaGames.TryRemove(channel.Id, out game); game.Dispose(); } } diff --git a/src/NadekoBot/Modules/Games/CleverBotCommands.cs b/NadekoBot.Core/Modules/Games/CleverBotCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Games/CleverBotCommands.cs rename to NadekoBot.Core/Modules/Games/CleverBotCommands.cs index 3373a98a..093b7530 100644 --- a/src/NadekoBot/Modules/Games/CleverBotCommands.cs +++ b/NadekoBot.Core/Modules/Games/CleverBotCommands.cs @@ -1,6 +1,6 @@ using Discord; using Discord.Commands; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Threading.Tasks; using NadekoBot.Common.Attributes; diff --git a/src/NadekoBot/Modules/Games/Common/Acrophobia/Acrophobia.cs b/NadekoBot.Core/Modules/Games/Common/Acrophobia/Acrophobia.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Acrophobia/Acrophobia.cs rename to NadekoBot.Core/Modules/Games/Common/Acrophobia/Acrophobia.cs diff --git a/src/NadekoBot/Modules/Games/Common/Acrophobia/AcrophobiaUser.cs b/NadekoBot.Core/Modules/Games/Common/Acrophobia/AcrophobiaUser.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Acrophobia/AcrophobiaUser.cs rename to NadekoBot.Core/Modules/Games/Common/Acrophobia/AcrophobiaUser.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotResponse.cs b/NadekoBot.Core/Modules/Games/Common/ChatterBot/ChatterBotResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotResponse.cs rename to NadekoBot.Core/Modules/Games/Common/ChatterBot/ChatterBotResponse.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotSession.cs b/NadekoBot.Core/Modules/Games/Common/ChatterBot/ChatterBotSession.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotSession.cs rename to NadekoBot.Core/Modules/Games/Common/ChatterBot/ChatterBotSession.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/CleverbotResponse.cs b/NadekoBot.Core/Modules/Games/Common/ChatterBot/CleverbotResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/CleverbotResponse.cs rename to NadekoBot.Core/Modules/Games/Common/ChatterBot/CleverbotResponse.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/IChatterBotSession.cs b/NadekoBot.Core/Modules/Games/Common/ChatterBot/IChatterBotSession.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/IChatterBotSession.cs rename to NadekoBot.Core/Modules/Games/Common/ChatterBot/IChatterBotSession.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/OfficialCleverbotSession.cs b/NadekoBot.Core/Modules/Games/Common/ChatterBot/OfficialCleverbotSession.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/OfficialCleverbotSession.cs rename to NadekoBot.Core/Modules/Games/Common/ChatterBot/OfficialCleverbotSession.cs diff --git a/src/NadekoBot/Modules/Games/Common/Connect4/Connect4.cs b/NadekoBot.Core/Modules/Games/Common/Connect4/Connect4.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Connect4/Connect4.cs rename to NadekoBot.Core/Modules/Games/Common/Connect4/Connect4.cs diff --git a/src/NadekoBot/Modules/Games/Common/GirlRating.cs b/NadekoBot.Core/Modules/Games/Common/GirlRating.cs similarity index 90% rename from src/NadekoBot/Modules/Games/Common/GirlRating.cs rename to NadekoBot.Core/Modules/Games/Common/GirlRating.cs index d605be0d..98ad9cd4 100644 --- a/src/NadekoBot/Modules/Games/Common/GirlRating.cs +++ b/NadekoBot.Core/Modules/Games/Common/GirlRating.cs @@ -5,7 +5,7 @@ using System.Net.Http; using ImageSharp; using NadekoBot.Common; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using NLog; using SixLabors.Primitives; @@ -14,6 +14,7 @@ namespace NadekoBot.Modules.Games.Common public class GirlRating { private static readonly Logger _log = LogManager.GetCurrentClassLogger(); + private readonly IImageCache _images; public double Crazy { get; } public double Hot { get; } @@ -21,8 +22,9 @@ namespace NadekoBot.Modules.Games.Common public string Advice { get; } public AsyncLazy Url { get; } - public GirlRating(IImagesService _images, double crazy, double hot, int roll, string advice) + public GirlRating(IImageCache images, double crazy, double hot, int roll, string advice) { + _images = images; Crazy = crazy; Hot = hot; Roll = roll; @@ -45,7 +47,7 @@ namespace NadekoBot.Modules.Games.Common using (var pointMs = new MemoryStream(_images.RategirlDot.ToArray(), false)) using (var pointImg = Image.Load(pointMs)) { - img.DrawImage(pointImg, 100, default(Size), new Point(pointx - 10, pointy - 10)); + img.DrawImage(pointImg, 100, default, new Point(pointx - 10, pointy - 10)); } string url; diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/Exceptions/TermNotFoundException.cs b/NadekoBot.Core/Modules/Games/Common/Hangman/Exceptions/TermNotFoundException.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/Exceptions/TermNotFoundException.cs rename to NadekoBot.Core/Modules/Games/Common/Hangman/Exceptions/TermNotFoundException.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/Hangman.cs b/NadekoBot.Core/Modules/Games/Common/Hangman/Hangman.cs similarity index 96% rename from src/NadekoBot/Modules/Games/Common/Hangman/Hangman.cs rename to NadekoBot.Core/Modules/Games/Common/Hangman/Hangman.cs index c3c7f9e9..3e7be20f 100644 --- a/src/NadekoBot/Modules/Games/Common/Hangman/Hangman.cs +++ b/NadekoBot.Core/Modules/Games/Common/Hangman/Hangman.cs @@ -11,6 +11,7 @@ namespace NadekoBot.Modules.Games.Common.Hangman public class Hangman : IDisposable { public string TermType { get; } + public TermPool TermPool { get; } public HangmanObject Term { get; } public string ScrambledWord => "`" + String.Concat(Term.Word.Select(c => @@ -56,10 +57,11 @@ namespace NadekoBot.Modules.Games.Common.Hangman public Task EndedTask => _endingCompletionSource.Task; - public Hangman(string type) + public Hangman(string type, TermPool tp = null) { this.TermType = type.Trim().ToLowerInvariant().ToTitleCase(); - this.Term = TermPool.GetTerm(type); + this.TermPool = tp ?? new TermPool(); + this.Term = this.TermPool.GetTerm(type); } private void AddError() diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/HangmanObject.cs b/NadekoBot.Core/Modules/Games/Common/Hangman/HangmanObject.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/HangmanObject.cs rename to NadekoBot.Core/Modules/Games/Common/Hangman/HangmanObject.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/Phase.cs b/NadekoBot.Core/Modules/Games/Common/Hangman/Phase.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/Phase.cs rename to NadekoBot.Core/Modules/Games/Common/Hangman/Phase.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/TermPool.cs b/NadekoBot.Core/Modules/Games/Common/Hangman/TermPool.cs similarity index 66% rename from src/NadekoBot/Modules/Games/Common/Hangman/TermPool.cs rename to NadekoBot.Core/Modules/Games/Common/Hangman/TermPool.cs index 58ba56c4..2cc98d15 100644 --- a/src/NadekoBot/Modules/Games/Common/Hangman/TermPool.cs +++ b/NadekoBot.Core/Modules/Games/Common/Hangman/TermPool.cs @@ -5,27 +5,35 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using NLog; namespace NadekoBot.Modules.Games.Common.Hangman { public class TermPool { const string termsPath = "data/hangman3.json"; - public static IReadOnlyDictionary Data { get; } = new Dictionary(); - static TermPool() + private readonly Logger _log; + + public IReadOnlyDictionary Data { get; } = new Dictionary(); + public TermPool() { + _log = LogManager.GetCurrentClassLogger(); try { Data = JsonConvert.DeserializeObject>(File.ReadAllText(termsPath)); + Data = Data.ToDictionary( + x => x.Key.ToLowerInvariant(), + x => x.Value); } - catch (Exception) + catch (Exception ex) { - //ignored + _log.Warn(ex); } } - public static HangmanObject GetTerm(string type) + public HangmanObject GetTerm(string type) { + type = type?.Trim().ToLowerInvariant(); var rng = new NadekoRandom(); if (type == "random") diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/TermType.cs b/NadekoBot.Core/Modules/Games/Common/Hangman/TermType.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/TermType.cs rename to NadekoBot.Core/Modules/Games/Common/Hangman/TermType.cs diff --git a/src/NadekoBot/Modules/Games/Common/Nunchi/Nunchi.cs b/NadekoBot.Core/Modules/Games/Common/Nunchi/Nunchi.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Nunchi/Nunchi.cs rename to NadekoBot.Core/Modules/Games/Common/Nunchi/Nunchi.cs diff --git a/NadekoBot.Core/Modules/Games/Common/PollRunner.cs b/NadekoBot.Core/Modules/Games/Common/PollRunner.cs new file mode 100644 index 00000000..57bc658c --- /dev/null +++ b/NadekoBot.Core/Modules/Games/Common/PollRunner.cs @@ -0,0 +1,72 @@ +using System.Threading.Tasks; +using Discord; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services; +using System; +using System.Threading; + +namespace NadekoBot.Modules.Games.Common +{ + public class PollRunner + { + public Poll Poll { get; } + private readonly DbService _db; + + public event Func OnVoted; + + private readonly SemaphoreSlim _locker = new SemaphoreSlim(1, 1); + + public PollRunner(DbService db, Poll poll) + { + _db = db; + Poll = poll; + } + + public async Task TryVote(IUserMessage msg) + { + PollVote voteObj; + await _locker.WaitAsync().ConfigureAwait(false); + try + { + // has to be a user message + // channel must be the same the poll started in + if (msg == null || msg.Author.IsBot || msg.Channel.Id != Poll.ChannelId) + return false; + + // has to be an integer + if (!int.TryParse(msg.Content, out int vote)) + return false; + --vote; + if (vote < 0 || vote >= Poll.Answers.Count) + return false; + + var usr = msg.Author as IGuildUser; + if (usr == null) + return false; + + voteObj = new PollVote() + { + UserId = msg.Author.Id, + VoteIndex = vote, + }; + if (!Poll.Votes.Add(voteObj)) + return false; + + var _ = OnVoted?.Invoke(msg, usr); + } + finally { _locker.Release(); } + using (var uow = _db.UnitOfWork) + { + var trackedPoll = uow.Polls.Get(Poll.Id); + trackedPoll.Votes.Add(voteObj); + uow.Complete(); + } + return true; + } + + public void End() + { + OnVoted = null; + } + } +} diff --git a/NadekoBot.Core/Modules/Games/Common/TicTacToe.cs b/NadekoBot.Core/Modules/Games/Common/TicTacToe.cs new file mode 100644 index 00000000..32a3d993 --- /dev/null +++ b/NadekoBot.Core/Modules/Games/Common/TicTacToe.cs @@ -0,0 +1,277 @@ +using Discord; +using Discord.WebSocket; +using NadekoBot.Extensions; +using NadekoBot.Core.Services.Impl; +using System; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Games.Common +{ + public class TicTacToe + { + enum Phase + { + Starting, + Started, + Ended + } + + private readonly ITextChannel _channel; + private readonly IGuildUser[] _users; + private readonly int?[,] _state; + private Phase _phase; + private int _curUserIndex; + private readonly SemaphoreSlim _moveLock; + + private IGuildUser _winner; + + private readonly string[] _numbers = { ":one:", ":two:", ":three:", ":four:", ":five:", ":six:", ":seven:", ":eight:", ":nine:" }; + + public Action OnEnded; + + private IUserMessage _previousMessage; + private Timer _timeoutTimer; + private readonly NadekoStrings _strings; + private readonly DiscordSocketClient _client; + + public TicTacToe(NadekoStrings strings, DiscordSocketClient client, ITextChannel channel, IGuildUser firstUser) + { + _channel = channel; + _strings = strings; + _client = client; + + _users = new[] { firstUser, null }; + _state = new int?[,] { + { null, null, null }, + { null, null, null }, + { null, null, null }, + }; + + _phase = Phase.Starting; + _moveLock = new SemaphoreSlim(1, 1); + } + + private string GetText(string key, params object[] replacements) => + _strings.GetText(key, + _channel.GuildId, + typeof(Games).Name.ToLowerInvariant(), + replacements); + + public string GetState() + { + var sb = new StringBuilder(); + for (var i = 0; i < _state.GetLength(0); i++) + { + for (var j = 0; j < _state.GetLength(1); j++) + { + sb.Append(_state[i, j] == null ? _numbers[i * 3 + j] : GetIcon(_state[i, j])); + if (j < _state.GetLength(1) - 1) + sb.Append("┃"); + } + if (i < _state.GetLength(0) - 1) + sb.AppendLine("\n──────────"); + } + + return sb.ToString(); + } + + public EmbedBuilder GetEmbed(string title = null) + { + var embed = new EmbedBuilder() + .WithOkColor() + .WithDescription(Environment.NewLine + GetState()) + .WithAuthor(eab => eab.WithName(GetText("vs", _users[0], _users[1]))); + + if (!string.IsNullOrWhiteSpace(title)) + embed.WithTitle(title); + + if (_winner == null) + { + if (_phase == Phase.Ended) + embed.WithFooter(efb => efb.WithText(GetText("ttt_no_moves"))); + else + embed.WithFooter(efb => efb.WithText(GetText("ttt_users_move", _users[_curUserIndex]))); + } + else + embed.WithFooter(efb => efb.WithText(GetText("ttt_has_won", _winner))); + + return embed; + } + + private static string GetIcon(int? val) + { + switch (val) + { + case 0: + return "❌"; + case 1: + return "⭕"; + case 2: + return "❎"; + case 3: + return "🅾"; + default: + return "⬛"; + } + } + + public async Task Start(IGuildUser user) + { + if (_phase == Phase.Started || _phase == Phase.Ended) + { + await _channel.SendErrorAsync(user.Mention + GetText("ttt_already_running")).ConfigureAwait(false); + return; + } + else if (_users[0] == user) + { + await _channel.SendErrorAsync(user.Mention + GetText("ttt_against_yourself")).ConfigureAwait(false); + return; + } + + _users[1] = user; + + _phase = Phase.Started; + + _timeoutTimer = new Timer(async (_) => + { + await _moveLock.WaitAsync(); + try + { + if (_phase == Phase.Ended) + return; + + _phase = Phase.Ended; + if (_users[1] != null) + { + _winner = _users[_curUserIndex ^= 1]; + var del = _previousMessage?.DeleteAsync(); + try + { + await _channel.EmbedAsync(GetEmbed(GetText("ttt_time_expired"))).ConfigureAwait(false); + if (del != null) + await del.ConfigureAwait(false); + } + catch { } + } + + OnEnded?.Invoke(this); + } + catch { } + finally + { + _moveLock.Release(); + } + }, null, 15000, Timeout.Infinite); + + _client.MessageReceived += Client_MessageReceived; + + + _previousMessage = await _channel.EmbedAsync(GetEmbed(GetText("game_started"))).ConfigureAwait(false); + } + + private bool IsDraw() + { + for (var i = 0; i < 3; i++) + { + for (var j = 0; j < 3; j++) + { + if (_state[i, j] == null) + return false; + } + } + return true; + } + + private Task Client_MessageReceived(SocketMessage msg) + { + var _ = Task.Run(async () => + { + await _moveLock.WaitAsync().ConfigureAwait(false); + try + { + var curUser = _users[_curUserIndex]; + if (_phase == Phase.Ended || msg.Author?.Id != curUser.Id) + return; + + if (int.TryParse(msg.Content, out var index) && + --index >= 0 && + index <= 9 && + _state[index / 3, index % 3] == null) + { + _state[index / 3, index % 3] = _curUserIndex; + + // i'm lazy + if (_state[index / 3, 0] == _state[index / 3, 1] && _state[index / 3, 1] == _state[index / 3, 2]) + { + _state[index / 3, 0] = _curUserIndex + 2; + _state[index / 3, 1] = _curUserIndex + 2; + _state[index / 3, 2] = _curUserIndex + 2; + + _phase = Phase.Ended; + } + else if (_state[0, index % 3] == _state[1, index % 3] && _state[1, index % 3] == _state[2, index % 3]) + { + _state[0, index % 3] = _curUserIndex + 2; + _state[1, index % 3] = _curUserIndex + 2; + _state[2, index % 3] = _curUserIndex + 2; + + _phase = Phase.Ended; + } + else if (_curUserIndex == _state[0, 0] && _state[0, 0] == _state[1, 1] && _state[1, 1] == _state[2, 2]) + { + _state[0, 0] = _curUserIndex + 2; + _state[1, 1] = _curUserIndex + 2; + _state[2, 2] = _curUserIndex + 2; + + _phase = Phase.Ended; + } + else if (_curUserIndex == _state[0, 2] && _state[0, 2] == _state[1, 1] && _state[1, 1] == _state[2, 0]) + { + _state[0, 2] = _curUserIndex + 2; + _state[1, 1] = _curUserIndex + 2; + _state[2, 0] = _curUserIndex + 2; + + _phase = Phase.Ended; + } + var reason = ""; + + if (_phase == Phase.Ended) // if user won, stop receiving moves + { + reason = GetText("ttt_matched_three"); + _winner = _users[_curUserIndex]; + _client.MessageReceived -= Client_MessageReceived; + OnEnded?.Invoke(this); + } + else if (IsDraw()) + { + reason = GetText("ttt_a_draw"); + _phase = Phase.Ended; + _client.MessageReceived -= Client_MessageReceived; + OnEnded?.Invoke(this); + } + + var sendstate = Task.Run(async () => + { + var del1 = msg.DeleteAsync(); + var del2 = _previousMessage?.DeleteAsync(); + try { _previousMessage = await _channel.EmbedAsync(GetEmbed(reason)); } catch { } + try { await del1; } catch { } + try { if (del2 != null) await del2; } catch { } + }); + _curUserIndex ^= 1; + + _timeoutTimer.Change(15000, Timeout.Infinite); + } + } + finally + { + _moveLock.Release(); + } + }); + + return Task.CompletedTask; + } + } +} diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaGame.cs b/NadekoBot.Core/Modules/Games/Common/Trivia/TriviaGame.cs similarity index 96% rename from src/NadekoBot/Modules/Games/Common/Trivia/TriviaGame.cs rename to NadekoBot.Core/Modules/Games/Common/Trivia/TriviaGame.cs index abafdb67..30d0a7fd 100644 --- a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaGame.cs +++ b/NadekoBot.Core/Modules/Games/Common/Trivia/TriviaGame.cs @@ -9,8 +9,8 @@ using Discord; using Discord.Net; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Impl; using NLog; namespace NadekoBot.Modules.Games.Common.Trivia @@ -19,6 +19,7 @@ namespace NadekoBot.Modules.Games.Common.Trivia { private readonly SemaphoreSlim _guessLock = new SemaphoreSlim(1, 1); private readonly Logger _log; + private readonly IDataCache _cache; private readonly NadekoStrings _strings; private readonly DiscordSocketClient _client; private readonly IBotConfigProvider _bc; @@ -43,11 +44,15 @@ namespace NadekoBot.Modules.Games.Common.Trivia public int WinRequirement { get; } + private readonly TriviaQuestionPool _questionPool; + public TriviaGame(NadekoStrings strings, DiscordSocketClient client, IBotConfigProvider bc, - CurrencyService cs, IGuild guild, ITextChannel channel, + IDataCache cache, CurrencyService cs, IGuild guild, ITextChannel channel, bool showHints, int winReq, bool isPokemon) { _log = LogManager.GetCurrentClassLogger(); + _cache = cache; + _questionPool = new TriviaQuestionPool(_cache); _strings = strings; _client = client; _bc = bc; @@ -74,7 +79,7 @@ namespace NadekoBot.Modules.Games.Common.Trivia _triviaCancelSource = new CancellationTokenSource(); // load question - CurrentQuestion = TriviaQuestionPool.Instance.GetRandomQuestion(OldQuestions, IsPokemon); + CurrentQuestion = _questionPool.GetRandomQuestion(OldQuestions, IsPokemon); if (string.IsNullOrWhiteSpace(CurrentQuestion?.Answer) || string.IsNullOrWhiteSpace(CurrentQuestion.Question)) { await Channel.SendErrorAsync(GetText("trivia_game"), GetText("failed_loading_question")).ConfigureAwait(false); diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestion.cs b/NadekoBot.Core/Modules/Games/Common/Trivia/TriviaQuestion.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestion.cs rename to NadekoBot.Core/Modules/Games/Common/Trivia/TriviaQuestion.cs diff --git a/NadekoBot.Core/Modules/Games/Common/Trivia/TriviaQuestionPool.cs b/NadekoBot.Core/Modules/Games/Common/Trivia/TriviaQuestionPool.cs new file mode 100644 index 00000000..96aad572 --- /dev/null +++ b/NadekoBot.Core/Modules/Games/Common/Trivia/TriviaQuestionPool.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using NadekoBot.Common; +using NadekoBot.Extensions; +using NadekoBot.Core.Services; + +namespace NadekoBot.Modules.Games.Common.Trivia +{ + public class TriviaQuestionPool + { + private readonly IDataCache _cache; + private readonly int maxPokemonId; + + private readonly NadekoRandom _rng = new NadekoRandom(); + + private TriviaQuestion[] Pool => _cache.LocalData.TriviaQuestions; + private IReadOnlyDictionary Map => _cache.LocalData.PokemonMap; + + public TriviaQuestionPool(IDataCache cache) + { + _cache = cache; + maxPokemonId = 721; //xd + } + + public TriviaQuestion GetRandomQuestion(HashSet exclude, bool isPokemon) + { + if (Pool.Length == 0) + return null; + + if (isPokemon) + { + var num = _rng.Next(1, maxPokemonId + 1); + return new TriviaQuestion("Who's That Pokémon?", + Map[num].ToTitleCase(), + "Pokemon", + $@"http://nadekobot.me/images/pokemon/shadows/{num}.png", + $@"http://nadekobot.me/images/pokemon/real/{num}.png"); + } + TriviaQuestion randomQuestion; + while (exclude.Contains(randomQuestion = Pool[_rng.Next(0, Pool.Length)])) ; + + return randomQuestion; + } + } +} diff --git a/src/NadekoBot/Modules/Games/Common/TypingArticle.cs b/NadekoBot.Core/Modules/Games/Common/TypingArticle.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/TypingArticle.cs rename to NadekoBot.Core/Modules/Games/Common/TypingArticle.cs diff --git a/src/NadekoBot/Modules/Games/Common/TypingGame.cs b/NadekoBot.Core/Modules/Games/Common/TypingGame.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/TypingGame.cs rename to NadekoBot.Core/Modules/Games/Common/TypingGame.cs diff --git a/src/NadekoBot/Modules/Games/Connect4Commands.cs b/NadekoBot.Core/Modules/Games/Connect4Commands.cs similarity index 88% rename from src/NadekoBot/Modules/Games/Connect4Commands.cs rename to NadekoBot.Core/Modules/Games/Connect4Commands.cs index 5a1183c2..b261b533 100644 --- a/src/NadekoBot/Modules/Games/Connect4Commands.cs +++ b/NadekoBot.Core/Modules/Games/Connect4Commands.cs @@ -1,10 +1,10 @@ -using Discord; +using Discord; using Discord.Commands; using Discord.WebSocket; using NadekoBot.Common.Attributes; using NadekoBot.Extensions; using NadekoBot.Modules.Games.Common.Connect4; -using System.Collections.Concurrent; +using NadekoBot.Modules.Games.Services; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -13,13 +13,12 @@ namespace NadekoBot.Modules.Games { public partial class Games { - public class Connect4Commands : NadekoSubmodule + [Group] + public class Connect4Commands : NadekoSubmodule { - public static ConcurrentDictionary Games = new ConcurrentDictionary(); private readonly DiscordSocketClient _client; - - //private readonly string[] numbers = new string[] { "⓪", " ①", "②", "③", "④", "⑤", "⑥", "⑦", "⑧", "⑨" }; - private readonly string[] numbers = new string[] { ":one:", ":two:", ":three:", ":four:", ":five:", ":six:", ":seven:", ":eight:"}; + + private static readonly string[] numbers = new string[] { ":one:", ":two:", ":three:", ":four:", ":five:", ":six:", ":seven:", ":eight:"}; public Connect4Commands(DiscordSocketClient client) { @@ -32,7 +31,7 @@ namespace NadekoBot.Modules.Games { var newGame = new Connect4Game(Context.User.Id, Context.User.ToString()); Connect4Game game; - if ((game = Games.GetOrAdd(Context.Channel.Id, newGame)) != newGame) + if ((game = _service.Connect4Games.GetOrAdd(Context.Channel.Id, newGame)) != newGame) { if (game.CurrentPhase != Connect4Game.Phase.Joining) return; @@ -84,7 +83,7 @@ namespace NadekoBot.Modules.Games Task Game_OnGameFailedToStart(Connect4Game arg) { - if (Games.TryRemove(Context.Channel.Id, out var toDispose)) + if (_service.Connect4Games.TryRemove(Context.Channel.Id, out var toDispose)) { _client.MessageReceived -= _client_MessageReceived; toDispose.Dispose(); @@ -94,7 +93,7 @@ namespace NadekoBot.Modules.Games Task Game_OnGameEnded(Connect4Game arg, Connect4Game.Result result) { - if (Games.TryRemove(Context.Channel.Id, out var toDispose)) + if (_service.Connect4Games.TryRemove(Context.Channel.Id, out var toDispose)) { _client.MessageReceived -= _client_MessageReceived; toDispose.Dispose(); @@ -175,7 +174,7 @@ namespace NadekoBot.Modules.Games for (int i = 0; i < Connect4Game.NumberOfColumns; i++) { - sb.Append(/*new string(' ', 1 + ((i + 1) / 2)) + */numbers[i]); + sb.Append(numbers[i]); } return sb.ToString(); } diff --git a/src/NadekoBot/Modules/Games/Games.cs b/NadekoBot.Core/Modules/Games/Games.cs similarity index 88% rename from src/NadekoBot/Modules/Games/Games.cs rename to NadekoBot.Core/Modules/Games/Games.cs index 07fd450e..e5f9c0fa 100644 --- a/src/NadekoBot/Modules/Games/Games.cs +++ b/NadekoBot.Core/Modules/Games/Games.cs @@ -1,6 +1,6 @@ using Discord.Commands; using Discord; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Threading.Tasks; using System; using NadekoBot.Common; @@ -16,15 +16,44 @@ namespace NadekoBot.Modules.Games - Shiritori - Simple RPG adventure */ + //todo update docs public partial class Games : NadekoTopLevelModule { - private readonly IImagesService _images; + private readonly IImageCache _images; - public Games(IImagesService images) + public Games(IDataCache data) { - _images = images; + _images = data.LocalImages; } - +//#if GLOBAL_NADEKO +// [NadekoCommand, Usage, Description, Aliases] +// [RequireContext(ContextType.Guild)] +// public async Task TrickOrTreat() +// { +// if (DateTime.UtcNow.Day != 31 || +// DateTime.UtcNow.Month != 10 +// || !_service.HalloweenAwardedUsers.Add(Context.User.Id) +// ) +// { +// return; +// } +// if (await _service.GetTreat(Context.User.Id)) +// { +// await Context.Channel +// .SendConfirmAsync($"You've got a treat of 10🍬! Happy Halloween!") +// .ConfigureAwait(false); +// } +// else +// { +// await Context.Channel +// .EmbedAsync(new EmbedBuilder() +// .WithDescription("No treat for you :c Happy Halloween!") +// .WithImageUrl("http://tinyurl.com/ybntddbb") +// .WithErrorColor()) +// .ConfigureAwait(false); +// } +// } +//#endif [NadekoCommand, Usage, Description, Aliases] public async Task Choose([Remainder] string list = null) { diff --git a/src/NadekoBot/Modules/Games/HangmanCommands.cs b/NadekoBot.Core/Modules/Games/HangmanCommands.cs similarity index 91% rename from src/NadekoBot/Modules/Games/HangmanCommands.cs rename to NadekoBot.Core/Modules/Games/HangmanCommands.cs index f95f1a99..97340865 100644 --- a/src/NadekoBot/Modules/Games/HangmanCommands.cs +++ b/NadekoBot.Core/Modules/Games/HangmanCommands.cs @@ -1,19 +1,19 @@ using Discord.Commands; using NadekoBot.Extensions; using System; -using System.Collections.Concurrent; using System.Threading.Tasks; using Discord; using Discord.WebSocket; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Games.Common.Hangman; +using NadekoBot.Modules.Games.Services; namespace NadekoBot.Modules.Games { public partial class Games { [Group] - public class HangmanCommands : NadekoSubmodule + public class HangmanCommands : NadekoSubmodule { private readonly DiscordSocketClient _client; @@ -22,23 +22,20 @@ namespace NadekoBot.Modules.Games _client = client; } - //channelId, game - public static ConcurrentDictionary HangmanGames { get; } = new ConcurrentDictionary(); - [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Hangmanlist() { - await Context.Channel.SendConfirmAsync(Format.Code(GetText("hangman_types", Prefix)) + "\n" + string.Join("\n", TermPool.Data.Keys)); + await Context.Channel.SendConfirmAsync(Format.Code(GetText("hangman_types", Prefix)) + "\n" + string.Join("\n", _service.TermPool.Data.Keys)); } [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Hangman([Remainder]string type = "random") { - var hm = new Hangman(type); + var hm = new Hangman(type, _service.TermPool); - if (!HangmanGames.TryAdd(Context.Channel.Id, hm)) + if (!_service.HangmanGames.TryAdd(Context.Channel.Id, hm)) { hm.Dispose(); await ReplyErrorLocalized("hangman_running").ConfigureAwait(false); @@ -61,7 +58,7 @@ namespace NadekoBot.Modules.Games await hm.EndedTask.ConfigureAwait(false); _client.MessageReceived -= _client_MessageReceived; - HangmanGames.TryRemove(Context.Channel.Id, out _); + _service.HangmanGames.TryRemove(Context.Channel.Id, out _); hm.Dispose(); Task _client_MessageReceived(SocketMessage msg) @@ -127,7 +124,7 @@ namespace NadekoBot.Modules.Games [RequireContext(ContextType.Guild)] public async Task HangmanStop() { - if (HangmanGames.TryRemove(Context.Channel.Id, out var removed)) + if (_service.HangmanGames.TryRemove(Context.Channel.Id, out var removed)) { await removed.Stop().ConfigureAwait(false); await ReplyConfirmLocalized("hangman_stopped").ConfigureAwait(false); diff --git a/src/NadekoBot/Modules/Games/LeetCommands.cs b/NadekoBot.Core/Modules/Games/LeetCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/LeetCommands.cs rename to NadekoBot.Core/Modules/Games/LeetCommands.cs diff --git a/src/NadekoBot/Modules/Games/NunchiCommands.cs b/NadekoBot.Core/Modules/Games/NunchiCommands.cs similarity index 90% rename from src/NadekoBot/Modules/Games/NunchiCommands.cs rename to NadekoBot.Core/Modules/Games/NunchiCommands.cs index 834e2c02..9b709261 100644 --- a/src/NadekoBot/Modules/Games/NunchiCommands.cs +++ b/NadekoBot.Core/Modules/Games/NunchiCommands.cs @@ -3,8 +3,8 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Games.Common.Nunchi; +using NadekoBot.Modules.Games.Services; using System; -using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; @@ -12,9 +12,9 @@ namespace NadekoBot.Modules.Games { public partial class Games { - public class NunchiCommands : NadekoSubmodule + [Group] + public class NunchiCommands : NadekoSubmodule { - public static readonly ConcurrentDictionary Games = new ConcurrentDictionary(); private readonly DiscordSocketClient _client; public NunchiCommands(DiscordSocketClient client) @@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Games Nunchi nunchi; //if a game was already active - if ((nunchi = Games.GetOrAdd(Context.Guild.Id, newNunchi)) != newNunchi) + if ((nunchi = _service.NunchiGames.GetOrAdd(Context.Guild.Id, newNunchi)) != newNunchi) { // join it if (!await nunchi.Join(Context.User.Id, Context.User.ToString())) @@ -57,7 +57,7 @@ namespace NadekoBot.Modules.Games var success = await nunchi.Initialize().ConfigureAwait(false); if (!success) { - if (Games.TryRemove(Context.Guild.Id, out var game)) + if (_service.NunchiGames.TryRemove(Context.Guild.Id, out var game)) game.Dispose(); await ConfirmLocalized("nunchi_failed_to_start").ConfigureAwait(false); } @@ -85,7 +85,7 @@ namespace NadekoBot.Modules.Games Task Nunchi_OnGameEnded(Nunchi arg1, string arg2) { - if (Games.TryRemove(Context.Guild.Id, out var game)) + if (_service.NunchiGames.TryRemove(Context.Guild.Id, out var game)) { _client.MessageReceived -= _client_MessageReceived; game.Dispose(); diff --git a/src/NadekoBot/Modules/Games/PlantAndPickCommands.cs b/NadekoBot.Core/Modules/Games/PlantAndPickCommands.cs similarity index 72% rename from src/NadekoBot/Modules/Games/PlantAndPickCommands.cs rename to NadekoBot.Core/Modules/Games/PlantAndPickCommands.cs index 3bbe2c79..8eefd2c1 100644 --- a/src/NadekoBot/Modules/Games/PlantAndPickCommands.cs +++ b/NadekoBot.Core/Modules/Games/PlantAndPickCommands.cs @@ -1,14 +1,15 @@ -using Discord; +using Discord; using Discord.Commands; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Games.Services; +using System; namespace NadekoBot.Modules.Games { @@ -22,19 +23,18 @@ namespace NadekoBot.Modules.Games /// https://discord.gg/0TYNJfCU4De7YIk8 /// [Group] - public class PlantPickCommands : NadekoSubmodule + public class PlantPickCommands : NadekoSubmodule { + //todo rewrite private readonly CurrencyService _cs; private readonly IBotConfigProvider _bc; - private readonly GamesService _games; private readonly DbService _db; - public PlantPickCommands(IBotConfigProvider bc, CurrencyService cs, GamesService games, + public PlantPickCommands(IBotConfigProvider bc, CurrencyService cs, DbService db) { _bc = bc; _cs = cs; - _games = games; _db = db; } @@ -44,12 +44,12 @@ namespace NadekoBot.Modules.Games { var channel = (ITextChannel)Context.Channel; + ///waaaaaat if (!(await channel.Guild.GetCurrentUserAsync()).GetPermissions(channel).ManageMessages) return; - try { await Context.Message.DeleteAsync().ConfigureAwait(false); } catch { } - if (!_games.PlantedFlowers.TryRemove(channel.Id, out List msgs)) + if (!_service.PlantedFlowers.TryRemove(channel.Id, out List msgs)) return; await Task.WhenAll(msgs.Where(m => m != null).Select(toDelete => toDelete.DeleteAsync())).ConfigureAwait(false); @@ -74,28 +74,38 @@ namespace NadekoBot.Modules.Games return; } - var imgData = _games.GetRandomCurrencyImage(); - - var msgToSend = GetText("planted", - Format.Bold(Context.User.ToString()), - amount + _bc.BotConfig.CurrencySign, - Prefix); - - if (amount > 1) - msgToSend += " " + GetText("pick_pl", Prefix); - else - msgToSend += " " + GetText("pick_sn", Prefix); - - IUserMessage msg; - using (var toSend = imgData.Data.ToStream()) + IUserMessage msg = null; + try { - msg = await Context.Channel.SendFileAsync(toSend, imgData.Name, msgToSend).ConfigureAwait(false); + var imgData = _service.GetRandomCurrencyImage(); + + var msgToSend = GetText("planted", + Format.Bold(Context.User.ToString()), + amount + _bc.BotConfig.CurrencySign, + Prefix); + + if (amount > 1) + msgToSend += " " + GetText("pick_pl", Prefix); + else + msgToSend += " " + GetText("pick_sn", Prefix); + + using (var toSend = imgData.ToStream()) + { + msg = await Context.Channel.SendFileAsync(toSend, "plant.gif", msgToSend, options: new RequestOptions() + { + RetryMode = RetryMode.AlwaysRetry + }).ConfigureAwait(false); + } + } + catch (Exception ex) + { + _log.Warn(ex); } var msgs = new IUserMessage[amount]; msgs[0] = msg; - _games.PlantedFlowers.AddOrUpdate(Context.Channel.Id, msgs.ToList(), (id, old) => + _service.PlantedFlowers.AddOrUpdate(Context.Channel.Id, msgs.ToList(), (id, old) => { old.AddRange(msgs); return old; @@ -121,13 +131,13 @@ namespace NadekoBot.Modules.Games if (!guildConfig.GenerateCurrencyChannelIds.Contains(toAdd)) { guildConfig.GenerateCurrencyChannelIds.Add(toAdd); - _games.GenerationChannels.Add(channel.Id); + _service.GenerationChannels.Add(channel.Id); enabled = true; } else { guildConfig.GenerateCurrencyChannelIds.Remove(toAdd); - _games.GenerationChannels.TryRemove(channel.Id); + _service.GenerationChannels.TryRemove(channel.Id); enabled = false; } await uow.CompleteAsync(); diff --git a/NadekoBot.Core/Modules/Games/PollCommands.cs b/NadekoBot.Core/Modules/Games/PollCommands.cs new file mode 100644 index 00000000..a620a6f3 --- /dev/null +++ b/NadekoBot.Core/Modules/Games/PollCommands.cs @@ -0,0 +1,113 @@ +using Discord; +using Discord.Commands; +using Discord.WebSocket; +using NadekoBot.Extensions; +using System.Threading.Tasks; +using NadekoBot.Common.Attributes; +using NadekoBot.Modules.Games.Services; +using NadekoBot.Core.Services.Database.Models; +using System.Text; +using System.Linq; + +namespace NadekoBot.Modules.Games +{ + public partial class Games + { + [Group] + public class PollCommands : NadekoSubmodule + { + private readonly DiscordSocketClient _client; + + public PollCommands(DiscordSocketClient client) + { + _client = client; + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireUserPermission(GuildPermission.ManageMessages)] + [RequireContext(ContextType.Guild)] + public async Task Poll([Remainder] string arg) + { + if (string.IsNullOrWhiteSpace(arg)) + return; + + var poll = _service.CreatePoll(Context.Guild.Id, + Context.Channel.Id, arg); + if (_service.StartPoll(poll)) + await Context.Channel + .EmbedAsync(new EmbedBuilder() + .WithTitle(GetText("poll_created", Context.User.ToString())) + .WithDescription( + Format.Bold(poll.Question) + "\n\n" + + string.Join("\n", poll.Answers + .Select(x => $"`{x.Index + 1}.` {Format.Bold(x.Text)}")))) + .ConfigureAwait(false); + else + await ReplyErrorLocalized("poll_already_running").ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireUserPermission(GuildPermission.ManageMessages)] + [RequireContext(ContextType.Guild)] + public async Task PollStats() + { + if (!_service.ActivePolls.TryGetValue(Context.Guild.Id, out var pr)) + return; + + await Context.Channel.EmbedAsync(GetStats(pr.Poll, GetText("current_poll_results"))); + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireUserPermission(GuildPermission.ManageMessages)] + [RequireContext(ContextType.Guild)] + public async Task Pollend() + { + var channel = (ITextChannel)Context.Channel; + + Poll p; + if ((p = _service.StopPoll(Context.Guild.Id)) == null) + return; + + var embed = GetStats(p, GetText("poll_closed")); + await Context.Channel.EmbedAsync(embed) + .ConfigureAwait(false); + } + + public EmbedBuilder GetStats(Poll poll, string title) + { + var results = poll.Votes.GroupBy(kvp => kvp.VoteIndex) + .ToDictionary(x => x.Key, x => x.Sum(kvp => 1)) + .OrderByDescending(kvp => kvp.Value) + .ToArray(); + + var eb = new EmbedBuilder().WithTitle(title); + + var sb = new StringBuilder() + .AppendLine(Format.Bold(poll.Question)) + .AppendLine(); + + var totalVotesCast = 0; + if (results.Length == 0) + { + sb.AppendLine(GetText("no_votes_cast")); + } + else + { + for (int i = 0; i < results.Length; i++) + { + var result = results[i]; + sb.AppendLine(GetText("poll_result", + result.Key + 1, + Format.Bold(poll.Answers[result.Key].Text), + Format.Bold(result.Value.ToString()))); + totalVotesCast += result.Value; + } + } + + return eb.WithDescription(sb.ToString()) + .WithFooter(efb => efb.WithText(GetText("x_votes_cast", totalVotesCast))) + .WithOkColor(); + } + } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Games/Services/ChatterbotService.cs b/NadekoBot.Core/Modules/Games/Services/ChatterbotService.cs similarity index 93% rename from src/NadekoBot/Modules/Games/Services/ChatterbotService.cs rename to NadekoBot.Core/Modules/Games/Services/ChatterbotService.cs index a137b953..ee1a27f8 100644 --- a/src/NadekoBot/Modules/Games/Services/ChatterbotService.cs +++ b/NadekoBot.Core/Modules/Games/Services/ChatterbotService.cs @@ -9,9 +9,9 @@ using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; using NadekoBot.Modules.Permissions.Common; using NadekoBot.Modules.Permissions.Services; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; using NadekoBot.Modules.Games.Common.ChatterBot; @@ -28,8 +28,9 @@ namespace NadekoBot.Modules.Games.Services public ConcurrentDictionary> ChatterBotGuilds { get; } - public ChatterBotService(DiscordSocketClient client, PermissionService perms, IEnumerable gcs, - CommandHandler cmd, NadekoStrings strings, IBotCredentials creds) + public ChatterBotService(DiscordSocketClient client, PermissionService perms, + NadekoBot bot, CommandHandler cmd, NadekoStrings strings, + IBotCredentials creds) { _client = client; _log = LogManager.GetCurrentClassLogger(); @@ -39,7 +40,8 @@ namespace NadekoBot.Modules.Games.Services _creds = creds; ChatterBotGuilds = new ConcurrentDictionary>( - gcs.Where(gc => gc.CleverbotEnabled) + bot.AllGuildConfigs + .Where(gc => gc.CleverbotEnabled) .ToDictionary(gc => gc.GuildId, gc => new Lazy(() => CreateSession(), true))); } diff --git a/src/NadekoBot/Modules/Games/Services/GamesService.cs b/NadekoBot.Core/Modules/Games/Services/GamesService.cs similarity index 64% rename from src/NadekoBot/Modules/Games/Services/GamesService.cs rename to NadekoBot.Core/Modules/Games/Services/GamesService.cs index 39164486..365529c6 100644 --- a/src/NadekoBot/Modules/Games/Services/GamesService.cs +++ b/NadekoBot.Core/Modules/Games/Services/GamesService.cs @@ -12,41 +12,62 @@ using NadekoBot.Common; using NadekoBot.Common.Collections; using NadekoBot.Extensions; using NadekoBot.Modules.Games.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Impl; using Newtonsoft.Json; using NLog; +using NadekoBot.Modules.Games.Common.Acrophobia; +using NadekoBot.Modules.Games.Common.Connect4; +using NadekoBot.Modules.Games.Common.Hangman; +using NadekoBot.Modules.Games.Common.Trivia; +using NadekoBot.Modules.Games.Common.Nunchi; namespace NadekoBot.Modules.Games.Services { - public class GamesService : INService + public class GamesService : INService, IUnloadableService { private readonly IBotConfigProvider _bc; public readonly ConcurrentDictionary GirlRatings = new ConcurrentDictionary(); + public readonly ImmutableArray EightBallResponses; private readonly Timer _t; private readonly CommandHandler _cmd; private readonly NadekoStrings _strings; - private readonly IImagesService _images; + private readonly IImageCache _images; private readonly Logger _log; - + private readonly NadekoRandom _rng; + private readonly CurrencyService _cs; public readonly string TypingArticlesPath = "data/typing_articles2.json"; private readonly CommandHandler _cmdHandler; public List TypingArticles { get; } = new List(); - public GamesService(CommandHandler cmd, IBotConfigProvider bc, IEnumerable gcs, - NadekoStrings strings, IImagesService images, CommandHandler cmdHandler) + //channelId, game + public ConcurrentDictionary AcrophobiaGames { get; } = new ConcurrentDictionary(); + public ConcurrentDictionary Connect4Games { get; } = new ConcurrentDictionary(); + + public ConcurrentDictionary HangmanGames { get; } = new ConcurrentDictionary(); + public TermPool TermPool { get; } = new TermPool(); + + public ConcurrentDictionary RunningTrivias { get; } = new ConcurrentDictionary(); + public Dictionary TicTacToeGames { get; } = new Dictionary(); + public ConcurrentDictionary RunningContests { get; } = new ConcurrentDictionary(); + public ConcurrentDictionary NunchiGames { get; } = new ConcurrentDictionary(); + + public GamesService(CommandHandler cmd, IBotConfigProvider bc, NadekoBot bot, + NadekoStrings strings, IDataCache data, CommandHandler cmdHandler, + CurrencyService cs) { _bc = bc; _cmd = cmd; _strings = strings; - _images = images; + _images = data.LocalImages; _cmdHandler = cmdHandler; _log = LogManager.GetCurrentClassLogger(); + _rng = new NadekoRandom(); + _cs = cs; //8ball EightBallResponses = _bc.BotConfig.EightBallResponses.Select(ebr => ebr.Text).ToImmutableArray(); @@ -60,7 +81,8 @@ namespace NadekoBot.Modules.Games.Services //plantpick _cmd.OnMessageNoTrigger += PotentialFlowerGeneration; - GenerationChannels = new ConcurrentHashSet(gcs + GenerationChannels = new ConcurrentHashSet(bot + .AllGuildConfigs .SelectMany(c => c.GenerateCurrencyChannelIds.Select(obj => obj.ChannelId))); try @@ -74,6 +96,34 @@ namespace NadekoBot.Modules.Games.Services } } + public async Task Unload() + { + _t.Change(Timeout.Infinite, Timeout.Infinite); + _cmd.OnMessageNoTrigger -= PotentialFlowerGeneration; + + AcrophobiaGames.ForEach(x => x.Value.Dispose()); + AcrophobiaGames.Clear(); + Connect4Games.ForEach(x => x.Value.Dispose()); + Connect4Games.Clear(); + HangmanGames.ForEach(x => x.Value.Dispose()); + HangmanGames.Clear(); + await Task.WhenAll(RunningTrivias.Select(x => x.Value.StopGame())); + RunningTrivias.Clear(); + + TicTacToeGames.Clear(); + + await Task.WhenAll(RunningContests.Select(x => x.Value.Stop())) + .ConfigureAwait(false); + RunningContests.Clear(); + NunchiGames.ForEach(x => x.Value.Dispose()); + NunchiGames.Clear(); + } + + private void DisposeElems(IEnumerable xs) + { + xs.ForEach(x => x.Dispose()); + } + public void AddTypingArticle(IUser user, string text) { TypingArticles.Add(new TypingArticle @@ -92,11 +142,13 @@ namespace NadekoBot.Modules.Games.Services public ConcurrentDictionary LastGenerations { get; } = new ConcurrentDictionary(); private ConcurrentDictionary _locks { get; } = new ConcurrentDictionary(); - - public (string Name, ImmutableArray Data) GetRandomCurrencyImage() + public ConcurrentHashSet HalloweenAwardedUsers { get; } = new ConcurrentHashSet(); + + public byte[] GetRandomCurrencyImage() { var rng = new NadekoRandom(); - return _images.Currency[rng.Next(0, _images.Currency.Length)]; + var cur = _images.Currency; + return cur[rng.Next(0, cur.Length)]; } private string GetText(ITextChannel ch, string key, params object[] rep) @@ -144,11 +196,11 @@ namespace NadekoBot.Modules.Games.Services : GetText(channel, "curgen_pl", dropAmount, _bc.BotConfig.CurrencySign) + " " + GetText(channel, "pick_pl", prefix); var file = GetRandomCurrencyImage(); - using (var fileStream = file.Data.ToStream()) + using (var fileStream = file.ToStream()) { var sent = await channel.SendFileAsync( fileStream, - file.Name, + "drop.gif", toSend).ConfigureAwait(false); msgs[0] = sent; @@ -165,5 +217,17 @@ namespace NadekoBot.Modules.Games.Services }); return Task.CompletedTask; } + + public async Task GetTreat(ulong userId) + { + if (_rng.Next(0, 10) != 0) + { + await _cs.AddAsync(userId, "Halloween 2017 Treat", 10) + .ConfigureAwait(false); + return true; + } + + return false; + } } } diff --git a/NadekoBot.Core/Modules/Games/Services/PollService.cs b/NadekoBot.Core/Modules/Games/Services/PollService.cs new file mode 100644 index 00000000..9e9666d1 --- /dev/null +++ b/NadekoBot.Core/Modules/Games/Services/PollService.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Concurrent; +using System.Linq; +using System.Threading.Tasks; +using Discord; +using Discord.WebSocket; +using NadekoBot.Common.ModuleBehaviors; +using NadekoBot.Modules.Games.Common; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Impl; +using NLog; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Common.Collections; +using NadekoBot.Extensions; +using NadekoBot.Core.Services.Database; + +namespace NadekoBot.Modules.Games.Services +{ + public class PollService : IEarlyBlockingExecutor, INService + { + public ConcurrentDictionary ActivePolls { get; } = new ConcurrentDictionary(); + private readonly Logger _log; + private readonly DiscordSocketClient _client; + private readonly NadekoStrings _strings; + private readonly DbService _db; + private readonly NadekoStrings _strs; + + public PollService(DiscordSocketClient client, NadekoStrings strings, DbService db, + NadekoStrings strs, IUnitOfWork uow) + { + _log = LogManager.GetCurrentClassLogger(); + _client = client; + _strings = strings; + _db = db; + _strs = strs; + + ActivePolls = uow.Polls.GetAllPolls() + .ToDictionary(x => x.GuildId, x => + { + var pr = new PollRunner(db, x); + pr.OnVoted += Pr_OnVoted; + return pr; + }) + .ToConcurrent(); + } + + public Poll CreatePoll(ulong guildId, ulong channelId, string input) + { + if (string.IsNullOrWhiteSpace(input) || !input.Contains(";")) + return null; + var data = input.Split(';'); + if (data.Length < 3) + return null; + + var col = new IndexedCollection(data.Skip(1) + .Select(x => new PollAnswer() { Text = x })); + + return new Poll() + { + Answers = col, + Question = data[0], + ChannelId = channelId, + GuildId = guildId, + Votes = new System.Collections.Generic.HashSet() + }; + } + + public bool StartPoll(Poll p) + { + var pr = new PollRunner(_db, p); + if (ActivePolls.TryAdd(p.GuildId, pr)) + { + using (var uow = _db.UnitOfWork) + { + uow.Polls.Add(p); + uow.Complete(); + } + + pr.OnVoted += Pr_OnVoted; + return true; + } + return false; + } + + public Poll StopPoll(ulong guildId) + { + if (ActivePolls.TryRemove(guildId, out var pr)) + { + pr.OnVoted -= Pr_OnVoted; + using (var uow = _db.UnitOfWork) + { + uow.Polls.RemovePoll(pr.Poll.Id); + uow.Complete(); + } + return pr.Poll; + } + return null; + } + + private async Task Pr_OnVoted(IUserMessage msg, IGuildUser usr) + { + var toDelete = await msg.Channel.SendConfirmAsync(_strs.GetText("poll_voted", usr.Guild.Id, "Games".ToLowerInvariant(), Format.Bold(usr.ToString()))) + .ConfigureAwait(false); + toDelete.DeleteAfter(5); + try { await msg.DeleteAsync().ConfigureAwait(false); } catch { } + } + + public async Task TryExecuteEarly(DiscordSocketClient client, IGuild guild, IUserMessage msg) + { + if (guild == null) + return false; + + if (!ActivePolls.TryGetValue(guild.Id, out var poll)) + return false; + + try + { + return await poll.TryVote(msg).ConfigureAwait(false); + } + catch (Exception ex) + { + _log.Warn(ex); + } + + return false; + } + } +} diff --git a/src/NadekoBot/Modules/Games/SpeedTypingCommands.cs b/NadekoBot.Core/Modules/Games/SpeedTypingCommands.cs similarity index 89% rename from src/NadekoBot/Modules/Games/SpeedTypingCommands.cs rename to NadekoBot.Core/Modules/Games/SpeedTypingCommands.cs index 315080ed..1e049d21 100644 --- a/src/NadekoBot/Modules/Games/SpeedTypingCommands.cs +++ b/NadekoBot.Core/Modules/Games/SpeedTypingCommands.cs @@ -3,7 +3,6 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Extensions; using Newtonsoft.Json; -using System.Collections.Concurrent; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -16,9 +15,8 @@ namespace NadekoBot.Modules.Games public partial class Games { [Group] - public class SpeedTypingCommands : NadekoSubmodule + public class SpeedTypingCommands : NadekoSubmodule { - public static ConcurrentDictionary RunningContests = new ConcurrentDictionary(); private readonly GamesService _games; private readonly DiscordSocketClient _client; @@ -34,7 +32,7 @@ namespace NadekoBot.Modules.Games { var channel = (ITextChannel)Context.Channel; - var game = RunningContests.GetOrAdd(channel.Guild.Id, id => new TypingGame(_games, _client, channel, Prefix)); + var game = _service.RunningContests.GetOrAdd(channel.Guild.Id, id => new TypingGame(_games, _client, channel, Prefix)); if (game.IsActive) { @@ -54,8 +52,7 @@ namespace NadekoBot.Modules.Games public async Task TypeStop() { var channel = (ITextChannel)Context.Channel; - TypingGame game; - if (RunningContests.TryRemove(channel.Guild.Id, out game)) + if (_service.RunningContests.TryRemove(channel.Guild.Id, out TypingGame game)) { await game.Stop().ConfigureAwait(false); return; diff --git a/NadekoBot.Core/Modules/Games/TicTacToeCommands.cs b/NadekoBot.Core/Modules/Games/TicTacToeCommands.cs new file mode 100644 index 00000000..8355290e --- /dev/null +++ b/NadekoBot.Core/Modules/Games/TicTacToeCommands.cs @@ -0,0 +1,63 @@ +using Discord; +using Discord.Commands; +using Discord.WebSocket; +using NadekoBot.Extensions; +using System; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using NadekoBot.Common.Attributes; +using NadekoBot.Core.Services.Impl; +using NadekoBot.Modules.Games.Services; +using NadekoBot.Modules.Games.Common; + +namespace NadekoBot.Modules.Games +{ + public partial class Games + { + [Group] + public class TicTacToeCommands : NadekoSubmodule + { + private readonly SemaphoreSlim _sem = new SemaphoreSlim(1, 1); + private readonly DiscordSocketClient _client; + + public TicTacToeCommands(DiscordSocketClient client) + { + _client = client; + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task TicTacToe() + { + var channel = (ITextChannel)Context.Channel; + + await _sem.WaitAsync(1000); + try + { + if (_service.TicTacToeGames.TryGetValue(channel.Id, out TicTacToe game)) + { + var _ = Task.Run(async () => + { + await game.Start((IGuildUser)Context.User); + }); + return; + } + game = new TicTacToe(base._strings, this._client, channel, (IGuildUser)Context.User); + _service.TicTacToeGames.Add(channel.Id, game); + await ReplyConfirmLocalized("ttt_created").ConfigureAwait(false); + + game.OnEnded += (g) => + { + _service.TicTacToeGames.Remove(channel.Id); + _sem.Dispose(); + }; + } + finally + { + _sem.Release(); + } + } + } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Games/TriviaCommands.cs b/NadekoBot.Core/Modules/Games/TriviaCommands.cs similarity index 78% rename from src/NadekoBot/Modules/Games/TriviaCommands.cs rename to NadekoBot.Core/Modules/Games/TriviaCommands.cs index 3360c87f..1feceb37 100644 --- a/src/NadekoBot/Modules/Games/TriviaCommands.cs +++ b/NadekoBot.Core/Modules/Games/TriviaCommands.cs @@ -2,27 +2,28 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; -using System.Collections.Concurrent; +using NadekoBot.Core.Services; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Games.Common.Trivia; +using NadekoBot.Modules.Games.Services; namespace NadekoBot.Modules.Games { public partial class Games { [Group] - public class TriviaCommands : NadekoSubmodule + public class TriviaCommands : NadekoSubmodule { + private readonly IDataCache _cache; private readonly CurrencyService _cs; private readonly DiscordSocketClient _client; private readonly IBotConfigProvider _bc; - public static ConcurrentDictionary RunningTrivias { get; } = new ConcurrentDictionary(); - - public TriviaCommands(DiscordSocketClient client, IBotConfigProvider bc, CurrencyService cs) + public TriviaCommands(DiscordSocketClient client, IDataCache cache, + IBotConfigProvider bc, CurrencyService cs) { + _cache = cache; _cs = cs; _client = client; _bc = bc; @@ -47,8 +48,8 @@ namespace NadekoBot.Modules.Games var showHints = !additionalArgs.Contains("nohint"); var isPokemon = additionalArgs.Contains("pokemon"); - var trivia = new TriviaGame(_strings, _client, _bc, _cs, channel.Guild, channel, showHints, winReq, isPokemon); - if (RunningTrivias.TryAdd(channel.Guild.Id, trivia)) + var trivia = new TriviaGame(_strings, _client, _bc, _cache, _cs, channel.Guild, channel, showHints, winReq, isPokemon); + if (_service.RunningTrivias.TryAdd(channel.Guild.Id, trivia)) { try { @@ -56,7 +57,7 @@ namespace NadekoBot.Modules.Games } finally { - RunningTrivias.TryRemove(channel.Guild.Id, out trivia); + _service.RunningTrivias.TryRemove(channel.Guild.Id, out trivia); await trivia.EnsureStopped().ConfigureAwait(false); } return; @@ -72,8 +73,7 @@ namespace NadekoBot.Modules.Games { var channel = (ITextChannel)Context.Channel; - TriviaGame trivia; - if (RunningTrivias.TryGetValue(channel.Guild.Id, out trivia)) + if (_service.RunningTrivias.TryGetValue(channel.Guild.Id, out TriviaGame trivia)) { await channel.SendConfirmAsync(GetText("leaderboard"), trivia.GetLeaderboard()).ConfigureAwait(false); return; @@ -88,8 +88,7 @@ namespace NadekoBot.Modules.Games { var channel = (ITextChannel)Context.Channel; - TriviaGame trivia; - if (RunningTrivias.TryGetValue(channel.Guild.Id, out trivia)) + if (_service.RunningTrivias.TryGetValue(channel.Guild.Id, out TriviaGame trivia)) { await trivia.StopGame().ConfigureAwait(false); return; diff --git a/src/NadekoBot/Modules/Help/Help.cs b/NadekoBot.Core/Modules/Help/Help.cs similarity index 90% rename from src/NadekoBot/Modules/Help/Help.cs rename to NadekoBot.Core/Modules/Help/Help.cs index 35a8f32f..4f5efac3 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/NadekoBot.Core/Modules/Help/Help.cs @@ -2,7 +2,7 @@ using NadekoBot.Extensions; using System.Linq; using Discord; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Threading.Tasks; using System; using System.IO; @@ -11,6 +11,8 @@ using System.Collections.Generic; using NadekoBot.Common.Attributes; using NadekoBot.Modules.Help.Services; using NadekoBot.Modules.Permissions.Services; +using NadekoBot.Common; +using NadekoBot.Common.Replacements; namespace NadekoBot.Modules.Help { @@ -23,8 +25,23 @@ namespace NadekoBot.Modules.Help private readonly CommandService _cmds; private readonly GlobalPermissionService _perms; - public string HelpString => String.Format(_config.BotConfig.HelpString, _creds.ClientId, Prefix); - public string DMHelpString => _config.BotConfig.DMHelpString; + public EmbedBuilder GetHelpStringEmbed() + { + var r = new ReplacementBuilder() + .WithDefault(Context) + .WithOverride("{0}", () => _creds.ClientId.ToString()) + .WithOverride("{1}", () => Prefix) + .Build(); + + + if (!CREmbed.TryParse(_config.BotConfig.HelpString, out var embed)) + return new EmbedBuilder().WithOkColor() + .WithDescription(String.Format(_config.BotConfig.HelpString, _creds.ClientId, Prefix)); + + r.Replace(embed); + + return embed.ToEmbed(); + } public Help(IBotCredentials creds, GlobalPermissionService perms, IBotConfigProvider config, CommandService cmds) { @@ -94,16 +111,10 @@ namespace NadekoBot.Modules.Help if (com == null) { IMessageChannel ch = channel is ITextChannel ? await ((IGuildUser)Context.User).GetOrCreateDMChannelAsync() : channel; - await ch.SendMessageAsync(HelpString).ConfigureAwait(false); + await ch.EmbedAsync(GetHelpStringEmbed()).ConfigureAwait(false); return; } - //if (com == null) - //{ - // await ReplyErrorLocalized("command_not_found").ConfigureAwait(false); - // return; - //} - var embed = _service.GetCommandHelp(com, Context.Guild); await channel.EmbedAsync(embed).ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Help/Services/HelpService.cs b/NadekoBot.Core/Modules/Help/Services/HelpService.cs similarity index 78% rename from src/NadekoBot/Modules/Help/Services/HelpService.cs rename to NadekoBot.Core/Modules/Help/Services/HelpService.cs index 88220154..23416b1a 100644 --- a/src/NadekoBot/Modules/Help/Services/HelpService.cs +++ b/NadekoBot.Core/Modules/Help/Services/HelpService.cs @@ -7,8 +7,10 @@ using NadekoBot.Extensions; using System.Linq; using NadekoBot.Common.Attributes; using NadekoBot.Common.ModuleBehaviors; -using NadekoBot.Services; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Impl; +using NadekoBot.Common; +using NLog; namespace NadekoBot.Modules.Help.Services { @@ -17,25 +19,33 @@ namespace NadekoBot.Modules.Help.Services private readonly IBotConfigProvider _bc; private readonly CommandHandler _ch; private readonly NadekoStrings _strings; + private readonly Logger _log; public HelpService(IBotConfigProvider bc, CommandHandler ch, NadekoStrings strings) { _bc = bc; _ch = ch; _strings = strings; + _log = LogManager.GetCurrentClassLogger(); } - public async Task LateExecute(DiscordSocketClient client, IGuild guild, IUserMessage msg) + public Task LateExecute(DiscordSocketClient client, IGuild guild, IUserMessage msg) { try { - if(guild == null) - await msg.Channel.SendMessageAsync(_bc.BotConfig.DMHelpString).ConfigureAwait(false); + if (guild == null) + { + if (CREmbed.TryParse(_bc.BotConfig.DMHelpString, out var embed)) + return msg.Channel.EmbedAsync(embed.ToEmbed(), embed.PlainText?.SanitizeMentions() ?? ""); + + return msg.Channel.SendMessageAsync(_bc.BotConfig.DMHelpString); + } } - catch (Exception) + catch (Exception ex) { - //ignore + _log.Warn(ex); } + return Task.CompletedTask; } public EmbedBuilder GetCommandHelp(CommandInfo com, IGuild guild) diff --git a/src/NadekoBot/Modules/Music/Common/Exceptions/NotInVoiceChannelException.cs b/NadekoBot.Core/Modules/Music/Common/Exceptions/NotInVoiceChannelException.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Exceptions/NotInVoiceChannelException.cs rename to NadekoBot.Core/Modules/Music/Common/Exceptions/NotInVoiceChannelException.cs diff --git a/src/NadekoBot/Modules/Music/Common/Exceptions/QueueFullException.cs b/NadekoBot.Core/Modules/Music/Common/Exceptions/QueueFullException.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Exceptions/QueueFullException.cs rename to NadekoBot.Core/Modules/Music/Common/Exceptions/QueueFullException.cs diff --git a/src/NadekoBot/Modules/Music/Common/Exceptions/SongNotFoundException.cs b/NadekoBot.Core/Modules/Music/Common/Exceptions/SongNotFoundException.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Exceptions/SongNotFoundException.cs rename to NadekoBot.Core/Modules/Music/Common/Exceptions/SongNotFoundException.cs diff --git a/src/NadekoBot/Modules/Music/Common/MusicPlayer.cs b/NadekoBot.Core/Modules/Music/Common/MusicPlayer.cs similarity index 99% rename from src/NadekoBot/Modules/Music/Common/MusicPlayer.cs rename to NadekoBot.Core/Modules/Music/Common/MusicPlayer.cs index aa61a9ce..c6d99e26 100644 --- a/src/NadekoBot/Modules/Music/Common/MusicPlayer.cs +++ b/NadekoBot.Core/Modules/Music/Common/MusicPlayer.cs @@ -9,8 +9,8 @@ using NadekoBot.Extensions; using System.Diagnostics; using NadekoBot.Common.Collections; using NadekoBot.Modules.Music.Services; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Music.Common { @@ -142,11 +142,8 @@ namespace NadekoBot.Modules.Music.Common this._musicService = musicService; this._google = google; - _log.Info("Initialized"); - _player = new Thread(new ThreadStart(PlayerLoop)); _player.Start(); - _log.Info("Loop started"); } private async void PlayerLoop() @@ -383,7 +380,6 @@ namespace NadekoBot.Modules.Music.Common } newVoiceChannel = false; - _log.Info("Get current user"); var curUser = await VoiceChannel.Guild.GetCurrentUserAsync(); if (curUser.VoiceChannel != null) { diff --git a/src/NadekoBot/Modules/Music/Common/MusicQueue.cs b/NadekoBot.Core/Modules/Music/Common/MusicQueue.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/MusicQueue.cs rename to NadekoBot.Core/Modules/Music/Common/MusicQueue.cs diff --git a/src/NadekoBot/Modules/Music/Common/SongBuffer.cs b/NadekoBot.Core/Modules/Music/Common/SongBuffer.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/SongBuffer.cs rename to NadekoBot.Core/Modules/Music/Common/SongBuffer.cs diff --git a/src/NadekoBot/Modules/Music/Common/SongHandler.cs b/NadekoBot.Core/Modules/Music/Common/SongHandler.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/SongHandler.cs rename to NadekoBot.Core/Modules/Music/Common/SongHandler.cs diff --git a/src/NadekoBot/Modules/Music/Common/SongInfo.cs b/NadekoBot.Core/Modules/Music/Common/SongInfo.cs similarity index 98% rename from src/NadekoBot/Modules/Music/Common/SongInfo.cs rename to NadekoBot.Core/Modules/Music/Common/SongInfo.cs index c19f8057..02f7ac35 100644 --- a/src/NadekoBot/Modules/Music/Common/SongInfo.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongInfo.cs @@ -1,6 +1,6 @@ using Discord; using NadekoBot.Extensions; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Net; using System.Text.RegularExpressions; diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/ISongResolverFactory.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/ISongResolverFactory.cs similarity index 86% rename from src/NadekoBot/Modules/Music/Common/SongResolver/ISongResolverFactory.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/ISongResolverFactory.cs index c7d79e73..688971f7 100644 --- a/src/NadekoBot/Modules/Music/Common/SongResolver/ISongResolverFactory.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongResolver/ISongResolverFactory.cs @@ -1,5 +1,5 @@ using NadekoBot.Modules.Music.Common.SongResolver.Strategies; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Threading.Tasks; namespace NadekoBot.Modules.Music.Common.SongResolver diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/SongResolverFactory.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/SongResolverFactory.cs similarity index 94% rename from src/NadekoBot/Modules/Music/Common/SongResolver/SongResolverFactory.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/SongResolverFactory.cs index 7e65701c..b06739b9 100644 --- a/src/NadekoBot/Modules/Music/Common/SongResolver/SongResolverFactory.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongResolver/SongResolverFactory.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NadekoBot.Modules.Music.Common.SongResolver.Strategies; namespace NadekoBot.Modules.Music.Common.SongResolver diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/IResolverStrategy.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/IResolverStrategy.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/IResolverStrategy.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/IResolverStrategy.cs diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/LocalSongResolveStrategy.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/LocalSongResolveStrategy.cs similarity index 93% rename from src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/LocalSongResolveStrategy.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/LocalSongResolveStrategy.cs index 413dfa9d..e262c9a9 100644 --- a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/LocalSongResolveStrategy.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/LocalSongResolveStrategy.cs @@ -1,4 +1,4 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.IO; using System.Threading.Tasks; diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/RadioResolveStrategy.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/RadioResolveStrategy.cs similarity index 98% rename from src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/RadioResolveStrategy.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/RadioResolveStrategy.cs index 5e11ae4e..06f9ca0f 100644 --- a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/RadioResolveStrategy.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/RadioResolveStrategy.cs @@ -1,4 +1,4 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NLog; using System; using System.Net.Http; diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/SoundCloudResolveStrategy.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/SoundCloudResolveStrategy.cs similarity index 95% rename from src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/SoundCloudResolveStrategy.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/SoundCloudResolveStrategy.cs index 66e42075..ae786e79 100644 --- a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/SoundCloudResolveStrategy.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/SoundCloudResolveStrategy.cs @@ -1,5 +1,5 @@ using NadekoBot.Modules.Music.Extensions; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; using System.Threading.Tasks; namespace NadekoBot.Modules.Music.Common.SongResolver.Strategies diff --git a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/YoutubeResolveStrategy.cs b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/YoutubeResolveStrategy.cs similarity index 96% rename from src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/YoutubeResolveStrategy.cs rename to NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/YoutubeResolveStrategy.cs index e4a0058e..1443a695 100644 --- a/src/NadekoBot/Modules/Music/Common/SongResolver/Strategies/YoutubeResolveStrategy.cs +++ b/NadekoBot.Core/Modules/Music/Common/SongResolver/Strategies/YoutubeResolveStrategy.cs @@ -1,5 +1,5 @@ -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; using System; using System.Globalization; diff --git a/src/NadekoBot/Modules/Music/Extensions/Extensions.cs b/NadekoBot.Core/Modules/Music/Extensions/Extensions.cs similarity index 89% rename from src/NadekoBot/Modules/Music/Extensions/Extensions.cs rename to NadekoBot.Core/Modules/Music/Extensions/Extensions.cs index b3eb1d38..1acd66fe 100644 --- a/src/NadekoBot/Modules/Music/Extensions/Extensions.cs +++ b/NadekoBot.Core/Modules/Music/Extensions/Extensions.cs @@ -1,6 +1,6 @@ using NadekoBot.Modules.Music.Common; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using System; using System.Threading.Tasks; diff --git a/src/NadekoBot/Modules/Music/Music.cs b/NadekoBot.Core/Modules/Music/Music.cs similarity index 97% rename from src/NadekoBot/Modules/Music/Music.cs rename to NadekoBot.Core/Modules/Music/Music.cs index a5b0295e..b7dc57ce 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/NadekoBot.Core/Modules/Music/Music.cs @@ -1,20 +1,20 @@ using Discord.Commands; using Discord.WebSocket; -using NadekoBot.Services; +using NadekoBot.Core.Services; using Discord; using System.Threading.Tasks; using System; using System.Linq; using NadekoBot.Extensions; using System.Collections.Generic; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.IO; using System.Net.Http; using NadekoBot.Common; using NadekoBot.Common.Attributes; using NadekoBot.Common.Collections; using Newtonsoft.Json.Linq; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; using NadekoBot.Modules.Music.Services; using NadekoBot.Modules.Music.Common.Exceptions; using NadekoBot.Modules.Music.Common; @@ -30,25 +30,18 @@ namespace NadekoBot.Modules.Music private readonly IGoogleApiService _google; private readonly DbService _db; - public Music(DiscordSocketClient client, IBotCredentials creds, IGoogleApiService google, + public Music(DiscordSocketClient client, + IBotCredentials creds, + IGoogleApiService google, DbService db) { _client = client; _creds = creds; _google = google; _db = db; - - //_client.UserVoiceStateUpdated += Client_UserVoiceStateUpdated; - _client.LeftGuild += _client_LeftGuild; } - private Task _client_LeftGuild(SocketGuild arg) - { - var t = _service.DestroyPlayer(arg.Id); - return Task.CompletedTask; - } - - //todo changing server region is bugged again + //todo 50 changing server region is bugged again //private Task Client_UserVoiceStateUpdated(SocketUser iusr, SocketVoiceState oldState, SocketVoiceState newState) //{ // var t = Task.Run(() => @@ -265,7 +258,6 @@ namespace NadekoBot.Modules.Music total.Minutes, total.Seconds); var maxPlaytime = mp.MaxPlaytimeSeconds; - var lastPage = songs.Length / itemsPerPage; Func printAction = curPage => { var startAt = itemsPerPage * curPage; @@ -307,7 +299,7 @@ namespace NadekoBot.Modules.Music desc = add + "\n" + desc; var embed = new EmbedBuilder() - .WithAuthor(eab => eab.WithName(GetText("player_queue", curPage + 1, lastPage + 1)) + .WithAuthor(eab => eab.WithName(GetText("player_queue", curPage + 1, (songs.Length / itemsPerPage) + 1)) .WithMusicIcon()) .WithDescription(desc) .WithFooter(ef => ef.WithText($"{mp.PrettyVolume} | {songs.Length} " + @@ -316,7 +308,8 @@ namespace NadekoBot.Modules.Music return embed; }; - await Context.Channel.SendPaginatedConfirmAsync(_client, page, printAction, lastPage, false).ConfigureAwait(false); + await Context.Channel.SendPaginatedConfirmAsync(_client, + page, printAction, songs.Length, itemsPerPage, false).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -339,6 +332,19 @@ namespace NadekoBot.Modules.Music mp.Stop(); } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task AutoDisconnect() + { + var newVal = _service.ToggleAutoDc(Context.Guild.Id); + + if(newVal) + await ReplyConfirmLocalized("autodc_enable").ConfigureAwait(false); + else + await ReplyConfirmLocalized("autodc_disable").ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Destroy() diff --git a/src/NadekoBot/Modules/Music/Services/MusicService.cs b/NadekoBot.Core/Modules/Music/Services/MusicService.cs similarity index 81% rename from src/NadekoBot/Modules/Music/Services/MusicService.cs rename to NadekoBot.Core/Modules/Music/Services/MusicService.cs index d0b00657..712c4681 100644 --- a/src/NadekoBot/Modules/Music/Services/MusicService.cs +++ b/NadekoBot.Core/Modules/Music/Services/MusicService.cs @@ -3,22 +3,22 @@ using System.Linq; using System.Threading.Tasks; using Discord; using NadekoBot.Extensions; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NLog; using System.IO; -using System.Collections.Generic; using Discord.Commands; using Discord.WebSocket; using NadekoBot.Common; -using NadekoBot.Services.Impl; -using NadekoBot.Services; +using NadekoBot.Core.Services.Impl; +using NadekoBot.Core.Services; using NadekoBot.Modules.Music.Common; using NadekoBot.Modules.Music.Common.Exceptions; using NadekoBot.Modules.Music.Common.SongResolver; +using NadekoBot.Common.Collections; namespace NadekoBot.Modules.Music.Services { - public class MusicService : INService + public class MusicService : INService, IUnloadableService { public const string MusicDataPath = "data/musicdata"; @@ -30,13 +30,16 @@ namespace NadekoBot.Modules.Music.Services private readonly SoundCloudApiService _sc; private readonly IBotCredentials _creds; private readonly ConcurrentDictionary _defaultVolumes; + + public ConcurrentHashSet AutoDcServers { get; } + private readonly DiscordSocketClient _client; public ConcurrentDictionary MusicPlayers { get; } = new ConcurrentDictionary(); public MusicService(DiscordSocketClient client, IGoogleApiService google, NadekoStrings strings, ILocalization localization, DbService db, - SoundCloudApiService sc, IBotCredentials creds, IEnumerable gcs) + SoundCloudApiService sc, IBotCredentials creds, NadekoBot bot) { _client = client; _google = google; @@ -47,13 +50,29 @@ namespace NadekoBot.Modules.Music.Services _creds = creds; _log = LogManager.GetCurrentClassLogger(); + _client.LeftGuild += _client_LeftGuild; + try { Directory.Delete(MusicDataPath, true); } catch { } - _defaultVolumes = new ConcurrentDictionary(gcs.ToDictionary(x => x.GuildId, x => x.DefaultMusicVolume)); + _defaultVolumes = new ConcurrentDictionary( + bot.AllGuildConfigs + .ToDictionary(x => x.GuildId, x => x.DefaultMusicVolume)); + + AutoDcServers = new ConcurrentHashSet(bot.AllGuildConfigs.Where(x => x.AutoDcFromVc).Select(x => x.GuildId)); Directory.CreateDirectory(MusicDataPath); + } - //_t = new Timer(_ => _log.Info(MusicPlayers.Count(x => x.Value.Current.Current != null)), null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)); + public Task Unload() + { + _client.LeftGuild -= _client_LeftGuild; + return Task.CompletedTask; + } + + private Task _client_LeftGuild(SocketGuild arg) + { + var t = DestroyPlayer(arg.Id); + return Task.CompletedTask; } public float GetDefaultVolume(ulong guildId) @@ -79,8 +98,7 @@ namespace NadekoBot.Modules.Music.Services { string GetText(string text, params object[] replacements) => _strings.GetText(text, _localization.GetCultureInfo(textCh.Guild), "Music".ToLowerInvariant(), replacements); - - _log.Info("Checks"); + if (voiceCh == null || voiceCh.Guild != textCh.Guild) { if (textCh != null) @@ -89,18 +107,14 @@ namespace NadekoBot.Modules.Music.Services } throw new NotInVoiceChannelException(); } - _log.Info("Get or add"); return MusicPlayers.GetOrAdd(guildId, _ => { - _log.Info("Getting default volume"); var vol = GetDefaultVolume(guildId); - _log.Info("Creating musicplayer instance"); var mp = new MusicPlayer(this, _google, voiceCh, textCh, vol); IUserMessage playingMessage = null; IUserMessage lastFinishedMessage = null; - _log.Info("Subscribing"); mp.OnCompleted += async (s, song) => { try @@ -119,6 +133,16 @@ namespace NadekoBot.Modules.Music.Services { // ignored } + + var cur = mp.Current; + if (cur.Current == null + && !mp.RepeatCurrentSong + && !mp.RepeatPlaylist + && !mp.FairPlay + && AutoDcServers.Contains(guildId)) + { + await DestroyPlayer(guildId).ConfigureAwait(false); + } } catch { @@ -222,5 +246,23 @@ namespace NadekoBot.Modules.Music.Services if (MusicPlayers.TryRemove(id, out var mp)) await mp.Destroy(); } + + public bool ToggleAutoDc(ulong id) + { + bool val; + using (var uow = _db.UnitOfWork) + { + var gc = uow.GuildConfigs.For(id, set => set); + val = gc.AutoDcFromVc = !gc.AutoDcFromVc; + uow.Complete(); + } + + if (val) + AutoDcServers.Add(id); + else + AutoDcServers.TryRemove(id); + + return val; + } } } \ No newline at end of file diff --git a/NadekoBot.Core/Modules/Nsfw/Exceptions/TagBlacklistedException.cs b/NadekoBot.Core/Modules/Nsfw/Exceptions/TagBlacklistedException.cs new file mode 100644 index 00000000..5d4cfc92 --- /dev/null +++ b/NadekoBot.Core/Modules/Nsfw/Exceptions/TagBlacklistedException.cs @@ -0,0 +1,5 @@ +using System; + +namespace NadekoBot.Modules.NSFW.Exceptions +{ +} diff --git a/src/NadekoBot/Modules/NSFW/NSFW.cs b/NadekoBot.Core/Modules/Nsfw/NSFW.cs similarity index 93% rename from src/NadekoBot/Modules/NSFW/NSFW.cs rename to NadekoBot.Core/Modules/Nsfw/NSFW.cs index 1ca27691..4b16fb6c 100644 --- a/src/NadekoBot/Modules/NSFW/NSFW.cs +++ b/NadekoBot.Core/Modules/Nsfw/NSFW.cs @@ -6,23 +6,19 @@ using System.Linq; using System.Threading.Tasks; using NadekoBot.Extensions; using System.Threading; -using System.Collections.Concurrent; using NadekoBot.Common; using NadekoBot.Common.Attributes; using NadekoBot.Common.Collections; using NadekoBot.Modules.Searches.Common; using NadekoBot.Modules.Searches.Services; using NadekoBot.Modules.NSFW.Exceptions; +using NadekoBot.Modules.Searches.Exceptions; namespace NadekoBot.Modules.NSFW { // thanks to halitalf for adding autoboob and autobutt features :D public class NSFW : NadekoTopLevelModule { - private static readonly ConcurrentDictionary _autoHentaiTimers = new ConcurrentDictionary(); - private static readonly ConcurrentDictionary _autoBoobTimers = new ConcurrentDictionary(); - private static readonly ConcurrentDictionary _autoButtTimers = new ConcurrentDictionary(); - private static readonly ConcurrentHashSet _hentaiBombBlacklist = new ConcurrentHashSet(); private async Task InternalHentai(IMessageChannel channel, string tag, bool noError) @@ -90,7 +86,7 @@ namespace NadekoBot.Modules.NSFW if (interval == 0) { - if (!_autoHentaiTimers.TryRemove(Context.Channel.Id, out t)) return; + if (!_service.AutoHentaiTimers.TryRemove(Context.Channel.Id, out t)) return; t.Change(Timeout.Infinite, Timeout.Infinite); //proper way to disable the timer await ReplyConfirmLocalized("stopped").ConfigureAwait(false); @@ -117,7 +113,7 @@ namespace NadekoBot.Modules.NSFW } }, null, interval * 1000, interval * 1000); - _autoHentaiTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) => + _service.AutoHentaiTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) => { old.Change(Timeout.Infinite, Timeout.Infinite); return t; @@ -136,7 +132,7 @@ namespace NadekoBot.Modules.NSFW if (interval == 0) { - if (!_autoBoobTimers.TryRemove(Context.Channel.Id, out t)) return; + if (!_service.AutoBoobTimers.TryRemove(Context.Channel.Id, out t)) return; t.Change(Timeout.Infinite, Timeout.Infinite); //proper way to disable the timer await ReplyConfirmLocalized("stopped").ConfigureAwait(false); @@ -158,7 +154,7 @@ namespace NadekoBot.Modules.NSFW } }, null, interval * 1000, interval * 1000); - _autoBoobTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) => + _service.AutoBoobTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) => { old.Change(Timeout.Infinite, Timeout.Infinite); return t; @@ -175,7 +171,7 @@ namespace NadekoBot.Modules.NSFW if (interval == 0) { - if (!_autoButtTimers.TryRemove(Context.Channel.Id, out t)) return; + if (!_service.AutoButtTimers.TryRemove(Context.Channel.Id, out t)) return; t.Change(Timeout.Infinite, Timeout.Infinite); //proper way to disable the timer await ReplyConfirmLocalized("stopped").ConfigureAwait(false); @@ -197,7 +193,7 @@ namespace NadekoBot.Modules.NSFW } }, null, interval * 1000, interval * 1000); - _autoButtTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) => + _service.AutoButtTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) => { old.Change(Timeout.Infinite, Timeout.Infinite); return t; diff --git a/src/NadekoBot/Modules/Permissions/BlacklistCommands.cs b/NadekoBot.Core/Modules/Permissions/BlacklistCommands.cs similarity index 77% rename from src/NadekoBot/Modules/Permissions/BlacklistCommands.cs rename to NadekoBot.Core/Modules/Permissions/BlacklistCommands.cs index 377631e0..43108982 100644 --- a/src/NadekoBot/Modules/Permissions/BlacklistCommands.cs +++ b/NadekoBot.Core/Modules/Permissions/BlacklistCommands.cs @@ -1,12 +1,10 @@ using Discord; using Discord.Commands; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using System.Linq; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Common.Collections; -using NadekoBot.Modules.Games.Common.Trivia; using NadekoBot.Modules.Permissions.Services; using NadekoBot.Common.TypeReaders; @@ -99,31 +97,6 @@ namespace NadekoBot.Modules.Permissions } await uow.CompleteAsync().ConfigureAwait(false); } - if (action == AddRemove.Add) - { - TriviaGame tg; - switch (type) - { - case BlacklistType.Server: - Games.Games.TriviaCommands.RunningTrivias.TryRemove(id, out tg); - if (tg != null) - { - await tg.StopGame().ConfigureAwait(false); - } - break; - case BlacklistType.Channel: - var item = Games.Games.TriviaCommands.RunningTrivias.FirstOrDefault(kvp => kvp.Value.Channel.Id == id); - Games.Games.TriviaCommands.RunningTrivias.TryRemove(item.Key, out tg); - if (tg != null) - { - await tg.StopGame().ConfigureAwait(false); - } - break; - case BlacklistType.User: - break; - } - - } if(action == AddRemove.Add) await ReplyConfirmLocalized("blacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); diff --git a/src/NadekoBot/Modules/Permissions/CmdCdsCommands.cs b/NadekoBot.Core/Modules/Permissions/CmdCdsCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Permissions/CmdCdsCommands.cs rename to NadekoBot.Core/Modules/Permissions/CmdCdsCommands.cs index 5c3fed31..66b68cd5 100644 --- a/src/NadekoBot/Modules/Permissions/CmdCdsCommands.cs +++ b/NadekoBot.Core/Modules/Permissions/CmdCdsCommands.cs @@ -2,8 +2,8 @@ using Discord.Commands; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; diff --git a/src/NadekoBot/Modules/Permissions/CommandCostCommands.cs b/NadekoBot.Core/Modules/Permissions/CommandCostCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/CommandCostCommands.cs rename to NadekoBot.Core/Modules/Permissions/CommandCostCommands.cs diff --git a/src/NadekoBot/Modules/Permissions/Common/PermissionCache.cs b/NadekoBot.Core/Modules/Permissions/Common/PermissionCache.cs similarity index 90% rename from src/NadekoBot/Modules/Permissions/Common/PermissionCache.cs rename to NadekoBot.Core/Modules/Permissions/Common/PermissionCache.cs index fd02a0b3..b8a8c7cb 100644 --- a/src/NadekoBot/Modules/Permissions/Common/PermissionCache.cs +++ b/NadekoBot.Core/Modules/Permissions/Common/PermissionCache.cs @@ -1,4 +1,4 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions.Common { diff --git a/src/NadekoBot/Modules/Permissions/Common/PermissionExtensions.cs b/NadekoBot.Core/Modules/Permissions/Common/PermissionExtensions.cs similarity index 99% rename from src/NadekoBot/Modules/Permissions/Common/PermissionExtensions.cs rename to NadekoBot.Core/Modules/Permissions/Common/PermissionExtensions.cs index 977a319a..0ad0c8e5 100644 --- a/src/NadekoBot/Modules/Permissions/Common/PermissionExtensions.cs +++ b/NadekoBot.Core/Modules/Permissions/Common/PermissionExtensions.cs @@ -2,7 +2,7 @@ using System.Linq; using Discord; using Discord.WebSocket; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions.Common { diff --git a/src/NadekoBot/Modules/Permissions/Common/PermissionsCollection.cs b/NadekoBot.Core/Modules/Permissions/Common/PermissionsCollection.cs similarity index 97% rename from src/NadekoBot/Modules/Permissions/Common/PermissionsCollection.cs rename to NadekoBot.Core/Modules/Permissions/Common/PermissionsCollection.cs index 0f6ab6b9..df2e1759 100644 --- a/src/NadekoBot/Modules/Permissions/Common/PermissionsCollection.cs +++ b/NadekoBot.Core/Modules/Permissions/Common/PermissionsCollection.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using NadekoBot.Common.Collections; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions.Common { diff --git a/src/NadekoBot/Modules/Permissions/FilterCommands.cs b/NadekoBot.Core/Modules/Permissions/FilterCommands.cs similarity index 92% rename from src/NadekoBot/Modules/Permissions/FilterCommands.cs rename to NadekoBot.Core/Modules/Permissions/FilterCommands.cs index 22e22c82..f241098b 100644 --- a/src/NadekoBot/Modules/Permissions/FilterCommands.cs +++ b/NadekoBot.Core/Modules/Permissions/FilterCommands.cs @@ -3,30 +3,38 @@ using Discord.Commands; using Discord.WebSocket; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Common.Collections; using NadekoBot.Modules.Permissions.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions { public partial class Permissions { [Group] - public class FilterCommands : NadekoSubmodule + public class FilterCommands : NadekoSubmodule { private readonly DbService _db; - private readonly FilterService _service; - public FilterCommands(FilterService service, DbService db) + public FilterCommands(DbService db) { - _service = service; _db = db; } + //[NadekoCommand, Usage, Description, Aliases] + //[RequireContext(ContextType.Guild)] + //public async Task SrvrFilterLinks() + //{ + // using (var uow = _db.UnitOfWork) + // { + // var config = + // } + //} + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SrvrFilterInv() @@ -81,6 +89,7 @@ namespace NadekoBot.Modules.Permissions } else { + _service.InviteFilteringChannels.TryRemove(channel.Id); await ReplyConfirmLocalized("invite_filter_channel_off").ConfigureAwait(false); } } @@ -202,7 +211,7 @@ namespace NadekoBot.Modules.Permissions new EmbedBuilder() .WithTitle(GetText("filter_word_list")) .WithDescription(string.Join("\n", fws.Skip(curPage * 10).Take(10))) - , fws.Length / 10).ConfigureAwait(false); + , fws.Length, 10).ConfigureAwait(false); } } } diff --git a/src/NadekoBot/Modules/Permissions/GlobalPermissionCommands.cs b/NadekoBot.Core/Modules/Permissions/GlobalPermissionCommands.cs similarity index 88% rename from src/NadekoBot/Modules/Permissions/GlobalPermissionCommands.cs rename to NadekoBot.Core/Modules/Permissions/GlobalPermissionCommands.cs index 5c49adf7..909dcf1c 100644 --- a/src/NadekoBot/Modules/Permissions/GlobalPermissionCommands.cs +++ b/NadekoBot.Core/Modules/Permissions/GlobalPermissionCommands.cs @@ -1,13 +1,14 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; using NadekoBot.Common.TypeReaders; using NadekoBot.Modules.Permissions.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; +using Microsoft.EntityFrameworkCore; namespace NadekoBot.Modules.Permissions { @@ -55,7 +56,7 @@ namespace NadekoBot.Modules.Permissions { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set.Include(x => x.BlockedModules)); bc.BlockedModules.Add(new BlockedCmdOrMdl { Name = moduleName, @@ -69,7 +70,7 @@ namespace NadekoBot.Modules.Permissions { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set.Include(x => x.BlockedModules)); bc.BlockedModules.RemoveWhere(x => x.Name == moduleName); uow.Complete(); } @@ -87,7 +88,7 @@ namespace NadekoBot.Modules.Permissions { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set.Include(x => x.BlockedCommands)); bc.BlockedCommands.Add(new BlockedCmdOrMdl { Name = commandName, @@ -101,7 +102,7 @@ namespace NadekoBot.Modules.Permissions { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set.Include(x => x.BlockedCommands)); bc.BlockedCommands.RemoveWhere(x => x.Name == commandName); uow.Complete(); } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/NadekoBot.Core/Modules/Permissions/Permissions.cs similarity index 99% rename from src/NadekoBot/Modules/Permissions/Permissions.cs rename to NadekoBot.Core/Modules/Permissions/Permissions.cs index ce7f6fa9..d9987f16 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/NadekoBot.Core/Modules/Permissions/Permissions.cs @@ -2,9 +2,9 @@ using System.Linq; using System.Threading.Tasks; using Discord.Commands; -using NadekoBot.Services; +using NadekoBot.Core.Services; using Discord; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using Discord.WebSocket; using NadekoBot.Common.Attributes; diff --git a/src/NadekoBot/Modules/Permissions/ResetPermissionsCommands.cs b/NadekoBot.Core/Modules/Permissions/ResetPermissionsCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/ResetPermissionsCommands.cs rename to NadekoBot.Core/Modules/Permissions/ResetPermissionsCommands.cs diff --git a/src/NadekoBot/Modules/Permissions/Services/BlacklistService.cs b/NadekoBot.Core/Modules/Permissions/Services/BlacklistService.cs similarity index 94% rename from src/NadekoBot/Modules/Permissions/Services/BlacklistService.cs rename to NadekoBot.Core/Modules/Permissions/Services/BlacklistService.cs index 3c2128dc..f5b17ef9 100644 --- a/src/NadekoBot/Modules/Permissions/Services/BlacklistService.cs +++ b/NadekoBot.Core/Modules/Permissions/Services/BlacklistService.cs @@ -3,8 +3,8 @@ using System.Threading.Tasks; using Discord; using NadekoBot.Common.Collections; using NadekoBot.Common.ModuleBehaviors; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions.Services { diff --git a/src/NadekoBot/Modules/Permissions/Services/CmdCdService.cs b/NadekoBot.Core/Modules/Permissions/Services/CmdCdService.cs similarity index 93% rename from src/NadekoBot/Modules/Permissions/Services/CmdCdService.cs rename to NadekoBot.Core/Modules/Permissions/Services/CmdCdService.cs index bead8238..f4942863 100644 --- a/src/NadekoBot/Modules/Permissions/Services/CmdCdService.cs +++ b/NadekoBot.Core/Modules/Permissions/Services/CmdCdService.cs @@ -6,8 +6,8 @@ using Discord; using Discord.WebSocket; using NadekoBot.Common.Collections; using NadekoBot.Common.ModuleBehaviors; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions.Services { @@ -16,10 +16,10 @@ namespace NadekoBot.Modules.Permissions.Services public ConcurrentDictionary> CommandCooldowns { get; } public ConcurrentDictionary> ActiveCooldowns { get; } = new ConcurrentDictionary>(); - public CmdCdService(IEnumerable gcs) + public CmdCdService(NadekoBot bot) { CommandCooldowns = new ConcurrentDictionary>( - gcs.ToDictionary(k => k.GuildId, + bot.AllGuildConfigs.ToDictionary(k => k.GuildId, v => new ConcurrentHashSet(v.CommandCooldowns))); } diff --git a/src/NadekoBot/Modules/Permissions/Services/FilterService.cs b/NadekoBot.Core/Modules/Permissions/Services/FilterService.cs similarity index 84% rename from src/NadekoBot/Modules/Permissions/Services/FilterService.cs rename to NadekoBot.Core/Modules/Permissions/Services/FilterService.cs index e15926a9..f3596071 100644 --- a/src/NadekoBot/Modules/Permissions/Services/FilterService.cs +++ b/NadekoBot.Core/Modules/Permissions/Services/FilterService.cs @@ -8,8 +8,8 @@ using Discord.WebSocket; using NadekoBot.Common.Collections; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Permissions.Services @@ -27,6 +27,9 @@ namespace NadekoBot.Modules.Permissions.Services public ConcurrentHashSet WordFilteringChannels { get; } public ConcurrentHashSet WordFilteringServers { get; } + //public ConcurrentHashSet LinkFilteringServers { get; } + //public ConcurrentDictionary LinkFilteringChannelSettings { get; } + public ConcurrentHashSet FilteredWordsForChannel(ulong channelId, ulong guildId) { ConcurrentHashSet words = new ConcurrentHashSet(); @@ -43,21 +46,22 @@ namespace NadekoBot.Modules.Permissions.Services return words; } - public FilterService(DiscordSocketClient _client, IEnumerable gcs) + public FilterService(DiscordSocketClient _client, NadekoBot bot) { _log = LogManager.GetCurrentClassLogger(); - InviteFilteringServers = new ConcurrentHashSet(gcs.Where(gc => gc.FilterInvites).Select(gc => gc.GuildId)); - InviteFilteringChannels = new ConcurrentHashSet(gcs.SelectMany(gc => gc.FilterInvitesChannelIds.Select(fci => fci.ChannelId))); + InviteFilteringServers = new ConcurrentHashSet(bot.AllGuildConfigs.Where(gc => gc.FilterInvites).Select(gc => gc.GuildId)); + InviteFilteringChannels = new ConcurrentHashSet(bot.AllGuildConfigs.SelectMany(gc => gc.FilterInvitesChannelIds.Select(fci => fci.ChannelId))); - var dict = gcs.ToDictionary(gc => gc.GuildId, gc => new ConcurrentHashSet(gc.FilteredWords.Select(fw => fw.Word))); + var dict = bot.AllGuildConfigs.ToDictionary(gc => gc.GuildId, gc => new ConcurrentHashSet(gc.FilteredWords.Select(fw => fw.Word))); ServerFilteredWords = new ConcurrentDictionary>(dict); - var serverFiltering = gcs.Where(gc => gc.FilterWords); + var serverFiltering = bot.AllGuildConfigs.Where(gc => gc.FilterWords); WordFilteringServers = new ConcurrentHashSet(serverFiltering.Select(gc => gc.GuildId)); + WordFilteringChannels = new ConcurrentHashSet(bot.AllGuildConfigs.SelectMany(gc => gc.FilterWordsChannelIds.Select(fwci => fwci.ChannelId))); - WordFilteringChannels = new ConcurrentHashSet(gcs.SelectMany(gc => gc.FilterWordsChannelIds.Select(fwci => fwci.ChannelId))); + //LinkFilteringServers = new ConcurrentHashSet(bot.AllGuildConfigs.Where(gc => gc.FilterLinks).Select(x => x.GuildId)); _client.MessageUpdated += (oldData, newMsg, channel) => { diff --git a/src/NadekoBot/Modules/Permissions/Services/GlobalPermissionService.cs b/NadekoBot.Core/Modules/Permissions/Services/GlobalPermissionService.cs similarity index 97% rename from src/NadekoBot/Modules/Permissions/Services/GlobalPermissionService.cs rename to NadekoBot.Core/Modules/Permissions/Services/GlobalPermissionService.cs index 18d5337f..d8908ccd 100644 --- a/src/NadekoBot/Modules/Permissions/Services/GlobalPermissionService.cs +++ b/NadekoBot.Core/Modules/Permissions/Services/GlobalPermissionService.cs @@ -4,7 +4,7 @@ using Discord; using Discord.WebSocket; using NadekoBot.Common.Collections; using NadekoBot.Common.ModuleBehaviors; -using NadekoBot.Services; +using NadekoBot.Core.Services; namespace NadekoBot.Modules.Permissions.Services { diff --git a/src/NadekoBot/Modules/Permissions/Services/PermissionsService.cs b/NadekoBot.Core/Modules/Permissions/Services/PermissionsService.cs similarity index 98% rename from src/NadekoBot/Modules/Permissions/Services/PermissionsService.cs rename to NadekoBot.Core/Modules/Permissions/Services/PermissionsService.cs index 9b218758..4ea9f548 100644 --- a/src/NadekoBot/Modules/Permissions/Services/PermissionsService.cs +++ b/NadekoBot.Core/Modules/Permissions/Services/PermissionsService.cs @@ -9,9 +9,9 @@ using Microsoft.EntityFrameworkCore; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; using NadekoBot.Modules.Permissions.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; namespace NadekoBot.Modules.Permissions.Services @@ -71,7 +71,7 @@ namespace NadekoBot.Modules.Permissions.Services { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set); var log = LogManager.GetCurrentClassLogger(); if (bc.PermissionVersion <= 1) { diff --git a/src/NadekoBot/Modules/Permissions/Services/ResetPermissionsService.cs b/NadekoBot.Core/Modules/Permissions/Services/ResetPermissionsService.cs similarity index 94% rename from src/NadekoBot/Modules/Permissions/Services/ResetPermissionsService.cs rename to NadekoBot.Core/Modules/Permissions/Services/ResetPermissionsService.cs index 08834b36..fcf5b200 100644 --- a/src/NadekoBot/Modules/Permissions/Services/ResetPermissionsService.cs +++ b/NadekoBot.Core/Modules/Permissions/Services/ResetPermissionsService.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Permissions.Services { diff --git a/src/NadekoBot/Modules/Pokemon/Common/PokeStats.cs b/NadekoBot.Core/Modules/Pokemon/Common/PokeStats.cs similarity index 100% rename from src/NadekoBot/Modules/Pokemon/Common/PokeStats.cs rename to NadekoBot.Core/Modules/Pokemon/Common/PokeStats.cs diff --git a/src/NadekoBot/Modules/Pokemon/Common/PokemonType.cs b/NadekoBot.Core/Modules/Pokemon/Common/PokemonType.cs similarity index 100% rename from src/NadekoBot/Modules/Pokemon/Common/PokemonType.cs rename to NadekoBot.Core/Modules/Pokemon/Common/PokemonType.cs diff --git a/src/NadekoBot/Modules/Pokemon/Pokemon.cs b/NadekoBot.Core/Modules/Pokemon/Pokemon.cs similarity index 99% rename from src/NadekoBot/Modules/Pokemon/Pokemon.cs rename to NadekoBot.Core/Modules/Pokemon/Pokemon.cs index 0389e1b0..f4d6544a 100644 --- a/src/NadekoBot/Modules/Pokemon/Pokemon.cs +++ b/NadekoBot.Core/Modules/Pokemon/Pokemon.cs @@ -1,8 +1,8 @@ using Discord.Commands; using NadekoBot.Extensions; using System.Linq; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Threading.Tasks; using Discord; diff --git a/src/NadekoBot/Modules/Pokemon/Services/PokemonService.cs b/NadekoBot.Core/Modules/Pokemon/Services/PokemonService.cs similarity index 97% rename from src/NadekoBot/Modules/Pokemon/Services/PokemonService.cs rename to NadekoBot.Core/Modules/Pokemon/Services/PokemonService.cs index 43edc5cd..d29f8818 100644 --- a/src/NadekoBot/Modules/Pokemon/Services/PokemonService.cs +++ b/NadekoBot.Core/Modules/Pokemon/Services/PokemonService.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; using NadekoBot.Modules.Pokemon.Common; -using NadekoBot.Services; +using NadekoBot.Core.Services; using Newtonsoft.Json; using NLog; diff --git a/src/NadekoBot/Modules/Searches/AnimeSearchCommands.cs b/NadekoBot.Core/Modules/Searches/AnimeSearchCommands.cs similarity index 85% rename from src/NadekoBot/Modules/Searches/AnimeSearchCommands.cs rename to NadekoBot.Core/Modules/Searches/AnimeSearchCommands.cs index f6825b7d..0fe17431 100644 --- a/src/NadekoBot/Modules/Searches/AnimeSearchCommands.cs +++ b/NadekoBot.Core/Modules/Searches/AnimeSearchCommands.cs @@ -16,6 +16,32 @@ namespace NadekoBot.Modules.Searches [Group] public class AnimeSearchCommands : NadekoSubmodule { + [NadekoCommand, Usage, Description, Aliases] + public async Task Novel([Remainder] string query) + { + if (string.IsNullOrWhiteSpace(query)) + return; + + var novelData = await _service.GetNovelData(query).ConfigureAwait(false); + + if (novelData == null) + { + await ReplyErrorLocalized("failed_finding_novel").ConfigureAwait(false); + return; + } + + var embed = new EmbedBuilder().WithColor(NadekoBot.OkColor) + .WithDescription(novelData.Description.Replace("
", Environment.NewLine)) + .WithTitle(novelData.Title) + .WithUrl(novelData.Link) + .WithImageUrl(novelData.ImageUrl) + .AddField(efb => efb.WithName(GetText("authors")).WithValue(string.Join("\n", novelData.Authors)).WithIsInline(true)) + .AddField(efb => efb.WithName(GetText("status")).WithValue(novelData.Status).WithIsInline(true)) + .AddField(efb => efb.WithName(GetText("genres")).WithValue(string.Join(" ", novelData.Genres.Any() ? novelData.Genres : new[] { "none" })).WithIsInline(true)) + .WithFooter(efb => efb.WithText(GetText("score") + " " + novelData.Score)); + await Context.Channel.EmbedAsync(embed).ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] [Priority(0)] public async Task Mal([Remainder] string name) diff --git a/src/NadekoBot/Modules/Searches/Common/AnimeResult.cs b/NadekoBot.Core/Modules/Searches/Common/AnimeResult.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/AnimeResult.cs rename to NadekoBot.Core/Modules/Searches/Common/AnimeResult.cs diff --git a/NadekoBot.Core/Modules/Searches/Common/CryptoData.cs b/NadekoBot.Core/Modules/Searches/Common/CryptoData.cs new file mode 100644 index 00000000..8f499835 --- /dev/null +++ b/NadekoBot.Core/Modules/Searches/Common/CryptoData.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; + +namespace NadekoBot.Core.Modules.Searches.Common +{ + public class CryptoData + { + public string Id { get; set; } + public string Name { get; set; } + public string Symbol { get; set; } + public int Rank { get; set; } + public string Price_Usd { get; set; } + public string Price_Btc { get; set; } + public decimal? Market_Cap_Usd { get; set; } + [JsonProperty("24h_volume_usd")] + public double? _24h_Volume_Usd { get; set; } + public string Percent_Change_1h { get; set; } + public string Percent_Change_24h { get; set; } + public string Percent_Change_7d { get; set; } + public string LastUpdated { get; set; } + } +} diff --git a/src/NadekoBot/Modules/Searches/Common/DefineModel.cs b/NadekoBot.Core/Modules/Searches/Common/DefineModel.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/DefineModel.cs rename to NadekoBot.Core/Modules/Searches/Common/DefineModel.cs diff --git a/src/NadekoBot/Modules/Searches/Common/Exceptions/StreamNotFoundException.cs b/NadekoBot.Core/Modules/Searches/Common/Exceptions/StreamNotFoundException.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/Exceptions/StreamNotFoundException.cs rename to NadekoBot.Core/Modules/Searches/Common/Exceptions/StreamNotFoundException.cs diff --git a/src/NadekoBot/Modules/Searches/Common/GoogleSearchResult.cs b/NadekoBot.Core/Modules/Searches/Common/GoogleSearchResult.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/GoogleSearchResult.cs rename to NadekoBot.Core/Modules/Searches/Common/GoogleSearchResult.cs diff --git a/src/NadekoBot/Modules/Searches/Common/MagicItem.cs b/NadekoBot.Core/Modules/Searches/Common/MagicItem.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/MagicItem.cs rename to NadekoBot.Core/Modules/Searches/Common/MagicItem.cs diff --git a/src/NadekoBot/Modules/Searches/Common/MangaResult.cs b/NadekoBot.Core/Modules/Searches/Common/MangaResult.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/MangaResult.cs rename to NadekoBot.Core/Modules/Searches/Common/MangaResult.cs diff --git a/NadekoBot.Core/Modules/Searches/Common/NovelData.cs b/NadekoBot.Core/Modules/Searches/Common/NovelData.cs new file mode 100644 index 00000000..b3be1be4 --- /dev/null +++ b/NadekoBot.Core/Modules/Searches/Common/NovelData.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Searches.Common +{ + public class NovelResult + { + public string Description { get; set; } + public string Title { get; set; } + public string Link { get; set; } + public string ImageUrl { get; set; } + public string[] Authors { get; set; } + public string Status { get; set; } + public string[] Genres { get; set; } + public string Score { get; set; } + } +} diff --git a/src/NadekoBot/Modules/Searches/Common/OmdbProvider.cs b/NadekoBot.Core/Modules/Searches/Common/OmdbProvider.cs similarity index 98% rename from src/NadekoBot/Modules/Searches/Common/OmdbProvider.cs rename to NadekoBot.Core/Modules/Searches/Common/OmdbProvider.cs index 16ea322a..292ea3c0 100644 --- a/src/NadekoBot/Modules/Searches/Common/OmdbProvider.cs +++ b/NadekoBot.Core/Modules/Searches/Common/OmdbProvider.cs @@ -3,7 +3,7 @@ using System.Net.Http; using System.Threading.Tasks; using Discord; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using Newtonsoft.Json; namespace NadekoBot.Modules.Searches.Common diff --git a/src/NadekoBot/Modules/Searches/Common/OverwatchApiModel.cs b/NadekoBot.Core/Modules/Searches/Common/OverwatchApiModel.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/OverwatchApiModel.cs rename to NadekoBot.Core/Modules/Searches/Common/OverwatchApiModel.cs diff --git a/src/NadekoBot/Modules/Searches/Common/SearchImageCacher.cs b/NadekoBot.Core/Modules/Searches/Common/SearchImageCacher.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/SearchImageCacher.cs rename to NadekoBot.Core/Modules/Searches/Common/SearchImageCacher.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamResponses.cs b/NadekoBot.Core/Modules/Searches/Common/StreamResponses.cs similarity index 80% rename from src/NadekoBot/Modules/Searches/Common/StreamResponses.cs rename to NadekoBot.Core/Modules/Searches/Common/StreamResponses.cs index 9eb791cb..4823787b 100644 --- a/src/NadekoBot/Modules/Searches/Common/StreamResponses.cs +++ b/NadekoBot.Core/Modules/Searches/Common/StreamResponses.cs @@ -8,7 +8,7 @@ namespace NadekoBot.Modules.Searches.Common string Title { get; } bool Live { get; } string Game { get; } - int FollowerCount { get; } + int Followers { get; } string Url { get; } string Icon { get; } } @@ -26,7 +26,6 @@ namespace NadekoBot.Modules.Searches.Common public string Title => ""; public bool Live => IsLive == "1"; public string Game => ""; - public int FollowerCount => Followers; public string Icon => !string.IsNullOrWhiteSpace(UserLogo) ? "https://edge.sf.hitbox.tv" + UserLogo : ""; @@ -34,6 +33,25 @@ namespace NadekoBot.Modules.Searches.Common public string Url { get; set; } } + public class PicartoResponse : IStreamResponse + { + public string Name { get; set; } + public int Viewers { get; set; } + + public string Title { get; set; } + + [JsonProperty("online")] + public bool Live { get; set; } + [JsonProperty("category")] + public string Game { get; set; } + + public int Followers { get; set; } + + public string Url => "https://picarto.tv/" + Name; + [JsonProperty("thumbnail")] + public string Icon { get; set; } + } + public class TwitchResponse : IStreamResponse { public string Error { get; set; } = null; @@ -58,7 +76,7 @@ namespace NadekoBot.Modules.Searches.Common public string Title => Stream?.Channel?.Status; public bool Live => IsLive; public string Game => Stream?.Game; - public int FollowerCount => Stream?.Channel?.Followers ?? 0; + public int Followers => Stream?.Channel?.Followers ?? 0; public string Url { get; set; } public string Icon => Stream?.Channel?.Logo; } @@ -89,7 +107,7 @@ namespace NadekoBot.Modules.Searches.Common public string Title => Name; public bool Live => IsLive; public string Game => Type?.Name ?? ""; - public int FollowerCount => NumFollowers; + public int Followers => NumFollowers; public string Icon => Thumbnail?.Url; } } diff --git a/src/NadekoBot/Modules/Searches/Common/TimeModels.cs b/NadekoBot.Core/Modules/Searches/Common/TimeModels.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/TimeModels.cs rename to NadekoBot.Core/Modules/Searches/Common/TimeModels.cs diff --git a/src/NadekoBot/Modules/Searches/Common/WeatherModels.cs b/NadekoBot.Core/Modules/Searches/Common/WeatherModels.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/WeatherModels.cs rename to NadekoBot.Core/Modules/Searches/Common/WeatherModels.cs diff --git a/src/NadekoBot/Modules/Searches/Common/WikipediaApiModel.cs b/NadekoBot.Core/Modules/Searches/Common/WikipediaApiModel.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/WikipediaApiModel.cs rename to NadekoBot.Core/Modules/Searches/Common/WikipediaApiModel.cs diff --git a/src/NadekoBot/Modules/Searches/Common/WoWJoke.cs b/NadekoBot.Core/Modules/Searches/Common/WoWJoke.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/WoWJoke.cs rename to NadekoBot.Core/Modules/Searches/Common/WoWJoke.cs diff --git a/src/NadekoBot/Modules/NSFW/Exceptions/TagBlacklistedException.cs b/NadekoBot.Core/Modules/Searches/Exceptions/TagBlacklistedException.cs similarity index 79% rename from src/NadekoBot/Modules/NSFW/Exceptions/TagBlacklistedException.cs rename to NadekoBot.Core/Modules/Searches/Exceptions/TagBlacklistedException.cs index c0f881f3..68091853 100644 --- a/src/NadekoBot/Modules/NSFW/Exceptions/TagBlacklistedException.cs +++ b/NadekoBot.Core/Modules/Searches/Exceptions/TagBlacklistedException.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Modules.NSFW.Exceptions +namespace NadekoBot.Modules.Searches.Exceptions { public class TagBlacklistedException : Exception { diff --git a/src/NadekoBot/Modules/Searches/FeedCommands.cs b/NadekoBot.Core/Modules/Searches/FeedCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Searches/FeedCommands.cs rename to NadekoBot.Core/Modules/Searches/FeedCommands.cs index 629209c8..d5e57c39 100644 --- a/src/NadekoBot/Modules/Searches/FeedCommands.cs +++ b/NadekoBot.Core/Modules/Searches/FeedCommands.cs @@ -103,7 +103,7 @@ namespace NadekoBot.Modules.Searches return embed.WithDescription(fs); - }, feeds.Count / 10); + }, feeds.Count, 10); } } } diff --git a/src/NadekoBot/Modules/Searches/JokeCommands.cs b/NadekoBot.Core/Modules/Searches/JokeCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/JokeCommands.cs rename to NadekoBot.Core/Modules/Searches/JokeCommands.cs diff --git a/src/NadekoBot/Modules/Searches/LoLCommands.cs b/NadekoBot.Core/Modules/Searches/LoLCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/LoLCommands.cs rename to NadekoBot.Core/Modules/Searches/LoLCommands.cs diff --git a/src/NadekoBot/Modules/Searches/MemegenCommands.cs b/NadekoBot.Core/Modules/Searches/MemegenCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/MemegenCommands.cs rename to NadekoBot.Core/Modules/Searches/MemegenCommands.cs diff --git a/src/NadekoBot/Modules/Searches/OsuCommands.cs b/NadekoBot.Core/Modules/Searches/OsuCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Searches/OsuCommands.cs rename to NadekoBot.Core/Modules/Searches/OsuCommands.cs index b8f05df0..9b4de2ce 100644 --- a/src/NadekoBot/Modules/Searches/OsuCommands.cs +++ b/NadekoBot.Core/Modules/Searches/OsuCommands.cs @@ -1,7 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using Newtonsoft.Json.Linq; using System; using System.Globalization; diff --git a/src/NadekoBot/Modules/Searches/OverwatchCommands.cs b/NadekoBot.Core/Modules/Searches/OverwatchCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/OverwatchCommands.cs rename to NadekoBot.Core/Modules/Searches/OverwatchCommands.cs diff --git a/src/NadekoBot/Modules/Searches/PlaceCommands.cs b/NadekoBot.Core/Modules/Searches/PlaceCommands.cs similarity index 94% rename from src/NadekoBot/Modules/Searches/PlaceCommands.cs rename to NadekoBot.Core/Modules/Searches/PlaceCommands.cs index 92260965..27fd08d1 100644 --- a/src/NadekoBot/Modules/Searches/PlaceCommands.cs +++ b/NadekoBot.Core/Modules/Searches/PlaceCommands.cs @@ -12,7 +12,8 @@ namespace NadekoBot.Modules.Searches [Group] public class PlaceCommands : NadekoSubmodule { - private static string typesStr { get; } = string.Join(", ", Enum.GetNames(typeof(PlaceType))); + private static readonly string _typesStr = + string.Join(", ", Enum.GetNames(typeof(PlaceType))); public enum PlaceType { @@ -30,7 +31,7 @@ namespace NadekoBot.Modules.Searches public async Task Placelist() { await Context.Channel.SendConfirmAsync(GetText("list_of_place_tags", Prefix), - typesStr) + _typesStr) .ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Searches/PokemonSearchCommands.cs b/NadekoBot.Core/Modules/Searches/PokemonSearchCommands.cs similarity index 86% rename from src/NadekoBot/Modules/Searches/PokemonSearchCommands.cs rename to NadekoBot.Core/Modules/Searches/PokemonSearchCommands.cs index 2ea5c498..b78eb5e1 100644 --- a/src/NadekoBot/Modules/Searches/PokemonSearchCommands.cs +++ b/NadekoBot.Core/Modules/Searches/PokemonSearchCommands.cs @@ -6,7 +6,8 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NadekoBot.Common.Attributes; -using NadekoBot.Modules.Searches.Common; +using NadekoBot.Core.Common.Pokemon; +using NadekoBot.Core.Services; namespace NadekoBot.Modules.Searches { @@ -15,8 +16,15 @@ namespace NadekoBot.Modules.Searches [Group] public class PokemonSearchCommands : NadekoSubmodule { - public Dictionary Pokemons => _service.Pokemons; - public Dictionary PokemonAbilities => _service.PokemonAbilities; + private readonly IDataCache _cache; + + public IReadOnlyDictionary Pokemons => _cache.LocalData.Pokemons; + public IReadOnlyDictionary PokemonAbilities => _cache.LocalData.PokemonAbilities; + + public PokemonSearchCommands(IDataCache cache) + { + _cache = cache; + } [NadekoCommand, Usage, Description, Aliases] public async Task Pokemon([Remainder] string pokemon = null) diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/NadekoBot.Core/Modules/Searches/Searches.cs similarity index 90% rename from src/NadekoBot/Modules/Searches/Searches.cs rename to NadekoBot.Core/Modules/Searches/Searches.cs index 1b978535..fd464ef2 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/NadekoBot.Core/Modules/Searches/Searches.cs @@ -4,7 +4,7 @@ using Newtonsoft.Json.Linq; using System; using System.Linq; using System.Net.Http; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Threading.Tasks; using System.Net; using System.Collections.Generic; @@ -22,6 +22,7 @@ using NadekoBot.Modules.Searches.Common; using NadekoBot.Modules.Searches.Services; using NadekoBot.Common.Replacements; using Discord.WebSocket; +using NadekoBot.Core.Modules.Searches.Common; namespace NadekoBot.Modules.Searches { @@ -36,6 +37,82 @@ namespace NadekoBot.Modules.Searches _google = google; } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task Crypto(string name) + { + name = name?.ToLowerInvariant(); + + if (string.IsNullOrWhiteSpace(name)) + return; + var cryptos = (await _service.CryptoData().ConfigureAwait(false)); + var crypto = cryptos + ?.FirstOrDefault(x => x.Id.ToLowerInvariant() == name || x.Name.ToLowerInvariant() == name + || x.Symbol.ToLowerInvariant() == name); + + (CryptoData Elem, int Distance)? nearest = null; + if (crypto == null) + { + nearest = cryptos.Select(x => (x, Distance: x.Name.ToLowerInvariant().LevenshteinDistance(name))) + .OrderBy(x => x.Distance) + .Where(x => x.Distance <= 2) + .FirstOrDefault(); + + crypto = nearest?.Elem; + } + + if (crypto == null) + { + await ReplyErrorLocalized("crypto_not_found").ConfigureAwait(false); + return; + } + + if (nearest != null) + { + //wrap this into some class, ther'es the same code in execsql too + var msg = await Context.Channel.EmbedAsync(new EmbedBuilder() + .WithOkColor() + .WithTitle(GetText("crypto_not_found")) + .WithDescription(GetText("did_you_mean", Format.Bold($"{crypto.Name} ({crypto.Symbol})"))) + .WithFooter("Y/n")).ConfigureAwait(false); + + var input = await GetUserInputAsync(Context.User.Id, Context.Channel.Id); + input = input?.ToLowerInvariant().ToString(); + + if (input != "yes" && input != "y") + { + var __ = msg.DeleteAsync(); + return; + } + var _ = msg.DeleteAsync(); + } + + await Context.Channel.EmbedAsync(new EmbedBuilder() + .WithOkColor() + .WithTitle($"{crypto.Name} ({crypto.Symbol})") + .WithThumbnailUrl($"https://files.coinmarketcap.com/static/img/coins/32x32/{crypto.Id}.png") + .AddField(GetText("market_cap"), $"${crypto.Market_Cap_Usd:n0}", true) + .AddField(GetText("price"), $"${crypto.Price_Usd}", true) + .AddField(GetText("volume_24h"), $"${crypto._24h_Volume_Usd:n0}", true) + .AddField(GetText("change_7d_24h"), $"{crypto.Percent_Change_7d}% / {crypto.Percent_Change_24h}%", true)); + } + + //for anonymasen :^) + [NadekoCommand, Usage, Description, Aliases] + public async Task Rip([Remainder]IGuildUser usr) + { + using (var pic = await _service.GetRipPictureAsync(usr.Nickname ?? usr.Username, usr.RealAvatarUrl())) + using (var picStream = pic.ToStream()) + { + await Context.Channel.SendFileAsync( + picStream, + "rip.png", + $"Rip {Format.Bold(usr.ToString())} \n\t- " + + Format.Italics(Context.User.ToString())) + .ConfigureAwait(false); + } + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequireUserPermission(GuildPermission.ManageMessages)] @@ -81,14 +158,16 @@ namespace NadekoBot.Modules.Searches var data = JsonConvert.DeserializeObject(response); + Func f = StandardConversions.CelsiusToFahrenheit; + var embed = new EmbedBuilder() .AddField(fb => fb.WithName("🌍 " + Format.Bold(GetText("location"))).WithValue($"[{data.Name + ", " + data.Sys.Country}](https://openweathermap.org/city/{data.Id})").WithIsInline(true)) .AddField(fb => fb.WithName("📏 " + Format.Bold(GetText("latlong"))).WithValue($"{data.Coord.Lat}, {data.Coord.Lon}").WithIsInline(true)) .AddField(fb => fb.WithName("☁ " + Format.Bold(GetText("condition"))).WithValue(string.Join(", ", data.Weather.Select(w => w.Main))).WithIsInline(true)) .AddField(fb => fb.WithName("😓 " + Format.Bold(GetText("humidity"))).WithValue($"{data.Main.Humidity}%").WithIsInline(true)) .AddField(fb => fb.WithName("💨 " + Format.Bold(GetText("wind_speed"))).WithValue(data.Wind.Speed + " m/s").WithIsInline(true)) - .AddField(fb => fb.WithName("🌡 " + Format.Bold(GetText("temperature"))).WithValue(data.Main.Temp + "°C").WithIsInline(true)) - .AddField(fb => fb.WithName("🔆 " + Format.Bold(GetText("min_max"))).WithValue($"{data.Main.TempMin}°C - {data.Main.TempMax}°C").WithIsInline(true)) + .AddField(fb => fb.WithName("🌡 " + Format.Bold(GetText("temperature"))).WithValue($"{data.Main.Temp:F1}°C / {f(data.Main.Temp):F1}°F").WithIsInline(true)) + .AddField(fb => fb.WithName("🔆 " + Format.Bold(GetText("min_max"))).WithValue($"{data.Main.TempMin:F1}°C - {data.Main.TempMax:F1}°C\n{f(data.Main.TempMin):F1}°F - {f(data.Main.TempMax):F1}°F").WithIsInline(true)) .AddField(fb => fb.WithName("🌄 " + Format.Bold(GetText("sunrise"))).WithValue($"{data.Sys.Sunrise.ToUnixTimestamp():HH:mm} UTC").WithIsInline(true)) .AddField(fb => fb.WithName("🌇 " + Format.Bold(GetText("sunset"))).WithValue($"{data.Sys.Sunset.ToUnixTimestamp():HH:mm} UTC").WithIsInline(true)) .WithOkColor() @@ -701,7 +780,8 @@ namespace NadekoBot.Modules.Searches await Context.Channel.EmbedAsync(new EmbedBuilder().WithOkColor() .AddField(efb => efb.WithName("Username").WithValue(usr.ToString()).WithIsInline(false)) .AddField(efb => efb.WithName("Avatar Url").WithValue(shortenedAvatarUrl).WithIsInline(false)) - .WithThumbnailUrl(avatarUrl), Context.User.Mention).ConfigureAwait(false); + .WithThumbnailUrl(avatarUrl) + .WithImageUrl(avatarUrl), Context.User.Mention).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] diff --git a/NadekoBot.Core/Modules/Searches/Services/AnimeSearchService.cs b/NadekoBot.Core/Modules/Searches/Services/AnimeSearchService.cs new file mode 100644 index 00000000..daa5492c --- /dev/null +++ b/NadekoBot.Core/Modules/Searches/Services/AnimeSearchService.cs @@ -0,0 +1,154 @@ +using NadekoBot.Core.Services; +using Newtonsoft.Json; +using NLog; +using System; +using System.Net.Http; +using System.Threading.Tasks; +using NadekoBot.Modules.Searches.Common; +using AngleSharp; +using AngleSharp.Dom.Html; +using System.Linq; + +namespace NadekoBot.Modules.Searches.Services +{ + public class AnimeSearchService : INService + { + private readonly Logger _log; + private readonly IDataCache _cache; + private readonly HttpClient _http; + + public AnimeSearchService(IDataCache cache) + { + _log = LogManager.GetCurrentClassLogger(); + _cache = cache; + _http = new HttpClient(); + } + + public async Task GetAnimeData(string query) + { + if (string.IsNullOrWhiteSpace(query)) + throw new ArgumentNullException(nameof(query)); + try + { + + var link = "https://aniapi.nadekobot.me/anime/" + Uri.EscapeDataString(query.Replace("/", " ")); + link = link.ToLowerInvariant(); + var (ok, data) = await _cache.TryGetAnimeDataAsync(link).ConfigureAwait(false); + if (!ok) + { + data = await _http.GetStringAsync(link).ConfigureAwait(false); + await _cache.SetAnimeDataAsync(link, data).ConfigureAwait(false); + } + + + return JsonConvert.DeserializeObject(data); + } + catch + { + return null; + } + } + + public async Task GetNovelData(string query) + { + if (string.IsNullOrWhiteSpace(query)) + throw new ArgumentNullException(nameof(query)); + + query = query.Replace(" ", "-"); + try + { + + var link = "http://www.novelupdates.com/series/" + Uri.EscapeDataString(query.Replace("/", " ")); + link = link.ToLowerInvariant(); + var (ok, data) = await _cache.TryGetNovelDataAsync(link).ConfigureAwait(false); + if (!ok) + { + var config = Configuration.Default.WithDefaultLoader(); + var document = await BrowsingContext.New(config).OpenAsync(link); + + var imageElem = document.QuerySelector("div.seriesimg > img"); + if (imageElem == null) + return null; + var imageUrl = ((IHtmlImageElement)imageElem).Source; + + var descElem = document.QuerySelector("div#editdescription > p"); + var desc = descElem.InnerHtml; + + var genres = document.QuerySelector("div#seriesgenre").Children + .Select(x => x as IHtmlAnchorElement) + .Where(x => x != null) + .Select(x => $"[{x.InnerHtml}]({x.Href})") + .ToArray(); + + var authors = document + .QuerySelector("div#showauthors") + .Children + .Select(x => x as IHtmlAnchorElement) + .Where(x => x != null) + .Select(x => $"[{x.InnerHtml}]({x.Href})") + .ToArray(); + + var score = ((IHtmlSpanElement)document + .QuerySelector("h5.seriesother > span.uvotes")) + .InnerHtml; + + var status = document + .QuerySelector("div#editstatus") + .InnerHtml; + var title = document + .QuerySelector("div.w-blog-content > div.seriestitlenu") + .InnerHtml; + + var obj = new NovelResult() + { + Description = desc, + Authors = authors, + Genres = genres, + ImageUrl = imageUrl, + Link = link, + Score = score, + Status = status, + Title = title, + }; + + await _cache.SetNovelDataAsync(link, + JsonConvert.SerializeObject(obj)).ConfigureAwait(false); + + return obj; + } + + return JsonConvert.DeserializeObject(data); + } + catch (Exception ex) + { + _log.Error(ex); + return null; + } + } + + public async Task GetMangaData(string query) + { + if (string.IsNullOrWhiteSpace(query)) + throw new ArgumentNullException(nameof(query)); + try + { + + var link = "https://aniapi.nadekobot.me/manga/" + Uri.EscapeDataString(query.Replace("/", " ")); + link = link.ToLowerInvariant(); + var (ok, data) = await _cache.TryGetAnimeDataAsync(link).ConfigureAwait(false); + if (!ok) + { + data = await _http.GetStringAsync(link).ConfigureAwait(false); + await _cache.SetAnimeDataAsync(link, data).ConfigureAwait(false); + } + + + return JsonConvert.DeserializeObject(data); + } + catch + { + return null; + } + } + } +} diff --git a/src/NadekoBot/Modules/Searches/Services/FeedsService.cs b/NadekoBot.Core/Modules/Searches/Services/FeedsService.cs similarity index 95% rename from src/NadekoBot/Modules/Searches/Services/FeedsService.cs rename to NadekoBot.Core/Modules/Searches/Services/FeedsService.cs index 33ac0ff9..a5853ef2 100644 --- a/src/NadekoBot/Modules/Searches/Services/FeedsService.cs +++ b/NadekoBot.Core/Modules/Searches/Services/FeedsService.cs @@ -2,14 +2,14 @@ using Microsoft.SyndicationFeed; using Microsoft.SyndicationFeed.Rss; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Xml; using System.Collections.Generic; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; using System.Collections.Concurrent; using Discord.WebSocket; @@ -24,11 +24,13 @@ namespace NadekoBot.Modules.Searches.Services private readonly ConcurrentDictionary _lastPosts = new ConcurrentDictionary(); - public FeedsService(IEnumerable gcs, DbService db, DiscordSocketClient client) + public FeedsService(NadekoBot bot, DbService db, DiscordSocketClient client) { _db = db; - _subs = gcs.SelectMany(x => x.FeedSubs) + _subs = bot + .AllGuildConfigs + .SelectMany(x => x.FeedSubs) .GroupBy(x => x.Url) .ToDictionary(x => x.Key, x => x.ToHashSet()) .ToConcurrent(); @@ -54,8 +56,7 @@ namespace NadekoBot.Modules.Searches.Services if (kvp.Value.Count == 0) continue; - DateTime lastTime; - if (!_lastPosts.TryGetValue(kvp.Key, out lastTime)) + if (!_lastPosts.TryGetValue(kvp.Key, out DateTime lastTime)) lastTime = _lastPosts.AddOrUpdate(kvp.Key, DateTime.UtcNow, (k, old) => DateTime.UtcNow); var rssUrl = kvp.Key; diff --git a/src/NadekoBot/Modules/Searches/Services/SearchesService.cs b/NadekoBot.Core/Modules/Searches/Services/SearchesService.cs similarity index 62% rename from src/NadekoBot/Modules/Searches/Services/SearchesService.cs rename to NadekoBot.Core/Modules/Searches/Services/SearchesService.cs index 25be38d4..142871b1 100644 --- a/src/NadekoBot/Modules/Searches/Services/SearchesService.cs +++ b/NadekoBot.Core/Modules/Searches/Services/SearchesService.cs @@ -1,7 +1,7 @@ using Discord; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using Newtonsoft.Json; using NLog; using System; @@ -10,17 +10,23 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using NadekoBot.Modules.Searches.Common; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using Microsoft.EntityFrameworkCore; -using NadekoBot.Modules.NSFW.Exceptions; using System.Net.Http; using Newtonsoft.Json.Linq; using AngleSharp; +using System.Threading; +using ImageSharp; +using Image = ImageSharp.Image; +using SixLabors.Primitives; +using SixLabors.Fonts; +using NadekoBot.Core.Services.Impl; +using NadekoBot.Core.Modules.Searches.Common; namespace NadekoBot.Modules.Searches.Services { - public class SearchesService : INService + public class SearchesService : INService, IUnloadableService { public HttpClient Http { get; } @@ -28,23 +34,53 @@ namespace NadekoBot.Modules.Searches.Services private readonly IGoogleApiService _google; private readonly DbService _db; private readonly Logger _log; + private readonly IImageCache _imgs; + private readonly IDataCache _cache; + private readonly FontProvider _fonts; public ConcurrentDictionary TranslatedChannels { get; } = new ConcurrentDictionary(); public ConcurrentDictionary UserLanguages { get; } = new ConcurrentDictionary(); - - public readonly string PokemonAbilitiesFile = "data/pokemon/pokemon_abilities7.json"; - public readonly string PokemonListFile = "data/pokemon/pokemon_list7.json"; - public Dictionary Pokemons { get; } = new Dictionary(); - public Dictionary PokemonAbilities { get; } = new Dictionary(); public List WowJokes { get; } = new List(); public List MagicItems { get; } = new List(); private readonly ConcurrentDictionary _imageCacher = new ConcurrentDictionary(); + public ConcurrentDictionary AutoHentaiTimers { get; } = new ConcurrentDictionary(); + public ConcurrentDictionary AutoBoobTimers { get; } = new ConcurrentDictionary(); + public ConcurrentDictionary AutoButtTimers { get; } = new ConcurrentDictionary(); + private readonly ConcurrentDictionary> _blacklistedTags = new ConcurrentDictionary>(); - public SearchesService(DiscordSocketClient client, IGoogleApiService google, DbService db, IEnumerable gcs) + private readonly SemaphoreSlim _cryptoLock = new SemaphoreSlim(1, 1); + public async Task CryptoData() + { + string data; + var r = _cache.Redis.GetDatabase(); + await _cryptoLock.WaitAsync().ConfigureAwait(false); + try + { + data = await r.StringGetAsync("crypto_data").ConfigureAwait(false); + + if (data == null) + { + data = await Http.GetStringAsync("https://api.coinmarketcap.com/v1/ticker/") + .ConfigureAwait(false); + + await r.StringSetAsync("crypto_data", data, TimeSpan.FromHours(1)).ConfigureAwait(false); + } + } + finally + { + _cryptoLock.Release(); + } + + return JsonConvert.DeserializeObject(data); + } + + public SearchesService(DiscordSocketClient client, IGoogleApiService google, + DbService db, NadekoBot bot, IDataCache cache, + FontProvider fonts) { Http = new HttpClient(); Http.AddFakeHeaders(); @@ -52,9 +88,12 @@ namespace NadekoBot.Modules.Searches.Services _google = google; _db = db; _log = LogManager.GetCurrentClassLogger(); + _imgs = cache.LocalImages; + _cache = cache; + _fonts = fonts; _blacklistedTags = new ConcurrentDictionary>( - gcs.ToDictionary( + bot.AllGuildConfigs.ToDictionary( x => x.GuildId, x => new HashSet(x.NsfwBlacklistedTags.Select(y => y.Tag)))); @@ -92,18 +131,6 @@ namespace NadekoBot.Modules.Searches.Services return Task.CompletedTask; }; - //pokemon commands - if (File.Exists(PokemonListFile)) - { - Pokemons = JsonConvert.DeserializeObject>(File.ReadAllText(PokemonListFile)); - } - else - _log.Warn(PokemonListFile + " is missing. Pokemon abilities not loaded."); - if (File.Exists(PokemonAbilitiesFile)) - PokemonAbilities = JsonConvert.DeserializeObject>(File.ReadAllText(PokemonAbilitiesFile)); - else - _log.Warn(PokemonAbilitiesFile + " is missing. Pokemon abilities not loaded."); - //joke commands if (File.Exists("data/wowjokes.json")) { @@ -120,6 +147,61 @@ namespace NadekoBot.Modules.Searches.Services _log.Warn("data/magicitems.json is missing. Magic items are not loaded."); } + public async Task> GetRipPictureAsync(string text, string imgUrl) + { + var (succ, data) = await _cache.TryGetImageDataAsync(imgUrl); + if (!succ) + { + using (var temp = await Http.GetAsync(imgUrl, HttpCompletionOption.ResponseHeadersRead)) + { + if (temp.Content.Headers.ContentType.MediaType != "image/png" + && temp.Content.Headers.ContentType.MediaType != "image/jpeg" + && temp.Content.Headers.ContentType.MediaType != "image/gif") + data = null; + else + { + using (var tempDraw = ImageSharp.Image.Load(await temp.Content.ReadAsStreamAsync()).Resize(69, 70)) + { + tempDraw.ApplyRoundedCorners(35); + data = tempDraw.ToStream().ToArray(); + } + } + } + + await _cache.SetImageDataAsync(imgUrl, data); + } + var bg = ImageSharp.Image.Load(_imgs.Rip.ToArray()); + + //avatar 82, 139 + if (data != null) + { + var avatar = Image.Load(data).Resize(85, 85); + bg.DrawImage(avatar, + default, + new Point(82, 139), + GraphicsOptions.Default); + } + //text 63, 241 + bg.DrawText(text, + _fonts.RipNameFont, + Rgba32.Black, + new PointF(25, 225), + new ImageSharp.Drawing.TextGraphicsOptions() + { + HorizontalAlignment = HorizontalAlignment.Center, + WrapTextWidth = 190, + }); + + //flowa + var flowers = Image.Load(_imgs.FlowerCircle.ToArray()); + bg.DrawImage(flowers, + default, + new Point(0, 0), + GraphicsOptions.Default); + + return bg; + } + public async Task Translate(string langs, string text = null) { var langarr = langs.ToLowerInvariant().Split('>'); @@ -139,12 +221,6 @@ namespace NadekoBot.Modules.Searches.Services { var blacklistedTags = GetBlacklistedTags(guild.Value); - if (blacklistedTags - .Any(x => tag.ToLowerInvariant().Contains(x))) - { - throw new TagBlacklistedException(); - } - var cacher = _imageCacher.GetOrAdd(guild.Value, (key) => new SearchImageCacher()); return cacher.GetImage(tag, isExplicit, type, blacklistedTags); @@ -206,7 +282,7 @@ namespace NadekoBot.Modules.Searches.Services public async Task<(string Text, string BaseUri)> GetRandomJoke() { - var config = Configuration.Default.WithDefaultLoader(); + var config = AngleSharp.Configuration.Default.WithDefaultLoader(); var document = await BrowsingContext.New(config).OpenAsync("http://www.goodbadjokes.com/random"); var html = document.QuerySelector(".post > .joke-content"); @@ -222,6 +298,19 @@ namespace NadekoBot.Modules.Searches.Services var response = await Http.GetStringAsync("http://api.icndb.com/jokes/random/").ConfigureAwait(false); return JObject.Parse(response)["value"]["joke"].ToString() + " 😆"; } + + public Task Unload() + { + AutoBoobTimers.ForEach(x => x.Value.Change(Timeout.Infinite, Timeout.Infinite)); + AutoBoobTimers.Clear(); + AutoButtTimers.ForEach(x => x.Value.Change(Timeout.Infinite, Timeout.Infinite)); + AutoButtTimers.Clear(); + AutoHentaiTimers.ForEach(x => x.Value.Change(Timeout.Infinite, Timeout.Infinite)); + AutoHentaiTimers.Clear(); + + _imageCacher.Clear(); + return Task.CompletedTask; + } } public struct UserChannelPair diff --git a/src/NadekoBot/Modules/Searches/Services/StreamNotificationService.cs b/NadekoBot.Core/Modules/Searches/Services/StreamNotificationService.cs similarity index 87% rename from src/NadekoBot/Modules/Searches/Services/StreamNotificationService.cs rename to NadekoBot.Core/Modules/Searches/Services/StreamNotificationService.cs index 15cc639a..2e1ab585 100644 --- a/src/NadekoBot/Modules/Searches/Services/StreamNotificationService.cs +++ b/NadekoBot.Core/Modules/Searches/Services/StreamNotificationService.cs @@ -1,8 +1,8 @@ using Discord; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using Newtonsoft.Json; using System; using System.Collections.Concurrent; @@ -13,7 +13,7 @@ using System.Threading; using System.Threading.Tasks; using NadekoBot.Modules.Searches.Common; using NadekoBot.Modules.Searches.Common.Exceptions; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; namespace NadekoBot.Modules.Searches.Services { @@ -126,6 +126,17 @@ namespace NadekoBot.Modules.Searches.Services bmData.Url = beamUrl; _cachedStatuses.AddOrUpdate(beamUrl, bmData, (key, old) => bmData); return bmData; + case FollowedStream.FollowedStreamType.Picarto: + var picartoUrl = $"https://api.picarto.tv/v1/channel/name/{stream.Username.ToLowerInvariant()}"; + if (checkCache && _cachedStatuses.TryGetValue(picartoUrl, out result)) + return result; + + var paResponse = await _http.GetAsync(picartoUrl).ConfigureAwait(false); + if(!paResponse.IsSuccessStatusCode) + throw new StreamNotFoundException($"{stream.Username} [{stream.Type}]"); + var paData = JsonConvert.DeserializeObject(await paResponse.Content.ReadAsStringAsync()); + _cachedStatuses.AddOrUpdate(picartoUrl, paData, (key, old) => paData); + return paData; default: break; } @@ -155,7 +166,7 @@ namespace NadekoBot.Modules.Searches.Services true); embed.AddField(GetText(fs, "followers"), - status.FollowerCount.ToString(), + status.Followers.ToString(), true); if (!string.IsNullOrWhiteSpace(status.Icon)) @@ -178,6 +189,8 @@ namespace NadekoBot.Modules.Searches.Services return $"https://www.twitch.tv/{fs.Username}/"; if (fs.Type == FollowedStream.FollowedStreamType.Mixer) return $"https://www.mixer.com/{fs.Username}/"; + if (fs.Type == FollowedStream.FollowedStreamType.Picarto) + return $"https://www.picarto.tv/{fs.Username}"; return "??"; } } diff --git a/src/NadekoBot/Modules/Searches/StreamNotificationCommands.cs b/NadekoBot.Core/Modules/Searches/StreamNotificationCommands.cs similarity index 93% rename from src/NadekoBot/Modules/Searches/StreamNotificationCommands.cs rename to NadekoBot.Core/Modules/Searches/StreamNotificationCommands.cs index 1796b4fd..9aa47842 100644 --- a/src/NadekoBot/Modules/Searches/StreamNotificationCommands.cs +++ b/NadekoBot.Core/Modules/Searches/StreamNotificationCommands.cs @@ -2,9 +2,9 @@ using Discord; using System.Linq; using System.Threading.Tasks; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System.Collections.Generic; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; using NadekoBot.Common.Attributes; using NadekoBot.Extensions; @@ -39,6 +39,13 @@ namespace NadekoBot.Modules.Searches await TrackStream((ITextChannel)Context.Channel, username, FollowedStream.FollowedStreamType.Twitch) .ConfigureAwait(false); + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [RequireUserPermission(GuildPermission.ManageMessages)] + public async Task Picarto([Remainder] string username) => + await TrackStream((ITextChannel)Context.Channel, username, FollowedStream.FollowedStreamType.Picarto) + .ConfigureAwait(false); + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequireUserPermission(GuildPermission.ManageMessages)] diff --git a/src/NadekoBot/Modules/Searches/TranslatorCommands.cs b/NadekoBot.Core/Modules/Searches/TranslatorCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Searches/TranslatorCommands.cs rename to NadekoBot.Core/Modules/Searches/TranslatorCommands.cs index 9f4960fe..b0693fdd 100644 --- a/src/NadekoBot/Modules/Searches/TranslatorCommands.cs +++ b/NadekoBot.Core/Modules/Searches/TranslatorCommands.cs @@ -4,7 +4,7 @@ using NadekoBot.Extensions; using System.Threading.Tasks; using System.Linq; using NadekoBot.Common.Attributes; -using NadekoBot.Services; +using NadekoBot.Core.Services; using NadekoBot.Modules.Searches.Services; namespace NadekoBot.Modules.Searches diff --git a/src/NadekoBot/Modules/Searches/XkcdCommands.cs b/NadekoBot.Core/Modules/Searches/XkcdCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/XkcdCommands.cs rename to NadekoBot.Core/Modules/Searches/XkcdCommands.cs diff --git a/src/NadekoBot/Modules/Utility/BotConfigCommands.cs b/NadekoBot.Core/Modules/Utility/BotConfigCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Utility/BotConfigCommands.cs rename to NadekoBot.Core/Modules/Utility/BotConfigCommands.cs index cc91dd9f..9c1f5f56 100644 --- a/src/NadekoBot/Modules/Utility/BotConfigCommands.cs +++ b/NadekoBot.Core/Modules/Utility/BotConfigCommands.cs @@ -2,7 +2,7 @@ using Discord.Commands; using NadekoBot.Common; using NadekoBot.Common.Attributes; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Threading.Tasks; diff --git a/src/NadekoBot/Modules/Utility/CalcCommands.cs b/NadekoBot.Core/Modules/Utility/CalcCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/CalcCommands.cs rename to NadekoBot.Core/Modules/Utility/CalcCommands.cs diff --git a/src/NadekoBot/Modules/Utility/CommandMapCommands.cs b/NadekoBot.Core/Modules/Utility/CommandMapCommands.cs similarity index 97% rename from src/NadekoBot/Modules/Utility/CommandMapCommands.cs rename to NadekoBot.Core/Modules/Utility/CommandMapCommands.cs index 9903dedf..212e8191 100644 --- a/src/NadekoBot/Modules/Utility/CommandMapCommands.cs +++ b/NadekoBot.Core/Modules/Utility/CommandMapCommands.cs @@ -3,8 +3,8 @@ using Discord.Commands; using Discord.WebSocket; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -126,7 +126,7 @@ namespace NadekoBot.Modules.Utility .WithDescription(string.Join("\n", arr.Skip(curPage * 10).Take(10).Select(x => $"`{x.Key}` => `{x.Value}`"))); - }, arr.Length / 10).ConfigureAwait(false); + }, arr.Length, 10).ConfigureAwait(false); } } } diff --git a/NadekoBot.Core/Modules/Utility/Common/ConvertUnit.cs b/NadekoBot.Core/Modules/Utility/Common/ConvertUnit.cs new file mode 100644 index 00000000..85b565f3 --- /dev/null +++ b/NadekoBot.Core/Modules/Utility/Common/ConvertUnit.cs @@ -0,0 +1,9 @@ +namespace NadekoBot.Modules.Utility.Common +{ + public class ConvertUnit + { + public string[] Triggers { get; set; } + public string UnitType { get; set; } + public decimal Modifier { get; set; } + } +} diff --git a/src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRoleNotFoundException.cs b/NadekoBot.Core/Modules/Utility/Common/Exceptions/StreamRoleNotFoundException.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRoleNotFoundException.cs rename to NadekoBot.Core/Modules/Utility/Common/Exceptions/StreamRoleNotFoundException.cs diff --git a/src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRolePermissionException.cs b/NadekoBot.Core/Modules/Utility/Common/Exceptions/StreamRolePermissionException.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRolePermissionException.cs rename to NadekoBot.Core/Modules/Utility/Common/Exceptions/StreamRolePermissionException.cs diff --git a/src/NadekoBot/Modules/Utility/Common/Patreon/PatreonData.cs b/NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonData.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Patreon/PatreonData.cs rename to NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonData.cs diff --git a/src/NadekoBot/Modules/Utility/Common/Patreon/PatreonPledge.cs b/NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonPledge.cs similarity index 96% rename from src/NadekoBot/Modules/Utility/Common/Patreon/PatreonPledge.cs rename to NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonPledge.cs index 9960039f..ae46aeaa 100644 --- a/src/NadekoBot/Modules/Utility/Common/Patreon/PatreonPledge.cs +++ b/NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonPledge.cs @@ -7,7 +7,7 @@ public object declined_since { get; set; } public bool is_twitch_pledge { get; set; } public bool patron_pays_fees { get; set; } - public int pledge_cap_cents { get; set; } + public int? pledge_cap_cents { get; set; } } public class Address diff --git a/src/NadekoBot/Modules/Utility/Common/Patreon/PatreonUser.cs b/NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonUser.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Patreon/PatreonUser.cs rename to NadekoBot.Core/Modules/Utility/Common/Patreon/PatreonUser.cs diff --git a/src/NadekoBot/Modules/Utility/Common/RepeatRunner.cs b/NadekoBot.Core/Modules/Utility/Common/RepeatRunner.cs similarity index 98% rename from src/NadekoBot/Modules/Utility/Common/RepeatRunner.cs rename to NadekoBot.Core/Modules/Utility/Common/RepeatRunner.cs index bf21d317..30c14709 100644 --- a/src/NadekoBot/Modules/Utility/Common/RepeatRunner.cs +++ b/NadekoBot.Core/Modules/Utility/Common/RepeatRunner.cs @@ -5,7 +5,7 @@ using Discord; using Discord.Net; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Utility.Common diff --git a/src/NadekoBot/Modules/Utility/Common/StreamRoleListType.cs b/NadekoBot.Core/Modules/Utility/Common/StreamRoleListType.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/StreamRoleListType.cs rename to NadekoBot.Core/Modules/Utility/Common/StreamRoleListType.cs diff --git a/src/NadekoBot/Modules/Utility/Extensions/StreamRoleExtensions.cs b/NadekoBot.Core/Modules/Utility/Extensions/StreamRoleExtensions.cs similarity index 89% rename from src/NadekoBot/Modules/Utility/Extensions/StreamRoleExtensions.cs rename to NadekoBot.Core/Modules/Utility/Extensions/StreamRoleExtensions.cs index eaf16e84..f33ad47b 100644 --- a/src/NadekoBot/Modules/Utility/Extensions/StreamRoleExtensions.cs +++ b/NadekoBot.Core/Modules/Utility/Extensions/StreamRoleExtensions.cs @@ -1,6 +1,6 @@ using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Database.Repositories; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Database.Repositories; namespace NadekoBot.Modules.Utility.Extensions { diff --git a/src/NadekoBot/Modules/Utility/InfoCommands.cs b/NadekoBot.Core/Modules/Utility/InfoCommands.cs similarity index 98% rename from src/NadekoBot/Modules/Utility/InfoCommands.cs rename to NadekoBot.Core/Modules/Utility/InfoCommands.cs index 95a3f6b1..26fca5c4 100644 --- a/src/NadekoBot/Modules/Utility/InfoCommands.cs +++ b/NadekoBot.Core/Modules/Utility/InfoCommands.cs @@ -2,7 +2,7 @@ using Discord; using Discord.Commands; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; using System.Linq; using System.Text; @@ -118,7 +118,7 @@ namespace NadekoBot.Modules.Utility [OwnerOnly] public async Task Activity(int page = 1) { - const int activityPerPage = 15; + const int activityPerPage = 10; page -= 1; if (page < 0) diff --git a/src/NadekoBot/Modules/Utility/PatreonCommands.cs b/NadekoBot.Core/Modules/Utility/PatreonCommands.cs similarity index 94% rename from src/NadekoBot/Modules/Utility/PatreonCommands.cs rename to NadekoBot.Core/Modules/Utility/PatreonCommands.cs index 96ac04c4..330779d8 100644 --- a/src/NadekoBot/Modules/Utility/PatreonCommands.cs +++ b/NadekoBot.Core/Modules/Utility/PatreonCommands.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Discord.Commands; using System; -using NadekoBot.Services; +using NadekoBot.Core.Services; using NadekoBot.Extensions; using Discord; using NadekoBot.Common.Attributes; @@ -26,21 +26,19 @@ namespace NadekoBot.Modules.Utility _db = db; _currency = currency; } - + [NadekoCommand, Usage, Description, Aliases] - [OwnerOnly] [RequireContext(ContextType.DM)] public async Task PatreonRewardsReload() { if (string.IsNullOrWhiteSpace(_creds.PatreonAccessToken)) return; - await _service.RefreshPledges(true).ConfigureAwait(false); + await _service.RefreshPledges().ConfigureAwait(false); await Context.Channel.SendConfirmAsync("👌").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.DM)] public async Task ClaimPatreonRewards() { if (string.IsNullOrWhiteSpace(_creds.PatreonAccessToken)) diff --git a/src/NadekoBot/Modules/Utility/QuoteCommands.cs b/NadekoBot.Core/Modules/Utility/QuoteCommands.cs similarity index 95% rename from src/NadekoBot/Modules/Utility/QuoteCommands.cs rename to NadekoBot.Core/Modules/Utility/QuoteCommands.cs index 8b4a6752..76dabc9f 100644 --- a/src/NadekoBot/Modules/Utility/QuoteCommands.cs +++ b/NadekoBot.Core/Modules/Utility/QuoteCommands.cs @@ -1,8 +1,8 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -26,17 +26,16 @@ namespace NadekoBot.Modules.Utility [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task ListQuotes(int page = 1) + public async Task ListQuotes(int page = 1, OrderType order = OrderType.Keyword) { page -= 1; - if (page < 0) return; IEnumerable quotes; using (var uow = _db.UnitOfWork) { - quotes = uow.Quotes.GetGroup(Context.Guild.Id, page * 16, 16); + quotes = uow.Quotes.GetGroup(Context.Guild.Id, page, order); } if (quotes.Any()) @@ -132,8 +131,9 @@ namespace NadekoBot.Modules.Utility } else { - await Context.Channel.SendMessageAsync($"`#{qfromid.Id}` 🗯️ " + qfromid.Keyword.ToLowerInvariant().SanitizeMentions() + ": " + - rep.Replace(qfromid.Text)?.SanitizeMentions()); + await Context.Channel.SendMessageAsync($"`#{qfromid.Id} added by {qfromid.AuthorName.SanitizeMentions()}` 🗯️ " + qfromid.Keyword.ToLowerInvariant().SanitizeMentions() + ": " + + rep.Replace(qfromid.Text)?.SanitizeMentions()); + } } diff --git a/src/NadekoBot/Modules/Utility/RemindCommands.cs b/NadekoBot.Core/Modules/Utility/RemindCommands.cs similarity index 97% rename from src/NadekoBot/Modules/Utility/RemindCommands.cs rename to NadekoBot.Core/Modules/Utility/RemindCommands.cs index caa13aed..ceb40e3c 100644 --- a/src/NadekoBot/Modules/Utility/RemindCommands.cs +++ b/NadekoBot.Core/Modules/Utility/RemindCommands.cs @@ -1,8 +1,8 @@ using Discord; using Discord.Commands; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -145,7 +145,7 @@ namespace NadekoBot.Modules.Utility using (var uow = _db.UnitOfWork) { - uow.BotConfig.GetOrCreate().RemindMessageFormat = arg.Trim(); + uow.BotConfig.GetOrCreate(set => set).RemindMessageFormat = arg.Trim(); await uow.CompleteAsync().ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Utility/RepeatCommands.cs b/NadekoBot.Core/Modules/Utility/RepeatCommands.cs similarity index 99% rename from src/NadekoBot/Modules/Utility/RepeatCommands.cs rename to NadekoBot.Core/Modules/Utility/RepeatCommands.cs index 921c0746..241b7744 100644 --- a/src/NadekoBot/Modules/Utility/RepeatCommands.cs +++ b/NadekoBot.Core/Modules/Utility/RepeatCommands.cs @@ -2,8 +2,8 @@ using Discord.Commands; using Microsoft.EntityFrameworkCore; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Concurrent; using System.Linq; diff --git a/src/NadekoBot/Modules/Utility/Services/CommandMapService.cs b/NadekoBot.Core/Modules/Utility/Services/CommandMapService.cs similarity index 76% rename from src/NadekoBot/Modules/Utility/Services/CommandMapService.cs rename to NadekoBot.Core/Modules/Utility/Services/CommandMapService.cs index 2aa1c419..06ed7986 100644 --- a/src/NadekoBot/Modules/Utility/Services/CommandMapService.cs +++ b/NadekoBot.Core/Modules/Utility/Services/CommandMapService.cs @@ -5,8 +5,8 @@ using System.Threading.Tasks; using Discord; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; namespace NadekoBot.Modules.Utility.Services @@ -17,11 +17,11 @@ namespace NadekoBot.Modules.Utility.Services public ConcurrentDictionary> AliasMaps { get; } = new ConcurrentDictionary>(); //commandmap - public CommandMapService(IEnumerable gcs) + public CommandMapService(NadekoBot bot) { _log = LogManager.GetCurrentClassLogger(); AliasMaps = new ConcurrentDictionary>( - gcs.ToDictionary( + bot.AllGuildConfigs.ToDictionary( x => x.GuildId, x => new ConcurrentDictionary(x.CommandAliases .Distinct(new CommandAliasEqualityComparer()) @@ -58,7 +58,18 @@ namespace NadekoBot.Modules.Utility.Services Trigger: {1} Mapping: {2}", guild.Id, input, newInput); - try { await channel.SendConfirmAsync($"{input} => {newInput}").ConfigureAwait(false); } catch { } + try + { + var toDelete = await channel.SendConfirmAsync($"{input} => {newInput}").ConfigureAwait(false); + var _ = Task.Run(async () => + { + await Task.Delay(1500); + await toDelete.DeleteAsync(new RequestOptions() { + RetryMode = RetryMode.AlwaysRetry + }); + }); + } + catch { } return newInput; } } diff --git a/NadekoBot.Core/Modules/Utility/Services/ConverterService.cs b/NadekoBot.Core/Modules/Utility/Services/ConverterService.cs new file mode 100644 index 00000000..46c88fc8 --- /dev/null +++ b/NadekoBot.Core/Modules/Utility/Services/ConverterService.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Discord.WebSocket; +using NadekoBot.Core.Services; +using Newtonsoft.Json; +using NLog; +using NadekoBot.Modules.Utility.Common; +using NadekoBot.Extensions; + +namespace NadekoBot.Modules.Utility.Services +{ + public class ConverterService : INService, IUnloadableService + { + public ConvertUnit[] Units => + _cache.Redis.GetDatabase() + .StringGet("converter_units") + .ToString() + .MapJson(); + + private readonly Logger _log; + private readonly Timer _currencyUpdater; + private readonly TimeSpan _updateInterval = new TimeSpan(12, 0, 0); + private readonly DbService _db; + private readonly IDataCache _cache; + private readonly HttpClient _http; + + public ConverterService(DiscordSocketClient client, DbService db, + IDataCache cache) + { + _log = LogManager.GetCurrentClassLogger(); + _db = db; + _cache = cache; + _http = new HttpClient(); + + if (client.ShardId == 0) + { + _currencyUpdater = new Timer(async (shouldLoad) => await UpdateCurrency((bool)shouldLoad), + client.ShardId == 0, + TimeSpan.Zero, + _updateInterval); + } + } + + private async Task GetCurrencyRates() + { + var res = await _http.GetStringAsync("http://api.fixer.io/latest").ConfigureAwait(false); + return JsonConvert.DeserializeObject(res); + } + + private async Task UpdateCurrency(bool shouldLoad) + { + try + { + var unitTypeString = "currency"; + if (shouldLoad) + { + var currencyRates = await GetCurrencyRates(); + var baseType = new ConvertUnit() + { + Triggers = new[] { currencyRates.Base }, + Modifier = decimal.One, + UnitType = unitTypeString + }; + var range = currencyRates.ConversionRates.Select(u => new ConvertUnit() + { + Triggers = new[] { u.Key }, + Modifier = u.Value, + UnitType = unitTypeString + }).ToArray(); + + var fileData = JsonConvert.DeserializeObject( + File.ReadAllText("data/units.json")); + + var data = JsonConvert.SerializeObject(range.Append(baseType).Concat(fileData).ToList()); + _cache.Redis.GetDatabase() + .StringSet("converter_units", data); + } + } + catch (Exception ex) + { + _log.Warn("Ignore the message below"); + _log.Warn(ex); + } + } + + public Task Unload() + { + _currencyUpdater?.Change(Timeout.Infinite, Timeout.Infinite); + return Task.CompletedTask; + } + } + + public class Rates + { + public string Base { get; set; } + public DateTime Date { get; set; } + [JsonProperty("rates")] + public Dictionary ConversionRates { get; set; } + } +} diff --git a/src/NadekoBot/Modules/Utility/Services/MessageRepeaterService.cs b/NadekoBot.Core/Modules/Utility/Services/MessageRepeaterService.cs similarity index 51% rename from src/NadekoBot/Modules/Utility/Services/MessageRepeaterService.cs rename to NadekoBot.Core/Modules/Utility/Services/MessageRepeaterService.cs index 4e937eb4..bd19be3b 100644 --- a/src/NadekoBot/Modules/Utility/Services/MessageRepeaterService.cs +++ b/NadekoBot.Core/Modules/Utility/Services/MessageRepeaterService.cs @@ -4,8 +4,8 @@ using System.Linq; using System.Threading.Tasks; using Discord.WebSocket; using NadekoBot.Modules.Utility.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Utility.Services { @@ -16,24 +16,25 @@ namespace NadekoBot.Modules.Utility.Services public ConcurrentDictionary> Repeaters { get; set; } public bool RepeaterReady { get; private set; } - public MessageRepeaterService(NadekoBot bot, DiscordSocketClient client, IEnumerable gcs) + public MessageRepeaterService(NadekoBot bot, DiscordSocketClient client) { var _ = Task.Run(async () => { await bot.Ready.Task.ConfigureAwait(false); - Repeaters = new ConcurrentDictionary>(gcs - .Select(gc => - { - var guild = client.GetGuild(gc.GuildId); - if (guild == null) - return (0, null); - return (gc.GuildId, new ConcurrentQueue(gc.GuildRepeaters - .Select(gr => new RepeatRunner(client, guild, gr)) - .Where(x => x.Guild != null))); - }) - .Where(x => x.Item2 != null) - .ToDictionary(x => x.Item1, x => x.Item2)); + Repeaters = new ConcurrentDictionary>( + bot.AllGuildConfigs + .Select(gc => + { + var guild = client.GetGuild(gc.GuildId); + if (guild == null) + return (0, null); + return (gc.GuildId, new ConcurrentQueue(gc.GuildRepeaters + .Select(gr => new RepeatRunner(client, guild, gr)) + .Where(x => x.Guild != null))); + }) + .Where(x => x.Item2 != null) + .ToDictionary(x => x.GuildId, x => x.Item2)); RepeaterReady = true; }); } diff --git a/src/NadekoBot/Modules/Utility/Services/PatreonRewardsService.cs b/NadekoBot.Core/Modules/Utility/Services/PatreonRewardsService.cs similarity index 53% rename from src/NadekoBot/Modules/Utility/Services/PatreonRewardsService.cs rename to NadekoBot.Core/Modules/Utility/Services/PatreonRewardsService.cs index c0dbc96e..ae259ee1 100644 --- a/src/NadekoBot/Modules/Utility/Services/PatreonRewardsService.cs +++ b/NadekoBot.Core/Modules/Utility/Services/PatreonRewardsService.cs @@ -1,26 +1,26 @@ using System; using System.Collections.Generic; -using System.Collections.Immutable; -using System.IO; using System.Linq; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Discord.WebSocket; using NadekoBot.Modules.Utility.Common.Patreon; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using Newtonsoft.Json; using NLog; +using NadekoBot.Extensions; +using NadekoBot.Core.Common.Caching; namespace NadekoBot.Modules.Utility.Services { - public class PatreonRewardsService : INService + public class PatreonRewardsService : INService, IUnloadableService { private readonly SemaphoreSlim getPledgesLocker = new SemaphoreSlim(1, 1); - public ImmutableArray Pledges { get; private set; } - public DateTime LastUpdate { get; private set; } = DateTime.UtcNow; + private readonly FactoryCache _pledges; + public PatreonUserAndReward[] Pledges => _pledges.GetValue(); public readonly Timer Updater; private readonly SemaphoreSlim claimLockJustInCase = new SemaphoreSlim(1, 1); @@ -30,78 +30,95 @@ namespace NadekoBot.Modules.Utility.Services private readonly IBotCredentials _creds; private readonly DbService _db; private readonly CurrencyService _currency; + private readonly IDataCache _cache; + private readonly string _key; - private readonly string cacheFileName = "./patreon-rewards.json"; + public DateTime LastUpdate { get; private set; } = DateTime.UtcNow; - public PatreonRewardsService(IBotCredentials creds, DbService db, CurrencyService currency, - DiscordSocketClient client) + public PatreonRewardsService(IBotCredentials creds, DbService db, + CurrencyService currency, + DiscordSocketClient client, IDataCache cache) { + _log = LogManager.GetCurrentClassLogger(); _creds = creds; _db = db; _currency = currency; - if (string.IsNullOrWhiteSpace(creds.PatreonAccessToken)) - return; - _log = LogManager.GetCurrentClassLogger(); - Updater = new Timer(async (load) => await RefreshPledges((bool)load), - client.ShardId == 0, client.ShardId == 0 ? TimeSpan.Zero : TimeSpan.FromMinutes(2), Interval); + _cache = cache; + _key = _creds.RedisKey() + "_patreon_rewards"; + + _pledges = new FactoryCache(() => + { + var r = _cache.Redis.GetDatabase(); + var data = r.StringGet(_key); + if (data.IsNullOrEmpty) + return null; + else + { + return JsonConvert.DeserializeObject(data); + } + }, TimeSpan.FromSeconds(20)); + + if(client.ShardId == 0) + Updater = new Timer(async _ => await RefreshPledges(), + null, TimeSpan.Zero, Interval); } - public async Task RefreshPledges(bool shouldLoad) + public async Task RefreshPledges() { - if (shouldLoad) + if (string.IsNullOrWhiteSpace(_creds.PatreonAccessToken)) + return; + + LastUpdate = DateTime.UtcNow; + await getPledgesLocker.WaitAsync().ConfigureAwait(false); + try { - LastUpdate = DateTime.UtcNow; - await getPledgesLocker.WaitAsync().ConfigureAwait(false); - try + var rewards = new List(); + var users = new List(); + using (var http = new HttpClient()) { - var rewards = new List(); - var users = new List(); - using (var http = new HttpClient()) + http.DefaultRequestHeaders.Clear(); + http.DefaultRequestHeaders.Add("Authorization", "Bearer " + _creds.PatreonAccessToken); + var data = new PatreonData() { - http.DefaultRequestHeaders.Clear(); - http.DefaultRequestHeaders.Add("Authorization", "Bearer " + _creds.PatreonAccessToken); - var data = new PatreonData() + Links = new PatreonDataLinks() { - Links = new PatreonDataLinks() - { - next = $"https://api.patreon.com/oauth2/api/campaigns/{_creds.PatreonCampaignId}/pledges" - } - }; - do + next = $"https://api.patreon.com/oauth2/api/campaigns/{_creds.PatreonCampaignId}/pledges" + } + }; + do + { + var res = await http.GetStringAsync(data.Links.next) + .ConfigureAwait(false); + data = JsonConvert.DeserializeObject(res); + var pledgers = data.Data.Where(x => x["type"].ToString() == "pledge"); + rewards.AddRange(pledgers.Select(x => JsonConvert.DeserializeObject(x.ToString())) + .Where(x => x.attributes.declined_since == null)); + if (data.Included != null) { - var res = await http.GetStringAsync(data.Links.next) - .ConfigureAwait(false); - data = JsonConvert.DeserializeObject(res); - var pledgers = data.Data.Where(x => x["type"].ToString() == "pledge"); - rewards.AddRange(pledgers.Select(x => JsonConvert.DeserializeObject(x.ToString())) - .Where(x => x.attributes.declined_since == null)); users.AddRange(data.Included .Where(x => x["type"].ToString() == "user") .Select(x => JsonConvert.DeserializeObject(x.ToString()))); - } while (!string.IsNullOrWhiteSpace(data.Links.next)); - } - Pledges = rewards.Join(users, (r) => r.relationships?.patron?.data?.id, (u) => u.id, (x, y) => new PatreonUserAndReward() - { - User = y, - Reward = x, - }).ToImmutableArray(); - File.WriteAllText("./patreon_rewards.json", JsonConvert.SerializeObject(Pledges)); + } + } while (!string.IsNullOrWhiteSpace(data.Links.next)); } - catch (Exception ex) + var db = _cache.Redis.GetDatabase(); + var toSet = JsonConvert.SerializeObject(rewards.Join(users, (r) => r.relationships?.patron?.data?.id, (u) => u.id, (x, y) => new PatreonUserAndReward() { - _log.Warn(ex); - } - finally - { - getPledgesLocker.Release(); - } + User = y, + Reward = x, + }).ToArray()); + + db.StringSet(_key, toSet); } - else + catch (Exception ex) { - if(File.Exists(cacheFileName)) - Pledges = JsonConvert.DeserializeObject(File.ReadAllText("./patreon_rewards.json")) - .ToImmutableArray(); + _log.Warn(ex); } + finally + { + getPledgesLocker.Release(); + } + } public async Task ClaimReward(ulong userId) @@ -110,7 +127,7 @@ namespace NadekoBot.Modules.Utility.Services var now = DateTime.UtcNow; try { - var data = Pledges.FirstOrDefault(x => x.User.attributes?.social_connections?.discord?.user_id == userId.ToString()); + var data = Pledges?.FirstOrDefault(x => x.User.attributes?.social_connections?.discord?.user_id == userId.ToString()); if (data == null) return 0; @@ -171,5 +188,11 @@ namespace NadekoBot.Modules.Utility.Services claimLockJustInCase.Release(); } } + + public Task Unload() + { + Updater?.Change(Timeout.Infinite, Timeout.Infinite); + return Task.CompletedTask; + } } } diff --git a/src/NadekoBot/Modules/Utility/Services/RemindService.cs b/NadekoBot.Core/Modules/Utility/Services/RemindService.cs similarity index 86% rename from src/NadekoBot/Modules/Utility/Services/RemindService.cs rename to NadekoBot.Core/Modules/Utility/Services/RemindService.cs index 0e3b2206..5a6fc2ce 100644 --- a/src/NadekoBot/Modules/Utility/Services/RemindService.cs +++ b/NadekoBot.Core/Modules/Utility/Services/RemindService.cs @@ -7,11 +7,11 @@ using Discord; using Discord.WebSocket; using NadekoBot.Common.Replacements; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; +using System.Collections.Generic; namespace NadekoBot.Modules.Utility.Services { @@ -29,8 +29,10 @@ namespace NadekoBot.Modules.Utility.Services private readonly DiscordSocketClient _client; private readonly DbService _db; - public RemindService(DiscordSocketClient client, IBotConfigProvider config, DbService db, - StartingGuildsService guilds, IUnitOfWork uow) + public RemindService(DiscordSocketClient client, + IBotConfigProvider config, + DbService db, + StartingGuildsService guilds) { _config = config; _client = client; @@ -39,8 +41,12 @@ namespace NadekoBot.Modules.Utility.Services cancelSource = new CancellationTokenSource(); cancelAllToken = cancelSource.Token; - - var reminders = uow.Reminders.GetIncludedReminders(guilds).ToList(); + + List reminders; + using (var uow = _db.UnitOfWork) + { + reminders = uow.Reminders.GetIncludedReminders(guilds).ToList(); + } RemindMessageFormat = _config.BotConfig.RemindMessageFormat; foreach (var r in reminders) diff --git a/src/NadekoBot/Modules/Utility/Services/StreamRoleService.cs b/NadekoBot.Core/Modules/Utility/Services/StreamRoleService.cs similarity index 93% rename from src/NadekoBot/Modules/Utility/Services/StreamRoleService.cs rename to NadekoBot.Core/Modules/Utility/Services/StreamRoleService.cs index 98f34eaf..52a3266a 100644 --- a/src/NadekoBot/Modules/Utility/Services/StreamRoleService.cs +++ b/NadekoBot.Core/Modules/Utility/Services/StreamRoleService.cs @@ -6,8 +6,8 @@ using System.Threading.Tasks; using Discord; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using NLog; using NadekoBot.Modules.Utility.Extensions; using NadekoBot.Common.TypeReaders; @@ -17,22 +17,25 @@ using Discord.Net; namespace NadekoBot.Modules.Utility.Services { - public class StreamRoleService : INService + public class StreamRoleService : INService, IUnloadableService { private readonly DbService _db; + private readonly DiscordSocketClient _client; private readonly ConcurrentDictionary guildSettings; private readonly Logger _log; - public StreamRoleService(DiscordSocketClient client, DbService db, IEnumerable gcs) + public StreamRoleService(DiscordSocketClient client, DbService db, NadekoBot bot) { - this._db = db; this._log = LogManager.GetCurrentClassLogger(); + this._db = db; + this._client = client; - guildSettings = gcs.ToDictionary(x => x.GuildId, x => x.StreamRole) + guildSettings = bot.AllGuildConfigs + .ToDictionary(x => x.GuildId, x => x.StreamRole) .Where(x => x.Value != null && x.Value.Enabled) .ToConcurrent(); - client.GuildMemberUpdated += Client_GuildMemberUpdated; + _client.GuildMemberUpdated += Client_GuildMemberUpdated; var _ = Task.Run(async () => { @@ -47,6 +50,12 @@ namespace NadekoBot.Modules.Utility.Services }); } + public Task Unload() + { + _client.GuildMemberUpdated -= Client_GuildMemberUpdated; + return Task.CompletedTask; + } + private Task Client_GuildMemberUpdated(SocketGuildUser before, SocketGuildUser after) { var _ = Task.Run(async () => @@ -255,7 +264,7 @@ namespace NadekoBot.Modules.Utility.Services throw new StreamRoleNotFoundException(); await user.RemoveRoleAsync(addRole).ConfigureAwait(false); - _log.Info("Removed stream role from a user {0} in {1} server", user.ToString(), user.Guild.ToString()); + _log.Info("Removed stream role from the user {0} in {1} server", user.ToString(), user.Guild.ToString()); } catch (HttpException ex) when (ex.HttpCode == System.Net.HttpStatusCode.Forbidden) { @@ -264,7 +273,6 @@ namespace NadekoBot.Modules.Utility.Services _log.Error(ex); throw new StreamRolePermissionException(); } - _log.Info("Removed stream role from the user {0} in {1} server", user.ToString(), user.Guild.ToString()); } } } diff --git a/src/NadekoBot/Modules/Utility/Services/VerboseErrorsService.cs b/NadekoBot.Core/Modules/Utility/Services/VerboseErrorsService.cs similarity index 75% rename from src/NadekoBot/Modules/Utility/Services/VerboseErrorsService.cs rename to NadekoBot.Core/Modules/Utility/Services/VerboseErrorsService.cs index 9f438128..58cb8db6 100644 --- a/src/NadekoBot/Modules/Utility/Services/VerboseErrorsService.cs +++ b/NadekoBot.Core/Modules/Utility/Services/VerboseErrorsService.cs @@ -1,32 +1,39 @@ -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Discord; using Discord.Commands; using NadekoBot.Common.Collections; using NadekoBot.Extensions; using NadekoBot.Modules.Help.Services; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; namespace NadekoBot.Modules.Utility.Services { - public class VerboseErrorsService : INService + public class VerboseErrorsService : INService, IUnloadableService { private readonly ConcurrentHashSet guildsEnabled; private readonly DbService _db; private readonly CommandHandler _ch; private readonly HelpService _hs; - public VerboseErrorsService(IEnumerable gcs, DbService db, CommandHandler ch, HelpService hs) + public VerboseErrorsService(NadekoBot bot, DbService db, CommandHandler ch, HelpService hs) { _db = db; _ch = ch; _hs = hs; - ch.CommandErrored += LogVerboseError; + _ch.CommandErrored += LogVerboseError; - guildsEnabled = new ConcurrentHashSet(gcs.Where(x => x.VerboseErrors).Select(x => x.GuildId)); + guildsEnabled = new ConcurrentHashSet(bot + .AllGuildConfigs + .Where(x => x.VerboseErrors) + .Select(x => x.GuildId)); + } + + public Task Unload() + { + _ch.CommandErrored -= LogVerboseError; + return Task.CompletedTask; } private async Task LogVerboseError(CommandInfo cmd, ITextChannel channel, string reason) @@ -73,6 +80,5 @@ namespace NadekoBot.Modules.Utility.Services return enabled; } - } } diff --git a/src/NadekoBot/Modules/Utility/StreamRoleCommands.cs b/NadekoBot.Core/Modules/Utility/StreamRoleCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/StreamRoleCommands.cs rename to NadekoBot.Core/Modules/Utility/StreamRoleCommands.cs diff --git a/src/NadekoBot/Modules/Utility/UnitConversionCommands.cs b/NadekoBot.Core/Modules/Utility/UnitConversionCommands.cs similarity index 92% rename from src/NadekoBot/Modules/Utility/UnitConversionCommands.cs rename to NadekoBot.Core/Modules/Utility/UnitConversionCommands.cs index 4f9ca0e6..5dc3948a 100644 --- a/src/NadekoBot/Modules/Utility/UnitConversionCommands.cs +++ b/NadekoBot.Core/Modules/Utility/UnitConversionCommands.cs @@ -26,11 +26,12 @@ namespace NadekoBot.Modules.Utility .OrderBy(x => x))))); await Context.Channel.EmbedAsync(res); } + [NadekoCommand, Usage, Description, Aliases] public async Task Convert(string origin, string target, decimal value) { - var originUnit = _service.Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); - var targetUnit = _service.Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); + var originUnit = _service.Units.FirstOrDefault(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); + var targetUnit = _service.Units.FirstOrDefault(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); if (originUnit == null || targetUnit == null) { await ReplyErrorLocalized("convert_not_found", Format.Bold(origin), Format.Bold(target)).ConfigureAwait(false); diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/NadekoBot.Core/Modules/Utility/Utility.cs similarity index 83% rename from src/NadekoBot/Modules/Utility/Utility.cs rename to NadekoBot.Core/Modules/Utility/Utility.cs index 82c8551e..6e7899f3 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/NadekoBot.Core/Modules/Utility/Utility.cs @@ -5,11 +5,8 @@ using System.Linq; using System.Threading.Tasks; using System.Text; using NadekoBot.Extensions; -using System.Reflection; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services.Impl; using System.Net.Http; -using System.Collections.Concurrent; -using System.Threading; using ImageSharp; using System.Collections.Generic; using Newtonsoft.Json; @@ -17,8 +14,7 @@ using Discord.WebSocket; using System.Diagnostics; using NadekoBot.Common; using NadekoBot.Common.Attributes; -using Color = Discord.Color; -using NadekoBot.Services; +using NadekoBot.Core.Services; namespace NadekoBot.Modules.Utility { @@ -27,14 +23,18 @@ namespace NadekoBot.Modules.Utility private readonly DiscordSocketClient _client; private readonly IStatsService _stats; private readonly IBotCredentials _creds; - private readonly ShardsCoordinator _shardCoord; + private readonly NadekoBot _bot; + private readonly DbService _db; - public Utility(NadekoBot nadeko, DiscordSocketClient client, IStatsService stats, IBotCredentials creds) + public Utility(NadekoBot nadeko, DiscordSocketClient client, + IStatsService stats, IBotCredentials creds, + DbService db) { _client = client; _stats = stats; _creds = creds; - _shardCoord = nadeko.ShardCoord; + _bot = nadeko; + _db = db; } [NadekoCommand, Usage, Description, Aliases] @@ -93,15 +93,17 @@ namespace NadekoBot.Modules.Utility { var rng = new NadekoRandom(); var usrs = (await Context.Guild.GetUsersAsync()).ToArray(); - var roleUsers = usrs.Where(u => u.RoleIds.Contains(role.Id)).Select(u => u.ToString()) + var roleUsers = usrs + .Where(u => u.RoleIds.Contains(role.Id)) + .Select(u => u.ToString()) .ToArray(); - var inroleusers = string.Join(", ", roleUsers - .OrderBy(x => rng.Next()) - .Take(50)); - var embed = new EmbedBuilder().WithOkColor() - .WithTitle("ℹ️ " + Format.Bold(GetText("inrole_list", Format.Bold(role.Name))) + $" - {roleUsers.Length}") - .WithDescription($"```css\n[{role.Name}]\n{inroleusers}```"); - await Context.Channel.EmbedAsync(embed).ConfigureAwait(false); + + await Context.Channel.SendPaginatedConfirmAsync(_client, 0, (cur) => + { + return new EmbedBuilder().WithOkColor() + .WithTitle(Format.Bold(GetText("inrole_list", Format.Bold(role.Name))) + $" - {roleUsers.Length}") + .WithDescription(string.Join("\n", roleUsers.Skip(cur * 20).Take(20))); + }, roleUsers.Length, 20).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -214,47 +216,6 @@ namespace NadekoBot.Modules.Utility await Context.Channel.SendConfirmAsync($"{Context.User.Mention} https://discord.gg/{invite.Code}"); } - [NadekoCommand, Usage, Description, Aliases] - [Shard0Precondition] - public async Task ShardStats(int page = 1) - { - if (--page < 0) - return; - var statuses = _shardCoord.Statuses.ToArray() - .Where(x => x != null); - - var status = string.Join(", ", statuses - .GroupBy(x => x.ConnectionState) - .Select(x => $"{x.Count()} {x.Key}") - .ToArray()); - - var allShardStrings = statuses - .Select(x => - { - var timeDiff = DateTime.UtcNow - x.Time; - if (timeDiff > TimeSpan.FromSeconds(20)) - return $"Shard #{Format.Bold(x.ShardId.ToString())} **UNRESPONSIVE** for {timeDiff.ToString(@"hh\:mm\:ss")}"; - return GetText("shard_stats_txt", x.ShardId.ToString(), - Format.Bold(x.ConnectionState.ToString()), Format.Bold(x.Guilds.ToString()), timeDiff.ToString(@"hh\:mm\:ss")); - }) - .ToArray(); - - await Context.Channel.SendPaginatedConfirmAsync(_client, page, (curPage) => - { - - var str = string.Join("\n", allShardStrings.Skip(25 * curPage).Take(25)); - - if (string.IsNullOrWhiteSpace(str)) - str = GetText("no_shards_on_page"); - - return new EmbedBuilder() - .WithAuthor(a => a.WithName(GetText("shard_stats"))) - .WithTitle(status) - .WithOkColor() - .WithDescription(str); - }, allShardStrings.Length / 25); - } - [NadekoCommand, Usage, Description, Aliases] public async Task Stats() { @@ -273,7 +234,7 @@ namespace NadekoBot.Modules.Utility .AddField(efb => efb.WithName(GetText("uptime")).WithValue(_stats.GetUptimeString("\n")).WithIsInline(true)) .AddField(efb => efb.WithName(GetText("presence")).WithValue( GetText("presence_txt", - _stats.GuildCount, _stats.TextChannels, _stats.VoiceChannels)).WithIsInline(true))); + _bot.GuildCount, _stats.TextChannels, _stats.VoiceChannels)).WithIsInline(true))); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Utility/VerboseErrorCommands.cs b/NadekoBot.Core/Modules/Utility/VerboseErrorCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/VerboseErrorCommands.cs rename to NadekoBot.Core/Modules/Utility/VerboseErrorCommands.cs diff --git a/src/NadekoBot/Modules/Xp/Club.cs b/NadekoBot.Core/Modules/Xp/Club.cs similarity index 89% rename from src/NadekoBot/Modules/Xp/Club.cs rename to NadekoBot.Core/Modules/Xp/Club.cs index 20a6e97a..549ef457 100644 --- a/src/NadekoBot/Modules/Xp/Club.cs +++ b/NadekoBot.Core/Modules/Xp/Club.cs @@ -5,7 +5,7 @@ using NadekoBot.Common.Attributes; using NadekoBot.Extensions; using NadekoBot.Modules.Xp.Common; using NadekoBot.Modules.Xp.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Linq; using System.Threading.Tasks; @@ -26,6 +26,19 @@ namespace NadekoBot.Modules.Xp _client = client; } + [NadekoCommand, Usage, Description, Aliases] + public async Task ClubTransfer([Remainder]IUser newOwner) + { + var club = _service.TransferClub(Context.User, newOwner); + + if(club != null) + await ReplyConfirmLocalized("club_transfered", + Format.Bold(club.Name), + Format.Bold(newOwner.ToString())).ConfigureAwait(false); + else + await ReplyErrorLocalized("club_transfer_failed").ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] public async Task ClubAdmin([Remainder]IUser toAdmin) { @@ -99,8 +112,7 @@ namespace NadekoBot.Modules.Xp return; } - ClubInfo club; - if (!_service.GetClubByName(clubName, out club)) + if (!_service.GetClubByName(clubName, out ClubInfo club)) { await ReplyErrorLocalized("club_not_exists").ConfigureAwait(false); return; @@ -117,30 +129,34 @@ namespace NadekoBot.Modules.Xp .AddField("Owner", club.Owner.ToString(), true) .AddField("Level Req.", club.MinimumLevelReq.ToString(), true) .AddField("Members", string.Join("\n", club.Users - .OrderByDescending(x => { + .OrderByDescending(x => + { + var l = new LevelStats(x.TotalXp).Level; if (club.OwnerId == x.Id) - return 2; + return int.MaxValue; else if (x.IsClubAdmin) - return 1; + return int.MaxValue / 2 + l; else - return 0; + return l; }) .Skip(page * 10) .Take(10) - .Select(x => + .Select(x => { + var l = new LevelStats(x.TotalXp); + var lvlStr = Format.Bold($" 『{l.Level}』"); if (club.OwnerId == x.Id) - return x.ToString() + "🌟"; + return x.ToString() + "🌟" + lvlStr; else if (x.IsClubAdmin) - return x.ToString() + "⭐"; - return x.ToString(); + return x.ToString() + "⭐" + lvlStr; + return x.ToString() + lvlStr; })), false); if (Uri.IsWellFormedUriString(club.ImageUrl, UriKind.Absolute)) return embed.WithThumbnailUrl(club.ImageUrl); return embed; - }, club.Users.Count / 10); + }, club.Users.Count, 10); } [NadekoCommand, Usage, Description, Aliases] @@ -171,7 +187,7 @@ namespace NadekoBot.Modules.Xp .WithDescription(toShow) .WithOkColor(); - }, bans.Length / 10); + }, bans.Length, 10); } @@ -203,7 +219,7 @@ namespace NadekoBot.Modules.Xp .WithDescription(toShow) .WithOkColor(); - }, apps.Length / 10); + }, apps.Length, 10); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Xp/Common/FullUserStats.cs b/NadekoBot.Core/Modules/Xp/Common/FullUserStats.cs similarity index 93% rename from src/NadekoBot/Modules/Xp/Common/FullUserStats.cs rename to NadekoBot.Core/Modules/Xp/Common/FullUserStats.cs index 11f38648..62e68a39 100644 --- a/src/NadekoBot/Modules/Xp/Common/FullUserStats.cs +++ b/NadekoBot.Core/Modules/Xp/Common/FullUserStats.cs @@ -1,4 +1,4 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Xp.Common { diff --git a/src/NadekoBot/Modules/Xp/Common/LevelStats.cs b/NadekoBot.Core/Modules/Xp/Common/LevelStats.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Common/LevelStats.cs rename to NadekoBot.Core/Modules/Xp/Common/LevelStats.cs diff --git a/src/NadekoBot/Modules/Xp/Extensions/Extensions.cs b/NadekoBot.Core/Modules/Xp/Extensions/Extensions.cs similarity index 94% rename from src/NadekoBot/Modules/Xp/Extensions/Extensions.cs rename to NadekoBot.Core/Modules/Xp/Extensions/Extensions.cs index c5d6605b..207f3e51 100644 --- a/src/NadekoBot/Modules/Xp/Extensions/Extensions.cs +++ b/NadekoBot.Core/Modules/Xp/Extensions/Extensions.cs @@ -1,5 +1,5 @@ using NadekoBot.Modules.Xp.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/NadekoBot/Modules/Xp/Services/ClubService.cs b/NadekoBot.Core/Modules/Xp/Services/ClubService.cs similarity index 92% rename from src/NadekoBot/Modules/Xp/Services/ClubService.cs rename to NadekoBot.Core/Modules/Xp/Services/ClubService.cs index 4c61d7ab..151b0ded 100644 --- a/src/NadekoBot/Modules/Xp/Services/ClubService.cs +++ b/NadekoBot.Core/Modules/Xp/Services/ClubService.cs @@ -1,11 +1,9 @@ -using NadekoBot.Services; +using NadekoBot.Core.Services; using System; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Discord; using NadekoBot.Modules.Xp.Common; using System.Linq; -using Microsoft.EntityFrameworkCore; -using System.Collections.Generic; namespace NadekoBot.Modules.Xp.Services { @@ -53,6 +51,27 @@ namespace NadekoBot.Modules.Xp.Services return true; } + public ClubInfo TransferClub(IUser from, IUser newOwner) + { + ClubInfo club; + using (var uow = _db.UnitOfWork) + { + club = uow.Clubs.GetByOwner(from.Id); + var newOwnerUser = uow.DiscordUsers.GetOrCreate(newOwner); + + if (club == null || + club.Owner.UserId != from.Id || + !club.Users.Contains(newOwnerUser)) + return null; + + club.Owner.IsClubAdmin = true; // old owner will stay as admin + newOwnerUser.IsClubAdmin = true; + club.Owner = newOwnerUser; + uow.Complete(); + } + return club; + } + public bool ToggleAdmin(IUser owner, IUser toAdmin) { bool newState; @@ -60,14 +79,14 @@ namespace NadekoBot.Modules.Xp.Services { var club = uow.Clubs.GetByOwner(owner.Id); var adminUser = uow.DiscordUsers.GetOrCreate(toAdmin); - - if (club.OwnerId == adminUser.Id) - return true; - + if (club == null || club.Owner.UserId != owner.Id || !club.Users.Contains(adminUser)) throw new InvalidOperationException(); + if (club.OwnerId == adminUser.Id) + return true; + newState = adminUser.IsClubAdmin = !adminUser.IsClubAdmin; uow.Complete(); } diff --git a/src/NadekoBot/Modules/Xp/Services/UserCacheItem.cs b/NadekoBot.Core/Modules/Xp/Services/UserCacheItem.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Services/UserCacheItem.cs rename to NadekoBot.Core/Modules/Xp/Services/UserCacheItem.cs diff --git a/src/NadekoBot/Modules/Xp/Services/XpService.cs b/NadekoBot.Core/Modules/Xp/Services/XpService.cs similarity index 77% rename from src/NadekoBot/Modules/Xp/Services/XpService.cs rename to NadekoBot.Core/Modules/Xp/Services/XpService.cs index 09fa7ec9..705b108a 100644 --- a/src/NadekoBot/Modules/Xp/Services/XpService.cs +++ b/NadekoBot.Core/Modules/Xp/Services/XpService.cs @@ -3,9 +3,9 @@ using Discord.WebSocket; using NadekoBot.Common.Collections; using NadekoBot.Extensions; using NadekoBot.Modules.Xp.Common; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Impl; using NLog; using System; using System.Collections.Concurrent; @@ -19,25 +19,25 @@ using SixLabors.Fonts; using System.IO; using SixLabors.Primitives; using System.Net.Http; -using SixLabors.Shapes; -using System.Numerics; using ImageSharp.Drawing.Pens; using ImageSharp.Drawing.Brushes; namespace NadekoBot.Modules.Xp.Services { - public class XpService : INService + public class XpService : INService, IUnloadableService { private enum NotifOf { Server, Global } // is it a server level-up or global level-up notification private readonly DbService _db; private readonly CommandHandler _cmd; private readonly IBotConfigProvider _bc; - private readonly IImagesService _images; + private readonly IImageCache _images; private readonly Logger _log; private readonly NadekoStrings _strings; private readonly IDataCache _cache; - private readonly FontCollection _fonts = new FontCollection(); + private readonly FontProvider _fonts; + private readonly IBotCredentials _creds; + private readonly CurrencyService _cs; public const int XP_REQUIRED_LVL_1 = 36; private readonly ConcurrentDictionary> _excludedRoles @@ -55,30 +55,28 @@ namespace NadekoBot.Modules.Xp.Services private readonly ConcurrentQueue _addMessageXp = new ConcurrentQueue(); - private readonly Timer updateXpTimer; + private readonly Timer _updateXpTimer; + private readonly CancellationTokenSource _clearRewardTimerTokenSource; + private readonly Task _clearRewardTimer; private readonly HttpClient http = new HttpClient(); - private FontFamily _usernameFontFamily; - private FontFamily _clubFontFamily; - private Font _levelFont; - private Font _xpFont; - private Font _awardedFont; - private Font _rankFont; - private Font _timeFont; public XpService(CommandHandler cmd, IBotConfigProvider bc, - IEnumerable allGuildConfigs, IImagesService images, - DbService db, NadekoStrings strings, IDataCache cache) + NadekoBot bot, DbService db, NadekoStrings strings, IDataCache cache, + FontProvider fonts, IBotCredentials creds, CurrencyService cs) { _db = db; _cmd = cmd; _bc = bc; - _images = images; + _images = cache.LocalImages; _log = LogManager.GetCurrentClassLogger(); _strings = strings; _cache = cache; + _fonts = fonts; + _creds = creds; + _cs = cs; //load settings - allGuildConfigs = allGuildConfigs.Where(x => x.XpSettings != null); + var allGuildConfigs = bot.AllGuildConfigs.Where(x => x.XpSettings != null); _excludedChannels = allGuildConfigs .ToDictionary( x => x.GuildId, @@ -103,24 +101,15 @@ namespace NadekoBot.Modules.Xp.Services allGuildConfigs.Where(x => x.XpSettings.ServerExcluded) .Select(x => x.GuildId)); - //todo 60 move to font provider or somethign - _fonts = new FontCollection(); - if (Directory.Exists("data/fonts")) - foreach (var file in Directory.GetFiles("data/fonts")) - { - _fonts.Install(file); - } - - InitializeFonts(); - _cmd.OnMessageNoTrigger += _cmd_OnMessageNoTrigger; - updateXpTimer = new Timer(async _ => + _updateXpTimer = new Timer(async _ => { try { var toNotify = new List<(IMessageChannel MessageChannel, IUser User, int Level, XpNotificationType NotifyType, NotifOf NotifOf)>(); var roleRewards = new Dictionary>(); + var curRewards = new Dictionary>(); var toAddTo = new List(); while (_addMessageXp.TryDequeue(out var usr)) @@ -136,14 +125,13 @@ namespace NadekoBot.Modules.Xp.Services { var xp = item.Select(x => bc.BotConfig.XpPerMessage).Sum(); + //1. Mass query discord users and userxpstats and get them from local dict + //2. (better but much harder) Move everything to the database, and get old and new xp + // amounts for every user (in order to give rewards) + var usr = uow.Xp.GetOrCreateUser(item.Key.GuildId, item.Key.User.Id); var du = uow.DiscordUsers.GetOrCreate(item.Key.User); - if (du.LastXpGain + TimeSpan.FromMinutes(_bc.BotConfig.XpMinutesTimeout) > DateTime.UtcNow) - continue; - - du.LastXpGain = DateTime.UtcNow; - var globalXp = du.TotalXp; var oldGlobalLevelData = new LevelStats(globalXp); var newGlobalLevelData = new LevelStats(globalXp + xp); @@ -172,21 +160,34 @@ namespace NadekoBot.Modules.Xp.Services toNotify.Add((first.Channel, first.User, newGuildLevelData.Level, usr.NotifyOnLevelUp, NotifOf.Server)); //give role - if (!roleRewards.TryGetValue(usr.GuildId, out var rewards)) + if (!roleRewards.TryGetValue(usr.GuildId, out var rrews)) { - rewards = uow.GuildConfigs.XpSettingsFor(usr.GuildId).RoleRewards.ToList(); - roleRewards.Add(usr.GuildId, rewards); + rrews = uow.GuildConfigs.XpSettingsFor(usr.GuildId).RoleRewards.ToList(); + roleRewards.Add(usr.GuildId, rrews); } - var rew = rewards.FirstOrDefault(x => x.Level == newGuildLevelData.Level); - if (rew != null) + if (!curRewards.TryGetValue(usr.GuildId, out var crews)) { - var role = first.User.Guild.GetRole(rew.RoleId); + crews = uow.GuildConfigs.XpSettingsFor(usr.GuildId).CurrencyRewards.ToList(); + curRewards.Add(usr.GuildId, crews); + } + + var rrew = rrews.FirstOrDefault(x => x.Level == newGuildLevelData.Level); + if (rrew != null) + { + var role = first.User.Guild.GetRole(rrew.RoleId); if (role != null) { var __ = first.User.AddRoleAsync(role); } } + //get currency reward for this level + var crew = crews.FirstOrDefault(x => x.Level == newGuildLevelData.Level); + if (crew != null) + { + //give the user the reward if it exists + await _cs.AddAsync(item.Key.User.Id, "Level-up Reward", crew.Amount, uow); + } } } @@ -241,19 +242,64 @@ namespace NadekoBot.Modules.Xp.Services _log.Warn(ex); } }, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)); - - + + _clearRewardTimerTokenSource = new CancellationTokenSource(); + var token = _clearRewardTimerTokenSource.Token; //just a first line, in order to prevent queries. But since other shards can try to do this too, //i'll check in the db too. - var clearRewardTimer = Task.Run(async () => + _clearRewardTimer = Task.Run(async () => { - while (true) + while (!token.IsCancellationRequested) { _rewardedUsers.Clear(); await Task.Delay(TimeSpan.FromMinutes(_bc.BotConfig.XpMinutesTimeout)); } - }); + }, token); + } + + public void SetCurrencyReward(ulong guildId, int level, int amount) + { + using (var uow = _db.UnitOfWork) + { + var settings = uow.GuildConfigs.XpSettingsFor(guildId); + + if (amount <= 0) + { + var toRemove = settings.CurrencyRewards.FirstOrDefault(x => x.Level == level); + if (toRemove != null) + { + uow._context.Remove(toRemove); + settings.CurrencyRewards.Remove(toRemove); + } + } + else + { + + var rew = settings.CurrencyRewards.FirstOrDefault(x => x.Level == level); + + if (rew != null) + rew.Amount = amount; + else + settings.CurrencyRewards.Add(new XpCurrencyReward() + { + Level = level, + Amount = amount, + }); + } + + uow.Complete(); + } + } + + public IEnumerable GetCurrencyRewards(ulong id) + { + using (var uow = _db.UnitOfWork) + { + return uow.GuildConfigs.XpSettingsFor(id) + .CurrencyRewards + .ToArray(); + } } public IEnumerable GetRoleRewards(ulong id) @@ -400,7 +446,13 @@ namespace NadekoBot.Modules.Xp.Services private bool SetUserRewarded(ulong userId) { - return _rewardedUsers.Add(userId); + var r = _cache.Redis.GetDatabase(); + var key = $"{_creds.RedisKey()}_user_xp_gain_{userId}"; + + return r.StringSet(key, + true, + TimeSpan.FromMinutes(_bc.BotConfig.XpMinutesTimeout), + StackExchange.Redis.When.NotExists); } public FullUserStats GetUserStats(IGuildUser user) @@ -544,16 +596,6 @@ namespace NadekoBot.Modules.Xp.Services return GenerateImageAsync(GetUserStats(user)); } - private void InitializeFonts() - { - _usernameFontFamily = _fonts.Find("Whitney-Bold"); - _clubFontFamily = _fonts.Find("Whitney-Bold"); - _levelFont = _fonts.Find("Whitney-Bold").CreateFont(45); - _xpFont = _fonts.Find("Whitney-Bold").CreateFont(50); - _awardedFont = _fonts.Find("Whitney-Bold").CreateFont(25); - _rankFont = _fonts.Find("Uni Sans Thin CAPS").CreateFont(30); - _timeFont = _fonts.Find("Whitney-Bold").CreateFont(20); - } public Task GenerateImageAsync(FullUserStats stats) => Task.Run(async () => { @@ -561,7 +603,7 @@ namespace NadekoBot.Modules.Xp.Services { var username = stats.User.ToString(); - var usernameFont = _usernameFontFamily + var usernameFont = _fonts.UsernameFontFamily .CreateFont(username.Length <= 6 ? 50 : 50 - username.Length); @@ -571,17 +613,17 @@ namespace NadekoBot.Modules.Xp.Services // level - img.DrawText(stats.Global.Level.ToString(), _levelFont, Rgba32.White, + img.DrawText(stats.Global.Level.ToString(), _fonts.LevelFont, Rgba32.White, new PointF(47, 137)); - img.DrawText(stats.Guild.Level.ToString(), _levelFont, Rgba32.White, + img.DrawText(stats.Guild.Level.ToString(), _fonts.LevelFont, Rgba32.White, new PointF(47, 285)); //club name var clubName = stats.User.Club?.ToString() ?? "-"; - var clubFont = _clubFontFamily + var clubFont = _fonts.ClubFontFamily .CreateFont(clubName.Length <= 8 ? 35 : 35 - (clubName.Length / 2)); @@ -604,7 +646,7 @@ namespace NadekoBot.Modules.Xp.Services new PointF(286 + (450 * (global.LevelXp / (float)global.RequiredXp)), 235), new PointF(286, 235), }); - img.DrawText($"{global.LevelXp}/{global.RequiredXp}", _xpFont, brush, pen, + img.DrawText($"{global.LevelXp}/{global.RequiredXp}", _fonts.XpFont, brush, pen, new PointF(430, 130)); img.FillPolygon(xpBgBrush, new[] { @@ -613,7 +655,7 @@ namespace NadekoBot.Modules.Xp.Services new PointF(247 + (450 * (guild.LevelXp / (float)guild.RequiredXp)), 379), new PointF(247, 379), }); - img.DrawText($"{guild.LevelXp}/{guild.RequiredXp}", _xpFont, brush, pen, + img.DrawText($"{guild.LevelXp}/{guild.RequiredXp}", _fonts.XpFont, brush, pen, new PointF(400, 270)); if (stats.FullGuildStats.AwardedXp != 0) @@ -621,16 +663,16 @@ namespace NadekoBot.Modules.Xp.Services var sign = stats.FullGuildStats.AwardedXp > 0 ? "+ " : ""; - img.DrawText($"({sign}{stats.FullGuildStats.AwardedXp})", _awardedFont, brush, pen, + img.DrawText($"({sign}{stats.FullGuildStats.AwardedXp})", _fonts.AwardedFont, brush, pen, new PointF(445 - (Math.Max(0, (stats.FullGuildStats.AwardedXp.ToString().Length - 2)) * 5), 335)); } //ranking - img.DrawText(stats.GlobalRanking.ToString(), _rankFont, Rgba32.White, + img.DrawText(stats.GlobalRanking.ToString(), _fonts.RankFont, Rgba32.White, new PointF(148, 170)); - img.DrawText(stats.GuildRanking.ToString(), _rankFont, Rgba32.White, + img.DrawText(stats.GuildRanking.ToString(), _fonts.RankFont, Rgba32.White, new PointF(148, 317)); //time on this level @@ -641,10 +683,10 @@ namespace NadekoBot.Modules.Xp.Services return $"{offset.Days}d{offset.Hours}h{offset.Minutes}m"; } - img.DrawText(GetTimeSpent(stats.User.LastLevelUp), _timeFont, Rgba32.White, + img.DrawText(GetTimeSpent(stats.User.LastLevelUp), _fonts.TimeFont, Rgba32.White, new PointF(50, 197)); - img.DrawText(GetTimeSpent(stats.FullGuildStats.LastLevelUp), _timeFont, Rgba32.White, + img.DrawText(GetTimeSpent(stats.FullGuildStats.LastLevelUp), _fonts.TimeFont, Rgba32.White, new PointF(50, 344)); //avatar @@ -661,7 +703,7 @@ namespace NadekoBot.Modules.Xp.Services using (var temp = await http.GetStreamAsync(avatarUrl)) using (var tempDraw = Image.Load(temp).Resize(69, 70)) { - ApplyRoundedCorners(tempDraw, 35); + tempDraw.ApplyRoundedCorners(35); data = tempDraw.ToStream().ToArray(); } @@ -682,74 +724,62 @@ namespace NadekoBot.Modules.Xp.Services } //club image - - if (!string.IsNullOrWhiteSpace(stats.User.Club?.ImageUrl)) - { - var imgUrl = stats.User.Club.ImageUrl; - try - { - var (succ, data) = await _cache.TryGetImageDataAsync(imgUrl); - if (!succ) - { - using (var temp = await http.GetStreamAsync(imgUrl)) - using (var tempDraw = Image.Load(temp).Resize(45, 45)) - { - ApplyRoundedCorners(tempDraw, 22.5f); - data = tempDraw.ToStream().ToArray(); - } - - await _cache.SetImageDataAsync(imgUrl, data); - } - var toDraw = Image.Load(data); - - img.DrawImage(toDraw, - 1, - new Size(45, 45), - new Point(722, 25)); - } - catch (Exception ex) - { - _log.Warn(ex); - } - } + await DrawClubImage(img, stats).ConfigureAwait(false); return img.Resize(432, 211).ToStream(); } }); - // https://github.com/SixLabors/ImageSharp/tree/master/samples/AvatarWithRoundedCorner - public static void ApplyRoundedCorners(Image img, float cornerRadius) + private async Task DrawClubImage(Image img, FullUserStats stats) { - var corners = BuildCorners(img.Width, img.Height, cornerRadius); - // now we have our corners time to draw them - img.Fill(Rgba32.Transparent, corners, new GraphicsOptions(true) + if (!string.IsNullOrWhiteSpace(stats.User.Club?.ImageUrl)) { - BlenderMode = ImageSharp.PixelFormats.PixelBlenderMode.Src // enforces that any part of this shape that has color is punched out of the background - }); + var imgUrl = stats.User.Club.ImageUrl; + try + { + var (succ, data) = await _cache.TryGetImageDataAsync(imgUrl); + if (!succ) + { + using (var temp = await http.GetAsync(imgUrl, HttpCompletionOption.ResponseHeadersRead)) + { + if (temp.Content.Headers.ContentType.MediaType != "image/png" + && temp.Content.Headers.ContentType.MediaType != "image/jpeg" + && temp.Content.Headers.ContentType.MediaType != "image/gif") + return; + using (var tempDraw = Image.Load(await temp.Content.ReadAsStreamAsync()).Resize(45, 45)) + { + tempDraw.ApplyRoundedCorners(22.5f); + data = tempDraw.ToStream().ToArray(); + } + } + + await _cache.SetImageDataAsync(imgUrl, data); + } + var toDraw = Image.Load(data); + + img.DrawImage(toDraw, + 1, + new Size(45, 45), + new Point(722, 25)); + } + catch (Exception ex) + { + _log.Warn(ex); + } + } } - public static IPathCollection BuildCorners(int imageWidth, int imageHeight, float cornerRadius) + public Task Unload() { - // first create a square - var rect = new RectangularePolygon(-0.5f, -0.5f, cornerRadius, cornerRadius); + _cmd.OnMessageNoTrigger -= _cmd_OnMessageNoTrigger; - // then cut out of the square a circle so we are left with a corner - var cornerToptLeft = rect.Clip(new EllipsePolygon(cornerRadius - 0.5f, cornerRadius - 0.5f, cornerRadius)); + if (!_clearRewardTimerTokenSource.IsCancellationRequested) + _clearRewardTimerTokenSource.Cancel(); - // corner is now a corner shape positions top left - //lets make 3 more positioned correctly, we can do that by translating the orgional around the center of the image - var center = new Vector2(imageWidth / 2, imageHeight / 2); - - float rightPos = imageWidth - cornerToptLeft.Bounds.Width + 1; - float bottomPos = imageHeight - cornerToptLeft.Bounds.Height + 1; - - // move it across the width of the image - the width of the shape - var cornerTopRight = cornerToptLeft.RotateDegree(90).Translate(rightPos, 0); - var cornerBottomLeft = cornerToptLeft.RotateDegree(-90).Translate(0, bottomPos); - var cornerBottomRight = cornerToptLeft.RotateDegree(180).Translate(rightPos, bottomPos); - - return new PathCollection(cornerToptLeft, cornerBottomLeft, cornerTopRight, cornerBottomRight); + _updateXpTimer.Change(Timeout.Infinite, Timeout.Infinite); + _clearRewardTimerTokenSource.Dispose(); + return Task.CompletedTask; } } } diff --git a/src/NadekoBot/Modules/Xp/Xp.cs b/NadekoBot.Core/Modules/Xp/Xp.cs similarity index 81% rename from src/NadekoBot/Modules/Xp/Xp.cs rename to NadekoBot.Core/Modules/Xp/Xp.cs index a3356372..886ae8c2 100644 --- a/src/NadekoBot/Modules/Xp/Xp.cs +++ b/NadekoBot.Core/Modules/Xp/Xp.cs @@ -1,13 +1,12 @@ using Discord; using Discord.Commands; using Discord.WebSocket; -using NadekoBot.Common; using NadekoBot.Common.Attributes; using NadekoBot.Extensions; using NadekoBot.Modules.Xp.Common; using NadekoBot.Modules.Xp.Services; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Database.Models; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; @@ -18,40 +17,18 @@ namespace NadekoBot.Modules.Xp { private readonly DiscordSocketClient _client; private readonly DbService _db; + private readonly IBotConfigProvider _bc; - public Xp(DiscordSocketClient client,DbService db) + public Xp(DiscordSocketClient client,DbService db, IBotConfigProvider bc) { _client = client; _db = db; + _bc = bc; } - - //[NadekoCommand, Usage, Description, Aliases] - //[RequireContext(ContextType.Guild)] - //[OwnerOnly] - //public async Task Populate() - //{ - // var rng = new NadekoRandom(); - // using (var uow = _db.UnitOfWork) - // { - // for (var i = 0ul; i < 1000000; i++) - // { - // uow.DiscordUsers.Add(new DiscordUser() - // { - // AvatarId = i.ToString(), - // Discriminator = "1234", - // UserId = i, - // Username = i.ToString(), - // Club = null, - // }); - // var xp = uow.Xp.GetOrCreateUser(Context.Guild.Id, i); - // xp.Xp = rng.Next(100, 100000); - // } - // uow.Complete(); - // } - //} - + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + //todo add ratelimit attribute //[Ratelimit(30)] public async Task Experience([Remainder]IUser user = null) { @@ -70,34 +47,39 @@ namespace NadekoBot.Modules.Xp [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public Task XpRoleRewards(int page = 1) + public Task XpLevelUpRewards(int page = 1) { page--; if (page < 0 || page > 100) return Task.CompletedTask; - var roles = _service.GetRoleRewards(Context.Guild.Id) - .OrderBy(x => x.Level) - .Skip(page * 9) - .Take(9); - var embed = new EmbedBuilder() - .WithTitle(GetText("role_rewards")) + .WithTitle(GetText("level_up_rewards")) .WithOkColor(); - if (!roles.Any()) - return Context.Channel.EmbedAsync(embed.WithDescription(GetText("no_role_rewards"))); + var rewards = _service.GetRoleRewards(Context.Guild.Id) + .OrderBy(x => x.Level) + .Select(x => + { + var str = Context.Guild.GetRole(x.RoleId)?.ToString(); + if (str != null) + str = GetText("role_reward", Format.Bold(str)); + return (x.Level, RoleStr: str); + }) + .Where(x => x.RoleStr != null) + .Concat(_service.GetCurrencyRewards(Context.Guild.Id) + .OrderBy(x => x.Level) + .Select(x => (x.Level, Format.Bold(x.Amount + _bc.BotConfig.CurrencySign)))) + .GroupBy(x => x.Level) + .OrderBy(x => x.Key) + .Skip(page * 9) + .Take(9) + .ForEach(x => embed.AddField(GetText("level_x", x.Key), string.Join("\n", x.Select(y => y.Item2)))); - foreach (var rolerew in roles) - { - var role = Context.Guild.GetRole(rolerew.RoleId); + if (!rewards.Any()) + return Context.Channel.EmbedAsync(embed.WithDescription(GetText("no_level_up_rewards"))); - if (role == null) - continue; - - embed.AddField(GetText("level_x", Format.Bold(rolerew.Level.ToString())), role.ToString()); - } return Context.Channel.EmbedAsync(embed); } @@ -117,6 +99,22 @@ namespace NadekoBot.Modules.Xp await ReplyConfirmLocalized("role_reward_added", level, Format.Bold(role.ToString())).ConfigureAwait(false); } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task XpCurrencyReward(int level, int amount=0) + { + if (level < 1 || amount < 0) + return; + + _service.SetCurrencyReward(Context.Guild.Id, level, amount); + + if (amount == 0) + await ReplyConfirmLocalized("cur_reward_cleared", level, _bc.BotConfig.CurrencySign).ConfigureAwait(false); + else + await ReplyConfirmLocalized("cur_reward_added", level, Format.Bold(amount + _bc.BotConfig.CurrencySign)).ConfigureAwait(false); + } + public enum NotifyPlace { Server = 0, @@ -237,7 +235,7 @@ namespace NadekoBot.Modules.Xp } return embed; } - }, addPaginatedFooter: false); + }, 1000, 10, addPaginatedFooter: false); } [NadekoCommand, Usage, Description, Aliases] diff --git a/NadekoBot.Core/NadekoBot.Core.csproj b/NadekoBot.Core/NadekoBot.Core.csproj new file mode 100644 index 00000000..a52750b4 --- /dev/null +++ b/NadekoBot.Core/NadekoBot.Core.csproj @@ -0,0 +1,42 @@ + + + + netcoreapp2.0 + latest + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(DefineConstants);GLOBAL_NADEKO + $(NoWarn);CS1573;CS1591 + + + diff --git a/src/NadekoBot/Services/CommandHandler.cs b/NadekoBot.Core/Services/CommandHandler.cs similarity index 88% rename from src/NadekoBot/Services/CommandHandler.cs rename to NadekoBot.Core/Services/CommandHandler.cs index c06d14ab..9e71907a 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/NadekoBot.Core/Services/CommandHandler.cs @@ -10,14 +10,13 @@ using NadekoBot.Extensions; using System.Collections.Concurrent; using System.Threading; using System.Collections.Immutable; -using NadekoBot.Services.Database.Models; using System.IO; using Discord.Net; using NadekoBot.Common; using NadekoBot.Common.Collections; using NadekoBot.Common.ModuleBehaviors; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public class GuildUserComparer : IEqualityComparer { @@ -36,6 +35,12 @@ namespace NadekoBot.Services private readonly IBotCredentials _creds; private readonly NadekoBot _bot; private INServiceProvider _services; + private IEnumerable _earlyBlockers; + private IEarlyBlockingExecutor[] _earlyBlockingExecutors; + private IInputTransformer[] _inputTransformers; + private ILateBlocker[] _lateBlockers; + private ILateExecutor[] _lateExecutors; + public string DefaultPrefix { get; private set; } private ConcurrentDictionary _prefixes { get; } = new ConcurrentDictionary(); @@ -51,7 +56,9 @@ namespace NadekoBot.Services public ConcurrentHashSet UsersOnShortCooldown { get; } = new ConcurrentHashSet(); private readonly Timer _clearUsersOnShortCooldown; - public CommandHandler(DiscordSocketClient client, DbService db, IBotConfigProvider bc, IEnumerable gcs, CommandService commandService, IBotCredentials credentials, NadekoBot bot) + public CommandHandler(DiscordSocketClient client, DbService db, + IBotConfigProvider bc, CommandService commandService, + IBotCredentials credentials, NadekoBot bot) { _client = client; _commandService = commandService; @@ -67,7 +74,7 @@ namespace NadekoBot.Services }, null, GlobalCommandsCooldown, GlobalCommandsCooldown); DefaultPrefix = bc.BotConfig.DefaultPrefix; - _prefixes = gcs + _prefixes = bot.AllGuildConfigs .Where(x => x.Prefix != null) .ToDictionary(x => x.GuildId, x => x.Prefix) .ToConcurrent(); @@ -122,6 +129,31 @@ namespace NadekoBot.Services public void AddServices(INServiceProvider services) { _services = services; + + _earlyBlockers = services + .Select(x => x as IEarlyBlocker) + .Where(x => x != null) + .ToArray(); + + _earlyBlockingExecutors = services + .Select(x => x as IEarlyBlockingExecutor) + .Where(x => x != null) + .ToArray(); + + _inputTransformers = services + .Select(x => x as IInputTransformer) + .Where(x => x != null) + .ToArray(); + + _lateBlockers = services + .Select(x => x as ILateBlocker) + .Where(x => x != null) + .ToArray(); + + _lateExecutors = services + .Select(x => x as ILateExecutor) + .Where(x => x != null) + .ToArray(); } public async Task ExecuteExternal(ulong? guildId, ulong channelId, string commandText) @@ -158,7 +190,7 @@ namespace NadekoBot.Services private Task LogSuccessfulExecution(IUserMessage usrMsg, ITextChannel channel, params int[] execPoints) { - _log.Info("Command Executed after " + string.Join("/", execPoints.Select(x => x * _oneThousandth)) + "s\n\t" + + _log.Info($"Command Executed after " + string.Join("/", execPoints.Select(x => x * _oneThousandth)) + "s\n\t" + "User: {0}\n\t" + "Server: {1}\n\t" + "Channel: {2}\n\t" + @@ -173,7 +205,7 @@ namespace NadekoBot.Services private void LogErroredExecution(string errorMessage, IUserMessage usrMsg, ITextChannel channel, params int[] execPoints) { - _log.Warn("Command Errored after " + string.Join("/", execPoints.Select(x => x * _oneThousandth)) + "s\n\t" + + _log.Warn($"Command Errored after " + string.Join("/", execPoints.Select(x => x * _oneThousandth)) + "s\n\t" + "User: {0}\n\t" + "Server: {1}\n\t" + "Channel: {2}\n\t" + @@ -226,24 +258,22 @@ namespace NadekoBot.Services //its nice to have early blockers and early blocking executors separate, but //i could also have one interface with priorities, and just put early blockers on //highest priority. :thinking: - foreach (var svc in _services) + foreach (var blocker in _earlyBlockers) { - if (svc is IEarlyBlocker blocker && - await blocker.TryBlockEarly(guild, usrMsg).ConfigureAwait(false)) + if (await blocker.TryBlockEarly(guild, usrMsg).ConfigureAwait(false)) { - _log.Info("Blocked User: [{0}] Message: [{1}] Service: [{2}]", usrMsg.Author, usrMsg.Content, svc.GetType().Name); + _log.Info("Blocked User: [{0}] Message: [{1}] Service: [{2}]", usrMsg.Author, usrMsg.Content, blocker.GetType().Name); return; } } var exec2 = Environment.TickCount - execTime; - foreach (var svc in _services) + foreach (var exec in _earlyBlockingExecutors) { - if (svc is IEarlyBlockingExecutor exec && - await exec.TryExecuteEarly(_client, guild, usrMsg).ConfigureAwait(false)) + if (await exec.TryExecuteEarly(_client, guild, usrMsg).ConfigureAwait(false)) { - _log.Info("User [{0}] executed [{1}] in [{2}]", usrMsg.Author, usrMsg.Content, svc.GetType().Name); + _log.Info("User [{0}] executed [{1}] in [{2}]", usrMsg.Author, usrMsg.Content, exec.GetType().Name); return; } } @@ -251,11 +281,10 @@ namespace NadekoBot.Services var exec3 = Environment.TickCount - execTime; string messageContent = usrMsg.Content; - foreach (var svc in _services) + foreach (var exec in _inputTransformers) { string newContent; - if (svc is IInputTransformer exec && - (newContent = await exec.TransformInput(guild, usrMsg.Channel, usrMsg.Author, messageContent).ConfigureAwait(false)) != messageContent.ToLowerInvariant()) + if ((newContent = await exec.TransformInput(guild, usrMsg.Channel, usrMsg.Author, messageContent).ConfigureAwait(false)) != messageContent.ToLowerInvariant()) { messageContent = newContent; break; @@ -287,12 +316,9 @@ namespace NadekoBot.Services await OnMessageNoTrigger(usrMsg).ConfigureAwait(false); } - foreach (var svc in _services) + foreach (var exec in _lateExecutors) { - if (svc is ILateExecutor exec) - { - await exec.LateExecute(_client, guild, usrMsg).ConfigureAwait(false); - } + await exec.LateExecute(_client, guild, usrMsg).ConfigureAwait(false); } } @@ -391,12 +417,11 @@ namespace NadekoBot.Services //return SearchResult.FromError(CommandError.Exception, "You are on a global cooldown."); var commandName = cmd.Aliases.First(); - foreach (var svc in _services) + foreach (var exec in _lateBlockers) { - if (svc is ILateBlocker exec && - await exec.TryBlockLate(_client, context.Message, context.Guild, context.Channel, context.User, cmd.Module.GetTopLevelModule().Name, commandName).ConfigureAwait(false)) + if (await exec.TryBlockLate(_client, context.Message, context.Guild, context.Channel, context.User, cmd.Module.GetTopLevelModule().Name, commandName).ConfigureAwait(false)) { - _log.Info("Late blocking User [{0}] Command: [{1}] in [{2}]", context.User, commandName, svc.GetType().Name); + _log.Info("Late blocking User [{0}] Command: [{1}] in [{2}]", context.User, commandName, exec.GetType().Name); return (false, null, cmd); } } diff --git a/src/NadekoBot/Services/CurrencyService.cs b/NadekoBot.Core/Services/CurrencyService.cs similarity index 96% rename from src/NadekoBot/Services/CurrencyService.cs rename to NadekoBot.Core/Services/CurrencyService.cs index 5b8fb44f..f94359fc 100644 --- a/src/NadekoBot/Services/CurrencyService.cs +++ b/NadekoBot.Core/Services/CurrencyService.cs @@ -2,11 +2,11 @@ using System.Threading.Tasks; using Discord; using NadekoBot.Extensions; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services.Database; -using NadekoBot.Services; +using NadekoBot.Core.Services.Database.Models; +using NadekoBot.Core.Services.Database; +using NadekoBot.Core.Services; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public class CurrencyService : INService { diff --git a/src/NadekoBot/Services/Database/IUnitOfWork.cs b/NadekoBot.Core/Services/Database/IUnitOfWork.cs similarity index 83% rename from src/NadekoBot/Services/Database/IUnitOfWork.cs rename to NadekoBot.Core/Services/Database/IUnitOfWork.cs index 6b97a085..be53661a 100644 --- a/src/NadekoBot/Services/Database/IUnitOfWork.cs +++ b/NadekoBot.Core/Services/Database/IUnitOfWork.cs @@ -1,8 +1,8 @@ -using NadekoBot.Services.Database.Repositories; +using NadekoBot.Core.Services.Database.Repositories; using System; using System.Threading.Tasks; -namespace NadekoBot.Services.Database +namespace NadekoBot.Core.Services.Database { public interface IUnitOfWork : IDisposable { @@ -11,11 +11,9 @@ namespace NadekoBot.Services.Database IQuoteRepository Quotes { get; } IGuildConfigRepository GuildConfigs { get; } IDonatorsRepository Donators { get; } - IClashOfClansRepository ClashOfClans { get; } IReminderRepository Reminders { get; } ISelfAssignedRolesRepository SelfAssignedRoles { get; } IBotConfigRepository BotConfig { get; } - IUnitConverterRepository ConverterUnits { get; } ICustomReactionRepository CustomReactions { get; } ICurrencyRepository Currency { get; } ICurrencyTransactionsRepository CurrencyTransactions { get; } @@ -26,6 +24,7 @@ namespace NadekoBot.Services.Database IWarningsRepository Warnings { get; } IXpRepository Xp { get; } IClubRepository Clubs { get; } + IPollsRepository Polls { get; } int Complete(); Task CompleteAsync(); diff --git a/src/NadekoBot/Services/Database/Models/AntiProtection.cs b/NadekoBot.Core/Services/Database/Models/AntiProtection.cs similarity index 96% rename from src/NadekoBot/Services/Database/Models/AntiProtection.cs rename to NadekoBot.Core/Services/Database/Models/AntiProtection.cs index fbafc9e3..9d6c5d14 100644 --- a/src/NadekoBot/Services/Database/Models/AntiProtection.cs +++ b/NadekoBot.Core/Services/Database/Models/AntiProtection.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class AntiRaidSetting : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/BotConfig.cs b/NadekoBot.Core/Services/Database/Models/BotConfig.cs similarity index 89% rename from src/NadekoBot/Services/Database/Models/BotConfig.cs rename to NadekoBot.Core/Services/Database/Models/BotConfig.cs index 98b84594..4ce93249 100644 --- a/src/NadekoBot/Services/Database/Models/BotConfig.cs +++ b/NadekoBot.Core/Services/Database/Models/BotConfig.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class BotConfig : DbEntity { @@ -12,8 +12,6 @@ namespace NadekoBot.Services.Database.Models public float CurrencyGenerationChance { get; set; } = 0.02f; public int CurrencyGenerationCooldown { get; set; } = 10; - public HashSet ModulePrefixes { get; set; } = new HashSet(); - public List RotatingStatusMessages { get; set; } = new List(); public bool RotatingStatuses { get; set; } = false; @@ -32,6 +30,8 @@ namespace NadekoBot.Services.Database.Models public float Betroll67Multiplier { get; set; } = 2; public float Betroll91Multiplier { get; set; } = 4; public float Betroll100Multiplier { get; set; } = 10; + public int TimelyCurrency { get; set; } = 0; + public int TimelyCurrencyPeriod { get; set; } = 0; //public HashSet CommandCosts { get; set; } = new HashSet(); /// @@ -70,6 +70,7 @@ Nadeko Support Server: https://discord.gg/nadekobot"; public bool CustomReactionsStartWith { get; set; } = false; public int XpPerMessage { get; set; } = 3; public int XpMinutesTimeout { get; set; } = 5; + public HashSet LoadedPackages { get; set; } = new HashSet(); } public class BlockedCmdOrMdl : DbEntity @@ -155,23 +156,4 @@ Nadeko Support Server: https://discord.gg/nadekobot"; return ((RaceAnimal)obj).Icon == Icon; } } - - public class ModulePrefix : DbEntity - { - public string ModuleName { get; set; } - public string Prefix { get; set; } - - public override int GetHashCode() - { - return ModuleName.GetHashCode(); - } - - public override bool Equals(object obj) - { - if(!(obj is ModulePrefix)) - return base.Equals(obj); - - return ((ModulePrefix)obj).ModuleName == ModuleName; - } - } } diff --git a/src/NadekoBot/Services/Database/Models/ClubInfo.cs b/NadekoBot.Core/Services/Database/Models/ClubInfo.cs similarity index 96% rename from src/NadekoBot/Services/Database/Models/ClubInfo.cs rename to NadekoBot.Core/Services/Database/Models/ClubInfo.cs index 68f68bc3..e2645c23 100644 --- a/src/NadekoBot/Services/Database/Models/ClubInfo.cs +++ b/NadekoBot.Core/Services/Database/Models/ClubInfo.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class ClubInfo : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/CommandCooldown.cs b/NadekoBot.Core/Services/Database/Models/CommandCooldown.cs similarity index 73% rename from src/NadekoBot/Services/Database/Models/CommandCooldown.cs rename to NadekoBot.Core/Services/Database/Models/CommandCooldown.cs index 6adcf2ad..57ec7657 100644 --- a/src/NadekoBot/Services/Database/Models/CommandCooldown.cs +++ b/NadekoBot.Core/Services/Database/Models/CommandCooldown.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class CommandCooldown : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/CommandCost.cs b/NadekoBot.Core/Services/Database/Models/CommandCost.cs similarity index 89% rename from src/NadekoBot/Services/Database/Models/CommandCost.cs rename to NadekoBot.Core/Services/Database/Models/CommandCost.cs index b3a74745..3fc6c6e3 100644 --- a/src/NadekoBot/Services/Database/Models/CommandCost.cs +++ b/NadekoBot.Core/Services/Database/Models/CommandCost.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class CommandCost : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/CommandPrice.cs b/NadekoBot.Core/Services/Database/Models/CommandPrice.cs similarity index 76% rename from src/NadekoBot/Services/Database/Models/CommandPrice.cs rename to NadekoBot.Core/Services/Database/Models/CommandPrice.cs index 62db2067..5f6ffb14 100644 --- a/src/NadekoBot/Services/Database/Models/CommandPrice.cs +++ b/NadekoBot.Core/Services/Database/Models/CommandPrice.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class CommandPrice : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/Currency.cs b/NadekoBot.Core/Services/Database/Models/Currency.cs similarity index 71% rename from src/NadekoBot/Services/Database/Models/Currency.cs rename to NadekoBot.Core/Services/Database/Models/Currency.cs index b86e32e1..c6e62a7f 100644 --- a/src/NadekoBot/Services/Database/Models/Currency.cs +++ b/NadekoBot.Core/Services/Database/Models/Currency.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class Currency : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/CurrencyTransaction.cs b/NadekoBot.Core/Services/Database/Models/CurrencyTransaction.cs similarity index 78% rename from src/NadekoBot/Services/Database/Models/CurrencyTransaction.cs rename to NadekoBot.Core/Services/Database/Models/CurrencyTransaction.cs index 243539a3..e9ef93e5 100644 --- a/src/NadekoBot/Services/Database/Models/CurrencyTransaction.cs +++ b/NadekoBot.Core/Services/Database/Models/CurrencyTransaction.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class CurrencyTransaction : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/CustomReaction.cs b/NadekoBot.Core/Services/Database/Models/CustomReaction.cs similarity index 94% rename from src/NadekoBot/Services/Database/Models/CustomReaction.cs rename to NadekoBot.Core/Services/Database/Models/CustomReaction.cs index cd57bc35..4c1399fe 100644 --- a/src/NadekoBot/Services/Database/Models/CustomReaction.cs +++ b/NadekoBot.Core/Services/Database/Models/CustomReaction.cs @@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Text.RegularExpressions; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class CustomReaction : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/DbEntity.cs b/NadekoBot.Core/Services/Database/Models/DbEntity.cs similarity index 81% rename from src/NadekoBot/Services/Database/Models/DbEntity.cs rename to NadekoBot.Core/Services/Database/Models/DbEntity.cs index e727851c..47f68831 100644 --- a/src/NadekoBot/Services/Database/Models/DbEntity.cs +++ b/NadekoBot.Core/Services/Database/Models/DbEntity.cs @@ -1,7 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/DiscordUser.cs b/NadekoBot.Core/Services/Database/Models/DiscordUser.cs similarity index 95% rename from src/NadekoBot/Services/Database/Models/DiscordUser.cs rename to NadekoBot.Core/Services/Database/Models/DiscordUser.cs index 654408e2..48d2ef40 100644 --- a/src/NadekoBot/Services/Database/Models/DiscordUser.cs +++ b/NadekoBot.Core/Services/Database/Models/DiscordUser.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class DiscordUser : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/Donator.cs b/NadekoBot.Core/Services/Database/Models/Donator.cs similarity index 77% rename from src/NadekoBot/Services/Database/Models/Donator.cs rename to NadekoBot.Core/Services/Database/Models/Donator.cs index da5cd390..16a100d3 100644 --- a/src/NadekoBot/Services/Database/Models/Donator.cs +++ b/NadekoBot.Core/Services/Database/Models/Donator.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class Donator : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/FeedSub.cs b/NadekoBot.Core/Services/Database/Models/FeedSub.cs similarity index 91% rename from src/NadekoBot/Services/Database/Models/FeedSub.cs rename to NadekoBot.Core/Services/Database/Models/FeedSub.cs index aabf455e..a20d4918 100644 --- a/src/NadekoBot/Services/Database/Models/FeedSub.cs +++ b/NadekoBot.Core/Services/Database/Models/FeedSub.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class FeedSub : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/FollowedStream.cs b/NadekoBot.Core/Services/Database/Models/FollowedStream.cs similarity index 88% rename from src/NadekoBot/Services/Database/Models/FollowedStream.cs rename to NadekoBot.Core/Services/Database/Models/FollowedStream.cs index b49bc430..46e064db 100644 --- a/src/NadekoBot/Services/Database/Models/FollowedStream.cs +++ b/NadekoBot.Core/Services/Database/Models/FollowedStream.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class FollowedStream : DbEntity { @@ -9,7 +9,8 @@ public enum FollowedStreamType { - Twitch, Smashcast, Mixer + Twitch, Smashcast, Mixer, + Picarto } public override int GetHashCode() => diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/NadekoBot.Core/Services/Database/Models/GuildConfig.cs similarity index 92% rename from src/NadekoBot/Services/Database/Models/GuildConfig.cs rename to NadekoBot.Core/Services/Database/Models/GuildConfig.cs index 501b9a64..203e07c1 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/NadekoBot.Core/Services/Database/Models/GuildConfig.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class GuildConfig : DbEntity { @@ -55,6 +55,9 @@ namespace NadekoBot.Services.Database.Models public bool FilterInvites { get; set; } public HashSet FilterInvitesChannelIds { get; set; } = new HashSet(); + //public bool FilterLinks { get; set; } + //public HashSet FilterLinksChannels { get; set; } = new HashSet(); + public bool FilterWords { get; set; } public HashSet FilteredWords { get; set; } = new HashSet(); public HashSet FilterWordsChannelIds { get; set; } = new HashSet(); @@ -88,6 +91,7 @@ namespace NadekoBot.Services.Database.Models public XpSettings XpSettings { get; set; } public List FeedSubs { get; set; } = new List(); + public bool AutoDcFromVc { get; set; } //public List ProtectionIgnoredChannels { get; set; } = new List(); } @@ -211,6 +215,23 @@ namespace NadekoBot.Services.Database.Models public ulong ChannelId { get; set; } } + public class FilterLinksChannelId : DbEntity + { + public ulong ChannelId { get; set; } + + public override bool Equals(object obj) + { + return obj is FilterLinksChannelId f + ? f.ChannelId == ChannelId + : false; + } + + public override int GetHashCode() + { + return ChannelId.GetHashCode(); + } + } + public class FilteredWord : DbEntity { public string Word { get; set; } diff --git a/src/NadekoBot/Services/Database/Models/IgnoredLogChannel.cs b/NadekoBot.Core/Services/Database/Models/IgnoredLogChannel.cs similarity index 74% rename from src/NadekoBot/Services/Database/Models/IgnoredLogChannel.cs rename to NadekoBot.Core/Services/Database/Models/IgnoredLogChannel.cs index 40198c7f..753b8969 100644 --- a/src/NadekoBot/Services/Database/Models/IgnoredLogChannel.cs +++ b/NadekoBot.Core/Services/Database/Models/IgnoredLogChannel.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class IgnoredLogChannel : DbEntity { diff --git a/NadekoBot.Core/Services/Database/Models/LoadedPackage.cs b/NadekoBot.Core/Services/Database/Models/LoadedPackage.cs new file mode 100644 index 00000000..4de54ebe --- /dev/null +++ b/NadekoBot.Core/Services/Database/Models/LoadedPackage.cs @@ -0,0 +1,19 @@ +namespace NadekoBot.Core.Services.Database.Models +{ + public class LoadedPackage : DbEntity + { + public string Name { get; set; } + + public override bool Equals(object obj) + { + return obj is LoadedPackage p + ? p.Name == Name + : false; + } + + public override int GetHashCode() + { + return Name.GetHashCode(); + } + } +} diff --git a/src/NadekoBot/Services/Database/Models/LogSetting.cs b/NadekoBot.Core/Services/Database/Models/LogSetting.cs similarity index 98% rename from src/NadekoBot/Services/Database/Models/LogSetting.cs rename to NadekoBot.Core/Services/Database/Models/LogSetting.cs index 659df55c..16255964 100644 --- a/src/NadekoBot/Services/Database/Models/LogSetting.cs +++ b/NadekoBot.Core/Services/Database/Models/LogSetting.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class LogSetting : DbEntity diff --git a/src/NadekoBot/Services/Database/Models/MusicPlaylist.cs b/NadekoBot.Core/Services/Database/Models/MusicPlaylist.cs similarity index 85% rename from src/NadekoBot/Services/Database/Models/MusicPlaylist.cs rename to NadekoBot.Core/Services/Database/Models/MusicPlaylist.cs index 9788f033..b514d1f0 100644 --- a/src/NadekoBot/Services/Database/Models/MusicPlaylist.cs +++ b/NadekoBot.Core/Services/Database/Models/MusicPlaylist.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class MusicPlaylist : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/NadekoBot.Core/Services/Database/Models/Permission.cs similarity index 98% rename from src/NadekoBot/Services/Database/Models/Permission.cs rename to NadekoBot.Core/Services/Database/Models/Permission.cs index fe692221..ddbd0cc8 100644 --- a/src/NadekoBot/Services/Database/Models/Permission.cs +++ b/NadekoBot.Core/Services/Database/Models/Permission.cs @@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { [DebuggerDisplay("{global::NadekoBot.Modules.Permissions.PermissionExtensions.GetCommand(this)}", Target = typeof(Permission))] public class Permission : DbEntity diff --git a/src/NadekoBot/Services/Database/Models/PlaylistSong.cs b/NadekoBot.Core/Services/Database/Models/PlaylistSong.cs similarity index 87% rename from src/NadekoBot/Services/Database/Models/PlaylistSong.cs rename to NadekoBot.Core/Services/Database/Models/PlaylistSong.cs index f938d242..eadc3dca 100644 --- a/src/NadekoBot/Services/Database/Models/PlaylistSong.cs +++ b/NadekoBot.Core/Services/Database/Models/PlaylistSong.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class PlaylistSong : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/PokeType.cs b/NadekoBot.Core/Services/Database/Models/PokeType.cs similarity index 72% rename from src/NadekoBot/Services/Database/Models/PokeType.cs rename to NadekoBot.Core/Services/Database/Models/PokeType.cs index d4956c96..c0487406 100644 --- a/src/NadekoBot/Services/Database/Models/PokeType.cs +++ b/NadekoBot.Core/Services/Database/Models/PokeType.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class UserPokeTypes : DbEntity { diff --git a/NadekoBot.Core/Services/Database/Models/Poll.cs b/NadekoBot.Core/Services/Database/Models/Poll.cs new file mode 100644 index 00000000..16aba816 --- /dev/null +++ b/NadekoBot.Core/Services/Database/Models/Poll.cs @@ -0,0 +1,20 @@ +using NadekoBot.Common.Collections; +using System.Collections.Generic; + +namespace NadekoBot.Core.Services.Database.Models +{ + public class Poll : DbEntity + { + public ulong GuildId { get; set; } + public ulong ChannelId { get; set; } + public string Question { get; set; } + public IndexedCollection Answers { get; set; } + public HashSet Votes { get; set; } = new HashSet(); + } + + public class PollAnswer : DbEntity, IIndexed + { + public int Index { get; set; } + public string Text { get; set; } + } +} diff --git a/NadekoBot.Core/Services/Database/Models/PollVote.cs b/NadekoBot.Core/Services/Database/Models/PollVote.cs new file mode 100644 index 00000000..16f84e8e --- /dev/null +++ b/NadekoBot.Core/Services/Database/Models/PollVote.cs @@ -0,0 +1,20 @@ +namespace NadekoBot.Core.Services.Database.Models +{ + public class PollVote : DbEntity + { + public ulong UserId { get; set; } + public int VoteIndex { get; set; } + + public override int GetHashCode() + { + return UserId.GetHashCode(); + } + + public override bool Equals(object obj) + { + return obj is PollVote p + ? p.UserId == UserId + : false; + } + } +} diff --git a/src/NadekoBot/Services/Database/Models/Quote.cs b/NadekoBot.Core/Services/Database/Models/Quote.cs similarity index 76% rename from src/NadekoBot/Services/Database/Models/Quote.cs rename to NadekoBot.Core/Services/Database/Models/Quote.cs index f8a3e308..4240e5f7 100644 --- a/src/NadekoBot/Services/Database/Models/Quote.cs +++ b/NadekoBot.Core/Services/Database/Models/Quote.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class Quote : DbEntity { @@ -13,4 +13,11 @@ namespace NadekoBot.Services.Database.Models [Required] public string Text { get; set; } } + + + public enum OrderType + { + Id, + Keyword + } } diff --git a/src/NadekoBot/Services/Database/Models/Reminder.cs b/NadekoBot.Core/Services/Database/Models/Reminder.cs similarity index 86% rename from src/NadekoBot/Services/Database/Models/Reminder.cs rename to NadekoBot.Core/Services/Database/Models/Reminder.cs index 63600de9..013fdd24 100644 --- a/src/NadekoBot/Services/Database/Models/Reminder.cs +++ b/NadekoBot.Core/Services/Database/Models/Reminder.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class Reminder : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/Repeater.cs b/NadekoBot.Core/Services/Database/Models/Repeater.cs similarity index 87% rename from src/NadekoBot/Services/Database/Models/Repeater.cs rename to NadekoBot.Core/Services/Database/Models/Repeater.cs index c30c1b87..4bea35d4 100644 --- a/src/NadekoBot/Services/Database/Models/Repeater.cs +++ b/NadekoBot.Core/Services/Database/Models/Repeater.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class Repeater : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/RewardedUser.cs b/NadekoBot.Core/Services/Database/Models/RewardedUser.cs similarity index 84% rename from src/NadekoBot/Services/Database/Models/RewardedUser.cs rename to NadekoBot.Core/Services/Database/Models/RewardedUser.cs index f40e083f..f2751b4b 100644 --- a/src/NadekoBot/Services/Database/Models/RewardedUser.cs +++ b/NadekoBot.Core/Services/Database/Models/RewardedUser.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class RewardedUser : DbEntity { diff --git a/NadekoBot.Core/Services/Database/Models/SelfAssignableRole.cs b/NadekoBot.Core/Services/Database/Models/SelfAssignableRole.cs new file mode 100644 index 00000000..a7a08053 --- /dev/null +++ b/NadekoBot.Core/Services/Database/Models/SelfAssignableRole.cs @@ -0,0 +1,11 @@ +namespace NadekoBot.Core.Services.Database.Models +{ + public class SelfAssignedRole : DbEntity + { + public ulong GuildId { get; set; } + public ulong RoleId { get; set; } + + public int Group { get; set; } + public int LevelRequirement { get; set; } + } +} diff --git a/src/NadekoBot/Services/Database/Models/ShopEntry.cs b/NadekoBot.Core/Services/Database/Models/ShopEntry.cs similarity index 95% rename from src/NadekoBot/Services/Database/Models/ShopEntry.cs rename to NadekoBot.Core/Services/Database/Models/ShopEntry.cs index aaedbe00..d00dcaa9 100644 --- a/src/NadekoBot/Services/Database/Models/ShopEntry.cs +++ b/NadekoBot.Core/Services/Database/Models/ShopEntry.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public enum ShopEntryType { diff --git a/src/NadekoBot/Services/Database/Models/StreamRoleSettings.cs b/NadekoBot.Core/Services/Database/Models/StreamRoleSettings.cs similarity index 97% rename from src/NadekoBot/Services/Database/Models/StreamRoleSettings.cs rename to NadekoBot.Core/Services/Database/Models/StreamRoleSettings.cs index 8ef5b690..51dd051d 100644 --- a/src/NadekoBot/Services/Database/Models/StreamRoleSettings.cs +++ b/NadekoBot.Core/Services/Database/Models/StreamRoleSettings.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class StreamRoleSettings : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/UserXpStats.cs b/NadekoBot.Core/Services/Database/Models/UserXpStats.cs similarity index 89% rename from src/NadekoBot/Services/Database/Models/UserXpStats.cs rename to NadekoBot.Core/Services/Database/Models/UserXpStats.cs index 8695298e..ea2e78fd 100644 --- a/src/NadekoBot/Services/Database/Models/UserXpStats.cs +++ b/NadekoBot.Core/Services/Database/Models/UserXpStats.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class UserXpStats : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/VoicePresenceChannel.cs b/NadekoBot.Core/Services/Database/Models/VoicePresenceChannel.cs similarity index 76% rename from src/NadekoBot/Services/Database/Models/VoicePresenceChannel.cs rename to NadekoBot.Core/Services/Database/Models/VoicePresenceChannel.cs index 75bced37..23b347d1 100644 --- a/src/NadekoBot/Services/Database/Models/VoicePresenceChannel.cs +++ b/NadekoBot.Core/Services/Database/Models/VoicePresenceChannel.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class IgnoredVoicePresenceChannel : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/Waifu.cs b/NadekoBot.Core/Services/Database/Models/Waifu.cs similarity index 96% rename from src/NadekoBot/Services/Database/Models/Waifu.cs rename to NadekoBot.Core/Services/Database/Models/Waifu.cs index 5be73b46..5f90c12c 100644 --- a/src/NadekoBot/Services/Database/Models/Waifu.cs +++ b/NadekoBot.Core/Services/Database/Models/Waifu.cs @@ -1,7 +1,7 @@ using NadekoBot.Extensions; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class WaifuInfo : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/WaifuItem.cs b/NadekoBot.Core/Services/Database/Models/WaifuItem.cs similarity index 54% rename from src/NadekoBot/Services/Database/Models/WaifuItem.cs rename to NadekoBot.Core/Services/Database/Models/WaifuItem.cs index 2184391f..6a9a0832 100644 --- a/src/NadekoBot/Services/Database/Models/WaifuItem.cs +++ b/NadekoBot.Core/Services/Database/Models/WaifuItem.cs @@ -1,6 +1,6 @@ using System; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class WaifuItem : DbEntity { @@ -22,6 +22,21 @@ namespace NadekoBot.Services.Database.Models Violin, Ring, Helicopter, + Iphone, //4000 + Cat, //2000 + Dog, //2001 + Lollipop, //30 + Purse, //3500 + Sushi, //300 + Icecream, //200 + Piano, //8000 + Yacht, //12000 + Car, //9000 + House, //15000 + Spaceship, //30000 + Beer, //75 + Pizza, //150 + Milk, //125 } public WaifuItem() @@ -64,6 +79,36 @@ namespace NadekoBot.Services.Database.Models return new WaifuItem("💍", 10000, itemName); case ItemName.Helicopter: return new WaifuItem("🚁", 20000, itemName); + case ItemName.Iphone: + return new WaifuItem("📱", 4000, itemName); + case ItemName.Cat: + return new WaifuItem("🐱", 2000, itemName); + case ItemName.Dog: + return new WaifuItem("🐶", 2001, itemName); + case ItemName.Lollipop: + return new WaifuItem("🍭", 30, itemName); + case ItemName.Purse: + return new WaifuItem("👛", 3500, itemName); + case ItemName.Sushi: + return new WaifuItem("🍣", 300, itemName); + case ItemName.Icecream: + return new WaifuItem("🍦", 200, itemName); + case ItemName.Piano: + return new WaifuItem("🎹", 8000, itemName); + case ItemName.Yacht: + return new WaifuItem("🛳", 12000, itemName); + case ItemName.Car: + return new WaifuItem("🚗", 9000, itemName); + case ItemName.House: + return new WaifuItem("🏠", 15000, itemName); + case ItemName.Spaceship: + return new WaifuItem("🚀", 30000, itemName); + case ItemName.Beer: + return new WaifuItem("🍺", 75, itemName); + case ItemName.Pizza: + return new WaifuItem("🍕", 150, itemName); + case ItemName.Milk: + return new WaifuItem("🥛", 125, itemName); default: throw new ArgumentException(nameof(itemName)); } diff --git a/src/NadekoBot/Services/Database/Models/WaifuUpdate.cs b/NadekoBot.Core/Services/Database/Models/WaifuUpdate.cs similarity index 89% rename from src/NadekoBot/Services/Database/Models/WaifuUpdate.cs rename to NadekoBot.Core/Services/Database/Models/WaifuUpdate.cs index 2722900a..bfb23515 100644 --- a/src/NadekoBot/Services/Database/Models/WaifuUpdate.cs +++ b/NadekoBot.Core/Services/Database/Models/WaifuUpdate.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class WaifuUpdate : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/Warning.cs b/NadekoBot.Core/Services/Database/Models/Warning.cs similarity index 85% rename from src/NadekoBot/Services/Database/Models/Warning.cs rename to NadekoBot.Core/Services/Database/Models/Warning.cs index e5c8f4ff..94ab616a 100644 --- a/src/NadekoBot/Services/Database/Models/Warning.cs +++ b/NadekoBot.Core/Services/Database/Models/Warning.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class Warning : DbEntity { diff --git a/src/NadekoBot/Services/Database/Models/XpSettings.cs b/NadekoBot.Core/Services/Database/Models/XpSettings.cs similarity index 69% rename from src/NadekoBot/Services/Database/Models/XpSettings.cs rename to NadekoBot.Core/Services/Database/Models/XpSettings.cs index fcc67fff..6e5acd42 100644 --- a/src/NadekoBot/Services/Database/Models/XpSettings.cs +++ b/NadekoBot.Core/Services/Database/Models/XpSettings.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NadekoBot.Services.Database.Models +namespace NadekoBot.Core.Services.Database.Models { public class XpSettings : DbEntity { @@ -8,6 +8,7 @@ namespace NadekoBot.Services.Database.Models public GuildConfig GuildConfig { get; set; } public HashSet RoleRewards { get; set; } = new HashSet(); + public HashSet CurrencyRewards { get; set; } = new HashSet(); public bool XpRoleRewardExclusive { get; set; } public string NotifyMessage { get; set; } = "Congratulations {0}! You have reached level {1}!"; public HashSet ExclusionList { get; set; } = new HashSet(); @@ -35,6 +36,25 @@ namespace NadekoBot.Services.Database.Models } } + public class XpCurrencyReward : DbEntity + { + public int XpSettingsId { get; set; } + public XpSettings XpSettings { get; set; } + + public int Level { get; set; } + public int Amount { get; set; } + + public override int GetHashCode() + { + return Level.GetHashCode() ^ XpSettingsId.GetHashCode(); + } + + public override bool Equals(object obj) + { + return obj is XpCurrencyReward xrr && xrr.Level == Level && xrr.XpSettingsId == XpSettingsId; + } + } + public class ExcludedItem : DbEntity { public ulong ItemId { get; set; } diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/NadekoBot.Core/Services/Database/NadekoContext.cs similarity index 95% rename from src/NadekoBot/Services/Database/NadekoContext.cs rename to NadekoBot.Core/Services/Database/NadekoContext.cs index 9b4c1e46..edae0dfb 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/NadekoBot.Core/Services/Database/NadekoContext.cs @@ -1,14 +1,14 @@ using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NadekoBot.Extensions; using System; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Data.Sqlite; using System.IO; -namespace NadekoBot.Services.Database +namespace NadekoBot.Core.Services.Database { public class NadekoContextFactory : IDesignTimeDbContextFactory { @@ -29,13 +29,10 @@ namespace NadekoBot.Services.Database public DbSet Quotes { get; set; } public DbSet Donators { get; set; } public DbSet GuildConfigs { get; set; } - public DbSet ClashOfClans { get; set; } - public DbSet ClashCallers { get; set; } public DbSet Reminders { get; set; } public DbSet SelfAssignableRoles { get; set; } public DbSet BotConfig { get; set; } public DbSet Currency { get; set; } - public DbSet ConversionUnits { get; set; } public DbSet MusicPlaylists { get; set; } public DbSet CustomReactions { get; set; } public DbSet CurrencyTransactions { get; set; } @@ -44,6 +41,7 @@ namespace NadekoBot.Services.Database public DbSet Warnings { get; set; } public DbSet UserXpStats { get; set; } public DbSet Clubs { get; set; } + public DbSet LoadedPackages { get; set; } //logging public DbSet LogSettings { get; set; } @@ -53,7 +51,6 @@ namespace NadekoBot.Services.Database //orphans xD public DbSet EightBallResponses { get; set; } public DbSet RaceAnimals { get; set; } - public DbSet ModulePrefixes { get; set; } public DbSet RewardedUsers { get; set; } public NadekoContext(DbContextOptions options) : base(options) @@ -171,16 +168,7 @@ namespace NadekoBot.Services.Database // .HasForeignKey(mp => mp.BotConfigId); #endregion - - #region ClashOfClans - - var callersEntity = modelBuilder.Entity(); - callersEntity - .HasOne(c => c.ClashWar) - .WithMany(c => c.Bases); - - #endregion - + #region Self Assignable Roles var selfassignableRolesEntity = modelBuilder.Entity(); @@ -189,6 +177,10 @@ namespace NadekoBot.Services.Database .HasIndex(s => new { s.GuildId, s.RoleId }) .IsUnique(); + selfassignableRolesEntity + .Property(x => x.Group) + .HasDefaultValue(0); + #endregion #region Currency @@ -307,8 +299,7 @@ namespace NadekoBot.Services.Database .HasOne(x => x.GuildConfig) .WithOne(x => x.XpSettings); #endregion - - //todo major bug + #region XpRoleReward modelBuilder.Entity() .HasIndex(x => new { x.XpSettingsId, x.Level }) @@ -350,6 +341,12 @@ namespace NadekoBot.Services.Database .WithMany(x => x.Bans); #endregion + + #region Polls + modelBuilder.Entity() + .HasIndex(x => x.GuildId) + .IsUnique(); + #endregion } } } diff --git a/src/NadekoBot/Services/Database/Repositories/IBotConfigRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IBotConfigRepository.cs similarity index 70% rename from src/NadekoBot/Services/Database/Repositories/IBotConfigRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IBotConfigRepository.cs index 7a2adf63..507f041f 100644 --- a/src/NadekoBot/Services/Database/Repositories/IBotConfigRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IBotConfigRepository.cs @@ -1,9 +1,9 @@ using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Linq; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IBotConfigRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IClubRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IClubRepository.cs similarity index 85% rename from src/NadekoBot/Services/Database/Repositories/IClubRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IClubRepository.cs index 66ad3d92..5b00dcef 100644 --- a/src/NadekoBot/Services/Database/Repositories/IClubRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IClubRepository.cs @@ -1,9 +1,9 @@ using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Linq; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IClubRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/ICurrencyRepository.cs b/NadekoBot.Core/Services/Database/Repositories/ICurrencyRepository.cs similarity index 68% rename from src/NadekoBot/Services/Database/Repositories/ICurrencyRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/ICurrencyRepository.cs index a59d8233..0a1f484b 100644 --- a/src/NadekoBot/Services/Database/Repositories/ICurrencyRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/ICurrencyRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface ICurrencyRepository : IRepository { @@ -9,5 +9,6 @@ namespace NadekoBot.Services.Database.Repositories long GetUserCurrency(ulong userId); bool TryUpdateState(ulong userId, long change); IEnumerable GetTopRichest(int count, int skip); + void RemoveFromMany(List ids); } } diff --git a/NadekoBot.Core/Services/Database/Repositories/ICurrencyTransactionsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/ICurrencyTransactionsRepository.cs new file mode 100644 index 00000000..4efa1ba3 --- /dev/null +++ b/NadekoBot.Core/Services/Database/Repositories/ICurrencyTransactionsRepository.cs @@ -0,0 +1,8 @@ +using NadekoBot.Core.Services.Database.Models; + +namespace NadekoBot.Core.Services.Database.Repositories +{ + public interface ICurrencyTransactionsRepository : IRepository + { + } +} diff --git a/NadekoBot.Core/Services/Database/Repositories/ICustomReactionRepository.cs b/NadekoBot.Core/Services/Database/Repositories/ICustomReactionRepository.cs new file mode 100644 index 00000000..034a93eb --- /dev/null +++ b/NadekoBot.Core/Services/Database/Repositories/ICustomReactionRepository.cs @@ -0,0 +1,9 @@ +using NadekoBot.Core.Services.Database.Models; + +namespace NadekoBot.Core.Services.Database.Repositories +{ + public interface ICustomReactionRepository : IRepository + { + + } +} diff --git a/src/NadekoBot/Services/Database/Repositories/IDiscordUserRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IDiscordUserRepository.cs similarity index 71% rename from src/NadekoBot/Services/Database/Repositories/IDiscordUserRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IDiscordUserRepository.cs index fb9360b7..78dce1ec 100644 --- a/src/NadekoBot/Services/Database/Repositories/IDiscordUserRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IDiscordUserRepository.cs @@ -1,7 +1,7 @@ using Discord; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IDiscordUserRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IDonatorsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IDonatorsRepository.cs similarity index 69% rename from src/NadekoBot/Services/Database/Repositories/IDonatorsRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IDonatorsRepository.cs index d0cfd699..4a7731cf 100644 --- a/src/NadekoBot/Services/Database/Repositories/IDonatorsRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IDonatorsRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IDonatorsRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IGuildConfigRepository.cs similarity index 88% rename from src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IGuildConfigRepository.cs index 498b72ed..0444a252 100644 --- a/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IGuildConfigRepository.cs @@ -1,10 +1,10 @@ using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IGuildConfigRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IMusicPlaylistRepository.cs similarity index 68% rename from src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IMusicPlaylistRepository.cs index d14b27c2..bcb15f26 100644 --- a/src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IMusicPlaylistRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IMusicPlaylistRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IPokeGameRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IPokeGameRepository.cs similarity index 56% rename from src/NadekoBot/Services/Database/Repositories/IPokeGameRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IPokeGameRepository.cs index af9b003b..7af017c6 100644 --- a/src/NadekoBot/Services/Database/Repositories/IPokeGameRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IPokeGameRepository.cs @@ -1,6 +1,6 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IPokeGameRepository : IRepository { diff --git a/NadekoBot.Core/Services/Database/Repositories/IPollsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IPollsRepository.cs new file mode 100644 index 00000000..70af3a4b --- /dev/null +++ b/NadekoBot.Core/Services/Database/Repositories/IPollsRepository.cs @@ -0,0 +1,15 @@ +using NadekoBot.Core.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Core.Services.Database.Repositories +{ + public interface IPollsRepository : IRepository + { + IEnumerable GetAllPolls(); + void RemovePoll(int id); + } +} diff --git a/src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IQuoteRepository.cs similarity index 71% rename from src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IQuoteRepository.cs index 2cd1cdbe..f80a3d42 100644 --- a/src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IQuoteRepository.cs @@ -1,15 +1,15 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Threading.Tasks; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IQuoteRepository : IRepository { IEnumerable GetAllQuotesByKeyword(ulong guildId, string keyword); Task GetRandomQuoteByKeywordAsync(ulong guildId, string keyword); Task SearchQuoteKeywordTextAsync(ulong guildId, string keyword, string text); - IEnumerable GetGroup(ulong guildId, int skip, int take); + IEnumerable GetGroup(ulong guildId, int page, OrderType order); void RemoveAllByKeyword(ulong guildId, string keyword); } } diff --git a/src/NadekoBot/Services/Database/Repositories/IReminderRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IReminderRepository.cs similarity index 64% rename from src/NadekoBot/Services/Database/Repositories/IReminderRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IReminderRepository.cs index dc757dbc..f5823aac 100644 --- a/src/NadekoBot/Services/Database/Repositories/IReminderRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IReminderRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IReminderRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IRepository.cs similarity index 79% rename from src/NadekoBot/Services/Database/Repositories/IRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IRepository.cs index d66aae87..30ec2a05 100644 --- a/src/NadekoBot/Services/Database/Repositories/IRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IRepository.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IRepository where T : DbEntity { diff --git a/src/NadekoBot/Services/Database/Repositories/ISelfAssignedRolesRepository.cs b/NadekoBot.Core/Services/Database/Repositories/ISelfAssignedRolesRepository.cs similarity index 50% rename from src/NadekoBot/Services/Database/Repositories/ISelfAssignedRolesRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/ISelfAssignedRolesRepository.cs index 249ece0a..063f6f26 100644 --- a/src/NadekoBot/Services/Database/Repositories/ISelfAssignedRolesRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/ISelfAssignedRolesRepository.cs @@ -1,11 +1,12 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; +using System.Linq; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface ISelfAssignedRolesRepository : IRepository { bool DeleteByGuildAndRoleId(ulong guildId, ulong roleId); - IEnumerable GetFromGuild(ulong guildId); + IGrouping[] GetFromGuild(ulong guildId); } } diff --git a/src/NadekoBot/Services/Database/Repositories/IWaifuRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IWaifuRepository.cs similarity index 72% rename from src/NadekoBot/Services/Database/Repositories/IWaifuRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IWaifuRepository.cs index 50295897..0c90612e 100644 --- a/src/NadekoBot/Services/Database/Repositories/IWaifuRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IWaifuRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IWaifuRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IWarningsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IWarningsRepository.cs similarity index 71% rename from src/NadekoBot/Services/Database/Repositories/IWarningsRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IWarningsRepository.cs index f8c8296e..63320b1a 100644 --- a/src/NadekoBot/Services/Database/Repositories/IWarningsRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IWarningsRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Threading.Tasks; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IWarningsRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/IXpRepository.cs b/NadekoBot.Core/Services/Database/Repositories/IXpRepository.cs similarity index 71% rename from src/NadekoBot/Services/Database/Repositories/IXpRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/IXpRepository.cs index f62394d7..f19ba8be 100644 --- a/src/NadekoBot/Services/Database/Repositories/IXpRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/IXpRepository.cs @@ -1,6 +1,6 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services.Database.Repositories +namespace NadekoBot.Core.Services.Database.Repositories { public interface IXpRepository : IRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/BotConfigRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/BotConfigRepository.cs similarity index 92% rename from src/NadekoBot/Services/Database/Repositories/Impl/BotConfigRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/BotConfigRepository.cs index c21b1ff2..7d2f6e92 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/BotConfigRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/BotConfigRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using System; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class BotConfigRepository : Repository, IBotConfigRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/ClubRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/ClubRepository.cs similarity index 96% rename from src/NadekoBot/Services/Database/Repositories/Impl/ClubRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/ClubRepository.cs index 8caa1838..9da05925 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/ClubRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/ClubRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using System; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class ClubRepository : Repository, IClubRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/CurrencyRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/CurrencyRepository.cs similarity index 78% rename from src/NadekoBot/Services/Database/Repositories/Impl/CurrencyRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/CurrencyRepository.cs index 6f397789..16aaa62d 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/CurrencyRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/CurrencyRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class CurrencyRepository : Repository, ICurrencyRepository { @@ -28,11 +28,16 @@ namespace NadekoBot.Services.Database.Repositories.Impl } public IEnumerable GetTopRichest(int count, int skip = 0) => - _set.OrderByDescending(c => c.Amount).Skip(skip).Take(count).ToList(); + _set.Where(c => c.Amount > 0).OrderByDescending(c => c.Amount).Skip(skip).Take(count).ToList(); public long GetUserCurrency(ulong userId) => GetOrCreate(userId).Amount; + public void RemoveFromMany(List ids) + { + _set.RemoveRange(_set.Where(x => ids.Contains((long)x.UserId))); + } + public bool TryUpdateState(ulong userId, long change) { var cur = GetOrCreate(userId); diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/CurrencyTransactionsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/CurrencyTransactionsRepository.cs similarity index 70% rename from src/NadekoBot/Services/Database/Repositories/Impl/CurrencyTransactionsRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/CurrencyTransactionsRepository.cs index 85a23a47..cb49e10c 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/CurrencyTransactionsRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/CurrencyTransactionsRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class CurrencyTransactionsRepository : Repository, ICurrencyTransactionsRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/CustomReactionRepository.cs similarity index 69% rename from src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/CustomReactionRepository.cs index f9b7c819..51b304f3 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/CustomReactionRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class CustomReactionsRepository : Repository, ICustomReactionRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/DiscordUserRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/DiscordUserRepository.cs similarity index 94% rename from src/NadekoBot/Services/Database/Repositories/Impl/DiscordUserRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/DiscordUserRepository.cs index 933d583b..9aab7144 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/DiscordUserRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/DiscordUserRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using Discord; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class DiscordUserRepository : Repository, IDiscordUserRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/DonatorsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/DonatorsRepository.cs similarity index 90% rename from src/NadekoBot/Services/Database/Repositories/Impl/DonatorsRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/DonatorsRepository.cs index b5c8c269..03e322bc 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/DonatorsRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/DonatorsRepository.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class DonatorsRepository : Repository, IDonatorsRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/GuildConfigRepository.cs similarity index 97% rename from src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/GuildConfigRepository.cs index eac42399..59ee27b7 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -1,10 +1,10 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; using System; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class GuildConfigRepository : Repository, IGuildConfigRepository { @@ -200,6 +200,8 @@ namespace NadekoBot.Services.Database.Repositories.Impl set => set.Include(x => x.XpSettings) .ThenInclude(x => x.RoleRewards) .Include(x => x.XpSettings) + .ThenInclude(x => x.CurrencyRewards) + .Include(x => x.XpSettings) .ThenInclude(x => x.ExclusionList)); if (gc.XpSettings == null) diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs similarity index 87% rename from src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs index 50347593..3f11b2d5 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs @@ -1,10 +1,10 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class MusicPlaylistRepository : Repository, IMusicPlaylistRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/PokeGameRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/PokeGameRepository.cs similarity index 80% rename from src/NadekoBot/Services/Database/Repositories/Impl/PokeGameRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/PokeGameRepository.cs index 06662b06..ab5130ef 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/PokeGameRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/PokeGameRepository.cs @@ -1,7 +1,7 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class PokeGameRepository : Repository, IPokeGameRepository { diff --git a/NadekoBot.Core/Services/Database/Repositories/Impl/PollsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/PollsRepository.cs new file mode 100644 index 00000000..c62dfb39 --- /dev/null +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/PollsRepository.cs @@ -0,0 +1,35 @@ +using NadekoBot.Core.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; + +namespace NadekoBot.Core.Services.Database.Repositories.Impl +{ + public class PollsRepository : Repository, IPollsRepository + { + public PollsRepository(DbContext context) : base(context) + { + } + + public IEnumerable GetAllPolls() + { + return _set.Include(x => x.Answers) + .Include(x => x.Votes) + .ToArray(); + } + + public void RemovePoll(int id) + { + var p = _set + .Include(x => x.Answers) + .Include(x => x.Votes) + .FirstOrDefault(x => x.Id == id); + p.Votes.Clear(); + p.Answers.Clear(); + _set.Remove(p); + } + } +} diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/QuoteRepository.cs similarity index 74% rename from src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/QuoteRepository.cs index 00db27b0..72630a5e 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/QuoteRepository.cs @@ -1,4 +1,4 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NadekoBot.Extensions; using System; using System.Collections.Generic; @@ -7,7 +7,7 @@ using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using NadekoBot.Common; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class QuoteRepository : Repository, IQuoteRepository { @@ -18,8 +18,16 @@ namespace NadekoBot.Services.Database.Repositories.Impl public IEnumerable GetAllQuotesByKeyword(ulong guildId, string keyword) => _set.Where(q => q.GuildId == guildId && q.Keyword == keyword); - public IEnumerable GetGroup(ulong guildId, int skip, int take) => - _set.Where(q=>q.GuildId == guildId).OrderBy(q => q.Keyword).Skip(skip).Take(take).ToList(); + public IEnumerable GetGroup(ulong guildId, int page, OrderType order) + { + var q = _set.Where(x => x.GuildId == guildId); + if (order == OrderType.Keyword) + q.OrderBy(x => x.Keyword); + else + q.OrderBy(x => x.Id); + + return q.Skip(15 * page).Take(15).ToArray(); + } public Task GetRandomQuoteByKeywordAsync(ulong guildId, string keyword) { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/ReminderRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/ReminderRepository.cs similarity index 80% rename from src/NadekoBot/Services/Database/Repositories/Impl/ReminderRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/ReminderRepository.cs index e29cc3f2..39b13363 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/ReminderRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/ReminderRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class ReminderRepository : Repository, IReminderRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/Repository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/Repository.cs similarity index 90% rename from src/NadekoBot/Services/Database/Repositories/Impl/Repository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/Repository.cs index b90cf154..0b44801f 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/Repository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/Repository.cs @@ -1,9 +1,9 @@ using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class Repository : IRepository where T : DbEntity { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/SelfAssignedRolesRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/SelfAssignedRolesRepository.cs similarity index 63% rename from src/NadekoBot/Services/Database/Repositories/Impl/SelfAssignedRolesRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/SelfAssignedRolesRepository.cs index d17dac7d..4257f67d 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/SelfAssignedRolesRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/SelfAssignedRolesRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class SelfAssignedRolesRepository : Repository, ISelfAssignedRolesRepository { @@ -22,7 +22,10 @@ namespace NadekoBot.Services.Database.Repositories.Impl return true; } - public IEnumerable GetFromGuild(ulong guildId) => - _set.Where(s => s.GuildId == guildId).ToList(); + public IGrouping[] GetFromGuild(ulong guildId) + => _set.Where(s => s.GuildId == guildId) + .AsEnumerable() + .GroupBy(x => x.Group) + .ToArray(); } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/WaifuRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/WaifuRepository.cs similarity index 93% rename from src/NadekoBot/Services/Database/Repositories/Impl/WaifuRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/WaifuRepository.cs index f08473b6..07fa3660 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/WaifuRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/WaifuRepository.cs @@ -1,10 +1,10 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class WaifuRepository : Repository, IWaifuRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/WarningsRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/WarningsRepository.cs similarity index 90% rename from src/NadekoBot/Services/Database/Repositories/Impl/WarningsRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/WarningsRepository.cs index cb2cc089..e427627c 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/WarningsRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/WarningsRepository.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using Microsoft.EntityFrameworkCore; using System.Linq; using System.Threading.Tasks; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class WarningsRepository : Repository, IWarningsRepository { diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/XpRepository.cs b/NadekoBot.Core/Services/Database/Repositories/Impl/XpRepository.cs similarity index 93% rename from src/NadekoBot/Services/Database/Repositories/Impl/XpRepository.cs rename to NadekoBot.Core/Services/Database/Repositories/Impl/XpRepository.cs index 90160da1..96788d13 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/XpRepository.cs +++ b/NadekoBot.Core/Services/Database/Repositories/Impl/XpRepository.cs @@ -1,8 +1,8 @@ -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Linq; using Microsoft.EntityFrameworkCore; -namespace NadekoBot.Services.Database.Repositories.Impl +namespace NadekoBot.Core.Services.Database.Repositories.Impl { public class XpRepository : Repository, IXpRepository { diff --git a/src/NadekoBot/Services/Database/UnitOfWork.cs b/NadekoBot.Core/Services/Database/UnitOfWork.cs similarity index 87% rename from src/NadekoBot/Services/Database/UnitOfWork.cs rename to NadekoBot.Core/Services/Database/UnitOfWork.cs index 27a43b13..d0e14de4 100644 --- a/src/NadekoBot/Services/Database/UnitOfWork.cs +++ b/NadekoBot.Core/Services/Database/UnitOfWork.cs @@ -1,9 +1,9 @@ -using NadekoBot.Services.Database.Repositories; -using NadekoBot.Services.Database.Repositories.Impl; +using NadekoBot.Core.Services.Database.Repositories; +using NadekoBot.Core.Services.Database.Repositories.Impl; using System; using System.Threading.Tasks; -namespace NadekoBot.Services.Database +namespace NadekoBot.Core.Services.Database { public class UnitOfWork : IUnitOfWork { @@ -18,9 +18,6 @@ namespace NadekoBot.Services.Database private IDonatorsRepository _donators; public IDonatorsRepository Donators => _donators ?? (_donators = new DonatorsRepository(_context)); - private IClashOfClansRepository _clashOfClans; - public IClashOfClansRepository ClashOfClans => _clashOfClans ?? (_clashOfClans = new ClashOfClansRepository(_context)); - private IReminderRepository _reminders; public IReminderRepository Reminders => _reminders ?? (_reminders = new ReminderRepository(_context)); @@ -36,9 +33,6 @@ namespace NadekoBot.Services.Database private ICurrencyTransactionsRepository _currencyTransactions; public ICurrencyTransactionsRepository CurrencyTransactions => _currencyTransactions ?? (_currencyTransactions = new CurrencyTransactionsRepository(_context)); - private IUnitConverterRepository _conUnits; - public IUnitConverterRepository ConverterUnits => _conUnits ?? (_conUnits = new UnitConverterRepository(_context)); - private IMusicPlaylistRepository _musicPlaylists; public IMusicPlaylistRepository MusicPlaylists => _musicPlaylists ?? (_musicPlaylists = new MusicPlaylistRepository(_context)); @@ -63,6 +57,9 @@ namespace NadekoBot.Services.Database private IClubRepository _clubs; public IClubRepository Clubs => _clubs ?? (_clubs = new ClubRepository(_context)); + private IPollsRepository _polls; + public IPollsRepository Polls => _polls ?? (_polls = new PollsRepository(_context)); + public UnitOfWork(NadekoContext context) { _context = context; diff --git a/src/NadekoBot/Services/DbService.cs b/NadekoBot.Core/Services/DbService.cs similarity index 96% rename from src/NadekoBot/Services/DbService.cs rename to NadekoBot.Core/Services/DbService.cs index 56c6940a..737cdce2 100644 --- a/src/NadekoBot/Services/DbService.cs +++ b/NadekoBot.Core/Services/DbService.cs @@ -1,11 +1,11 @@ using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; using System; using System.IO; using System.Linq; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public class DbService { diff --git a/src/NadekoBot/Services/GreetSettingsService.cs b/NadekoBot.Core/Services/GreetSettingsService.cs similarity index 97% rename from src/NadekoBot/Services/GreetSettingsService.cs rename to NadekoBot.Core/Services/GreetSettingsService.cs index 2d8b5e9b..b25e8785 100644 --- a/src/NadekoBot/Services/GreetSettingsService.cs +++ b/NadekoBot.Core/Services/GreetSettingsService.cs @@ -1,7 +1,7 @@ using Discord; using Discord.WebSocket; using NadekoBot.Extensions; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NLog; using System; using System.Collections.Concurrent; @@ -11,7 +11,7 @@ using System.Threading.Tasks; using NadekoBot.Common; using NadekoBot.Common.Replacements; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public class GreetSettingsService : INService { @@ -21,13 +21,15 @@ namespace NadekoBot.Services private readonly DiscordSocketClient _client; private readonly Logger _log; - public GreetSettingsService(DiscordSocketClient client, IEnumerable guildConfigs, DbService db) + public GreetSettingsService(DiscordSocketClient client, NadekoBot bot, DbService db) { _db = db; _client = client; _log = LogManager.GetCurrentClassLogger(); - GuildConfigsCache = new ConcurrentDictionary(guildConfigs.ToDictionary(g => g.GuildId, GreetSettings.Create)); + GuildConfigsCache = new ConcurrentDictionary( + bot.AllGuildConfigs + .ToDictionary(g => g.GuildId, GreetSettings.Create)); _client.UserJoined += UserJoined; _client.UserLeft += UserLeft; @@ -180,10 +182,8 @@ namespace NadekoBot.Services public GreetSettings GetOrAddSettingsForGuild(ulong guildId) { - GreetSettings settings; - GuildConfigsCache.TryGetValue(guildId, out settings); - - if (settings != null) + if(GuildConfigsCache.TryGetValue(guildId, out var settings) && + settings != null) return settings; using (var uow = _db.UnitOfWork) diff --git a/src/NadekoBot/Services/IBotConfigProvider.cs b/NadekoBot.Core/Services/IBotConfigProvider.cs similarity index 71% rename from src/NadekoBot/Services/IBotConfigProvider.cs rename to NadekoBot.Core/Services/IBotConfigProvider.cs index 6ef54970..b93b958b 100644 --- a/src/NadekoBot/Services/IBotConfigProvider.cs +++ b/NadekoBot.Core/Services/IBotConfigProvider.cs @@ -1,7 +1,7 @@ using NadekoBot.Common; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public interface IBotConfigProvider { diff --git a/src/NadekoBot/Services/IBotCredentials.cs b/NadekoBot.Core/Services/IBotCredentials.cs similarity index 97% rename from src/NadekoBot/Services/IBotCredentials.cs rename to NadekoBot.Core/Services/IBotCredentials.cs index 3ee15942..af8cfe5e 100644 --- a/src/NadekoBot/Services/IBotCredentials.cs +++ b/NadekoBot.Core/Services/IBotCredentials.cs @@ -1,7 +1,7 @@ using Discord; using System.Collections.Immutable; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public interface IBotCredentials { diff --git a/NadekoBot.Core/Services/IDataCache.cs b/NadekoBot.Core/Services/IDataCache.cs new file mode 100644 index 00000000..f5913219 --- /dev/null +++ b/NadekoBot.Core/Services/IDataCache.cs @@ -0,0 +1,24 @@ +using StackExchange.Redis; +using System; +using System.Threading.Tasks; + +namespace NadekoBot.Core.Services +{ + public interface IDataCache + { + ConnectionMultiplexer Redis { get; } + IImageCache LocalImages { get; } + ILocalDataCache LocalData { get; } + + Task<(bool Success, byte[] Data)> TryGetImageDataAsync(string key); + Task<(bool Success, string Data)> TryGetAnimeDataAsync(string key); + Task<(bool Success, string Data)> TryGetNovelDataAsync(string key); + Task SetImageDataAsync(string key, byte[] data); + Task SetAnimeDataAsync(string link, string data); + Task SetNovelDataAsync(string link, string data); + TimeSpan? AddTimelyClaim(ulong id, int period); + void RemoveAllTimelyClaims(); + bool TryAddAffinityCooldown(ulong userId, out TimeSpan? time); + bool TryAddDivorceCooldown(ulong userId, out TimeSpan? time); + } +} diff --git a/src/NadekoBot/Services/IGoogleApiService.cs b/NadekoBot.Core/Services/IGoogleApiService.cs similarity index 97% rename from src/NadekoBot/Services/IGoogleApiService.cs rename to NadekoBot.Core/Services/IGoogleApiService.cs index 758a7d0f..90b2cc11 100644 --- a/src/NadekoBot/Services/IGoogleApiService.cs +++ b/NadekoBot.Core/Services/IGoogleApiService.cs @@ -3,7 +3,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public interface IGoogleApiService : INService { diff --git a/NadekoBot.Core/Services/IImageCache.cs b/NadekoBot.Core/Services/IImageCache.cs new file mode 100644 index 00000000..5e1e6fea --- /dev/null +++ b/NadekoBot.Core/Services/IImageCache.cs @@ -0,0 +1,27 @@ +using System.Collections.Immutable; + +namespace NadekoBot.Core.Services +{ + public interface IImageCache + { + byte[] Heads { get; } + byte[] Tails { get; } + + byte[][] Currency { get; } + byte[][] Dice { get; } + + byte[] SlotBackground { get; } + byte[][] SlotEmojis { get; } + byte[][] SlotNumbers { get; } + + byte[] WifeMatrix { get; } + byte[] RategirlDot { get; } + + byte[] XpCard { get; } + + byte[] Rip { get; } + byte[] FlowerCircle { get; } + + void Reload(); + } +} diff --git a/NadekoBot.Core/Services/ILocalDataCache.cs b/NadekoBot.Core/Services/ILocalDataCache.cs new file mode 100644 index 00000000..da5e5e93 --- /dev/null +++ b/NadekoBot.Core/Services/ILocalDataCache.cs @@ -0,0 +1,14 @@ +using NadekoBot.Core.Common.Pokemon; +using NadekoBot.Modules.Games.Common.Trivia; +using System.Collections.Generic; + +namespace NadekoBot.Core.Services +{ + public interface ILocalDataCache + { + IReadOnlyDictionary Pokemons { get; } + IReadOnlyDictionary PokemonAbilities { get; } + TriviaQuestion[] TriviaQuestions { get; } + IReadOnlyDictionary PokemonMap { get; } + } +} diff --git a/src/NadekoBot/Services/ILocalization.cs b/NadekoBot.Core/Services/ILocalization.cs similarity index 95% rename from src/NadekoBot/Services/ILocalization.cs rename to NadekoBot.Core/Services/ILocalization.cs index c3cfbe94..9e5ae3ba 100644 --- a/src/NadekoBot/Services/ILocalization.cs +++ b/NadekoBot.Core/Services/ILocalization.cs @@ -2,7 +2,7 @@ using System.Globalization; using Discord; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public interface ILocalization : INService { diff --git a/NadekoBot.Core/Services/INService.cs b/NadekoBot.Core/Services/INService.cs new file mode 100644 index 00000000..832ecba7 --- /dev/null +++ b/NadekoBot.Core/Services/INService.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; + +namespace NadekoBot.Core.Services +{ + /// + /// All services must implement this interface in order to be auto-discovered by the DI system + /// + public interface INService + { + + } + + /// + /// All services which require cleanup after they are unloaded must implement this interface + /// + public interface IUnloadableService + { + Task Unload(); + } +} diff --git a/src/NadekoBot/Services/IStatsService.cs b/NadekoBot.Core/Services/IStatsService.cs similarity index 89% rename from src/NadekoBot/Services/IStatsService.cs rename to NadekoBot.Core/Services/IStatsService.cs index 800b8fba..b591ba92 100644 --- a/src/NadekoBot/Services/IStatsService.cs +++ b/NadekoBot.Core/Services/IStatsService.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public interface IStatsService : INService { @@ -13,7 +13,6 @@ namespace NadekoBot.Services double MessagesPerSecond { get; } long TextChannels { get; } long VoiceChannels { get; } - int GuildCount { get; } TimeSpan GetUptime(); string GetUptimeString(string separator = ", "); diff --git a/src/NadekoBot/Services/Impl/BotConfigProvider.cs b/NadekoBot.Core/Services/Impl/BotConfigProvider.cs similarity index 94% rename from src/NadekoBot/Services/Impl/BotConfigProvider.cs rename to NadekoBot.Core/Services/Impl/BotConfigProvider.cs index 2d293401..cdbc4d36 100644 --- a/src/NadekoBot/Services/Impl/BotConfigProvider.cs +++ b/NadekoBot.Core/Services/Impl/BotConfigProvider.cs @@ -1,18 +1,19 @@ -using System; -using NadekoBot.Common; -using NadekoBot.Services.Database.Models; -using NadekoBot.Services; +using NadekoBot.Common; +using NadekoBot.Core.Services.Database.Models; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class BotConfigProvider : IBotConfigProvider { private readonly DbService _db; + private readonly IDataCache _cache; + public BotConfig BotConfig { get; private set; } - public BotConfigProvider(DbService db, BotConfig bc) + public BotConfigProvider(DbService db, BotConfig bc, IDataCache cache) { _db = db; + _cache = cache; BotConfig = bc; } @@ -28,7 +29,7 @@ namespace NadekoBot.Services.Impl { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set); switch (type) { case BotConfigEditType.CurrencyGenerationChance: diff --git a/src/NadekoBot/Services/Impl/BotCredentials.cs b/NadekoBot.Core/Services/Impl/BotCredentials.cs similarity index 89% rename from src/NadekoBot/Services/Impl/BotCredentials.cs rename to NadekoBot.Core/Services/Impl/BotCredentials.cs index 07624cde..4adbb9a5 100644 --- a/src/NadekoBot/Services/Impl/BotCredentials.cs +++ b/NadekoBot.Core/Services/Impl/BotCredentials.cs @@ -8,18 +8,15 @@ using Microsoft.Extensions.Configuration; using System.Collections.Immutable; using NadekoBot.Common; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class BotCredentials : IBotCredentials { private Logger _log; public ulong ClientId { get; } - public string GoogleApiKey { get; } - public string MashapeKey { get; } - public string Token { get; } public ImmutableArray OwnerIds { get; } @@ -79,10 +76,20 @@ namespace NadekoBot.Services.Impl if (!string.IsNullOrWhiteSpace(cmd)) RestartCommand = new RestartConfig(cmd, args); - if (string.IsNullOrWhiteSpace(ShardRunCommand)) - ShardRunCommand = "dotnet"; - if (string.IsNullOrWhiteSpace(ShardRunArguments)) - ShardRunArguments = "run -c Release -- {0} {1} {2}"; + if (Environment.OSVersion.Platform == PlatformID.Unix) + { + if (string.IsNullOrWhiteSpace(ShardRunCommand)) + ShardRunCommand = "dotnet"; + if (string.IsNullOrWhiteSpace(ShardRunArguments)) + ShardRunArguments = "run -c Release -- {0} {1}"; + } + else //windows + { + if (string.IsNullOrWhiteSpace(ShardRunCommand)) + ShardRunCommand = "NadekoBot.exe"; + if (string.IsNullOrWhiteSpace(ShardRunArguments)) + ShardRunArguments = "{0} {1}"; + } var portStr = data[nameof(ShardRunPort)]; if (string.IsNullOrWhiteSpace(portStr)) diff --git a/NadekoBot.Core/Services/Impl/FontProvider.cs b/NadekoBot.Core/Services/Impl/FontProvider.cs new file mode 100644 index 00000000..9497cc8b --- /dev/null +++ b/NadekoBot.Core/Services/Impl/FontProvider.cs @@ -0,0 +1,38 @@ +using SixLabors.Fonts; +using System.IO; + +namespace NadekoBot.Core.Services.Impl +{ + public class FontProvider : INService + { + private readonly FontCollection _fonts; + + public FontProvider() + { + _fonts = new FontCollection(); + if (Directory.Exists("data/fonts")) + foreach (var file in Directory.GetFiles("data/fonts")) + { + _fonts.Install(file); + } + + UsernameFontFamily = _fonts.Find("Whitney-Bold"); + ClubFontFamily = _fonts.Find("Whitney-Bold"); + LevelFont = _fonts.Find("Whitney-Bold").CreateFont(45); + XpFont = _fonts.Find("Whitney-Bold").CreateFont(50); + AwardedFont = _fonts.Find("Whitney-Bold").CreateFont(25); + RankFont = _fonts.Find("Uni Sans Thin CAPS").CreateFont(30); + TimeFont = _fonts.Find("Whitney-Bold").CreateFont(20); + RipNameFont = _fonts.Find("Whitney-Bold").CreateFont(20); + } + + public Font LevelFont { get; } + public Font XpFont { get; } + public Font AwardedFont { get; } + public Font RankFont { get; } + public Font TimeFont { get; } + public FontFamily UsernameFontFamily { get; } + public FontFamily ClubFontFamily { get; } + public Font RipNameFont { get; } + } +} diff --git a/src/NadekoBot/Services/Impl/GoogleApiService.cs b/NadekoBot.Core/Services/Impl/GoogleApiService.cs similarity index 99% rename from src/NadekoBot/Services/Impl/GoogleApiService.cs rename to NadekoBot.Core/Services/Impl/GoogleApiService.cs index 45727fba..0721caba 100644 --- a/src/NadekoBot/Services/Impl/GoogleApiService.cs +++ b/NadekoBot.Core/Services/Impl/GoogleApiService.cs @@ -14,7 +14,7 @@ using System.Net; using Newtonsoft.Json.Linq; using NadekoBot.Extensions; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class GoogleApiService : IGoogleApiService { diff --git a/NadekoBot.Core/Services/Impl/ImagesService.cs b/NadekoBot.Core/Services/Impl/ImagesService.cs new file mode 100644 index 00000000..90a242ca --- /dev/null +++ b/NadekoBot.Core/Services/Impl/ImagesService.cs @@ -0,0 +1,240 @@ +using NadekoBot.Extensions; +using Newtonsoft.Json; +using NLog; +using StackExchange.Redis; +using System; +using System.IO; +using System.Linq; + +namespace NadekoBot.Core.Services.Impl +{ + public class RedisImagesCache : IImageCache + { + private readonly ConnectionMultiplexer _con; + private readonly IBotCredentials _creds; + private readonly Logger _log; + + private IDatabase _db => _con.GetDatabase(); + + private const string _basePath = "data/images/"; + + private const string _headsPath = _basePath + "coins/heads.png"; + private const string _tailsPath = _basePath + "coins/tails.png"; + + private const string _currencyImagesPath = _basePath + "currency"; + private const string _diceImagesPath = _basePath + "dice"; + + private const string _slotBackgroundPath = _basePath + "slots/background2.png"; + private const string _slotNumbersPath = _basePath + "slots/numbers/"; + private const string _slotEmojisPath = _basePath + "slots/emojis/"; + + private const string _wifeMatrixPath = _basePath + "rategirl/wifematrix.png"; + private const string _rategirlDot = _basePath + "rategirl/dot.png"; + + private const string _xpCardPath = _basePath + "xp/xp.png"; + + private const string _ripPath = _basePath + "rip/rip.png"; + private const string _ripFlowersPath = _basePath + "rip/rose_overlay.png"; + + public byte[] Heads + { + get + { + return Get("heads"); + } + set + { + Set("heads", value); + } + } + + public byte[] Tails + { + get + { + return Get("tails"); + } + set + { + Set("tails", value); + } + } + + public byte[][] Currency + { + get + { + return Get("currency"); + } + set + { + Set("currency", value); + } + } + + public byte[][] Dice + { + get + { + return Get("dice"); + } + set + { + Set("dice", value); + } + } + + public byte[] SlotBackground + { + get + { + return Get("slot_background"); + } + set + { + Set("slot_background", value); + } + } + + public byte[][] SlotNumbers + { + get + { + return Get("slotnumbers"); + } + set + { + Set("slotnumbers", value); + } + } + public byte[][] SlotEmojis + { + get + { + return Get("slotemojis"); + } + set + { + Set("slotemojis", value); + } + } + + public byte[] WifeMatrix + { + get + { + return Get("wife_matrix"); + } + set + { + Set("wife_matrix", value); + } + } + public byte[] RategirlDot + { + get + { + return Get("rategirl_dot"); + } + set + { + Set("rategirl_dot", value); + } + } + + public byte[] XpCard + { + get + { + return Get("xp_card"); + } + set + { + Set("xp_card", value); + } + } + + public byte[] Rip + { + get + { + return Get("rip"); + } + set + { + Set("rip", value); + } + } + public byte[] FlowerCircle + { + get + { + return Get("flower_circle"); + } + set + { + Set("flower_circle", value); + } + } + + public RedisImagesCache(ConnectionMultiplexer con, IBotCredentials creds) + { + _con = con; + _creds = creds; + _log = LogManager.GetCurrentClassLogger(); + } + + public void Reload() + { + try + { + Heads = File.ReadAllBytes(_headsPath); + Tails = File.ReadAllBytes(_tailsPath); + + Currency = Directory.GetFiles(_currencyImagesPath) + .Select(x => File.ReadAllBytes(x)) + .ToArray(); + + Dice = Directory.GetFiles(_diceImagesPath) + .OrderBy(x => int.Parse(Path.GetFileNameWithoutExtension(x))) + .Select(x => File.ReadAllBytes(x)) + .ToArray(); + + SlotBackground = File.ReadAllBytes(_slotBackgroundPath); + + SlotNumbers = Directory.GetFiles(_slotNumbersPath) + .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))) + .Select(x => File.ReadAllBytes(x)) + .ToArray(); + + SlotEmojis = Directory.GetFiles(_slotEmojisPath) + .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))) + .Select(x => File.ReadAllBytes(x)) + .ToArray(); + + WifeMatrix = File.ReadAllBytes(_wifeMatrixPath); + RategirlDot = File.ReadAllBytes(_rategirlDot); + + XpCard = File.ReadAllBytes(_xpCardPath); + + Rip = File.ReadAllBytes(_ripPath); + FlowerCircle = File.ReadAllBytes(_ripFlowersPath); + } + catch (Exception ex) + { + _log.Error(ex); + throw; + } + } + + private T Get(string key) where T : class + { + return JsonConvert.DeserializeObject(_db.StringGet($"{_creds.RedisKey()}_localimg_{key}")); + } + + private void Set(string key, object obj) + { + _db.StringSet($"{_creds.RedisKey()}_localimg_{key}", JsonConvert.SerializeObject(obj)); + } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Services/Impl/Localization.cs b/NadekoBot.Core/Services/Impl/Localization.cs similarity index 89% rename from src/NadekoBot/Services/Impl/Localization.cs rename to NadekoBot.Core/Services/Impl/Localization.cs index 8bc0d257..496a4440 100644 --- a/src/NadekoBot/Services/Impl/Localization.cs +++ b/NadekoBot.Core/Services/Impl/Localization.cs @@ -4,12 +4,12 @@ using System.Globalization; using System.Linq; using Discord; using NLog; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using NadekoBot.Common; using Newtonsoft.Json; using System.IO; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class Localization : ILocalization { @@ -24,15 +24,15 @@ namespace NadekoBot.Services.Impl static Localization() { _commandData = JsonConvert.DeserializeObject>( - File.ReadAllText("./data/command_strings.json")); + File.ReadAllText("./_strings/cmd/command_strings.json")); } private Localization() { } - public Localization(IBotConfigProvider bcp, IEnumerable gcs, DbService db) + public Localization(IBotConfigProvider bcp, NadekoBot bot, DbService db) { _log = LogManager.GetCurrentClassLogger(); - var cultureInfoNames = gcs.ToDictionary(x => x.GuildId, x => x.Locale); + var cultureInfoNames = bot.AllGuildConfigs.ToDictionary(x => x.GuildId, x => x.Locale); var defaultCulture = bcp.BotConfig.Locale; _db = db; @@ -106,7 +106,7 @@ namespace NadekoBot.Services.Impl { using (var uow = _db.UnitOfWork) { - var bc = uow.BotConfig.GetOrCreate(); + var bc = uow.BotConfig.GetOrCreate(set => set); bc.Locale = ci.Name; uow.Complete(); } @@ -123,8 +123,7 @@ namespace NadekoBot.Services.Impl { if (guildId == null) return DefaultCultureInfo; - CultureInfo info = null; - GuildCultureInfos.TryGetValue(guildId.Value, out info); + GuildCultureInfos.TryGetValue(guildId.Value, out CultureInfo info); return info ?? DefaultCultureInfo; } diff --git a/src/NadekoBot/Services/Impl/NadekoStrings.cs b/NadekoBot.Core/Services/Impl/NadekoStrings.cs similarity index 99% rename from src/NadekoBot/Services/Impl/NadekoStrings.cs rename to NadekoBot.Core/Services/Impl/NadekoStrings.cs index b50f553e..a21b7c38 100644 --- a/src/NadekoBot/Services/Impl/NadekoStrings.cs +++ b/NadekoBot.Core/Services/Impl/NadekoStrings.cs @@ -8,7 +8,7 @@ using System.Text.RegularExpressions; using Newtonsoft.Json; using NLog; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class NadekoStrings : INService { diff --git a/NadekoBot.Core/Services/Impl/RedisCache.cs b/NadekoBot.Core/Services/Impl/RedisCache.cs new file mode 100644 index 00000000..221a2cf4 --- /dev/null +++ b/NadekoBot.Core/Services/Impl/RedisCache.cs @@ -0,0 +1,115 @@ +using NadekoBot.Extensions; +using StackExchange.Redis; +using System; +using System.Threading.Tasks; + +namespace NadekoBot.Core.Services.Impl +{ + public class RedisCache : IDataCache + { + public ConnectionMultiplexer Redis { get; } + + public IImageCache LocalImages { get; } + public ILocalDataCache LocalData { get; } + + private readonly IDatabase _db; + private readonly string _redisKey; + + public RedisCache(IBotCredentials creds) + { + Redis = ConnectionMultiplexer.Connect("127.0.0.1"); + Redis.PreserveAsyncOrder = false; + LocalImages = new RedisImagesCache(Redis, creds); + LocalData = new RedisLocalDataCache(Redis, creds); + _db = Redis.GetDatabase(); + _redisKey = creds.RedisKey(); + } + + // things here so far don't need the bot id + // because it's a good thing if different bots + // which are hosted on the same PC + // can re-use the same image/anime data + public async Task<(bool Success, byte[] Data)> TryGetImageDataAsync(string key) + { + byte[] x = await _db.StringGetAsync("image_" + key); + return (x != null, x); + } + + public Task SetImageDataAsync(string key, byte[] data) + { + return _db.StringSetAsync("image_" + key, data); + } + + public async Task<(bool Success, string Data)> TryGetAnimeDataAsync(string key) + { + string x = await _db.StringGetAsync("anime_" + key); + return (x != null, x); + } + + public Task SetAnimeDataAsync(string key, string data) + { + return _db.StringSetAsync("anime_" + key, data); + } + + public async Task<(bool Success, string Data)> TryGetNovelDataAsync(string key) + { + string x = await _db.StringGetAsync("novel_" + key); + return (x != null, x); + } + + public Task SetNovelDataAsync(string key, string data) + { + return _db.StringSetAsync("novel_" + key, data); + } + + private readonly object timelyLock = new object(); + public TimeSpan? AddTimelyClaim(ulong id, int period) + { + if (period == 0) + return null; + lock (timelyLock) + { + var time = TimeSpan.FromHours(period); + if ((bool?)_db.StringGet($"{_redisKey}_timelyclaim_{id}") == null) + { + _db.StringSet($"{_redisKey}_timelyclaim_{id}", true, time); + return null; + } + return _db.KeyTimeToLive($"{_redisKey}_timelyclaim_{id}"); + } + } + + public void RemoveAllTimelyClaims() + { + var server = Redis.GetServer("127.0.0.1", 6379); + foreach (var k in server.Keys(pattern: $"{_redisKey}_timelyclaim_*")) + { + _db.KeyDelete(k, CommandFlags.FireAndForget); + } + } + + public bool TryAddAffinityCooldown(ulong userId, out TimeSpan? time) + { + time = _db.KeyTimeToLive($"{_redisKey}_affinity_{userId}"); + if (time == null) + { + time = TimeSpan.FromMinutes(30); + _db.StringSet($"{_redisKey}_affinity_{userId}", true, time); + return true; + } + return false; + } + + public bool TryAddDivorceCooldown(ulong userId, out TimeSpan? time) + { + time = _db.KeyTimeToLive($"{_redisKey}_divorce_{userId}"); + if (time == null) + { + time = TimeSpan.FromHours(6); + _db.StringSet($"{_redisKey}_divorce_{userId}", true, time); + return true; + } + return false; + } + } +} diff --git a/NadekoBot.Core/Services/Impl/RedisLocalDataCache.cs b/NadekoBot.Core/Services/Impl/RedisLocalDataCache.cs new file mode 100644 index 00000000..e5eeb3f8 --- /dev/null +++ b/NadekoBot.Core/Services/Impl/RedisLocalDataCache.cs @@ -0,0 +1,122 @@ +using NadekoBot.Core.Common.Pokemon; +using NadekoBot.Extensions; +using NadekoBot.Modules.Games.Common.Trivia; +using Newtonsoft.Json; +using NLog; +using StackExchange.Redis; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace NadekoBot.Core.Services.Impl +{ + public class RedisLocalDataCache : ILocalDataCache + { + private readonly ConnectionMultiplexer _con; + private readonly IBotCredentials _creds; + private readonly Logger _log; + + private IDatabase _db => _con.GetDatabase(); + + private const string pokemonAbilitiesFile = "data/pokemon/pokemon_abilities7.json"; + private const string pokemonListFile = "data/pokemon/pokemon_list7.json"; + private const string pokemonMapPath = "data/pokemon/name-id_map4.json"; + private const string questionsFile = "data/trivia_questions.json"; + + public IReadOnlyDictionary Pokemons + { + get + { + return Get>("pokemon_list"); + } + private set + { + Set("pokemon_list", value); + } + } + + public IReadOnlyDictionary PokemonAbilities + { + get + { + return Get>("pokemon_abilities"); + } + private set + { + Set("pokemon_abilities", value); + } + } + + public TriviaQuestion[] TriviaQuestions + { + get + { + return Get("trivia_questions"); + } + private set + { + Set("trivia_questions", value); + } + } + + public IReadOnlyDictionary PokemonMap + { + get + { + return Get>("pokemon_map"); + } + private set + { + Set("pokemon_map", value); + } + } + + public RedisLocalDataCache(ConnectionMultiplexer con, IBotCredentials creds) + { + _con = con; + _creds = creds; + _log = LogManager.GetCurrentClassLogger(); + + if (!File.Exists(pokemonListFile)) + { + _log.Warn(pokemonListFile + " is missing. Pokemon abilities not loaded."); + } + else + { + Pokemons = JsonConvert.DeserializeObject>(File.ReadAllText(pokemonListFile)); + } + + if (!File.Exists(pokemonAbilitiesFile)) + { + _log.Warn(pokemonAbilitiesFile + " is missing. Pokemon abilities not loaded."); + } + else + { + PokemonAbilities = JsonConvert.DeserializeObject>(File.ReadAllText(pokemonAbilitiesFile)); + } + + try + { + TriviaQuestions = JsonConvert.DeserializeObject(File.ReadAllText(questionsFile)); + PokemonMap = JsonConvert.DeserializeObject(File.ReadAllText(pokemonMapPath)) + .ToDictionary(x => x.Id, x => x.Name); + } + catch (Exception ex) + { + _log.Error(ex); + throw; + } + } + + private T Get(string key) where T : class + { + return JsonConvert.DeserializeObject(_db.StringGet($"{_creds.RedisKey()}_localdata_{key}")); + } + + private void Set(string key, object obj) + { + _db.StringSet($"{_creds.RedisKey()}_localdata_{key}", JsonConvert.SerializeObject(obj)); + } + } +} diff --git a/src/NadekoBot/Services/Impl/SoundCloudApiService.cs b/NadekoBot.Core/Services/Impl/SoundCloudApiService.cs similarity index 99% rename from src/NadekoBot/Services/Impl/SoundCloudApiService.cs rename to NadekoBot.Core/Services/Impl/SoundCloudApiService.cs index acdba5b7..65249cce 100644 --- a/src/NadekoBot/Services/Impl/SoundCloudApiService.cs +++ b/NadekoBot.Core/Services/Impl/SoundCloudApiService.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Net.Http; using System.Threading.Tasks; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class SoundCloudApiService : INService { diff --git a/src/NadekoBot/Services/Impl/StartingGuildsListService.cs b/NadekoBot.Core/Services/Impl/StartingGuildsListService.cs similarity index 94% rename from src/NadekoBot/Services/Impl/StartingGuildsListService.cs rename to NadekoBot.Core/Services/Impl/StartingGuildsListService.cs index e7f413cc..02f98ff8 100644 --- a/src/NadekoBot/Services/Impl/StartingGuildsListService.cs +++ b/NadekoBot.Core/Services/Impl/StartingGuildsListService.cs @@ -4,7 +4,7 @@ using System.Collections.Immutable; using System.Linq; using System.Collections; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class StartingGuildsService : IEnumerable, INService { diff --git a/src/NadekoBot/Services/Impl/StatsService.cs b/NadekoBot.Core/Services/Impl/StatsService.cs similarity index 92% rename from src/NadekoBot/Services/Impl/StatsService.cs rename to NadekoBot.Core/Services/Impl/StatsService.cs index 6c8611e0..5cc91918 100644 --- a/src/NadekoBot/Services/Impl/StatsService.cs +++ b/NadekoBot.Core/Services/Impl/StatsService.cs @@ -11,8 +11,9 @@ using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; +using StackExchange.Redis; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class StatsService : IStatsService { @@ -20,12 +21,12 @@ namespace NadekoBot.Services.Impl private readonly IBotCredentials _creds; private readonly DateTime _started; - public const string BotVersion = "1.10.2"; - + public const string BotVersion = "2.5.7"; public string Author => "Kwoth#2560"; public string Library => "Discord.Net"; - public string Heap => - Math.Round((double)GC.GetTotalMemory(false) / 1.MiB(), 2).ToString(CultureInfo.InvariantCulture); + + public string Heap => Math.Round((double)GC.GetTotalMemory(false) / 1.MiB(), 2) + .ToString(CultureInfo.InvariantCulture); public double MessagesPerSecond => MessageCounter / GetUptime().TotalSeconds; private long _textChannels; @@ -39,16 +40,15 @@ namespace NadekoBot.Services.Impl private readonly Timer _carbonitexTimer; private readonly Timer _dataTimer; - private readonly ShardsCoordinator _sc; + private readonly ConnectionMultiplexer _redis; - public int GuildCount => - _sc?.GuildCount ?? _client.Guilds.Count(); - - public StatsService(DiscordSocketClient client, CommandHandler cmdHandler, IBotCredentials creds, NadekoBot nadeko) + public StatsService(DiscordSocketClient client, CommandHandler cmdHandler, + IBotCredentials creds, NadekoBot nadeko, + IDataCache cache) { _client = client; _creds = creds; - _sc = nadeko.ShardCoord; + _redis = cache.Redis; _started = DateTime.UtcNow; _client.MessageReceived += _ => Task.FromResult(Interlocked.Increment(ref _messageCounter)); @@ -130,7 +130,7 @@ namespace NadekoBot.Services.Impl return Task.CompletedTask; }; - if (_sc != null) + if (_client.ShardId == 0) { _carbonitexTimer = new Timer(async (state) => { @@ -142,7 +142,7 @@ namespace NadekoBot.Services.Impl { using (var content = new FormUrlEncodedContent( new Dictionary { - { "servercount", _sc.GuildCount.ToString() }, + { "servercount", nadeko.GuildCount.ToString() }, { "key", _creds.CarbonKey }})) { content.Headers.Clear(); @@ -175,7 +175,7 @@ namespace NadekoBot.Services.Impl using (var content = new FormUrlEncodedContent( new Dictionary { { "id", string.Concat(MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(_creds.ClientId.ToString())).Select(x => x.ToString("X2"))) }, - { "guildCount", _sc.GuildCount.ToString() }, + { "guildCount", nadeko.GuildCount.ToString() }, { "version", BotVersion }, { "platform", platform }})) { diff --git a/src/NadekoBot/Services/Impl/SyncPreconditionService.cs b/NadekoBot.Core/Services/Impl/SyncPreconditionService.cs similarity index 61% rename from src/NadekoBot/Services/Impl/SyncPreconditionService.cs rename to NadekoBot.Core/Services/Impl/SyncPreconditionService.cs index b6a47133..b40a4d41 100644 --- a/src/NadekoBot/Services/Impl/SyncPreconditionService.cs +++ b/NadekoBot.Core/Services/Impl/SyncPreconditionService.cs @@ -1,4 +1,4 @@ -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class SyncPreconditionService { diff --git a/src/NadekoBot/Services/Impl/Ytdl.cs b/NadekoBot.Core/Services/Impl/Ytdl.cs similarity index 97% rename from src/NadekoBot/Services/Impl/Ytdl.cs rename to NadekoBot.Core/Services/Impl/Ytdl.cs index 0ddebe6b..5b8ba558 100644 --- a/src/NadekoBot/Services/Impl/Ytdl.cs +++ b/NadekoBot.Core/Services/Impl/Ytdl.cs @@ -3,7 +3,7 @@ using System; using System.Diagnostics; using System.Threading.Tasks; -namespace NadekoBot.Services.Impl +namespace NadekoBot.Core.Services.Impl { public class YtdlOperation : IDisposable { diff --git a/src/NadekoBot/Services/LogSetup.cs b/NadekoBot.Core/Services/LogSetup.cs similarity index 71% rename from src/NadekoBot/Services/LogSetup.cs rename to NadekoBot.Core/Services/LogSetup.cs index 9cf85799..fdb41dc0 100644 --- a/src/NadekoBot/Services/LogSetup.cs +++ b/NadekoBot.Core/Services/LogSetup.cs @@ -2,16 +2,16 @@ using NLog.Config; using NLog.Targets; -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public class LogSetup { - public static void SetupLogger() + public static void SetupLogger(int shardId) { var logConfig = new LoggingConfiguration(); var consoleTarget = new ColoredConsoleTarget() { - Layout = @"${date:format=HH\:mm\:ss} ${logger:shortName=True} | ${message}" + Layout = shardId + @" ${date:format=HH\:mm\:ss} ${logger:shortName=True} | ${message}" }; logConfig.AddTarget("Console", consoleTarget); diff --git a/src/NadekoBot/NadekoBot.cs b/NadekoBot.Core/Services/NadekoBot.cs similarity index 57% rename from src/NadekoBot/NadekoBot.cs rename to NadekoBot.Core/Services/NadekoBot.cs index 946ba5c3..af42ae0a 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/NadekoBot.Core/Services/NadekoBot.cs @@ -1,8 +1,8 @@ using Discord; using Discord.Commands; using Discord.WebSocket; -using NadekoBot.Services; -using NadekoBot.Services.Impl; +using NadekoBot.Core.Services; +using NadekoBot.Core.Services.Impl; using NLog; using System; using System.Linq; @@ -10,16 +10,14 @@ using System.Reflection; using System.Threading.Tasks; using System.Collections.Immutable; using System.Diagnostics; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System.Threading; using System.IO; using NadekoBot.Extensions; using System.Collections.Generic; using NadekoBot.Common; using NadekoBot.Common.ShardCom; -using NadekoBot.Common.TypeReaders; -using NadekoBot.Common.TypeReaders.Models; -using NadekoBot.Services.Database; +using NadekoBot.Core.Services.Database; using StackExchange.Redis; using Newtonsoft.Json; @@ -30,7 +28,6 @@ namespace NadekoBot private Logger _log; public BotCredentials Credentials { get; } - public DiscordSocketClient Client { get; } public CommandService CommandService { get; } @@ -50,33 +47,26 @@ namespace NadekoBot public INServiceProvider Services { get; private set; } - public ShardsCoordinator ShardCoord { get; private set; } - - private readonly ShardComClient _comClient; - private readonly BotConfig _botConfig; + public IDataCache Cache { get; private set; } - public NadekoBot(int shardId, int parentProcessId, int? port = null) + public int GuildCount => + Cache.Redis.GetDatabase() + .ListRange(Credentials.RedisKey() + "_shardstats") + .Select(x => JsonConvert.DeserializeObject(x)) + .Sum(x => x.Guilds); + + public NadekoBot(int shardId, int parentProcessId) { if (shardId < 0) throw new ArgumentOutOfRangeException(nameof(shardId)); - //var obj = JsonConvert.DeserializeObject>(File.ReadAllText("./data/command_strings.json")) - // .ToDictionary(x => x.Key, x => new CommandData2 - // { - // Cmd = x.Value.Cmd, - // Desc = x.Value.Desc, - // Usage = x.Value.Usage.Select(y => y.Substring(1, y.Length - 2)).ToArray(), - // }); - - //File.WriteAllText("./data/command_strings.json", JsonConvert.SerializeObject(obj, Formatting.Indented)); - - - LogSetup.SetupLogger(); + LogSetup.SetupLogger(shardId); _log = LogManager.GetCurrentClassLogger(); TerribleElevatedPermissionCheck(); Credentials = new BotCredentials(); + Cache = new RedisCache(Credentials); _db = new DbService(Credentials); Client = new DiscordSocketClient(new DiscordSocketConfig { @@ -93,9 +83,6 @@ namespace NadekoBot DefaultRunMode = RunMode.Sync, }); - port = port ?? Credentials.ShardRunPort; - _comClient = new ShardComClient(port.Value); - using (var uow = _db.UnitOfWork) { _botConfig = uow.BotConfig.GetOrCreate(); @@ -103,7 +90,7 @@ namespace NadekoBot ErrorColor = new Color(Convert.ToUInt32(_botConfig.ErrorColor, 16)); } - SetupShard(parentProcessId, port.Value); + SetupShard(parentProcessId); #if GLOBAL_NADEKO Client.Log += Client_Log; @@ -116,14 +103,19 @@ namespace NadekoBot { while (true) { - await _comClient.Send(new ShardComMessage() + var data = new ShardComMessage() { ConnectionState = Client.ConnectionState, Guilds = Client.ConnectionState == ConnectionState.Connected ? Client.Guilds.Count : 0, ShardId = Client.ShardId, Time = DateTime.UtcNow, - }); - await Task.Delay(5000); + }; + + var sub = Cache.Redis.GetSubscriber(); + var msg = JsonConvert.SerializeObject(data); + + await sub.PublishAsync(Credentials.RedisKey() + "_shardcoord_send", msg).ConfigureAwait(false); + await Task.Delay(7500); } }); } @@ -137,37 +129,65 @@ namespace NadekoBot { AllGuildConfigs = uow.GuildConfigs.GetAllGuildConfigs(startingGuildIdList).ToImmutableArray(); - IBotConfigProvider botConfigProvider = new BotConfigProvider(_db, _botConfig); - - //var localization = new Localization(_botConfig.Locale, AllGuildConfigs.ToDictionary(x => x.GuildId, x => x.Locale), Db); + IBotConfigProvider botConfigProvider = new BotConfigProvider(_db, _botConfig, Cache); //initialize Services - Services = new NServiceProvider.ServiceProviderBuilder() + Services = new NServiceProvider() .AddManual(Credentials) .AddManual(_db) .AddManual(Client) .AddManual(CommandService) .AddManual(botConfigProvider) - //.AddManual(localization) - .AddManual>(AllGuildConfigs) //todo wrap this .AddManual(this) .AddManual(uow) - .AddManual(new RedisCache(Client.CurrentUser.Id)) - .LoadFrom(Assembly.GetEntryAssembly()) - .Build(); + .AddManual(Cache); + + Services.LoadFrom(Assembly.GetAssembly(typeof(CommandHandler))); var commandHandler = Services.GetService(); commandHandler.AddServices(Services); - //setup typereaders - CommandService.AddTypeReader(new PermissionActionTypeReader()); - CommandService.AddTypeReader(new CommandTypeReader()); - CommandService.AddTypeReader(new CommandOrCrTypeReader()); - CommandService.AddTypeReader(new ModuleTypeReader(CommandService)); - CommandService.AddTypeReader(new ModuleOrCrTypeReader(CommandService)); - CommandService.AddTypeReader(new GuildTypeReader(Client)); - CommandService.AddTypeReader(new GuildDateTimeTypeReader()); + LoadTypeReaders(typeof(NadekoBot).Assembly); } + Services.Unload(typeof(IUnitOfWork)); // unload it after the startup + } + + private IEnumerable LoadTypeReaders(Assembly assembly) + { + Type[] allTypes; + try + { + allTypes = assembly.GetTypes(); + } + catch (ReflectionTypeLoadException ex) + { + Console.WriteLine(ex.LoaderExceptions[0]); + return Enumerable.Empty(); + } + var filteredTypes = allTypes + .Where(x => x.IsSubclassOf(typeof(TypeReader)) + && x.BaseType.GetGenericArguments().Length > 0 + && !x.IsAbstract); + + var toReturn = new List(); + foreach (var ft in filteredTypes) + { + var x = (TypeReader)Activator.CreateInstance(ft, Client, CommandService); + var baseType = ft.BaseType; + var typeArgs = baseType.GetGenericArguments(); + try + { + CommandService.AddTypeReader(typeArgs[0], x); + } + catch (Exception ex) + { + _log.Error(ex); + throw; + } + toReturn.Add(x); + } + + return toReturn; } private async Task LoginAsync(string token) @@ -192,7 +212,7 @@ namespace NadekoBot } finally { - + } }); return Task.CompletedTask; @@ -224,15 +244,20 @@ namespace NadekoBot public async Task RunAsync(params string[] args) { - if(Client.ShardId == 0) - _log.Info("Starting NadekoBot v" + StatsService.BotVersion); - var sw = Stopwatch.StartNew(); await LoginAsync(Credentials.Token).ConfigureAwait(false); _log.Info($"Shard {Client.ShardId} loading services..."); - AddServices(); + try + { + AddServices(); + } + catch (Exception ex) + { + _log.Error(ex); + throw; + } sw.Stop(); _log.Info($"Shard {Client.ShardId} connected in {sw.Elapsed.TotalSeconds:F2}s"); @@ -254,7 +279,7 @@ namespace NadekoBot #endif //unload modules which are not available on the public bot - if(isPublicNadeko) + if (isPublicNadeko) CommandService .Modules .ToArray() @@ -263,8 +288,8 @@ namespace NadekoBot Ready.TrySetResult(true); HandleStatusChanges(); + StartSendingData(); _log.Info($"Shard {Client.ShardId} ready."); - //_log.Info(await stats.Print().ConfigureAwait(false)); } private Task Client_Log(LogMessage arg) @@ -279,13 +304,7 @@ namespace NadekoBot public async Task RunAndBlockAsync(params string[] args) { await RunAsync(args).ConfigureAwait(false); - StartSendingData(); - if (ShardCoord != null) - await ShardCoord.RunAndBlockAsync(); - else - { - await Task.Delay(-1).ConfigureAwait(false); - } + await Task.Delay(-1).ConfigureAwait(false); } private void TerribleElevatedPermissionCheck() @@ -303,13 +322,8 @@ namespace NadekoBot } } - private void SetupShard(int parentProcessId, int port) + private void SetupShard(int parentProcessId) { - if (Client.ShardId == 0) - { - ShardCoord = new ShardsCoordinator(port); - return; - } new Thread(new ThreadStart(() => { try @@ -371,5 +385,114 @@ namespace NadekoBot var sub = Services.GetService().Redis.GetSubscriber(); return sub.PublishAsync(Client.CurrentUser.Id + "_status.game_set", JsonConvert.SerializeObject(obj)); } + + //private readonly Dictionary Modules, IEnumerable Types)> _loadedPackages = new Dictionary, IEnumerable)>(); + //private readonly SemaphoreSlim _packageLocker = new SemaphoreSlim(1, 1); + //public IEnumerable LoadedPackages => _loadedPackages.Keys; + + ///// + ///// Unloads a package + ///// + ///// Package name. Case sensitive. + ///// Whether the unload is successful. + //public async Task UnloadPackage(string name) + //{ + // await _packageLocker.WaitAsync().ConfigureAwait(false); + // try + // { + // if (!_loadedPackages.Remove(name, out var data)) + // return false; + + // var modules = data.Modules; + // var types = data.Types; + + // var i = 0; + // foreach (var m in modules) + // { + // await CommandService.RemoveModuleAsync(m).ConfigureAwait(false); + // i++; + // } + // _log.Info("Unloaded {0} modules.", i); + + // if (types != null && types.Any()) + // { + // i = 0; + // foreach (var t in types) + // { + // var obj = Services.Unload(t); + // if (obj is IUnloadableService s) + // await s.Unload().ConfigureAwait(false); + // i++; + // } + + // _log.Info("Unloaded {0} types.", i); + // } + // using (var uow = _db.UnitOfWork) + // { + // uow.BotConfig.GetOrCreate().LoadedPackages.Remove(new LoadedPackage + // { + // Name = name, + // }); + // } + // return true; + // } + // finally + // { + // _packageLocker.Release(); + // } + //} + ///// + ///// Loads a package + ///// + ///// Name of the package to load. Case sensitive. + ///// Whether the load is successful. + //public async Task LoadPackage(string name) + //{ + // await _packageLocker.WaitAsync().ConfigureAwait(false); + // try + // { + // if (_loadedPackages.ContainsKey(name)) + // return false; + + // var startingGuildIdList = Client.Guilds.Select(x => (long)x.Id).ToList(); + // using (var uow = _db.UnitOfWork) + // { + // AllGuildConfigs = uow.GuildConfigs.GetAllGuildConfigs(startingGuildIdList).ToImmutableArray(); + // } + + // var domain = new Context(); + // var package = domain.LoadFromAssemblyPath(Path.Combine(AppContext.BaseDirectory, + // "modules", + // $"NadekoBot.Modules.{name}", + // $"NadekoBot.Modules.{name}.dll")); + // //var package = Assembly.LoadFile(Path.Combine(AppContext.BaseDirectory, + // // "modules", + // // $"NadekoBot.Modules.{name}", + // // $"NadekoBot.Modules.{name}.dll")); + // var types = Services.LoadFrom(package); + // var added = await CommandService.AddModulesAsync(package).ConfigureAwait(false); + // var trs = LoadTypeReaders(package); + // /* i don't have to unload typereaders + // * (and there's no api for it) + // * because they get overwritten anyway, and since + // * the only time I'd unload typereaders, is when unloading a module + // * which means they won't have a chance to be used + // * */ + // _log.Info("Loaded {0} modules and {1} types.", added.Count(), types.Count()); + // _loadedPackages.Add(name, (added, types)); + // using (var uow = _db.UnitOfWork) + // { + // uow.BotConfig.GetOrCreate().LoadedPackages.Add(new LoadedPackage + // { + // Name = name, + // }); + // } + // return true; + // } + // finally + // { + // _packageLocker.Release(); + // } + //} } } diff --git a/src/NadekoBot/Services/ServiceProvider.cs b/NadekoBot.Core/Services/ServiceProvider.cs similarity index 54% rename from src/NadekoBot/Services/ServiceProvider.cs rename to NadekoBot.Core/Services/ServiceProvider.cs index 6efe0a2b..748452c0 100644 --- a/src/NadekoBot/Services/ServiceProvider.cs +++ b/NadekoBot.Core/Services/ServiceProvider.cs @@ -1,6 +1,5 @@ using System; using System.Collections; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.Reflection; @@ -12,62 +11,98 @@ using NadekoBot.Common; #endif -namespace NadekoBot.Services +namespace NadekoBot.Core.Services { public interface INServiceProvider : IServiceProvider, IEnumerable { T GetService(); + IEnumerable LoadFrom(Assembly assembly); + INServiceProvider AddManual(T obj); + object Unload(Type t); } public class NServiceProvider : INServiceProvider { - public class ServiceProviderBuilder + private readonly object _locker = new object(); + private readonly Logger _log; + + public readonly Dictionary _services = new Dictionary(); + public IReadOnlyDictionary Services => _services; + + public NServiceProvider() { - private ConcurrentDictionary _dict = new ConcurrentDictionary(); - private readonly Logger _log; + _log = LogManager.GetCurrentClassLogger(); + } - public ServiceProviderBuilder() + public T GetService() + { + return (T)((IServiceProvider)(this)).GetService(typeof(T)); + } + + object IServiceProvider.GetService(Type serviceType) + { + _services.TryGetValue(serviceType, out var toReturn); + return toReturn; + } + + public INServiceProvider AddManual(T obj) + { + lock (_locker) { - _log = LogManager.GetCurrentClassLogger(); + _services.TryAdd(typeof(T), obj); } + return this; + } - public ServiceProviderBuilder AddManual(T obj) + public INServiceProvider UpdateManual(T obj) + { + lock (_locker) { - _dict.TryAdd(typeof(T), obj); - return this; + _services.Remove(typeof(T)); + _services.TryAdd(typeof(T), obj); } + return this; + } - public NServiceProvider Build() + public IEnumerable LoadFrom(Assembly assembly) + { + List addedTypes = new List(); + + Type[] allTypes; + try { - return new NServiceProvider(_dict); + allTypes = assembly.GetTypes(); } - - public ServiceProviderBuilder LoadFrom(Assembly assembly) + catch (ReflectionTypeLoadException ex) { - var allTypes = assembly.GetTypes(); - var services = new Queue(allTypes - .Where(x => x.GetInterfaces().Contains(typeof(INService)) - && !x.GetTypeInfo().IsInterface && !x.GetTypeInfo().IsAbstract - + Console.WriteLine(ex.LoaderExceptions[0]); + return Enumerable.Empty(); + } + var services = new Queue(allTypes + .Where(x => x.GetInterfaces().Contains(typeof(INService)) + && !x.GetTypeInfo().IsInterface && !x.GetTypeInfo().IsAbstract #if GLOBAL_NADEKO - && x.GetTypeInfo().GetCustomAttribute() == null + && x.GetTypeInfo().GetCustomAttribute() == null #endif ) - .ToArray()); + .ToArray()); - var interfaces = new HashSet(allTypes - .Where(x => x.GetInterfaces().Contains(typeof(INService)) - && x.GetTypeInfo().IsInterface)); + addedTypes.AddRange(services); - var alreadyFailed = new Dictionary(); + var interfaces = new HashSet(allTypes + .Where(x => x.GetInterfaces().Contains(typeof(INService)) + && x.GetTypeInfo().IsInterface)); + var alreadyFailed = new Dictionary(); + lock (_locker) + { var sw = Stopwatch.StartNew(); var swInstance = new Stopwatch(); while (services.Count > 0) { var type = services.Dequeue(); //get a type i need to make an instance of - if (_dict.TryGetValue(type, out _)) // if that type is already instantiated, skip + if (_services.TryGetValue(type, out _)) // if that type is already instantiated, skip continue; var ctor = type.GetConstructors()[0]; @@ -79,7 +114,7 @@ namespace NadekoBot.Services var args = new List(argTypes.Length); foreach (var arg in argTypes) //get constructor arguments from the dictionary of already instantiated types { - if (_dict.TryGetValue(arg, out var argObj)) //if i got current one, add it to the list of instances and move on + if (_services.TryGetValue(arg, out var argObj)) //if i got current one, add it to the list of instances and move on args.Add(argObj); else //if i failed getting it, add it to the end, and break { @@ -97,7 +132,7 @@ namespace NadekoBot.Services } if (args.Count != argTypes.Length) continue; - // _log.Info("Loading " + type.Name); + swInstance.Restart(); var instance = ctor.Invoke(args.ToArray()); swInstance.Stop(); @@ -105,38 +140,34 @@ namespace NadekoBot.Services _log.Info($"{type.Name} took {swInstance.Elapsed.TotalSeconds:F2}s to load."); var interfaceType = interfaces.FirstOrDefault(x => instance.GetType().GetInterfaces().Contains(x)); if (interfaceType != null) - _dict.TryAdd(interfaceType, instance); + { + addedTypes.Add(interfaceType); + _services.TryAdd(interfaceType, instance); + } - _dict.TryAdd(type, instance); + _services.TryAdd(type, instance); } sw.Stop(); _log.Info($"All services loaded in {sw.Elapsed.TotalSeconds:F2}s"); - - return this; } + return addedTypes; } - private readonly ImmutableDictionary _services; - - private NServiceProvider() { } - public NServiceProvider(IDictionary services) + public object Unload(Type t) { - this._services = services.ToImmutableDictionary(); - } - - public T GetService() - { - return (T)((IServiceProvider)(this)).GetService(typeof(T)); - } - - object IServiceProvider.GetService(Type serviceType) - { - _services.TryGetValue(serviceType, out var toReturn); - return toReturn; + lock (_locker) + { + if (_services.TryGetValue(t, out var obj)) + { + _services.Remove(t); + return obj; + } + } + return null; } IEnumerator IEnumerable.GetEnumerator() => _services.Values.GetEnumerator(); public IEnumerator GetEnumerator() => _services.Values.GetEnumerator(); } -} +} \ No newline at end of file diff --git a/NadekoBot.Core/Services/ShardsCoordinator.cs b/NadekoBot.Core/Services/ShardsCoordinator.cs new file mode 100644 index 00000000..68255e9f --- /dev/null +++ b/NadekoBot.Core/Services/ShardsCoordinator.cs @@ -0,0 +1,333 @@ +using NadekoBot.Core.Services.Impl; +using NLog; +using System; +using System.Diagnostics; +using System.Threading.Tasks; +using NadekoBot.Common.ShardCom; +using StackExchange.Redis; +using Newtonsoft.Json; +using NadekoBot.Extensions; +using NadekoBot.Common.Collections; +using System.Linq; +using System.Collections.Generic; + +namespace NadekoBot.Core.Services +{ + public class ShardsCoordinator + { + private class ShardsCoordinatorQueue + { + private readonly object _locker = new object(); + private readonly HashSet _set = new HashSet(); + private readonly Queue _queue = new Queue(); + public int Count => _queue.Count; + + public void Enqueue(int i) + { + lock (_locker) + { + if (_set.Add(i)) + _queue.Enqueue(i); + } + } + + public bool TryDequeue(out int id) + { + lock (_locker) + { + if (_queue.TryDequeue(out id)) + { + _set.Remove(id); + return true; + } + } + return false; + } + } + + private readonly BotCredentials _creds; + private readonly string _key; + private readonly Process[] _shardProcesses; + + private readonly Logger _log; + private readonly int _curProcessId; + private readonly ConnectionMultiplexer _redis; + private ShardComMessage _defaultShardState; + + private ShardsCoordinatorQueue _shardStartQueue = + new ShardsCoordinatorQueue(); + + private ConcurrentHashSet _shardRestartWaitingList = + new ConcurrentHashSet(); + + public ShardsCoordinator() + { + //load main stuff + LogSetup.SetupLogger(-1); + _log = LogManager.GetCurrentClassLogger(); + _creds = new BotCredentials(); + + _log.Info("Starting NadekoBot v" + StatsService.BotVersion); + + _key = _creds.RedisKey(); + _redis = ConnectionMultiplexer.Connect("127.0.0.1"); + + new RedisImagesCache(_redis, _creds).Reload(); //reload images into redis + + //setup initial shard statuses + _defaultShardState = new ShardComMessage() + { + ConnectionState = Discord.ConnectionState.Disconnected, + Guilds = 0, + Time = DateTime.UtcNow + }; + var db = _redis.GetDatabase(); + //clear previous statuses + db.KeyDelete(_key + "_shardstats"); + + _shardProcesses = new Process[_creds.TotalShards]; + for (int i = 0; i < _creds.TotalShards; i++) + { + //add it to the list of shards which should be started +#if DEBUG + + if (i > 0) + _shardStartQueue.Enqueue(i); + else + _shardProcesses[i] = Process.GetCurrentProcess(); +#else + _shardStartQueue.Enqueue(i); +#endif + //set the shard's initial state in redis cache + var msg = _defaultShardState.Clone(); + msg.ShardId = i; + //this is to avoid the shard coordinator thinking that + //the shard is unresponsive while startup up + var delay = 45; +#if GLOBAL_NADEKO + delay = 180; +#endif + msg.Time = DateTime.UtcNow + TimeSpan.FromSeconds(delay * (i + 1)); + db.ListRightPush(_key + "_shardstats", + JsonConvert.SerializeObject(msg), + flags: CommandFlags.FireAndForget); + } + + _curProcessId = Process.GetCurrentProcess().Id; + + //subscribe to shardcoord events + var sub = _redis.GetSubscriber(); + + //send is called when shard status is updated. Every 7.5 seconds atm + sub.Subscribe(_key + "_shardcoord_send", + OnDataReceived, + CommandFlags.FireAndForget); + + //restart is called when shzard should be stopped and then started again + sub.Subscribe(_key + "_shardcoord_restart", + OnRestart, + CommandFlags.FireAndForget); + + //called to kill the shard + sub.Subscribe(_key + "_shardcoord_stop", + OnStop, + CommandFlags.FireAndForget); + + //called kill the bot + sub.Subscribe(_key + "_die", + (ch, x) => Environment.Exit(0), + CommandFlags.FireAndForget); + } + + private void OnStop(RedisChannel ch, RedisValue data) + { + var shardId = JsonConvert.DeserializeObject(data); + OnStop(shardId); + } + + private void OnStop(int shardId) + { + var db = _redis.GetDatabase(); + var msg = _defaultShardState.Clone(); + msg.ShardId = shardId; + db.ListSetByIndex(_key + "_shardstats", + shardId, + JsonConvert.SerializeObject(msg), + CommandFlags.FireAndForget); + var p = _shardProcesses[shardId]; + _shardProcesses[shardId] = null; + try { p?.Kill(); } catch { } + try { p?.Dispose(); } catch { } + } + + private void OnRestart(RedisChannel ch, RedisValue data) + { + var shardId = JsonConvert.DeserializeObject(data); + OnStop(shardId); + _shardProcesses[shardId] = StartShard(shardId); + } + + private void OnDataReceived(RedisChannel ch, RedisValue data) + { + var msg = JsonConvert.DeserializeObject(data); + if (msg == null) + return; + var db = _redis.GetDatabase(); + //sets the shard state + db.ListSetByIndex(_key + "_shardstats", + msg.ShardId, + data, + CommandFlags.FireAndForget); + if (msg.ConnectionState == Discord.ConnectionState.Disconnected + || msg.ConnectionState == Discord.ConnectionState.Disconnecting) + { + _log.Error("!!! SHARD {0} IS IN {1} STATE !!!", msg.ShardId, msg.ConnectionState.ToString()); + + OnShardUnavailable(msg.ShardId); + } + else + { + // remove the shard from the waiting list if it's on it, + // because it's connected/connecting now + _shardRestartWaitingList.TryRemove(msg.ShardId); + } + return; + } + + private void OnShardUnavailable(int shardId) + { + //if the shard is dc'd, add it to the restart waiting list + if (!_shardRestartWaitingList.Add(shardId)) + { + //if it's already on the waiting list + //stop the shard + OnStop(shardId); + //add it to the start queue (start the shard) + _shardStartQueue.Enqueue(shardId); + //remove it from the waiting list + _shardRestartWaitingList.TryRemove(shardId); + } + } + + public async Task RunAsync() + { + //this task will complete when the initial start of the shards + //is complete, but will keep running in order to restart shards + //which are disconnected for too long + TaskCompletionSource tsc = new TaskCompletionSource(); + var _ = Task.Run(async () => + { + do + { + //start a shard which is scheduled for start every 6 seconds + while (_shardStartQueue.TryDequeue(out var id)) + { + // if the shard is on the waiting list again + // remove it since it's starting up now + + _shardRestartWaitingList.TryRemove(id); + //if the task is already completed, + //it means the initial shard starting is done, + //and this is an auto-restart + if (tsc.Task.IsCompleted) + { + _log.Warn("Auto-restarting shard {0}", id); + } + var p = StartShard(id); + + _shardProcesses[id] = p; + await Task.Delay(6000).ConfigureAwait(false); + } + tsc.TrySetResult(true); + await Task.Delay(6000).ConfigureAwait(false); + } + while (true); + // ^ keep checking for shards which need to be restarted + }); + + //restart unresponsive shards + _ = Task.Run(async () => + { + //after all shards have started initially + await tsc.Task.ConfigureAwait(false); + while (true) + { + await Task.Delay(15000).ConfigureAwait(false); + try + { + var db = _redis.GetDatabase(); + //get all shards which didn't communicate their status in the last 30 seconds + var all = db.ListRange(_creds.RedisKey() + "_shardstats") + .Select(x => JsonConvert.DeserializeObject(x)); + var statuses = all + .Where(x => x.Time < DateTime.UtcNow - TimeSpan.FromSeconds(30)); + + if (!statuses.Any()) + { +#if DEBUG + for (var i = 0; i < _shardProcesses.Length; i++) + { + var p = _shardProcesses[i]; + if (p == null || p.HasExited) + { + _log.Warn("Scheduling shard {0} for restart because it's process is stopped.", i); + _shardStartQueue.Enqueue(i); + } + } +#endif + } + else + { + foreach (var s in statuses) + { + OnStop(s.ShardId); + _shardStartQueue.Enqueue(s.ShardId); + + //to prevent shards which are already scheduled for restart to be scheduled again + s.Time = DateTime.UtcNow + TimeSpan.FromSeconds(30 * _shardStartQueue.Count); + db.ListSetByIndex(_key + "_shardstats", s.ShardId, + JsonConvert.SerializeObject(s), CommandFlags.FireAndForget); + _log.Warn("Shard {0} is scheduled for a restart because it's unresponsive.", s.ShardId); + } + } + } + catch (Exception ex) { _log.Error(ex); throw; } + } + }); + + await tsc.Task.ConfigureAwait(false); + return; + } + + private Process StartShard(int shardId) + { + return Process.Start(new ProcessStartInfo() + { + FileName = _creds.ShardRunCommand, + Arguments = string.Format(_creds.ShardRunArguments, shardId, _curProcessId, "") + }); + // last "" in format is for backwards compatibility + // because current startup commands have {2} in them probably + } + + public async Task RunAndBlockAsync() + { + try + { + await RunAsync().ConfigureAwait(false); + } + catch (Exception ex) + { + _log.Error(ex); + foreach (var p in _shardProcesses) + { + try { p.Kill(); } catch { } + try { p.Dispose(); } catch { } + } + return; + } + + await Task.Delay(-1); + } + } +} diff --git a/NadekoBot.Core/Services/StandardConversions.cs b/NadekoBot.Core/Services/StandardConversions.cs new file mode 100644 index 00000000..77662da7 --- /dev/null +++ b/NadekoBot.Core/Services/StandardConversions.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Core.Services +{ + public class StandardConversions + { + public static double CelsiusToFahrenheit(double cel) + { + return cel * 1.8f + 32; + } + } +} diff --git a/src/NadekoBot/_Extensions/Extensions.cs b/NadekoBot.Core/_Extensions/Extensions.cs similarity index 77% rename from src/NadekoBot/_Extensions/Extensions.cs rename to NadekoBot.Core/_Extensions/Extensions.cs index d1bd796b..c4e3c85c 100644 --- a/src/NadekoBot/_Extensions/Extensions.cs +++ b/NadekoBot.Core/_Extensions/Extensions.cs @@ -2,7 +2,6 @@ using Discord.Commands; using Discord.WebSocket; using ImageSharp; -using NadekoBot.Services.Discord; using Newtonsoft.Json; using System; using System.Collections.Concurrent; @@ -16,11 +15,57 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using NadekoBot.Common.Collections; using SixLabors.Primitives; +using NadekoBot.Common; +using NadekoBot.Core.Services; +using SixLabors.Shapes; +using System.Numerics; namespace NadekoBot.Extensions { public static class Extensions { + // https://github.com/SixLabors/ImageSharp/tree/master/samples/AvatarWithRoundedCorner + public static void ApplyRoundedCorners(this Image img, float cornerRadius) + { + var corners = BuildCorners(img.Width, img.Height, cornerRadius); + // now we have our corners time to draw them + img.Fill(Rgba32.Transparent, corners, new GraphicsOptions(true) + { + BlenderMode = ImageSharp.PixelFormats.PixelBlenderMode.Src // enforces that any part of this shape that has color is punched out of the background + }); + } + + public static IPathCollection BuildCorners(int imageWidth, int imageHeight, float cornerRadius) + { + // first create a square + var rect = new RectangularePolygon(-0.5f, -0.5f, cornerRadius, cornerRadius); + + // then cut out of the square a circle so we are left with a corner + var cornerToptLeft = rect.Clip(new EllipsePolygon(cornerRadius - 0.5f, cornerRadius - 0.5f, cornerRadius)); + + // corner is now a corner shape positions top left + //lets make 3 more positioned correctly, we can do that by translating the orgional around the center of the image + var center = new Vector2(imageWidth / 2, imageHeight / 2); + + float rightPos = imageWidth - cornerToptLeft.Bounds.Width + 1; + float bottomPos = imageHeight - cornerToptLeft.Bounds.Height + 1; + + // move it across the width of the image - the width of the shape + var cornerTopRight = cornerToptLeft.RotateDegree(90).Translate(rightPos, 0); + var cornerBottomLeft = cornerToptLeft.RotateDegree(-90).Translate(0, bottomPos); + var cornerBottomRight = cornerToptLeft.RotateDegree(180).Translate(rightPos, bottomPos); + + return new PathCollection(cornerToptLeft, cornerBottomLeft, cornerTopRight, cornerBottomRight); + } + + /// + /// First 10 characters of teh bot token. + /// + public static string RedisKey(this IBotCredentials bc) + { + return bc.Token.Substring(0, 10); + } + public static async Task ReplaceAsync(this Regex regex, string input, Func> replacementFn) { var sb = new StringBuilder(); @@ -105,9 +150,6 @@ namespace NadekoBot.Extensions return module; } - //public static async Task> MentionedUsers(this IUserMessage msg) => - - public static void AddRange(this HashSet target, IEnumerable elements) where T : class { foreach (var item in elements) @@ -208,7 +250,7 @@ namespace NadekoBot.Extensions var xOffset = 0; for (int i = 0; i < imgs.Length; i++) { - canvas.DrawImage(imgs[i], 100, default(Size), new Point(xOffset, 0)); + canvas.DrawImage(imgs[i], 100, default, new Point(xOffset, 0)); xOffset += imgs[i].Bounds.Width; } diff --git a/src/NadekoBot/_Extensions/IEnumerableExtensions.cs b/NadekoBot.Core/_Extensions/IEnumerableExtensions.cs similarity index 100% rename from src/NadekoBot/_Extensions/IEnumerableExtensions.cs rename to NadekoBot.Core/_Extensions/IEnumerableExtensions.cs diff --git a/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs b/NadekoBot.Core/_Extensions/IMessageChannelExtensions.cs similarity index 90% rename from src/NadekoBot/_Extensions/IMessageChannelExtensions.cs rename to NadekoBot.Core/_Extensions/IMessageChannelExtensions.cs index 992d7453..1a03290b 100644 --- a/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs +++ b/NadekoBot.Core/_Extensions/IMessageChannelExtensions.cs @@ -55,15 +55,20 @@ namespace NadekoBot.Extensions private static readonly IEmote arrow_left = new Emoji("⬅"); private static readonly IEmote arrow_right = new Emoji("➡"); - public static Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func pageFunc, int? lastPage = null, bool addPaginatedFooter = true) => - channel.SendPaginatedConfirmAsync(client, currentPage, (x) => Task.FromResult(pageFunc(x)), lastPage, addPaginatedFooter); + public static Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, + int currentPage, Func pageFunc, int totalElements, + int itemsPerPage, bool addPaginatedFooter = true) => + channel.SendPaginatedConfirmAsync(client, currentPage, + (x) => Task.FromResult(pageFunc(x)), totalElements, itemsPerPage, addPaginatedFooter); /// /// danny kamisama /// - public static async Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func> pageFunc, int? lastPage = null, bool addPaginatedFooter = true) + public static async Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func> pageFunc, int totalElements, int itemsPerPage, bool addPaginatedFooter = true) { var embed = await pageFunc(currentPage).ConfigureAwait(false); + var lastPage = (totalElements - 1) / itemsPerPage; + if (addPaginatedFooter) embed.AddPaginatedFooter(currentPage, lastPage); @@ -72,7 +77,6 @@ namespace NadekoBot.Extensions if (lastPage == 0) return; - await msg.AddReactionAsync(arrow_left).ConfigureAwait(false); await msg.AddReactionAsync(arrow_right).ConfigureAwait(false); @@ -93,7 +97,7 @@ namespace NadekoBot.Extensions } else if (r.Emote.Name == arrow_right.Name) { - if (lastPage == null || lastPage > currentPage) + if (lastPage > currentPage) { var toSend = await pageFunc(++currentPage).ConfigureAwait(false); if (addPaginatedFooter) diff --git a/src/NadekoBot/_Extensions/IUserExtensions.cs b/NadekoBot.Core/_Extensions/IUserExtensions.cs similarity index 98% rename from src/NadekoBot/_Extensions/IUserExtensions.cs rename to NadekoBot.Core/_Extensions/IUserExtensions.cs index 89650f21..d00d9cb3 100644 --- a/src/NadekoBot/_Extensions/IUserExtensions.cs +++ b/NadekoBot.Core/_Extensions/IUserExtensions.cs @@ -1,5 +1,5 @@ using Discord; -using NadekoBot.Services.Database.Models; +using NadekoBot.Core.Services.Database.Models; using System; using System.IO; using System.Threading.Tasks; diff --git a/src/NadekoBot/_Extensions/MusicExtensions.cs b/NadekoBot.Core/_Extensions/MusicExtensions.cs similarity index 100% rename from src/NadekoBot/_Extensions/MusicExtensions.cs rename to NadekoBot.Core/_Extensions/MusicExtensions.cs diff --git a/src/NadekoBot/_Extensions/NumberExtensions.cs b/NadekoBot.Core/_Extensions/NumberExtensions.cs similarity index 100% rename from src/NadekoBot/_Extensions/NumberExtensions.cs rename to NadekoBot.Core/_Extensions/NumberExtensions.cs diff --git a/src/NadekoBot/_Extensions/StringExtensions.cs b/NadekoBot.Core/_Extensions/StringExtensions.cs similarity index 97% rename from src/NadekoBot/_Extensions/StringExtensions.cs rename to NadekoBot.Core/_Extensions/StringExtensions.cs index 0b7adf65..0f4edc5d 100644 --- a/src/NadekoBot/_Extensions/StringExtensions.cs +++ b/NadekoBot.Core/_Extensions/StringExtensions.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.IO; using System.Linq; using System.Text; @@ -9,6 +10,9 @@ namespace NadekoBot.Extensions { public static class StringExtensions { + public static T MapJson(this string str) + => JsonConvert.DeserializeObject(str); + public static string StripHTML(this string input) { return Regex.Replace(input, "<.*?>", String.Empty); diff --git a/src/NadekoBot/_libs/32/libsodium.dll b/NadekoBot.Core/_libs/32/libsodium.dll similarity index 100% rename from src/NadekoBot/_libs/32/libsodium.dll rename to NadekoBot.Core/_libs/32/libsodium.dll diff --git a/src/NadekoBot/_libs/32/opus.dll b/NadekoBot.Core/_libs/32/opus.dll similarity index 100% rename from src/NadekoBot/_libs/32/opus.dll rename to NadekoBot.Core/_libs/32/opus.dll diff --git a/src/NadekoBot/_libs/64/libsodium.dll b/NadekoBot.Core/_libs/64/libsodium.dll similarity index 100% rename from src/NadekoBot/_libs/64/libsodium.dll rename to NadekoBot.Core/_libs/64/libsodium.dll diff --git a/src/NadekoBot/_libs/64/opus.dll b/NadekoBot.Core/_libs/64/opus.dll similarity index 100% rename from src/NadekoBot/_libs/64/opus.dll rename to NadekoBot.Core/_libs/64/opus.dll diff --git a/NadekoBot.iss b/NadekoBot.iss index c8a73ff2..a1fc56c6 100644 --- a/NadekoBot.iss +++ b/NadekoBot.iss @@ -21,6 +21,7 @@ DisableWelcomePage=no [Files] ;install Source: "src\NadekoBot\bin\Release\netcoreapp2.0\{#target}\publish\*"; DestDir: "{app}\{#sysfolder}"; Permissions: users-full; Flags: recursesubdirs onlyifdoesntexist ignoreversion createallsubdirs; Excludes: "*.pdb, *.db" +Source: "src\NadekoBot\bin\Release\netcoreapp2.0\{#target}\publish\data\command_strings.json"; DestDir: "{app}\{#sysfolder}\data"; DestName: "command_strings.json"; Permissions: users-full; Flags: skipifsourcedoesntexist ignoreversion createallsubdirs recursesubdirs; ;rename credentials example to credentials, but don't overwrite if it exists ;Source: "src\NadekoBot\bin\Release\netcoreapp2.0\{#target}\publish\credentials_example.json"; DestName: "credentials.json"; DestDir: "{app}\{#sysfolder}"; Permissions: users-full; Flags: skipifsourcedoesntexist onlyifdoesntexist; diff --git a/NadekoBot.sln b/NadekoBot.sln index 42b343e5..2be3656b 100644 --- a/NadekoBot.sln +++ b/NadekoBot.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26730.3 +VisualStudioVersion = 15.0.27004.2005 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{04929013-5BAB-42B0-B9B2-8F2BB8F16AF2}" EndProject @@ -9,10 +9,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject global.json = global.json NadekoBot.iss = NadekoBot.iss + Performance1.psess = Performance1.psess EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NadekoBot", "src\NadekoBot\NadekoBot.csproj", "{45EC1473-C678-4857-A544-07DFE0D0B478}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NadekoBot.Core", "NadekoBot.Core\NadekoBot.Core.csproj", "{A6CCEFBD-DCF2-482C-9643-47664683548F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -26,12 +29,19 @@ Global {45EC1473-C678-4857-A544-07DFE0D0B478}.GlobalNadeko|Any CPU.Build.0 = Release|Any CPU {45EC1473-C678-4857-A544-07DFE0D0B478}.Release|Any CPU.ActiveCfg = Release|Any CPU {45EC1473-C678-4857-A544-07DFE0D0B478}.Release|Any CPU.Build.0 = Release|Any CPU + {A6CCEFBD-DCF2-482C-9643-47664683548F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6CCEFBD-DCF2-482C-9643-47664683548F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6CCEFBD-DCF2-482C-9643-47664683548F}.GlobalNadeko|Any CPU.ActiveCfg = Release|Any CPU + {A6CCEFBD-DCF2-482C-9643-47664683548F}.GlobalNadeko|Any CPU.Build.0 = Release|Any CPU + {A6CCEFBD-DCF2-482C-9643-47664683548F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6CCEFBD-DCF2-482C-9643-47664683548F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {45EC1473-C678-4857-A544-07DFE0D0B478} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} + {A6CCEFBD-DCF2-482C-9643-47664683548F} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {5F3F555C-855F-4BE8-B526-D062D3E8ACA4} diff --git a/NuGet.Config b/NuGet.Config index e482807c..df25e4fe 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -1,7 +1,9 @@  - - + + + + - + \ No newline at end of file diff --git a/build.ps1 b/build.ps1 deleted file mode 100644 index ba45cce3..00000000 --- a/build.ps1 +++ /dev/null @@ -1,4 +0,0 @@ -appveyor-retry dotnet restore NadekoBot.sln -v Minimal /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG" -if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } -dotnet build NadekoBot.sln -c "Release" /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG" -if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } \ No newline at end of file diff --git a/docs/Commands List.md b/docs/Commands List.md index c6f13267..bd8247be 100644 --- a/docs/Commands List.md +++ b/docs/Commands List.md @@ -1,6 +1,6 @@ You can support the project on patreon: or paypal: -##Table of contents +##Table Of Contents - [Help](#help) - [Administration](#administration) - [CustomReactions](#customreactions) @@ -16,7 +16,7 @@ You can support the project on patreon: or paypa ### Administration -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.delmsgoncmd` | Toggles the automatic deletion of the user's successful command message to prevent chat flood. **Requires Administrator server permission.** | `.delmsgoncmd` `.setrole` `.sr` | Sets a role for a given user. **Requires ManageRoles server permission.** | `.sr @User Guest` @@ -36,17 +36,21 @@ Commands and aliases | Description | Usage `.setchanlname` `.schn` | Changes the name of the current channel. **Requires ManageChannels server permission.** | `.schn NewName` `.mentionrole` `.menro` | Mentions every person from the provided role or roles (separated by a ',') on this server. **Requires MentionEveryone server permission.** | `.menro RoleName` `.donators` | List of the lovely people who donated to keep this project alive. | `.donators` -`.donadd` | Add a donator to the database. **Bot owner only** | `.donadd Donate Amount` +`.donadd` | Add a donator to the database. **Bot Owner Only** | `.donadd Donate Amount` `.autoassignrole` `.aar` | Automaticaly assigns a specified role to every user who joins the server. **Requires ManageRoles server permission.** | `.aar to disable` or `.aar Role Name to enable` +`.execsql` | Executes an sql command and returns the number of affected rows. Dangerous. **Bot Owner Only** | `.execsql UPDATE Currency SET Amount=Amount+1234` +`.deletewaifus` | Deletes everything from WaifuUpdates and WaifuInfo tables. **Bot Owner Only** | `.deletewaifus` +`.deletecurrency` | Deletes everything from Currency and CurrencyTransactions. **Bot Owner Only** | `.deletecurrency` +`.deleteplaylists` | Deletes everything from MusicPlaylists. **Bot Owner Only** | `.deleteplaylists` +`.deleteexp` | deleteexp **Bot Owner Only** | `deleteexp` `.gvc` | Toggles game voice channel feature in the voice channel you're currently in. Users who join the game voice channel will get automatically redirected to the voice channel with the name of their current game, if it exists. Can't move users to channels that the bot has no connect permission for. One per server. **Requires Administrator server permission.** | `.gvc` `.languageset` `.langset` | Sets this server's response language. If bot's response strings have been translated to that language, bot will use that language in this server. Reset by using `default` as the locale name. Provide no arguments to see currently set language. | `.langset de-DE ` or `.langset default` `.langsetdefault` `.langsetd` | Sets the bot's default response language. All servers which use a default locale will use this one. Setting to `default` will use the host's current culture. Provide no arguments to see currently set language. | `.langsetd en-US` or `.langsetd default` `.languageslist` `.langli` | List of languages for which translation (or part of it) exist atm. | `.langli` -`.logserver` | Enables or Disables ALL log events. If enabled, all log events will log to this channel. **Requires Administrator server permission.** **Bot owner only** | `.logserver enable` or `.logserver disable` -`.logignore` | Toggles whether the `.logserver` command ignores this channel. Useful if you have hidden admin channel and public log channel. **Requires Administrator server permission.** **Bot owner only** | `.logignore` -`.logevents` | Shows a list of all events you can subscribe to with `.log` **Requires Administrator server permission.** **Bot owner only** | `.logevents` -`.log` | Toggles logging event. Disables it if it is active anywhere on the server. Enables if it isn't active. Use `.logevents` to see a list of all events you can subscribe to. **Requires Administrator server permission.** **Bot owner only** | `.log userpresence` or `.log userbanned` -`.migratedata` | Migrate data from old bot configuration **Bot owner only** | `.migratedata` +`.logserver` | Enables or Disables ALL log events. If enabled, all log events will log to this channel. **Requires Administrator server permission.** **Bot Owner Only** | `.logserver enable` or `.logserver disable` +`.logignore` | Toggles whether the `.logserver` command ignores this channel. Useful if you have hidden admin channel and public log channel. **Requires Administrator server permission.** **Bot Owner Only** | `.logignore` +`.logevents` | Shows a list of all events you can subscribe to with `.log` **Requires Administrator server permission.** **Bot Owner Only** | `.logevents` +`.log` | Toggles logging event. Disables it if it is active anywhere on the server. Enables if it isn't active. Use `.logevents` to see a list of all events you can subscribe to. **Requires Administrator server permission.** **Bot Owner Only** | `.log userpresence` or `.log userbanned` `.setmuterole` | Sets a name of the role which will be assigned to people who should be muted. Default is nadeko-mute. **Requires ManageRoles server permission.** | `.setmuterole Silenced` `.mute` | Mutes a mentioned user both from speaking and chatting. You can also specify time in minutes (up to 1440) for how long the user should be muted. **Requires ManageRoles server permission.** **Requires MuteMembers server permission.** | `.mute @Someone` or `.mute 30 @Someone` `.unmute` | Unmutes a mentioned user previously muted with `.mute` command. **Requires ManageRoles server permission.** **Requires MuteMembers server permission.** | `.unmute @Someone` @@ -54,43 +58,46 @@ Commands and aliases | Description | Usage `.chatunmute` | Removes a mute role previously set on a mentioned user with `.chatmute` which prevented him from chatting in text channels. **Requires ManageRoles server permission.** | `.chatunmute @Someone` `.voicemute` | Prevents a mentioned user from speaking in voice channels. **Requires MuteMembers server permission.** | `.voicemute @Someone` `.voiceunmute` | Gives a previously voice-muted user a permission to speak. **Requires MuteMembers server permission.** | `.voiceunmute @Someguy` -`.rotateplaying` `.ropl` | Toggles rotation of playing status of the dynamic strings you previously specified. **Bot owner only** | `.ropl` -`.addplaying` `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: `%servers%`, `%users%`, `%playing%`, `%queued%`, `%time%`, `%shardid%`, `%shardcount%`, `%shardguilds%`. **Bot owner only** | `.adpl` -`.listplaying` `.lipl` | Lists all playing statuses with their corresponding number. **Bot owner only** | `.lipl` -`.removeplaying` `.rmpl` `.repl` | Removes a playing string on a given number. **Bot owner only** | `.rmpl` +`.rotateplaying` `.ropl` | Toggles rotation of playing status of the dynamic strings you previously specified. **Bot Owner Only** | `.ropl` +`.addplaying` `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: `%servers%`, `%users%`, `%playing%`, `%queued%`, `%time%`, `%shardid%`, `%shardcount%`, `%shardguilds%`. **Bot Owner Only** | `.adpl` +`.listplaying` `.lipl` | Lists all playing statuses with their corresponding number. **Bot Owner Only** | `.lipl` +`.removeplaying` `.rmpl` `.repl` | Removes a playing string on a given number. **Bot Owner Only** | `.rmpl` `.prefix` | Sets this server's prefix for all bot commands. Provide no arguments to see the current server prefix. | `.prefix +` -`.defprefix` | Sets bot's default prefix for all bot commands. Provide no arguments to see the current default prefix. This will not change this server's current prefix. **Bot owner only** | `.defprefix +` +`.defprefix` | Sets bot's default prefix for all bot commands. Provide no arguments to see the current default prefix. This will not change this server's current prefix. **Bot Owner Only** | `.defprefix +` `.antiraid` | Sets an anti-raid protection on the server. First argument is number of people which will trigger the protection. Second one is a time interval in which that number of people needs to join in order to trigger the protection, and third argument is punishment for those people (Kick, Ban, Mute) **Requires Administrator server permission.** | `.antiraid 5 20 Kick` -`.antispam` | Stops people from repeating same message X times in a row. You can specify to either mute, kick or ban the offenders. Max message count is 10. **Requires Administrator server permission.** | `.antispam 3 Mute` or `.antispam 4 Kick` or `.antispam 6 Ban` +`.antispam` | Stops people from repeating same message X times in a row. You can specify to either mute, kick or ban the offenders. If you're using mute, you can add a number of seconds at the end to use a timed mute. Max message count is 10. **Requires Administrator server permission.** | `.antispam 3 Mute` or `.antispam 4 Kick` or `.antispam 6 Ban` `.antispamignore` | Toggles whether antispam ignores current channel. Antispam must be enabled. **Requires Administrator server permission.** | `.antispamignore` `.antilist` `.antilst` | Shows currently enabled protection features. | `.antilist` `.prune` `.clear` | `.prune` removes all Nadeko's messages in the last 100 messages. `.prune X` removes last `X` number of messages from the channel (up to 100). `.prune @Someone` removes all Someone's messages in the last 100 messages. `.prune @Someone X` removes last `X` number of 'Someone's' messages in the channel. | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` `.slowmode` | Toggles slowmode. Disable by specifying no parameters. To enable, specify a number of messages each user can send, and an interval in seconds. For example 1 message every 5 seconds. **Requires ManageMessages server permission.** | `.slowmode 1 5` or `.slowmode` `.slowmodewl` | Ignores a role or a user from the slowmode feature. **Requires ManageMessages server permission.** | `.slowmodewl SomeRole` or `.slowmodewl AdminDude` `.adsarm` | Toggles the automatic deletion of confirmations for `.iam` and `.iamn` commands. **Requires ManageMessages server permission.** | `.adsarm` -`.asar` | Adds a role to the list of self-assignable roles. **Requires ManageRoles server permission.** | `.asar Gamer` +`.asar` | Adds a role to the list of self-assignable roles. You can also specify a group. If 'Exclusive self-assignable roles' feature is enabled, users will be able to pick one role per group. **Requires ManageRoles server permission.** | `.asar Gamer` or `.asar 1 Alliance` or `.asar 1 Horde` `.rsar` | Removes a specified role from the list of self-assignable roles. **Requires ManageRoles server permission.** | `.rsar` `.lsar` | Lists all self-assignable roles. | `.lsar` -`.togglexclsar` `.tesar` | Toggles whether the self-assigned roles are exclusive. (So that any person can have only one of the self assignable roles) **Requires ManageRoles server permission.** | `.tesar` +`.togglexclsar` `.tesar` | Toggles whether the self-assigned roles are exclusive. While enabled, users can only have one self-assignable role per group. **Requires ManageRoles server permission.** | `.tesar` `.iam` | Adds a role to you that you choose. Role must be on a list of self-assignable roles. | `.iam Gamer` `.iamnot` `.iamn` | Removes a specified role from you. Role must be on a list of self-assignable roles. | `.iamn Gamer` -`.scadd` | Adds a command to the list of commands which will be executed automatically in the current channel, in the order they were added in, by the bot when it startups up. **Bot owner only** | `.scadd .stats` -`.sclist` | Lists all startup commands in the order they will be executed in. **Bot owner only** | `.sclist` -`.wait` | Used only as a startup command. Waits a certain number of miliseconds before continuing the execution of the following startup commands. **Bot owner only** | `.wait 3000` -`.scrm` | Removes a startup command with the provided command text. **Bot owner only** | `.scrm .stats` -`.scclr` | Removes all startup commands. **Bot owner only** | `.scclr` -`.fwmsgs` | Toggles forwarding of non-command messages sent to bot's DM to the bot owners **Bot owner only** | `.fwmsgs` -`.fwtoall` | Toggles whether messages will be forwarded to all bot owners or only to the first one specified in the credentials.json file **Bot owner only** | `.fwtoall` -`.leave` | Makes Nadeko leave the server. Either server name or server ID is required. **Bot owner only** | `.leave 123123123331` -`.die` | Shuts the bot down. **Bot owner only** | `.die` -`.setname` `.newnm` | Gives the bot a new name. **Bot owner only** | `.newnm BotName` +`.scadd` | Adds a command to the list of commands which will be executed automatically in the current channel, in the order they were added in, by the bot when it startups up. **Bot Owner Only** | `.scadd .stats` +`.sclist` | Lists all startup commands in the order they will be executed in. **Bot Owner Only** | `.sclist` +`.wait` | Used only as a startup command. Waits a certain number of miliseconds before continuing the execution of the following startup commands. **Bot Owner Only** | `.wait 3000` +`.scrm` | Removes a startup command with the provided command text. **Bot Owner Only** | `.scrm .stats` +`.scclr` | Removes all startup commands. **Bot Owner Only** | `.scclr` +`.fwmsgs` | Toggles forwarding of non-command messages sent to bot's DM to the bot owners **Bot Owner Only** | `.fwmsgs` +`.fwtoall` | Toggles whether messages will be forwarded to all bot owners or only to the first one specified in the credentials.json file **Bot Owner Only** | `.fwtoall` +`.shardstats` | Stats for shards. Paginated with 25 shards per page. | `.shardstats` or `.shardstats 2` +`.restartshard` | Try (re)connecting a shard with a certain shardid when it dies. No one knows will it work. Keep an eye on the console for errors. **Bot Owner Only** | `.restartshard 2` +`.leave` | Makes Nadeko leave the server. Either server name or server ID is required. **Bot Owner Only** | `.leave 123123123331` +`.die` | Shuts the bot down. **Bot Owner Only** | `.die` +`.restart` | Restarts the bot. Might not work. **Bot Owner Only** | `.restart` +`.setname` `.newnm` | Gives the bot a new name. **Bot Owner Only** | `.newnm BotName` `.setnick` | Changes the nickname of the bot on this server. You can also target other users to change their nickname. **Requires ManageNicknames server permission.** | `.setnick BotNickname` or `.setnick @SomeUser New Nickname` -`.setstatus` | Sets the bot's status. (Online/Idle/Dnd/Invisible) **Bot owner only** | `.setstatus Idle` -`.setavatar` `.setav` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot owner only** | `.setav http://i.imgur.com/xTG3a1I.jpg` -`.setgame` | Sets the bots game. **Bot owner only** | `.setgame with snakes` -`.setstream` | Sets the bots stream. First argument is the twitch link, second argument is stream name. **Bot owner only** | `.setstream TWITCHLINK Hello` -`.send` | Sends a message to someone on a different server through the bot. Separate server and channel/user ids with `|` and prefix the channel id with `c:` and the user id with `u:`. **Bot owner only** | `.send serverid|c:channelid message` or `.send serverid|u:userid message` -`.reloadimages` | Reloads images bot is using. Safe to use even when bot is being used heavily. **Bot owner only** | `.reloadimages` +`.setstatus` | Sets the bot's status. (Online/Idle/Dnd/Invisible) **Bot Owner Only** | `.setstatus Idle` +`.setavatar` `.setav` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot Owner Only** | `.setav http://i.imgur.com/xTG3a1I.jpg` +`.setgame` | Sets the bots game. **Bot Owner Only** | `.setgame with snakes` +`.setstream` | Sets the bots stream. First argument is the twitch link, second argument is stream name. **Bot Owner Only** | `.setstream TWITCHLINK Hello` +`.send` | Sends a message to someone on a different server through the bot. Separate server and channel/user ids with `|` and prefix the channel id with `c:` and the user id with `u:`. **Bot Owner Only** | `.send serverid|c:channelid message` or `.send serverid|u:userid message` +`.reloadimages` | Reloads images bot is using. Safe to use even when bot is being used heavily. **Bot Owner Only** | `.reloadimages` `.greetdel` `.grdel` | Sets the time it takes (in seconds) for greet messages to be auto-deleted. Set it to 0 to disable automatic deletion. **Requires ManageServer server permission.** | `.greetdel 0` or `.greetdel 30` `.greet` | Toggles anouncements on the current channel when someone joins the server. **Requires ManageServer server permission.** | `.greet` `.greetmsg` | Sets a new join announcement message which will be shown in the server's channel. Type `%user%` if you want to mention the new member. Using it with no message will show the current greet message. You can use embed json from instead of a regular text, if you want the message to be embedded. **Requires ManageServer server permission.** | `.greetmsg Welcome, %user%.` @@ -119,9 +126,10 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### CustomReactions -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.addcustreact` `.acr` | Add a custom reaction with a trigger and a response. Running this command in server requires the Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: | `.acr "hello" Hi there %user%` +`.editcustreact` `.ecr` | Edits the custom reaction's response given its ID. | `.ecr 123 I'm a magical girl` `.listcustreact` `.lcr` | Lists global or server custom reactions (20 commands per page). Running the command in DM will list global custom reactions, while running it in server will list that server's custom reactions. Specifying `all` argument instead of the number will DM you a text file with a list of all custom reactions. | `.lcr 1` or `.lcr all` `.listcustreactg` `.lcrg` | Lists global or server custom reactions (20 commands per page) grouped by trigger, and show a number of responses for each. Running the command in DM will list global custom reactions, while running it in server will list that server's custom reactions. | `.lcrg 1` `.showcustreact` `.scr` | Shows a custom reaction's response on a given ID. | `.scr 1` @@ -129,27 +137,31 @@ Commands and aliases | Description | Usage `.crca` | Toggles whether the custom reaction will trigger if the triggering message contains the keyword (instead of only starting with it). | `.crca 44` `.crdm` | Toggles whether the response message of the custom reaction will be sent as a direct message. | `.crdm 44` `.crad` | Toggles whether the message triggering the custom reaction will be automatically deleted. | `.crad 59` -`.crstatsclear` | Resets the counters on `.crstats`. You can specify a trigger to clear stats only for that trigger. **Bot owner only** | `.crstatsclear` or `.crstatsclear rng` +`.crstatsclear` | Resets the counters on `.crstats`. You can specify a trigger to clear stats only for that trigger. **Bot Owner Only** | `.crstatsclear` or `.crstatsclear rng` `.crstats` | Shows a list of custom reactions and the number of times they have been executed. Paginated with 10 per page. Use `.crstatsclear` to reset the counters. | `.crstats` or `.crstats 3` ###### [Back to ToC](#table-of-contents) ### Gambling -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- +`.timely` | Use to claim your 'timely' currency. Bot owner has to specify the amount and the period on how often you can claim your currency. | `.timely` +`.timelyreset` | Resets all user timeouts on `.timely` command. **Bot Owner Only** | `.timelyreset` +`.timelyset` | Sets the 'timely' currency allowance amount for users. Second argument is period in hours, default is 24 hours. **Bot Owner Only** | `.timelyset 100` or `.timelyset 50 12` `.raffle` | Prints a name and ID of a random user from the online list from the (optional) role. | `.raffle` or `.raffle RoleName` `.$` `.currency` `.$$` `.$$$` `.cash` `.cur` | Check how much currency a person has. (Defaults to yourself) | `.$` or `.$ @SomeGuy` `.give` | Give someone a certain amount of currency. | `.give 1 @SomeGuy` -`.award` | Awards someone a certain amount of currency. You can also specify a role name to award currency to all users in a role. **Bot owner only** | `.award 100 @person` or `.award 5 Role Of Gamblers` -`.take` | Takes a certain amount of currency from someone. **Bot owner only** | `.take 1 @SomeGuy` +`.award` | Awards someone a certain amount of currency. You can also specify a role name to award currency to all users in a role. **Bot Owner Only** | `.award 100 @person` or `.award 5 Role Of Gamblers` +`.take` | Takes a certain amount of currency from someone. **Bot Owner Only** | `.take 1 @SomeGuy` `.betroll` `.br` | Bets a certain amount of currency and rolls a dice. Rolling over 66 yields x2 of your currency, over 90 - x4 and 100 x10. | `.br 5` `.leaderboard` `.lb` | Displays the bot's currency leaderboard. | `.lb` `.race` | Starts a new animal race. | `.race` `.joinrace` `.jr` | Joins a new race. You can specify an amount of currency for betting (optional). You will get YourBet*(participants-1) back if you win. | `.jr` or `.jr 5` -`.startevent` | Starts one of the events seen on public nadeko. `reaction` and `sneakygamestatus` are the only 2 available now. **Bot owner only** | `.startevent reaction` +`.startevent` | Starts one of the events seen on public nadeko. `reaction` and `sneakygamestatus` are the only 2 available now. **Bot Owner Only** | `.startevent reaction` +`.rafflecur` | Starts or joins a currency raffle with a specified amount. Users who join the raffle will lose the amount of currency specified and add it to the pot. After 30 seconds, random winner will be selected who will receive the whole pot. There is also a `mixed` mode in which the users will be able to join the game with any amount of currency, and have their chances be proportional to the amount they've bet. | `.rafflecur 20` or `.rafflecur mixed 15` `.roll` | Rolls 0-100. If you supply a number `X` it rolls up to 30 normal dice. If you split 2 numbers with letter `d` (`xdy`) it will roll `X` dice from 1 to `y`. `Y` can be a letter 'F' if you want to roll fate dice instead of dnd. | `.roll` or `.roll 7` or `.roll 3d5` or `.roll 5dF` `.rolluo` | Rolls `X` normal dice (up to 30) unordered. If you split 2 numbers with letter `d` (`xdy`) it will roll `X` dice from 1 to `y`. | `.rolluo` or `.rolluo 7` or `.rolluo 3d5` -`.nroll` | Rolls in a given range. | `.nroll 5` (rolls 0-5)` or `.nroll 5-15` +`.nroll` | Rolls in a given range. If you specify just one number instead of the range, it will role from 0 to that number. | `.nroll 5` or `.nroll 5-15` `.draw` | Draws a card from this server's deck. You can draw up to 10 cards by supplying a number of cards to draw. | `.draw` or `.draw 5` `.drawnew` | Draws a card from the NEW deck of cards. You can draw up to 10 cards by supplying a number of cards to draw. | `.drawnew` or `.drawnew 5` `.deckshuffle` `.dsh` | Reshuffles all cards back into the deck. | `.dsh` @@ -160,10 +172,11 @@ Commands and aliases | Description | Usage `.shopadd` | Adds an item to the shop by specifying type price and name. Available types are role and list. **Requires Administrator server permission.** | `.shopadd role 1000 Rich` `.shoplistadd` | Adds an item to the list of items for sale in the shop entry given the index. You usually want to run this command in the secret channel, so that the unique items are not leaked. **Requires Administrator server permission.** | `.shoplistadd 1 Uni-que-Steam-Key` `.shoprem` `.shoprm` | Removes an item from the shop by its ID. **Requires Administrator server permission.** | `.shoprm 1` -`.slotstats` | Shows the total stats of the slot command for this bot's session. **Bot owner only** | `.slotstats` -`.slottest` | Tests to see how much slots payout for X number of plays. **Bot owner only** | `.slottest 1000` +`.slotstats` | Shows the total stats of the slot command for this bot's session. **Bot Owner Only** | `.slotstats` +`.slottest` | Tests to see how much slots payout for X number of plays. **Bot Owner Only** | `.slottest 1000` `.slot` | Play Nadeko slots. Max bet is 9999. 1.5 second cooldown per user. | `.slot 5` `.claimwaifu` `.claim` | Claim a waifu for yourself by spending currency. You must spend at least 10% more than her current value unless she set `.affinity` towards you. | `.claim 50 @Himesama` +`.waifutransfer` | Transfer the ownership of one of your waifus to another user. You must pay 10% of your waifu's value. | `.waifutransfer @ExWaifu @NewOwner` `.divorce` | Releases your claim on a specific waifu. You will get some of the money you've spent back unless that waifu has an affinity towards you. 6 hours cooldown. | `.divorce @CheatingSloot` `.affinity` | Sets your affinity towards someone you want to be claimed by. Setting affinity will reduce their `.claim` on you by 20%. You can leave second argument empty to clear your affinity. 30 minutes cooldown. | `.affinity @MyHusband` or `.affinity` `.waifus` `.waifulb` | Shows top 9 waifus. You can specify another page to show other waifus. | `.waifus` or `.waifulb 3` @@ -174,7 +187,7 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### Games -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.choose` | Chooses a thing from a list of things | `.choose Get up;Sleep;Sleep more` `.8ball` | Ask the 8ball a yes/no question. | `.8ball Is b1nzy a nice guy?` @@ -197,9 +210,9 @@ Commands and aliases | Description | Usage `.pollend` | Stops active poll on this server and prints the results in this channel. **Requires ManageMessages server permission.** | `.pollend` `.typestart` | Starts a typing contest. | `.typestart` `.typestop` | Stops a typing contest on the current channel. | `.typestop` -`.typeadd` | Adds a new article to the typing contest. **Bot owner only** | `.typeadd wordswords` +`.typeadd` | Adds a new article to the typing contest. **Bot Owner Only** | `.typeadd wordswords` `.typelist` | Lists added typing articles with their IDs. 15 per page. | `.typelist` or `.typelist 3` -`.typedel` | Deletes a typing article given the ID. **Bot owner only** | `.typedel 3` +`.typedel` | Deletes a typing article given the ID. **Bot Owner Only** | `.typedel 3` `.tictactoe` `.ttt` | Starts a game of tic tac toe. Another user must run the command in the same channel in order to accept the challenge. Use numbers 1-9 to play. 15 seconds per move. | `.ttt` `.trivia` `.t` | Starts a game of trivia. You can add `nohint` to prevent hints. First player to get to 10 points wins by default. You can specify a different number. 30 seconds per question. | `.t` or `.t 5 nohint` `.tl` | Shows a current trivia leaderboard. | `.tl` @@ -208,19 +221,19 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### Help -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.modules` `.mdls` | Lists all bot modules. | `.modules` `.commands` `.cmds` | List all of the bot's commands from a certain module. You can either specify the full name or only the first few letters of the module name. | `.commands Administration` or `.cmds Admin` `.help` `.h` | Either shows a help for a single command, or DMs you help link if no arguments are specified. | `.h .cmds` or `.h` -`.hgit` | Generates the commandlist.md file. **Bot owner only** | `.hgit` +`.hgit` | Generates the commandlist.md file. **Bot Owner Only** | `.hgit` `.readme` `.guide` | Sends a readme and a guide links to the channel. | `.readme` or `.guide` `.donate` | Instructions for helping the project financially. | `.donate` ###### [Back to ToC](#table-of-contents) ### Music -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.play` `.start` | If no arguments are specified, acts as `.next 1` command. If you specify a song number, it will jump to that song. If you specify a search query, acts as a `.q` command | `.play` or `.play 5` or `.play Dream Of Venice` `.queue` `.q` `.yq` | Queue a song using keywords or a link. Bot will join your voice channel. **You must be in a voice channel**. | `.q Dream Of Venice` @@ -229,13 +242,14 @@ Commands and aliases | Description | Usage `.listqueue` `.lq` | Lists 10 currently queued songs per page. Default page is 1. | `.lq` or `.lq 2` `.next` `.n` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. You can skip multiple songs, but in that case songs will not be requeued if .rcs or .rpl is enabled. | `.n` or `.n 5` `.stop` `.s` | Stops the music and preserves the current song index. Stays in the channel. | `.s` +`.autodisconnect` `.autodc` | Toggles whether the bot should disconnect from the voice channel once it's done playing all of the songs. | `.autodc` `.destroy` `.d` | Completely stops the music and unbinds the bot from the channel. (may cause weird behaviour) | `.d` `.pause` `.p` | Pauses or Unpauses the song. | `.p` `.volume` `.vol` | Sets the music playback volume (0-100%) | `.vol 50` `.defvol` `.dv` | Sets the default music volume when music playback is started (0-100). Persists through restarts. | `.dv 80` `.songremove` `.srm` | Remove a song by its # in the queue, or 'all' to remove all songs from the queue and reset the song index. | `.srm 5` `.playlists` `.pls` | Lists all playlists. Paginated, 20 per page. Default page is 0. | `.pls 1` -`.deleteplaylist` `.delpls` | Deletes a saved playlist. Works only if you made it or if you are the bot owner. | `.delpls animu-5` +`.deleteplaylist` `.delpls` | Deletes a saved playlist using its id. Works only if you made it or if you are the bot owner. | `.delpls 5` `.save` | Saves a playlist under a certain name. Playlist name must be no longer than 20 characters and must not contain dashes. | `.save classical1` `.load` | Loads a saved playlist using its ID. Use `.pls` to list all saved playlists and `.save` to save new ones. | `.load 5` `.fairplay` `.fp` | Toggles fairplay. While enabled, the bot will prioritize songs from users who didn't have their song recently played instead of the song's position in the queue. | `.fp` @@ -246,8 +260,8 @@ Commands and aliases | Description | Usage `.shuffle` `.sh` `.plsh` | Shuffles the current playlist. | `.plsh` `.playlist` `.pl` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. | `.pl ` `.radio` `.ra` | Queues a radio stream from a link. It can be a direct mp3 radio stream, .m3u, .pls .asx or .xspf (Usage Video: ) | `.ra radio link here` -`.local` `.lo` | Queues a local file by specifying a full path. **Bot owner only** | `.lo C:/music/mysong.mp3` -`.localplaylst` `.lopl` | Queues all songs from a directory. **Bot owner only** | `.lopl C:/music/classical` +`.local` `.lo` | Queues a local file by specifying a full path. **Bot Owner Only** | `.lo C:/music/mysong.mp3` +`.localplaylst` `.lopl` | Queues all songs from a directory. **Bot Owner Only** | `.lopl C:/music/classical` `.move` `.mv` | Moves the bot to your voice channel. (works only if music is already playing) | `.mv` `.movesong` `.ms` | Moves a song from one position to another. | `.ms 5>3` `.setmaxqueue` `.smq` | Sets a maximum queue size. Supply 0 or no argument to have no limit. | `.smq 50` or `.smq` @@ -260,7 +274,7 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### NSFW -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.autohentai` | Posts a hentai every X seconds with a random tag from the provided tags. Use `|` to separate tags. 20 seconds minimum. Provide no arguments to disable. **Requires ManageMessages channel permission.** | `.autohentai 30 yuri|tail|long_hair` or `.autohentai` `.autoboobs` | Posts a boobs every X seconds. 20 seconds minimum. Provide no arguments to disable. **Requires ManageMessages channel permission.** | `.autoboobs 30` or `.autoboobs` @@ -276,12 +290,12 @@ Commands and aliases | Description | Usage `.boobs` | Real adult content. | `.boobs` `.butts` `.ass` `.butt` | Real adult content. | `.butts` or `.ass` `.nsfwtagbl` `.nsfwtbl` | Toggles whether the tag is blacklisted or not in nsfw searches. Provide no parameters to see the list of blacklisted tags. | `.nsfwtbl poop` -`.nsfwcc` | Clears nsfw cache. **Bot owner only** | `.nsfwcc` +`.nsfwcc` | Clears nsfw cache. **Bot Owner Only** | `.nsfwcc` ###### [Back to ToC](#table-of-contents) ### Permissions -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.verbose` `.v` | Sets whether to show when a command/module is blocked. | `.verbose true` `.permrole` `.pr` | Sets a role which can change permissions. Supply no parameters to see the current one. Default is 'Nadeko'. | `.pr role` @@ -300,9 +314,9 @@ Commands and aliases | Description | Usage `.allrolemdls` `.arm` | Enable or disable all modules for a specific role. | `.arm [enable/disable] MyRole` `.allusrmdls` `.aum` | Enable or disable all modules for a specific user. | `.aum enable @someone` `.allsrvrmdls` `.asm` | Enable or disable all modules for your server. | `.asm [enable/disable]` -`.ubl` | Either [add]s or [rem]oves a user specified by a Mention or an ID from a blacklist. **Bot owner only** | `.ubl add @SomeUser` or `.ubl rem 12312312313` -`.cbl` | Either [add]s or [rem]oves a channel specified by an ID from a blacklist. **Bot owner only** | `.cbl rem 12312312312` -`.sbl` | Either [add]s or [rem]oves a server specified by a Name or an ID from a blacklist. **Bot owner only** | `.sbl add 12312321312` or `.sbl rem SomeTrashServer` +`.ubl` | Either [add]s or [rem]oves a user specified by a Mention or an ID from a blacklist. **Bot Owner Only** | `.ubl add @SomeUser` or `.ubl rem 12312312313` +`.cbl` | Either [add]s or [rem]oves a channel specified by an ID from a blacklist. **Bot Owner Only** | `.cbl rem 12312312312` +`.sbl` | Either [add]s or [rem]oves a server specified by a Name or an ID from a blacklist. **Bot Owner Only** | `.sbl add 12312321312` or `.sbl rem SomeTrashServer` `.cmdcooldown` `.cmdcd` | Sets a cooldown per user for a command. Set it to 0 to remove the cooldown. | `.cmdcd "some cmd" 5` `.allcmdcooldowns` `.acmdcds` | Shows a list of all commands and their respective cooldowns. | `.acmdcds` `.srvrfilterinv` `.sfi` | Toggles automatic deletion of invites posted in the server. Does not affect the Bot Owner. | `.sfi` @@ -311,16 +325,16 @@ Commands and aliases | Description | Usage `.chnlfilterwords` `.cfw` | Toggles automatic deletion of messages containing filtered words on the channel. Does not negate the `.srvrfilterwords` enabled setting. Does not affect the Bot Owner. | `.cfw` `.fw` | Adds or removes (if it exists) a word from the list of filtered words. Use`.sfw` or `.cfw` to toggle filtering. | `.fw poop` `.lstfilterwords` `.lfw` | Shows a list of filtered words. | `.lfw` -`.listglobalperms` `.lgp` | Lists global permissions set by the bot owner. **Bot owner only** | `.lgp` -`.globalmodule` `.gmod` | Toggles whether a module can be used on any server. **Bot owner only** | `.gmod nsfw` -`.globalcommand` `.gcmd` | Toggles whether a command can be used on any server. **Bot owner only** | `.gcmd .stats` +`.listglobalperms` `.lgp` | Lists global permissions set by the bot owner. **Bot Owner Only** | `.lgp` +`.globalmodule` `.gmod` | Toggles whether a module can be used on any server. **Bot Owner Only** | `.gmod nsfw` +`.globalcommand` `.gcmd` | Toggles whether a command can be used on any server. **Bot Owner Only** | `.gcmd .stats` `.resetperms` | Resets the bot's permissions module on this server to the default value. **Requires Administrator server permission.** | `.resetperms` -`.resetglobalperms` | Resets global permissions set by bot owner. **Bot owner only** | `.resetglobalperms` +`.resetglobalperms` | Resets global permissions set by bot owner. **Bot Owner Only** | `.resetglobalperms` ###### [Back to ToC](#table-of-contents) ### Pokemon -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.attack` | Attacks a target with the given move. Use `.movelist` to see a list of moves your type can use. | `.attack "vine whip" @someguy` `.movelist` `.ml` | Lists the moves you are able to use | `.ml` @@ -331,9 +345,11 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### Searches -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.lolban` | Shows top banned champions ordered by ban rate. | `.lolban` +`.rip` | rip | `rip` +`.say` | Bot will send the message you typed in this channel. Supports embeds. **Requires ManageMessages server permission.** | `.say hi` `.weather` `.we` | Shows weather data for a specified city. You can also specify a country after a comma. | `.we Moscow, RU` `.time` | Shows the current time and timezone in the specified location. | `.time London, UK` `.youtube` `.yt` | Searches youtubes and shows the first result | `.yt query` @@ -360,6 +376,7 @@ Commands and aliases | Description | Usage `.videocall` | Creates a private video call link for you and other mentioned people. The link is sent to mentioned people via a private message. | `.videocall "@the First" "@Xyz"` `.avatar` `.av` | Shows a mentioned person's avatar. | `.av @SomeGuy` `.wikia` | Gives you back a wikia link | `.wikia mtg Vigilance` or `.wikia mlp Dashy` +`.novel` | Searches for a novel on `http://novelupdates.com/`. You have to provide an exact name. | `.novel the nine cauldrons` `.mal` | Shows basic info from a MyAnimeList profile. | `.mal straysocks` `.anime` `.ani` `.aq` | Queries anilist for an anime and shows the first result. | `.ani aquarion evol` `.manga` `.mang` `.mq` | Queries anilist for a manga and shows the first result. | `.mq Shingeki no kyojin` @@ -388,7 +405,7 @@ Commands and aliases | Description | Usage `.removestream` `.rms` | Removes notifications of a certain streamer from a certain platform on this channel. **Requires ManageMessages server permission.** | `.rms Twitch SomeGuy` or `.rms mixer SomeOtherGuy` `.checkstream` `.cs` | Checks if a user is online on a certain streaming platform. | `.cs twitch MyFavStreamer` `.translate` `.trans` | Translates from>to text. From the given language to the destination language. | `.trans en>fr Hello` -`.autotrans` `.at` | Starts automatic translation of all messages by users who set their `.atl` in this channel. You can set "del" argument to automatically delete all translated user messages. **Requires Administrator server permission.** **Bot owner only** | `.at` or `.at del` +`.autotrans` `.at` | Starts automatic translation of all messages by users who set their `.atl` in this channel. You can set "del" argument to automatically delete all translated user messages. **Requires Administrator server permission.** **Bot Owner Only** | `.at` or `.at del` `.autotranslang` `.atl` | Sets your source and target language to be used with `.at`. Specify no arguments to remove previously set value. | `.atl en>fr` `.translangs` | Lists the valid languages for translation. | `.translangs` `.xkcd` | Shows a XKCD comic. No arguments will retrieve random one. Number argument will retrieve a specific comic, and "latest" will get the latest one. | `.xkcd` or `.xkcd 1400` or `.xkcd latest` @@ -396,7 +413,7 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### Utility -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.togethertube` `.totube` | Creates a new room on and shows the link in the chat. | `.totube` `.whosplaying` `.whpl` | Shows a list of users who are playing the specified game. | `.whpl Overwatch` @@ -405,16 +422,15 @@ Commands and aliases | Description | Usage `.userid` `.uid` | Shows user ID. | `.uid` or `.uid @SomeGuy` `.channelid` `.cid` | Shows current channel ID. | `.cid` `.serverid` `.sid` | Shows current server ID. | `.sid` -`.roles` | List roles on this server or a roles of a specific user if specified. Paginated, 20 roles per page. | `.roles 2` or `.roles @Someone` +`.roles` | List roles on this server or roles of a user if specified. Paginated, 20 roles per page. | `.roles 2` or `.roles @Someone` `.channeltopic` `.ct` | Sends current channel's topic as a message. | `.ct` `.createinvite` `.crinv` | Creates a new invite which has infinite max uses and never expires. **Requires CreateInstantInvite channel permission.** | `.crinv` -`.shardstats` | Stats for shards. Paginated with 25 shards per page. | `.shardstats` or `.shardstats 2` `.stats` | Shows some basic stats for Nadeko. | `.stats` `.showemojis` `.se` | Shows a name and a link to every SPECIAL emoji in the message. | `.se A message full of SPECIAL emojis` -`.listservers` | Lists servers the bot is on with some basic info. 15 per page. **Bot owner only** | `.listservers 3` -`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot owner only** | `.savechat 150` +`.listservers` | Lists servers the bot is on with some basic info. 15 per page. **Bot Owner Only** | `.listservers 3` +`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot Owner Only** | `.savechat 150` `.ping` | Ping the bot to see if there are latency issues. | `.ping` -`.botconfigedit` `.bce` | Sets one of available bot config settings to a specified value. Use the command without any parameters to get a list of available settings. **Bot owner only** | `.bce CurrencyName b1nzy` or `.bce` +`.botconfigedit` `.bce` | Sets one of available bot config settings to a specified value. Use the command without any parameters to get a list of available settings. **Bot Owner Only** | `.bce CurrencyName b1nzy` or `.bce` `.calculate` `.calc` | Evaluate a mathematical expression. | `.calc 1+1` `.calcops` | Shows all available operations in the `.calc` command | `.calcops` `.alias` `.cmdmap` | Create a custom alias for a certain Nadeko command. Provide no alias to remove the existing one. **Requires Administrator server permission.** | `.alias allin $bf 100 h` or `.alias "linux thingy" >loonix Spyware Windows` @@ -422,8 +438,8 @@ Commands and aliases | Description | Usage `.serverinfo` `.sinfo` | Shows info about the server the bot is on. If no server is supplied, it defaults to current one. | `.sinfo Some Server` `.channelinfo` `.cinfo` | Shows info about the channel. If no channel is supplied, it defaults to current one. | `.cinfo #some-channel` `.userinfo` `.uinfo` | Shows info about the user. If no user is supplied, it defaults a user running the command. | `.uinfo @SomeUser` -`.activity` | Checks for spammers. **Bot owner only** | `.activity` -`.parewrel` | Forces the update of the list of patrons who are eligible for the reward. **Bot owner only** | `.parewrel` +`.activity` | Checks for spammers. **Bot Owner Only** | `.activity` +`.parewrel` | Forces the update of the list of patrons who are eligible for the reward. | `.parewrel` `.clparew` | Claim patreon rewards. If you're subscribed to bot owner's patreon you can use this command to claim your rewards - assuming bot owner did setup has their patreon key. | `.clparew` `.listquotes` `.liqu` | Lists all quotes on the server ordered alphabetically. 15 Per page. | `.liqu` or `.liqu 3` `...` | Shows a random quote with a specified name. | `... abc` @@ -433,7 +449,7 @@ Commands and aliases | Description | Usage `.quotedel` `.qdel` | Deletes a quote with the specified ID. You have to be either server Administrator or the creator of the quote to delete it. | `.qdel 123456` `.delallq` `.daq` | Deletes all quotes on a specified keyword. **Requires Administrator server permission.** | `.delallq kek` `.remind` | Sends a message to you or a channel after certain amount of time. First argument is `me`/`here`/'channelname'. Second argument is time in a descending order (mo>w>d>h>m) example: 1w5d3h10m. Third argument is a (multiword) message. | `.remind me 1d5h Do something` or `.remind #general 1m Start now!` -`.remindtemplate` | Sets message for when the remind is triggered. Available placeholders are `%user%` - user who ran the command, `%message%` - Message specified in the remind, `%target%` - target channel of the remind. **Bot owner only** | `.remindtemplate %user%, do %message%!` +`.remindtemplate` | Sets message for when the remind is triggered. Available placeholders are `%user%` - user who ran the command, `%message%` - Message specified in the remind, `%target%` - target channel of the remind. **Bot Owner Only** | `.remindtemplate %user%, do %message%!` `.repeatinvoke` `.repinv` | Immediately shows the repeat message on a certain index and restarts its timer. **Requires ManageMessages server permission.** | `.repinv 1` `.repeatremove` `.reprm` | Removes a repeating message on a specified index. Use `.repeatlist` to see indexes. **Requires ManageMessages server permission.** | `.reprm 2` `.repeat` | Repeat a message every `X` minutes in the current channel. You can instead specify time of day for the message to be repeated at daily (make sure you've set your server's timezone). You can have up to 5 repeating messages on the server in total. **Requires ManageMessages server permission.** | `.repeat 5 Hello there` or `.repeat 17:30 tea time` @@ -449,7 +465,7 @@ Commands and aliases | Description | Usage ###### [Back to ToC](#table-of-contents) ### Xp -Commands and aliases | Description | Usage +Command and aliases | Description | Usage ----------------|--------------|------- `.experience` `.xp` | Shows your xp stats. Specify the user to show that user's stats instead. | `.xp` `.xprolerewards` `.xprrs` | Shows currently set role rewards. | `.xprrs` @@ -461,7 +477,7 @@ Commands and aliases | Description | Usage `.xpgleaderboard` `.xpglb` | Shows the global xp leaderboard. | `.xpglb` `.xpadd` | Adds xp to a user on the server. This does not affect their global ranking. You can use negative values. **Requires Administrator server permission.** | `.xpadd 100 @b1nzy` `.clubadmin` | Assigns (or unassigns) staff role to the member of the club. Admins can ban, kick and accept applications. | `.clubadmin` -`.clubcreate` | Creates a club. You must be atleast level 5 and not be in the club already. | `.clubcreate b1nzy's friends` +`.clubcreate` | Creates a club. You must be at least level 5 and not be in the club already. | `.clubcreate b1nzy's friends` `.clubicon` | Sets the club icon. | `.clubicon https://i.imgur.com/htfDMfU.png` `.clubinfo` | Shows information about the club. | `.clubinfo b1nzy's friends#123` `.clubbans` | Shows the list of users who have banned from your club. Paginated. You must be club owner to use this command. | `.clubbans 2` diff --git a/docs/JSON Explanations.md b/docs/JSON Explanations.md index 3ca347be..9eedcfb2 100644 --- a/docs/JSON Explanations.md +++ b/docs/JSON Explanations.md @@ -179,15 +179,14 @@ For windows (regular installation, or from the updater), this is usually ```json "RestartCommand": { - "Cmd": "NadekoBot.exe", - "Args": "" + "Cmd": "NadekoBot.exe" } ``` ## DB files Nadeko saves all the settings and infomations in `NadekoBot.db` file here: -`NadekoBot/src/NadekoBot/bin/Release/netcoreapp1.1/data/NadekoBot.db` (macOS and Linux) +`NadekoBot/src/NadekoBot/bin/Release/netcoreapp2.0/data/NadekoBot.db` (macOS and Linux) `NadekoBot\system\data` (Windows) in order to open the database file you will need [DB Browser for SQLite](http://sqlitebrowser.org/). diff --git a/docs/Placeholders.md b/docs/Placeholders.md index a698d175..605d6093 100644 --- a/docs/Placeholders.md +++ b/docs/Placeholders.md @@ -19,6 +19,7 @@ Some features have their own specific placeholders which are noted in that featu - `%rngX-Y%` - Replace X and Y with the range (for example `%rng5-10%` - random between 5 and 10) - `%time%` - Bot time - `%server_time%` - Time on this server, set with `.timezone` command +- `%target%` - Used only in custom reactions, it shows the part of the message after the trigger **If you're using placeholders in embeds, don't use %user% and %mention% in titles, footers and field names. They will not show properly.** diff --git a/docs/guides/Docker Guide.md b/docs/guides/Docker Guide.md index 5c50e73d..8fb84904 100644 --- a/docs/guides/Docker Guide.md +++ b/docs/guides/Docker Guide.md @@ -1,33 +1,43 @@ -# NadekoBot a Discord bot +# Setting up NadekoBot on Docker Nadeko is written in C# and Discord.Net for more information visit -## Install Docker -Follow the respective guide for your operating system found here [Docker Engine Install Guide](https://docs.docker.com/engine/installation/) +#### Prerequisites +- [Docker](https://docs.docker.com/engine/installation/) +- [Create Discord Bot application](http://nadekobot.readthedocs.io/en/latest/JSON%20Explanations/#creating-discord-bot-application) and [Invite the bot to your server](http://nadekobot.readthedocs.io/en/latest/JSON%20Explanations/#inviting-your-bot-to-your-server). -## Nadeko Setup Guide +#### Setting up the container For this guide we will be using the folder /nadeko as our config root folder. - -```bash -docker create --name=nadeko -v /nadeko/conf/:/root/nadeko -v /nadeko/data:/opt/NadekoBot/src/NadekoBot/bin/Release/netcoreapp1.1/data uirel/nadeko:1.4 ``` --If you are coming from a previous version of nadeko (the old docker) make sure your credentials.json has been copied into this directory and is the only thing in this folder. +docker create --name=nadeko -v /nadeko/conf/:/root/nadeko -v /nadeko/data:/opt/NadekoBot/src/NadekoBot/bin/Release/netcoreapp2.0/data uirel/nadeko:1.4 +``` --If you are making a fresh install, create your credentials.json from the following guide and place it in the /nadeko folder [Nadeko JSON Guide](http://nadekobot.readthedocs.io/en/latest/JSON%20Explanations/) +#### Moving `credentials.json` into the docker container. -Next start the docker up with `docker start nadeko; docker logs -f nadeko` +- If you are coming from a previous version of nadeko (the old docker) make sure your credentials.json has been copied into this directory and is the only thing in this folder. +- If you are making a fresh install, create your credentials.json from the following guide and place it in the /nadeko folder [Nadeko JSON Guide](http://nadekobot.readthedocs.io/en/latest/JSON%20Explanations/). +- To copy the the file from your computer to a container: +``` +docker cp /Directory/That/Contains/Your/credentials.json nadeko:/credentials.json +``` -The docker will start and the log file will start scrolling past. Depending on hardware the bot start can take up to 5 minutes on a small DigitalOcean droplet. -Once the log ends with "NadekoBot | Starting NadekoBot v1.0-rc2" the bot is ready and can be invited to your server. Ctrl+C at this point to stop viewing the logs. +#### Start up docker +``` +docker start nadeko; docker logs -f nadeko +``` +The docker will start and the log file will start scrolling past. This may take a long time. The bot start can take up to 5 minutes on a small DigitalOcean droplet. +Once the log ends with "NadekoBot | Starting NadekoBot vX.X" the bot is ready and can be invited to your server. Ctrl+C at this point if you would like to stop viewing the logs. -After a few moments you should be able to invite Nadeko to your server. If you cannot, check the log file for errors. +After a few moments, Nadeko should come online on your server. If it doesn't, check the log file for errors. -## Monitoring +#### Monitoring +**To monitor the logs of the container in realtime** +``` +docker logs -f nadeko +``` -* Monitor the logs of the container in realtime `docker logs -f nadeko`. +### Updates -## Updates - -# Manual +#### Manual Updates are handled by pulling the new layer of the Docker Container which contains a pre compiled update to Nadeko. The following commands are required for the default options @@ -36,23 +46,23 @@ The following commands are required for the default options `docker stop nadeko; docker rm nadeko` ``` -docker create --name=nadeko -v /nadeko/conf/:/root/nadeko -v /nadeko/data:/opt/NadekoBot/src/NadekoBot/bin/Release/netcoreapp1.1/data uirel/nadeko:1.4 +docker create --name=nadeko -v /nadeko/conf/:/root/nadeko -v /nadeko/data:/opt/NadekoBot/src/NadekoBot/bin/Release/netcoreapp2.0/data uirel/nadeko:1.4 ``` `docker start nadeko` -# Automatic Updates -Automatic update are now handled by WatchTower [WatchTower GitHub](https://github.com/CenturyLinkLabs/watchtower) -To setup WatchTower to keep Nadeko up-to-date for you with the default settings, use the following command +#### Automatic +Automatic update are handled by [WatchTower](https://github.com/CenturyLinkLabs/watchtower). +To setup WatchTower to keep Nadeko up-to-date for you with the default settings, use the following command: ```bash -docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock centurylink/watchtower --cleanup nadeko +docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock centurylink/watchtower --cleanup nadeko --interval 300 ``` -This will check for updates to the docker every 5 minutes and update immediately. Alternatively using the `--interval X` command to change the interval, where X is the amount of time in seconds to wait. e.g 21600 for 6 hours. - +This will check for updates to the docker every 5 minutes and update immediately. To check in different intervals, change `X`. X is the amount of time, in seconds. (e.g 21600 for 6 hours) +### Additional Info If you have any issues with the docker setup, please ask in #help channel on our [Discord server](https://discordapp.com/invite/nadekobot) but indicate you are using the docker. For information about configuring your bot or its functionality, please check the [documentation](http://nadekobot.readthedocs.io/en/latest). diff --git a/docs/guides/From Source.md b/docs/guides/From Source.md index d24960f2..5e16619d 100644 --- a/docs/guides/From Source.md +++ b/docs/guides/From Source.md @@ -16,6 +16,13 @@ Edit `credentials.json.` Read the JSON Exaplanations guide on the left if you do `git pull` `dotnet run -c Release` +### !!! NOTE FOR WINDOWS USERS !!! +If you're running from source on windows, you will have to setup your credentials to have these 2 extra lines: +```js + "ShardRunCommand": "dotnet", + "ShardRunArguments": "run -c Release -- {0} {1}" +``` + [.netcore]: https://www.microsoft.com/net/download/core#/sdk [ffmpeg]: http://ffmpeg.zeranoe.com/builds/ [git]: https://git-scm.com/downloads diff --git a/docs/guides/OSX Guide.md b/docs/guides/OSX Guide.md index b16313ba..3ec49175 100644 --- a/docs/guides/OSX Guide.md +++ b/docs/guides/OSX Guide.md @@ -26,6 +26,8 @@ brew install libsodium brew install tmux brew install python brew install youtube-dl +brew install redis +brew services start redis ``` #### Installing .NET Core SDK diff --git a/docs/guides/Upgrading Guide.md b/docs/guides/Upgrading Guide.md deleted file mode 100644 index afc0ac01..00000000 --- a/docs/guides/Upgrading Guide.md +++ /dev/null @@ -1,26 +0,0 @@ -# This section is for users who are upgrading from versions older than 1.4 to 1.4+ - -#### If you have NadekoBot 1.x on Windows - -- Go to `NadekoBot\src\NadekoBot` and backup your `credentials.json` file; then go to `NadekoBot\src\NadekoBot\bin\Release\netcoreapp1.0` and backup your `data` folder. -- Follow the [Windows Guide](http://nadekobot.readthedocs.io/en/latest/guides/Windows%20Guide/) and install the latest version of **NadekoBot**. -- Paste your `credentials.json` file into the `C:\Program Files\NadekoBot\system` folder. -- Paste your `data` folder into `C:\Program Files\NadekoBot\system` folder. -- If it asks you to overwrite files, it is fine to do so. -- Next launch your **new** Nadeko as the guide describes, if it is not already running. - - -#### If you are running Dockerised Nadeko - -- There is an updating section in the docker guide. - -#### If you have NadekoBot 1.x on Linux or macOS - -- Backup the `NadekoBot.db` from `NadekoBot/src/NadekoBot/bin/Release/netcoreapp1.0/data` -- Backup the `credentials.json` from `NadekoBot/src/NadekoBot/` -- **For MacOS Users Only:** download and install the latest version of [.NET Core SDK](https://www.microsoft.com/net/core#macos) -- Next, use the command `cd ~ && wget -N https://github.com/Kwoth/NadekoBot-BashScript/raw/1.9/linuxAIO.sh && bash linuxAIO.sh` -- **For Ubuntu, Debian and CentOS Users Only:** use the option `4. Auto-Install Prerequisites` to install the latest version of .NET Core SDK. -- Use option `1. Download NadekoBot` to update your NadekoBot to 1.9.x. -- Next, just [run your NadekoBot.](http://nadekobot.readthedocs.io/en/latest/guides/Linux%20Guide/#running-nadekobot) -- *NOTE: 1.9.x uses `NadekoBot.db` file from `NadekoBot/src/NadekoBot/bin/Release/netcoreapp2.0/data` folder.* diff --git a/docs/guides/Windows Guide.md b/docs/guides/Windows Guide.md index fe344a96..c426d981 100644 --- a/docs/guides/Windows Guide.md +++ b/docs/guides/Windows Guide.md @@ -7,7 +7,8 @@ #### Guide - Download and run the [NadekoBot Updater.][Updater] -- Press **`Install ffmpeg`** and **`Install youtube-dl`** if you want music features. +- Press **`Install Redis`** then +- Press **`Install ffmpeg`** and **`Install youtube-dl`** if you want music features. ***NOTE:** RESTART YOUR PC IF YOU DO.* - Press **`Update`** and go through the installation wizard. ***NOTE:** If you're upgrading from 1.3, DO NOT select your old nadekobot folder. Install it in a separate directory and read the [upgrading guide](http://nadekobot.readthedocs.io/en/latest/guides/Upgrading%20Guide/).* diff --git a/docs/index.md b/docs/index.md index 65005bb9..52dd5ef0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -20,7 +20,6 @@ If you want to contribute, be sure to PR on the current **[default][repo]** bran - [OSX Guide](guides/OSX Guide.md) - [Docker Guide](guides/Docker Guide.md) - [From Source](guides/From Source.md) - - [Upgrading Guide](guides/Upgrading Guide.md) - Commands - [Readme](Readme.md) - [Commands List](Commands List.md) diff --git a/mkdocs.yml b/mkdocs.yml index 0ab5e11b..d11fdc76 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,7 +9,6 @@ pages: - OSX Guide: guides/OSX Guide.md - Docker Guide: guides/Docker Guide.md - From Source: guides/From Source.md - - Upgrading Guide: guides/Upgrading Guide.md - Commands: - Readme: Readme.md - Commands List: Commands List.md diff --git a/pack.ps1 b/pack.ps1 deleted file mode 100644 index ddb3b585..00000000 --- a/pack.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -dotnet pack "src\NadekoBot\NadekoBot.csproj" -c "Release" -o "../../artifacts" --no-build --version-suffix "$Env:BUILD" /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG" -if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } \ No newline at end of file diff --git a/src/NadekoBot/Common/Shard0Precondition.cs b/src/NadekoBot/Common/Shard0Precondition.cs deleted file mode 100644 index 965101a3..00000000 --- a/src/NadekoBot/Common/Shard0Precondition.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Threading.Tasks; -using Discord.Commands; -using Discord.WebSocket; - -namespace NadekoBot.Common -{ - public class Shard0Precondition : PreconditionAttribute - { - public override Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services) - { - var c = (DiscordSocketClient)context.Client; - if (c.ShardId != 0) - return Task.FromResult(PreconditionResult.FromError("Must be ran from shard #0")); - - return Task.FromResult(PreconditionResult.FromSuccess()); - } - } -} diff --git a/src/NadekoBot/Common/ShardCom/ShardComClient.cs b/src/NadekoBot/Common/ShardCom/ShardComClient.cs deleted file mode 100644 index 9c10a11d..00000000 --- a/src/NadekoBot/Common/ShardCom/ShardComClient.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Net; -using System.Net.Sockets; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json; - -namespace NadekoBot.Common.ShardCom -{ - public class ShardComClient - { - private int port; - - public ShardComClient(int port) - { - this.port = port; - } - - public async Task Send(ShardComMessage data) - { - var msg = JsonConvert.SerializeObject(data); - using (var client = new UdpClient()) - { - var bytes = Encoding.UTF8.GetBytes(msg); - await client.SendAsync(bytes, bytes.Length, IPAddress.Loopback.ToString(), port).ConfigureAwait(false); - } - } - } -} diff --git a/src/NadekoBot/Common/ShardCom/ShardComServer.cs b/src/NadekoBot/Common/ShardCom/ShardComServer.cs deleted file mode 100644 index b6b5a0ba..00000000 --- a/src/NadekoBot/Common/ShardCom/ShardComServer.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Net; -using System.Net.Sockets; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json; - -namespace NadekoBot.Common.ShardCom -{ - public class ShardComServer : IDisposable - { - private readonly UdpClient _client; - - public ShardComServer(int port) - { - _client = new UdpClient(port); - } - - public void Start() - { - Task.Run(async () => - { - var ip = new IPEndPoint(IPAddress.Any, 0); - while (true) - { - var recv = await _client.ReceiveAsync(); - var data = Encoding.UTF8.GetString(recv.Buffer); - var _ = OnDataReceived(JsonConvert.DeserializeObject(data)); - } - }); - } - - public void Dispose() - { - _client.Dispose(); - } - - public event Func OnDataReceived = delegate { return Task.CompletedTask; }; - } -} diff --git a/src/NadekoBot/Modules/Administration/Common/Migration/0_9..cs b/src/NadekoBot/Modules/Administration/Common/Migration/0_9..cs deleted file mode 100644 index b7e2bc0a..00000000 --- a/src/NadekoBot/Modules/Administration/Common/Migration/0_9..cs +++ /dev/null @@ -1,195 +0,0 @@ -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; - -namespace NadekoBot.Modules.Administration.Common.Migration -{ - public class CommandPrefixes0_9 - { - public string Administration { get; set; } - public string Searches { get; set; } - public string NSFW { get; set; } - public string Conversations { get; set; } - public string ClashOfClans { get; set; } - public string Help { get; set; } - public string Music { get; set; } - public string Trello { get; set; } - public string Games { get; set; } - public string Gambling { get; set; } - public string Permissions { get; set; } - public string Programming { get; set; } - public string Pokemon { get; set; } - public string Utility { get; set; } - } - - public class Config0_9 - { - public bool DontJoinServers { get; set; } - public bool ForwardMessages { get; set; } - public bool ForwardToAllOwners { get; set; } - public bool IsRotatingStatus { get; set; } - public int BufferSize { get; set; } - public List RaceAnimals { get; set; } - public string RemindMessageFormat { get; set; } - public Dictionary> CustomReactions { get; set; } - public List RotatingStatuses { get; set; } - public CommandPrefixes0_9 CommandPrefixes { get; set; } - public List ServerBlacklist { get; set; } - public List ChannelBlacklist { get; set; } - public List UserBlacklist { get; set; } - public List _8BallResponses { get; set; } - public string CurrencySign { get; set; } - public string CurrencyName { get; set; } - public string DMHelpString { get; set; } - public string HelpString { get; set; } - } - - /// - /// Holds a permission list - /// - public class Permissions - { - /// - /// Name of the parent object whose permissions these are - /// - public string Name { get; set; } - /// - /// Module name with allowed/disallowed - /// - public ConcurrentDictionary Modules { get; set; } - /// - /// Command name with allowed/disallowed - /// - public ConcurrentDictionary Commands { get; set; } - /// - /// Should the bot filter invites to other discord servers (and ref links in the future) - /// - public bool FilterInvites { get; set; } - /// - /// Should the bot filter words which are specified in the Words hashset - /// - public bool FilterWords { get; set; } - - public Permissions(string name) - { - Name = name; - Modules = new ConcurrentDictionary(); - Commands = new ConcurrentDictionary(); - 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[] ?? 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[] ?? 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 - { - /// - /// The guy who can edit the permissions - /// - public string PermissionsControllerRole { get; set; } - /// - /// Does it print the error when a restriction occurs - /// - public bool Verbose { get; set; } - /// - /// The id of the thing (user/server/channel) - /// - public ulong Id { get; set; } //a string because of the role name. - /// - /// Permission object bound to the id of something/role name - /// - public Permissions Permissions { get; set; } - /// - /// Banned words, usually profanities, like word "java" - /// - public HashSet Words { get; set; } - - public Dictionary UserPermissions { get; set; } - public Dictionary ChannelPermissions { get; set; } - public Dictionary RolePermissions { get; set; } - /// - /// Dictionary of command names with their respective cooldowns - /// - public ConcurrentDictionary 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(); - ChannelPermissions = new Dictionary(); - RolePermissions = new Dictionary(); - CommandCooldowns = new ConcurrentDictionary(); - Words = new HashSet(); - } - } - - public class ServerSpecificConfig - { - public bool VoicePlusTextEnabled { get; set; } - public bool SendPrivateMessageOnMention { get; set; } - public ulong? LogChannel { get; set; } = null; - public ulong? LogPresenceChannel { get; set; } = null; - public HashSet LogserverIgnoreChannels { get; set; } - public ConcurrentDictionary VoiceChannelLog { get; set; } - public HashSet ListOfSelfAssignableRoles { get; set; } - public ulong AutoAssignedRole { get; set; } - public ConcurrentDictionary GenerateCurrencyChannels { get; set; } - public bool AutoDeleteMessagesOnCommand { get; set; } - public bool ExclusiveSelfAssignedRoles { get; set; } - public float DefaultMusicVolume { get; set; } - public HashSet 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 - } - } -} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/Common/Migration/MigrationException.cs b/src/NadekoBot/Modules/Administration/Common/Migration/MigrationException.cs deleted file mode 100644 index 639ff5bc..00000000 --- a/src/NadekoBot/Modules/Administration/Common/Migration/MigrationException.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace NadekoBot.Modules.Administration.Common.Migration -{ - public class MigrationException : Exception - { - - } -} diff --git a/src/NadekoBot/Modules/Administration/MigrationCommands.cs b/src/NadekoBot/Modules/Administration/MigrationCommands.cs deleted file mode 100644 index 5c9b4a70..00000000 --- a/src/NadekoBot/Modules/Administration/MigrationCommands.cs +++ /dev/null @@ -1,381 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Discord.Commands; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using Newtonsoft.Json; -using System.Collections.Concurrent; -using NadekoBot.Extensions; -using NadekoBot.Services.Database; -using Microsoft.Data.Sqlite; -using NadekoBot.Common.Attributes; -using NadekoBot.Common.Collections; -using NadekoBot.Modules.Administration.Common.Migration; - -namespace NadekoBot.Modules.Administration -{ - public partial class Administration - { - [Group] - public class MigrationCommands : NadekoSubmodule - { - private const int CURRENT_VERSION = 1; - private readonly DbService _db; - - public MigrationCommands(DbService db) - { - _db = db; - } - - [NadekoCommand, Usage, Description, Aliases] - [OwnerOnly] - public async Task MigrateData() - { - var version = 0; - using (var uow = _db.UnitOfWork) - { - version = uow.BotConfig.GetOrCreate().MigrationVersion; - } - try - { - for (var i = version; i < CURRENT_VERSION; i++) - { - switch (i) - { - case 0: - Migrate0_9To1_0(); - break; - } - } - await ReplyConfirmLocalized("migration_done").ConfigureAwait(false); - } - catch (Exception ex) - { - _log.Error(ex); - await ReplyErrorLocalized("migration_error").ConfigureAwait(false); - } - } - - private void Migrate0_9To1_0() - { - using (var uow = _db.UnitOfWork) - { - var botConfig = uow.BotConfig.GetOrCreate(); - MigrateConfig0_9(uow, botConfig); - MigratePermissions0_9(uow); - MigrateServerSpecificConfigs0_9(uow); - MigrateDb0_9(uow); - - //NOW save it - _log.Warn("Writing to disc"); - uow.Complete(); - botConfig.MigrationVersion = 1; - } - } - - private void MigrateDb0_9(IUnitOfWork uow) - { - var db = new SqliteConnection("Data Source=data/nadekobot.sqlite"); - - if (!File.Exists("data/nadekobot.sqlite")) - { - _log.Warn("No data from the old database will be migrated."); - return; - } - db.Open(); - - var com = db.CreateCommand(); - var i = 0; - try - { - com.CommandText = "SELECT * FROM Announcement"; - - var reader = com.ExecuteReader(); - while (reader.Read()) - { - var gid = (ulong)(long)reader["ServerId"]; - var greet = (long)reader["Greet"] == 1; - var greetDM = (long)reader["GreetPM"] == 1; - var greetChannel = (ulong)(long)reader["GreetChannelId"]; - var greetMsg = (string)reader["GreetText"]; - var bye = (long)reader["Bye"] == 1; - var byeChannel = (ulong)(long)reader["ByeChannelId"]; - var byeMsg = (string)reader["ByeText"]; - var gc = uow.GuildConfigs.For(gid, set => set); - - if (greetDM) - gc.SendDmGreetMessage = greet; - else - gc.SendChannelGreetMessage = greet; - gc.GreetMessageChannelId = greetChannel; - gc.ChannelGreetMessageText = greetMsg; - - gc.SendChannelByeMessage = bye; - gc.ByeMessageChannelId = byeChannel; - gc.ChannelByeMessageText = byeMsg; - - _log.Info(++i); - } - } - catch { - _log.Warn("Greet/bye messages won't be migrated"); - } - var com2 = db.CreateCommand(); - com2.CommandText = "SELECT * FROM CurrencyState GROUP BY UserId"; - - i = 0; - try - { - var reader2 = com2.ExecuteReader(); - while (reader2.Read()) - { - _log.Info(++i); - var curr = new Currency() - { - Amount = (long)reader2["Value"], - UserId = (ulong)(long)reader2["UserId"] - }; - uow.Currency.Add(curr); - } - } - catch - { - _log.Warn("Currency won't be migrated"); - } - db.Close(); - try { File.Move("data/nadekobot.sqlite", "data/DELETE_ME_nadekobot.sqlite"); } catch { } - } - - private void MigrateServerSpecificConfigs0_9(IUnitOfWork uow) - { - const string specificConfigsPath = "data/ServerSpecificConfigs.json"; - - if (!File.Exists(specificConfigsPath)) - { - _log.Warn($"No data from {specificConfigsPath} will be migrated."); - return; - } - - var configs = new ConcurrentDictionary(); - try - { - configs = JsonConvert - .DeserializeObject>( - 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; - } - var i = 0; - var selfAssRoles = new ConcurrentHashSet(); - configs - .Select(p => new { data = p.Value, gconfig = uow.GuildConfigs.For(p.Key) }) - .AsParallel() - .ForAll(config => - { - try - { - var guildConfig = config.gconfig; - var data = config.data; - - guildConfig.AutoAssignRoleId = data.AutoAssignedRole; - guildConfig.DeleteMessageOnCommand = data.AutoDeleteMessagesOnCommand; - guildConfig.DefaultMusicVolume = data.DefaultMusicVolume; - guildConfig.ExclusiveSelfAssignedRoles = data.ExclusiveSelfAssignedRoles; - guildConfig.GenerateCurrencyChannelIds = new HashSet(data.GenerateCurrencyChannels.Select(gc => new GCChannelId() { ChannelId = gc.Key })); - selfAssRoles.AddRange(data.ListOfSelfAssignableRoles.Select(r => new SelfAssignedRole() { GuildId = guildConfig.GuildId, RoleId = r }).ToArray()); - guildConfig.LogSetting.IgnoredChannels = new HashSet(data.LogserverIgnoreChannels.Select(id => new IgnoredLogChannel() { ChannelId = id })); - - guildConfig.LogSetting.LogUserPresenceId = data.LogPresenceChannel; - - - guildConfig.FollowedStreams = new HashSet(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.Mixer; - break; - case StreamNotificationConfig0_9.StreamType.Hitbox: - type = FollowedStream.FollowedStreamType.Smashcast; - break; - default: - break; - } - - return new FollowedStream() - { - ChannelId = x.ChannelId, - GuildId = guildConfig.GuildId, - Username = x.Username.ToLowerInvariant(), - Type = type - }; - })); - guildConfig.VoicePlusTextEnabled = data.VoicePlusTextEnabled; - _log.Info("Migrating SpecificConfig for {0} done ({1})", guildConfig.GuildId, ++i); - } - catch (Exception ex) - { - _log.Error(ex); - } - }); - uow.SelfAssignedRoles.AddRange(selfAssRoles.ToArray()); - try { File.Move("data/ServerSpecificConfigs.json", "data/DELETE_ME_ServerSpecificCOnfigs.json"); } catch { } - } - - private void MigratePermissions0_9(IUnitOfWork uow) - { - var permissionsDict = new ConcurrentDictionary(); - if (!Directory.Exists("data/permissions/")) - { - _log.Warn("No data from permissions will be migrated."); - return; - } - 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(File.ReadAllText(file)); - permissionsDict.TryAdd(id, data); - } - catch - { - // ignored - } - } - var i = 0; - permissionsDict - .Select(p => new { data = p.Value, gconfig = uow.GuildConfigs.For(p.Key) }) - .AsParallel() - .ForAll(perms => - { - try - { - var data = perms.data; - var gconfig = perms.gconfig; - - gconfig.PermissionRole = data.PermissionsControllerRole; - gconfig.VerbosePermissions = data.Verbose; - gconfig.FilteredWords = new HashSet(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(); - gconfig.FilterInvitesChannelIds.AddRange(data.ChannelPermissions.Where(kvp => kvp.Value.FilterInvites) - .Select(cp => new FilterChannelId() - { - ChannelId = cp.Key - })); - - gconfig.FilterWordsChannelIds = new HashSet(); - gconfig.FilterWordsChannelIds.AddRange(data.ChannelPermissions.Where(kvp => kvp.Value.FilterWords) - .Select(cp => new FilterChannelId() - { - ChannelId = cp.Key - })); - - gconfig.CommandCooldowns = new HashSet(data.CommandCooldowns - .Where(cc => !string.IsNullOrWhiteSpace(cc.Key) && cc.Value > 0) - .Select(cc => new CommandCooldown() - { - CommandName = cc.Key, - Seconds = cc.Value - })); - _log.Info("Migrating data from permissions folder for {0} done ({1})", gconfig.GuildId, ++i); - } - catch (Exception ex) - { - _log.Error(ex); - } - }); - - try { Directory.Move("data/permissions", "data/DELETE_ME_permissions"); } catch { } - - } - - private void MigrateConfig0_9(IUnitOfWork uow, BotConfig botConfig) - { - Config0_9 oldConfig; - const string configPath = "data/config.json"; - try - { - oldConfig = JsonConvert.DeserializeObject(File.ReadAllText(configPath)); - } - catch (FileNotFoundException) - { - _log.Warn("config.json not found"); - return; - } - catch (Exception) - { - _log.Error("Unknown error while deserializing file config.json, pls check its integrity, aborting migration"); - throw new MigrationException(); - } - - //Basic - botConfig.ForwardMessages = oldConfig.ForwardMessages; - botConfig.ForwardToAllOwners = oldConfig.ForwardToAllOwners; - botConfig.BufferSize = (ulong)oldConfig.BufferSize; - botConfig.RemindMessageFormat = oldConfig.RemindMessageFormat; - botConfig.CurrencySign = oldConfig.CurrencySign; - botConfig.CurrencyName = oldConfig.CurrencyName; - botConfig.DMHelpString = oldConfig.DMHelpString; - botConfig.HelpString = oldConfig.HelpString; - - //messages - botConfig.RotatingStatuses = oldConfig.IsRotatingStatus; - var messages = new List(); - - oldConfig.RotatingStatuses.ForEach(i => messages.Add(new PlayingStatus { Status = i })); - botConfig.RotatingStatusMessages = messages; - - //Blacklist - var blacklist = new HashSet(oldConfig.ServerBlacklist.Select(server => new BlacklistItem() { ItemId = server, Type = BlacklistType.Server })); - blacklist.AddRange(oldConfig.ChannelBlacklist.Select(channel => new BlacklistItem() { ItemId = channel, Type = BlacklistType.Channel })); - blacklist.AddRange(oldConfig.UserBlacklist.Select(user => new BlacklistItem() { ItemId = user, Type = BlacklistType.User })); - botConfig.Blacklist = blacklist; - - //Eightball - botConfig.EightBallResponses = new HashSet(oldConfig._8BallResponses.Select(response => new EightBallResponse() { Text = response })); - - //customreactions - uow.CustomReactions.AddRange(oldConfig.CustomReactions.SelectMany(cr => - { - return cr.Value.Select(res => new CustomReaction() - { - GuildId = null, - IsRegex = false, - OwnerOnly = false, - Response = res, - Trigger = cr.Key.ToLowerInvariant(), - }); - }).ToArray()); - - try { File.Move(configPath, "./data/DELETE_ME_config.json"); } catch { } - } - } - } -} diff --git a/src/NadekoBot/Modules/Administration/Services/AutoAssignRoleService.cs b/src/NadekoBot/Modules/Administration/Services/AutoAssignRoleService.cs deleted file mode 100644 index 040986cb..00000000 --- a/src/NadekoBot/Modules/Administration/Services/AutoAssignRoleService.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Discord.WebSocket; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using NLog; - -namespace NadekoBot.Modules.Administration.Services -{ - public class AutoAssignRoleService : INService - { - private readonly Logger _log; - private readonly DiscordSocketClient _client; - - //guildid/roleid - public ConcurrentDictionary AutoAssignedRoles { get; } - - public AutoAssignRoleService(DiscordSocketClient client, IEnumerable gcs) - { - _log = LogManager.GetCurrentClassLogger(); - _client = client; - - AutoAssignedRoles = new ConcurrentDictionary( - gcs.Where(x => x.AutoAssignRoleId != 0) - .ToDictionary(k => k.GuildId, v => v.AutoAssignRoleId)); - - _client.UserJoined += (user) => - { - var _ = Task.Run(async () => - { - try - { - AutoAssignedRoles.TryGetValue(user.Guild.Id, out ulong roleId); - - if (roleId == 0) - return; - - var role = user.Guild.Roles.FirstOrDefault(r => r.Id == roleId); - - if (role != null) - await user.AddRoleAsync(role).ConfigureAwait(false); - } - catch (Exception ex) { _log.Warn(ex); } - }); - return Task.CompletedTask; - }; - } - } -} diff --git a/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs b/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs deleted file mode 100644 index 2ebaba46..00000000 --- a/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs +++ /dev/null @@ -1,281 +0,0 @@ -using Discord; -using Discord.Commands; -using NadekoBot.Extensions; -using NadekoBot.Services; -using System; -using System.Linq; -using System.Threading.Tasks; -using Discord.WebSocket; -using System.Threading; -using NadekoBot.Common; -using NadekoBot.Common.Attributes; -using NadekoBot.Common.Collections; -using NLog; -using System.Collections.Concurrent; -using System.Collections.Generic; -using NadekoBot.Services.Database.Models; - -namespace NadekoBot.Modules.Gambling -{ - public partial class Gambling - { - [Group] - public class CurrencyEventsCommands : NadekoSubmodule - { - public enum CurrencyEvent - { - Reaction, - SneakyGameStatus - } - //flower reaction event - private static readonly ConcurrentHashSet _sneakyGameAwardedUsers = new ConcurrentHashSet(); - - private static readonly char[] _sneakyGameStatusChars = Enumerable.Range(48, 10) - .Concat(Enumerable.Range(65, 26)) - .Concat(Enumerable.Range(97, 26)) - .Select(x => (char)x) - .ToArray(); - - private string _secretCode = string.Empty; - private readonly DiscordSocketClient _client; - private readonly IBotConfigProvider _bc; - private readonly CurrencyService _cs; - - public CurrencyEventsCommands(DiscordSocketClient client, IBotConfigProvider bc, CurrencyService cs) - { - _client = client; - _bc = bc; - _cs = cs; - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - [OwnerOnly] - public async Task StartEvent(CurrencyEvent e, int arg = -1) - { - switch (e) - { - case CurrencyEvent.Reaction: - await ReactionEvent(Context, arg).ConfigureAwait(false); - break; - case CurrencyEvent.SneakyGameStatus: - await SneakyGameStatusEvent(Context, arg).ConfigureAwait(false); - break; - } - } - - public async Task SneakyGameStatusEvent(ICommandContext context, int? arg) - { - int num; - if (arg == null || arg < 5) - num = 60; - else - num = arg.Value; - - if (_secretCode != string.Empty) - return; - var rng = new NadekoRandom(); - - for (var i = 0; i < 5; i++) - { - _secretCode += _sneakyGameStatusChars[rng.Next(0, _sneakyGameStatusChars.Length)]; - } - - await _client.SetGameAsync($"type {_secretCode} for " + _bc.BotConfig.CurrencyPluralName) - .ConfigureAwait(false); - try - { - var title = GetText("sneakygamestatus_title"); - var desc = GetText("sneakygamestatus_desc", Format.Bold(100.ToString()) + _bc.BotConfig.CurrencySign, Format.Bold(num.ToString())); - await context.Channel.SendConfirmAsync(title, desc).ConfigureAwait(false); - } - catch - { - // ignored - } - - - _client.MessageReceived += SneakyGameMessageReceivedEventHandler; - await Task.Delay(num * 1000); - _client.MessageReceived -= SneakyGameMessageReceivedEventHandler; - - var cnt = _sneakyGameAwardedUsers.Count; - _sneakyGameAwardedUsers.Clear(); - _secretCode = string.Empty; - - await _client.SetGameAsync(GetText("sneakygamestatus_end", cnt)) - .ConfigureAwait(false); - } - - private Task SneakyGameMessageReceivedEventHandler(SocketMessage arg) - { - if (arg.Content == _secretCode && - _sneakyGameAwardedUsers.Add(arg.Author.Id)) - { - var _ = Task.Run(async () => - { - await _cs.AddAsync(arg.Author, "Sneaky Game Event", 100, false) - .ConfigureAwait(false); - - try { await arg.DeleteAsync(new RequestOptions() { RetryMode = RetryMode.AlwaysFail }).ConfigureAwait(false); } - catch - { - // ignored - } - }); - } - - return Task.CompletedTask; - } - - public async Task ReactionEvent(ICommandContext context, int amount) - { - if (amount <= 0) - amount = 100; - - var title = GetText("reaction_title"); - var desc = GetText("reaction_desc", _bc.BotConfig.CurrencySign, Format.Bold(amount.ToString()) + _bc.BotConfig.CurrencySign); - var footer = GetText("reaction_footer", 24); - var msg = await context.Channel.SendConfirmAsync(title, - desc, footer: footer) - .ConfigureAwait(false); - - await new ReactionEvent(_bc.BotConfig, _client, _cs, amount).Start(msg, context); - } - } - } - - public abstract class CurrencyEvent - { - public abstract Task Start(IUserMessage msg, ICommandContext channel); - } - - public class ReactionEvent : CurrencyEvent - { - private readonly ConcurrentHashSet _reactionAwardedUsers = new ConcurrentHashSet(); - private readonly BotConfig _bc; - private readonly Logger _log; - private readonly DiscordSocketClient _client; - private readonly CurrencyService _cs; - private readonly SocketSelfUser _botUser; - - private IUserMessage StartingMessage { get; set; } - - private CancellationTokenSource Source { get; } - private CancellationToken CancelToken { get; } - - private readonly ConcurrentQueue _toGiveTo = new ConcurrentQueue(); - private readonly int _amount; - - public ReactionEvent(BotConfig bc, DiscordSocketClient client, CurrencyService cs, int amount) - { - _bc = bc; - _log = LogManager.GetCurrentClassLogger(); - _client = client; - _cs = cs; - _botUser = client.CurrentUser; - _amount = amount; - Source = new CancellationTokenSource(); - CancelToken = Source.Token; - - var _ = Task.Run(async () => - { - - var users = new List(); - while (!CancelToken.IsCancellationRequested) - { - await Task.Delay(1000).ConfigureAwait(false); - while (_toGiveTo.TryDequeue(out var usrId)) - { - users.Add(usrId); - } - - if (users.Count > 0) - { - await _cs.AddToManyAsync("Reaction Event", _amount, users.ToArray()).ConfigureAwait(false); - } - - users.Clear(); - } - }, CancelToken); - } - - private async Task End() - { - if(StartingMessage != null) - await StartingMessage.DeleteAsync().ConfigureAwait(false); - - if(!Source.IsCancellationRequested) - Source.Cancel(); - - _client.MessageDeleted -= MessageDeletedEventHandler; - } - - private Task MessageDeletedEventHandler(Cacheable msg, ISocketMessageChannel channel) { - if (StartingMessage?.Id == msg.Id) - { - _log.Warn("Stopping flower reaction event because message is deleted."); - var __ = Task.Run(End); - } - - return Task.CompletedTask; - } - - public override async Task Start(IUserMessage umsg, ICommandContext context) - { - StartingMessage = umsg; - _client.MessageDeleted += MessageDeletedEventHandler; - - IEmote iemote; - if (Emote.TryParse(_bc.CurrencySign, out var emote)) - { - iemote = emote; - } - else - iemote = new Emoji(_bc.CurrencySign); - try { await StartingMessage.AddReactionAsync(iemote).ConfigureAwait(false); } - catch - { - try { await StartingMessage.AddReactionAsync(iemote).ConfigureAwait(false); } - catch - { - try { await StartingMessage.DeleteAsync().ConfigureAwait(false); } - catch { return; } - } - } - using (StartingMessage.OnReaction(_client, (r) => - { - try - { - if (r.UserId == _botUser.Id) - return; - - if (r.Emote.Name == iemote.Name && r.User.IsSpecified && ((DateTime.UtcNow - r.User.Value.CreatedAt).TotalDays > 5) && _reactionAwardedUsers.Add(r.User.Value.Id)) - { - _toGiveTo.Enqueue(r.UserId); - } - } - catch - { - // ignored - } - })) - { - try - { - await Task.Delay(TimeSpan.FromHours(24), CancelToken).ConfigureAwait(false); - } - catch (OperationCanceledException) - { - - } - if (CancelToken.IsCancellationRequested) - return; - - _log.Warn("Stopping flower reaction event because it expired."); - await End(); - - } - } - } -} diff --git a/src/NadekoBot/Modules/Games/Common/Poll.cs b/src/NadekoBot/Modules/Games/Common/Poll.cs deleted file mode 100644 index cf051a07..00000000 --- a/src/NadekoBot/Modules/Games/Common/Poll.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Discord; -using Discord.WebSocket; -using NadekoBot.Extensions; -using NadekoBot.Services.Impl; - -namespace NadekoBot.Modules.Games.Common -{ - public class Poll - { - private readonly IUserMessage _originalMessage; - private readonly IGuild _guild; - private readonly string[] answers; - private readonly ConcurrentDictionary _participants = new ConcurrentDictionary(); - private readonly string _question; - private readonly DiscordSocketClient _client; - private readonly NadekoStrings _strings; - private bool running = false; - - public event Action OnEnded = delegate { }; - - public Poll(DiscordSocketClient client, NadekoStrings strings, IUserMessage umsg, string question, IEnumerable enumerable) - { - _client = client; - _strings = strings; - - _originalMessage = umsg; - _guild = ((ITextChannel)umsg.Channel).Guild; - _question = question; - answers = enumerable as string[] ?? enumerable.ToArray(); - } - - public EmbedBuilder GetStats(string title) - { - var results = _participants.GroupBy(kvp => kvp.Value) - .ToDictionary(x => x.Key, x => x.Sum(kvp => 1)) - .OrderByDescending(kvp => kvp.Value) - .ToArray(); - - var eb = new EmbedBuilder().WithTitle(title); - - var sb = new StringBuilder() - .AppendLine(Format.Bold(_question)) - .AppendLine(); - - var totalVotesCast = 0; - if (results.Length == 0) - { - sb.AppendLine(GetText("no_votes_cast")); - } - else - { - for (int i = 0; i < results.Length; i++) - { - var result = results[i]; - sb.AppendLine(GetText("poll_result", - result.Key, - Format.Bold(answers[result.Key - 1]), - Format.Bold(result.Value.ToString()))); - totalVotesCast += result.Value; - } - } - - - eb.WithDescription(sb.ToString()) - .WithFooter(efb => efb.WithText(GetText("x_votes_cast", totalVotesCast))); - - return eb; - } - - public async Task StartPoll() - { - var msgToSend = GetText("poll_created", Format.Bold(_originalMessage.Author.Username)) + "\n\n" + Format.Bold(_question) + "\n"; - var num = 1; - msgToSend = answers.Aggregate(msgToSend, (current, answ) => current + $"`{num++}.` **{answ}**\n"); - msgToSend += "\n" + Format.Bold(GetText("poll_vote_public")); - - await _originalMessage.Channel.SendConfirmAsync(msgToSend).ConfigureAwait(false); - running = true; - } - - public async Task StopPoll() - { - running = false; - OnEnded(_guild.Id); - await _originalMessage.Channel.EmbedAsync(GetStats("POLL CLOSED")).ConfigureAwait(false); - } - - public async Task TryVote(IUserMessage msg) - { - // has to be a user message - if (msg == null || msg.Author.IsBot || !running) - return false; - - // has to be an integer - if (!int.TryParse(msg.Content, out int vote)) - return false; - if (vote < 1 || vote > answers.Length) - return false; - - IMessageChannel ch; - //if public, channel must be the same the poll started in - if (_originalMessage.Channel.Id != msg.Channel.Id) - return false; - ch = msg.Channel; - - //user can vote only once - if (_participants.TryAdd(msg.Author.Id, vote)) - { - var toDelete = await ch.SendConfirmAsync(GetText("poll_voted", Format.Bold(msg.Author.ToString()))).ConfigureAwait(false); - toDelete.DeleteAfter(5); - try { await msg.DeleteAsync().ConfigureAwait(false); } catch { } - return true; - } - return false; - } - - private string GetText(string key, params object[] replacements) - => _strings.GetText(key, - _guild.Id, - "Games".ToLowerInvariant(), - replacements); - } -} diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestionPool.cs b/src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestionPool.cs deleted file mode 100644 index 2307c209..00000000 --- a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestionPool.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.IO; -using System.Linq; -using NadekoBot.Common; -using NadekoBot.Extensions; -using Newtonsoft.Json; - -namespace NadekoBot.Modules.Games.Common.Trivia -{ - public class TriviaQuestionPool - { - public class PokemonNameId - { - public int Id { get; set; } - public string Name { get; set; } - } - - private static TriviaQuestionPool _instance; - public static TriviaQuestionPool Instance { get; } = _instance ?? (_instance = new TriviaQuestionPool()); - - private const string questionsFile = "data/trivia_questions.json"; - private const string pokemonMapPath = "data/pokemon/name-id_map4.json"; - private readonly int maxPokemonId; - - private Random rng { get; } = new NadekoRandom(); - - private TriviaQuestion[] pool { get; } - private ImmutableDictionary map { get; } - - static TriviaQuestionPool() { } - - private TriviaQuestionPool() - { - pool = JsonConvert.DeserializeObject(File.ReadAllText(questionsFile)); - map = JsonConvert.DeserializeObject(File.ReadAllText(pokemonMapPath)) - .ToDictionary(x => x.Id, x => x.Name) - .ToImmutableDictionary(); - - maxPokemonId = 721; //xd - } - - public TriviaQuestion GetRandomQuestion(HashSet exclude, bool isPokemon) - { - if (pool.Length == 0) - return null; - - if (isPokemon) - { - var num = rng.Next(1, maxPokemonId + 1); - return new TriviaQuestion("Who's That Pokémon?", - map[num].ToTitleCase(), - "Pokemon", - $@"http://nadekobot.me/images/pokemon/shadows/{num}.png", - $@"http://nadekobot.me/images/pokemon/real/{num}.png"); - } - TriviaQuestion randomQuestion; - while (exclude.Contains(randomQuestion = pool[rng.Next(0, pool.Length)])) ; - - return randomQuestion; - } - } -} diff --git a/src/NadekoBot/Modules/Games/PollCommands.cs b/src/NadekoBot/Modules/Games/PollCommands.cs deleted file mode 100644 index bd136e7f..00000000 --- a/src/NadekoBot/Modules/Games/PollCommands.cs +++ /dev/null @@ -1,60 +0,0 @@ -using Discord; -using Discord.Commands; -using Discord.WebSocket; -using NadekoBot.Extensions; -using System.Threading.Tasks; -using NadekoBot.Common.Attributes; -using NadekoBot.Modules.Games.Services; - -namespace NadekoBot.Modules.Games -{ - public partial class Games - { - [Group] - public class PollCommands : NadekoSubmodule - { - private readonly DiscordSocketClient _client; - - public PollCommands(DiscordSocketClient client) - { - _client = client; - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireUserPermission(GuildPermission.ManageMessages)] - [RequireContext(ContextType.Guild)] - public Task Poll([Remainder] string arg = null) - => InternalStartPoll(arg); - - [NadekoCommand, Usage, Description, Aliases] - [RequireUserPermission(GuildPermission.ManageMessages)] - [RequireContext(ContextType.Guild)] - public async Task PollStats() - { - if (!_service.ActivePolls.TryGetValue(Context.Guild.Id, out var poll)) - return; - - await Context.Channel.EmbedAsync(poll.GetStats(GetText("current_poll_results"))); - } - - private async Task InternalStartPoll(string arg) - { - if(await _service.StartPoll((ITextChannel)Context.Channel, Context.Message, arg) == false) - await ReplyErrorLocalized("poll_already_running").ConfigureAwait(false); - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireUserPermission(GuildPermission.ManageMessages)] - [RequireContext(ContextType.Guild)] - public async Task Pollend() - { - var channel = (ITextChannel)Context.Channel; - - _service.ActivePolls.TryRemove(channel.Guild.Id, out var poll); - await poll.StopPoll().ConfigureAwait(false); - } - } - - - } -} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Games/Services/PollService.cs b/src/NadekoBot/Modules/Games/Services/PollService.cs deleted file mode 100644 index 5c14afbc..00000000 --- a/src/NadekoBot/Modules/Games/Services/PollService.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Linq; -using System.Threading.Tasks; -using Discord; -using Discord.WebSocket; -using NadekoBot.Common.ModuleBehaviors; -using NadekoBot.Modules.Games.Common; -using NadekoBot.Services; -using NadekoBot.Services.Impl; -using NLog; - -namespace NadekoBot.Modules.Games.Services -{ - public class PollService : IEarlyBlockingExecutor, INService - { - public ConcurrentDictionary ActivePolls = new ConcurrentDictionary(); - private readonly Logger _log; - private readonly DiscordSocketClient _client; - private readonly NadekoStrings _strings; - - public PollService(DiscordSocketClient client, NadekoStrings strings) - { - _log = LogManager.GetCurrentClassLogger(); - _client = client; - _strings = strings; - } - - public async Task StartPoll(ITextChannel channel, IUserMessage msg, string arg) - { - if (string.IsNullOrWhiteSpace(arg) || !arg.Contains(";")) - return null; - var data = arg.Split(';'); - if (data.Length < 3) - return null; - - var poll = new Poll(_client, _strings, msg, data[0], data.Skip(1)); - if (ActivePolls.TryAdd(channel.Guild.Id, poll)) - { - poll.OnEnded += (gid) => - { - ActivePolls.TryRemove(gid, out _); - }; - - await poll.StartPoll().ConfigureAwait(false); - return true; - } - return false; - } - - public async Task TryExecuteEarly(DiscordSocketClient client, IGuild guild, IUserMessage msg) - { - if (guild == null) - return false; - - if (!ActivePolls.TryGetValue(guild.Id, out var poll)) - return false; - - try - { - return await poll.TryVote(msg).ConfigureAwait(false); - } - catch (Exception ex) - { - _log.Warn(ex); - } - - return false; - } - } -} diff --git a/src/NadekoBot/Modules/Games/TicTacToeCommands.cs b/src/NadekoBot/Modules/Games/TicTacToeCommands.cs deleted file mode 100644 index 539d9cdd..00000000 --- a/src/NadekoBot/Modules/Games/TicTacToeCommands.cs +++ /dev/null @@ -1,330 +0,0 @@ -using Discord; -using Discord.Commands; -using Discord.WebSocket; -using NadekoBot.Extensions; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using NadekoBot.Common.Attributes; -using NadekoBot.Services.Impl; - -namespace NadekoBot.Modules.Games -{ - public partial class Games - { - [Group] - public class TicTacToeCommands : NadekoSubmodule - { - //channelId/game - private static readonly Dictionary _games = new Dictionary(); - - private readonly SemaphoreSlim _sem = new SemaphoreSlim(1, 1); - private readonly DiscordSocketClient _client; - - public TicTacToeCommands(DiscordSocketClient client) - { - _client = client; - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task TicTacToe() - { - var channel = (ITextChannel)Context.Channel; - - await _sem.WaitAsync(1000); - try - { - if (_games.TryGetValue(channel.Id, out TicTacToe game)) - { - var _ = Task.Run(async () => - { - await game.Start((IGuildUser)Context.User); - }); - return; - } - game = new TicTacToe(base._strings, (DiscordSocketClient)this._client, channel, (IGuildUser)Context.User); - _games.Add(channel.Id, game); - await ReplyConfirmLocalized("ttt_created").ConfigureAwait(false); - - game.OnEnded += (g) => - { - _games.Remove(channel.Id); - }; - } - finally - { - _sem.Release(); - } - } - } - - public class TicTacToe - { - enum Phase - { - Starting, - Started, - Ended - } - - private readonly ITextChannel _channel; - private readonly IGuildUser[] _users; - private readonly int?[,] _state; - private Phase _phase; - private int _curUserIndex; - private readonly SemaphoreSlim _moveLock; - - private IGuildUser _winner; - - private readonly string[] _numbers = { ":one:", ":two:", ":three:", ":four:", ":five:", ":six:", ":seven:", ":eight:", ":nine:" }; - - public Action OnEnded; - - private IUserMessage _previousMessage; - private Timer _timeoutTimer; - private readonly NadekoStrings _strings; - private readonly DiscordSocketClient _client; - - public TicTacToe(NadekoStrings strings, DiscordSocketClient client, ITextChannel channel, IGuildUser firstUser) - { - _channel = channel; - _strings = strings; - _client = client; - - _users = new[] { firstUser, null }; - _state = new int?[,] { - { null, null, null }, - { null, null, null }, - { null, null, null }, - }; - - _phase = Phase.Starting; - _moveLock = new SemaphoreSlim(1, 1); - } - - private string GetText(string key, params object[] replacements) => - _strings.GetText(key, - _channel.GuildId, - typeof(Games).Name.ToLowerInvariant(), - replacements); - - public string GetState() - { - var sb = new StringBuilder(); - for (var i = 0; i < _state.GetLength(0); i++) - { - for (var j = 0; j < _state.GetLength(1); j++) - { - sb.Append(_state[i, j] == null ? _numbers[i * 3 + j] : GetIcon(_state[i, j])); - if (j < _state.GetLength(1) - 1) - sb.Append("┃"); - } - if (i < _state.GetLength(0) - 1) - sb.AppendLine("\n──────────"); - } - - return sb.ToString(); - } - - public EmbedBuilder GetEmbed(string title = null) - { - var embed = new EmbedBuilder() - .WithOkColor() - .WithDescription(Environment.NewLine + GetState()) - .WithAuthor(eab => eab.WithName(GetText("vs", _users[0], _users[1]))); - - if (!string.IsNullOrWhiteSpace(title)) - embed.WithTitle(title); - - if (_winner == null) - { - if (_phase == Phase.Ended) - embed.WithFooter(efb => efb.WithText(GetText("ttt_no_moves"))); - else - embed.WithFooter(efb => efb.WithText(GetText("ttt_users_move", _users[_curUserIndex]))); - } - else - embed.WithFooter(efb => efb.WithText(GetText("ttt_has_won", _winner))); - - return embed; - } - - private static string GetIcon(int? val) - { - switch (val) - { - case 0: - return "❌"; - case 1: - return "⭕"; - case 2: - return "❎"; - case 3: - return "🅾"; - default: - return "⬛"; - } - } - - public async Task Start(IGuildUser user) - { - if (_phase == Phase.Started || _phase == Phase.Ended) - { - await _channel.SendErrorAsync(user.Mention + GetText("ttt_already_running")).ConfigureAwait(false); - return; - } - else if (_users[0] == user) - { - await _channel.SendErrorAsync(user.Mention + GetText("ttt_against_yourself")).ConfigureAwait(false); - return; - } - - _users[1] = user; - - _phase = Phase.Started; - - _timeoutTimer = new Timer(async (_) => - { - await _moveLock.WaitAsync(); - try - { - if (_phase == Phase.Ended) - return; - - _phase = Phase.Ended; - if (_users[1] != null) - { - _winner = _users[_curUserIndex ^= 1]; - var del = _previousMessage?.DeleteAsync(); - try - { - await _channel.EmbedAsync(GetEmbed(GetText("ttt_time_expired"))).ConfigureAwait(false); - if (del != null) - await del.ConfigureAwait(false); - } - catch { } - } - - OnEnded?.Invoke(this); - } - catch { } - finally - { - _moveLock.Release(); - } - }, null, 15000, Timeout.Infinite); - - _client.MessageReceived += Client_MessageReceived; - - - _previousMessage = await _channel.EmbedAsync(GetEmbed(GetText("game_started"))).ConfigureAwait(false); - } - - private bool IsDraw() - { - for (var i = 0; i < 3; i++) - { - for (var j = 0; j < 3; j++) - { - if (_state[i, j] == null) - return false; - } - } - return true; - } - - private Task Client_MessageReceived(SocketMessage msg) - { - var _ = Task.Run(async () => - { - await _moveLock.WaitAsync().ConfigureAwait(false); - try - { - var curUser = _users[_curUserIndex]; - if (_phase == Phase.Ended || msg.Author?.Id != curUser.Id) - return; - - if (int.TryParse(msg.Content, out var index) && - --index >= 0 && - index <= 9 && - _state[index / 3, index % 3] == null) - { - _state[index / 3, index % 3] = _curUserIndex; - - // i'm lazy - if (_state[index / 3, 0] == _state[index / 3, 1] && _state[index / 3, 1] == _state[index / 3, 2]) - { - _state[index / 3, 0] = _curUserIndex + 2; - _state[index / 3, 1] = _curUserIndex + 2; - _state[index / 3, 2] = _curUserIndex + 2; - - _phase = Phase.Ended; - } - else if (_state[0, index % 3] == _state[1, index % 3] && _state[1, index % 3] == _state[2, index % 3]) - { - _state[0, index % 3] = _curUserIndex + 2; - _state[1, index % 3] = _curUserIndex + 2; - _state[2, index % 3] = _curUserIndex + 2; - - _phase = Phase.Ended; - } - else if (_curUserIndex == _state[0, 0] && _state[0, 0] == _state[1, 1] && _state[1, 1] == _state[2, 2]) - { - _state[0, 0] = _curUserIndex + 2; - _state[1, 1] = _curUserIndex + 2; - _state[2, 2] = _curUserIndex + 2; - - _phase = Phase.Ended; - } - else if (_curUserIndex == _state[0, 2] && _state[0, 2] == _state[1, 1] && _state[1, 1] == _state[2, 0]) - { - _state[0, 2] = _curUserIndex + 2; - _state[1, 1] = _curUserIndex + 2; - _state[2, 0] = _curUserIndex + 2; - - _phase = Phase.Ended; - } - var reason = ""; - - if (_phase == Phase.Ended) // if user won, stop receiving moves - { - reason = GetText("ttt_matched_three"); - _winner = _users[_curUserIndex]; - _client.MessageReceived -= Client_MessageReceived; - OnEnded?.Invoke(this); - } - else if (IsDraw()) - { - reason = GetText("ttt_a_draw"); - _phase = Phase.Ended; - _client.MessageReceived -= Client_MessageReceived; - OnEnded?.Invoke(this); - } - - var sendstate = Task.Run(async () => - { - var del1 = msg.DeleteAsync(); - var del2 = _previousMessage?.DeleteAsync(); - try { _previousMessage = await _channel.EmbedAsync(GetEmbed(reason)); } catch { } - try { await del1; } catch { } - try { if (del2 != null) await del2; } catch { } - }); - _curUserIndex ^= 1; - - _timeoutTimer.Change(15000, Timeout.Infinite); - } - } - finally - { - _moveLock.Release(); - } - }); - - return Task.CompletedTask; - } - } - } -} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Searches/Services/AnimeSearchService.cs b/src/NadekoBot/Modules/Searches/Services/AnimeSearchService.cs deleted file mode 100644 index 1a372d8c..00000000 --- a/src/NadekoBot/Modules/Searches/Services/AnimeSearchService.cs +++ /dev/null @@ -1,74 +0,0 @@ -using NadekoBot.Services; -using Newtonsoft.Json; -using NLog; -using System; -using System.Net.Http; -using System.Threading.Tasks; -using NadekoBot.Modules.Searches.Common; - -namespace NadekoBot.Modules.Searches.Services -{ - public class AnimeSearchService : INService - { - private readonly Logger _log; - private readonly IDataCache _cache; - private readonly HttpClient _http; - - public AnimeSearchService(IDataCache cache) - { - _log = LogManager.GetCurrentClassLogger(); - _cache = cache; - _http = new HttpClient(); - } - - public async Task GetAnimeData(string query) - { - if (string.IsNullOrWhiteSpace(query)) - throw new ArgumentNullException(nameof(query)); - try - { - - var link = "https://aniapi.nadekobot.me/anime/" + Uri.EscapeDataString(query.Replace("/", " ")); - link = link.ToLowerInvariant(); - var (ok, data) = await _cache.TryGetAnimeDataAsync(link).ConfigureAwait(false); - if (!ok) - { - data = await _http.GetStringAsync(link).ConfigureAwait(false); - await _cache.SetAnimeDataAsync(link, data).ConfigureAwait(false); - } - - - return JsonConvert.DeserializeObject(data); - } - catch - { - return null; - } - } - - public async Task GetMangaData(string query) - { - if (string.IsNullOrWhiteSpace(query)) - throw new ArgumentNullException(nameof(query)); - try - { - - var link = "https://aniapi.nadekobot.me/manga/" + Uri.EscapeDataString(query.Replace("/", " ")); - link = link.ToLowerInvariant(); - var (ok, data) = await _cache.TryGetAnimeDataAsync(link).ConfigureAwait(false); - if (!ok) - { - data = await _http.GetStringAsync(link).ConfigureAwait(false); - await _cache.SetAnimeDataAsync(link, data).ConfigureAwait(false); - } - - - return JsonConvert.DeserializeObject(data); - } - catch - { - return null; - } - } - } -} diff --git a/src/NadekoBot/Modules/Utility/Services/ConverterService.cs b/src/NadekoBot/Modules/Utility/Services/ConverterService.cs deleted file mode 100644 index 49bfd43e..00000000 --- a/src/NadekoBot/Modules/Utility/Services/ConverterService.cs +++ /dev/null @@ -1,141 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using Discord.WebSocket; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using Newtonsoft.Json; -using NLog; - -namespace NadekoBot.Modules.Utility.Services -{ - public class ConverterService : INService - { - public List Units { get; } = new List(); - private readonly Logger _log; - private readonly Timer _currencyUpdater; - private readonly TimeSpan _updateInterval = new TimeSpan(12, 0, 0); - private readonly DbService _db; - private readonly ConvertUnit[] fileData; - - public ConverterService(DiscordSocketClient client, DbService db) - { - _log = LogManager.GetCurrentClassLogger(); - _db = db; - - if (client.ShardId == 0) - { - try - { - fileData = JsonConvert.DeserializeObject>( - File.ReadAllText("data/units.json")) - .Select(u => new ConvertUnit() - { - Modifier = u.Modifier, - UnitType = u.UnitType, - InternalTrigger = string.Join("|", u.Triggers) - }).ToArray(); - - using (var uow = _db.UnitOfWork) - { - if (uow.ConverterUnits.Empty()) - { - uow.ConverterUnits.AddRange(fileData); - - Units = uow.ConverterUnits.GetAll().ToList(); - uow.Complete(); - } - } - } - catch (Exception ex) - { - _log.Warn("Could not load units: " + ex.Message); - } - } - - _currencyUpdater = new Timer(async (shouldLoad) => await UpdateCurrency((bool)shouldLoad), - client.ShardId == 0, - TimeSpan.FromSeconds(1), - _updateInterval); - } - - private async Task GetCurrencyRates() - { - using (var http = new HttpClient()) - { - var res = await http.GetStringAsync("http://api.fixer.io/latest").ConfigureAwait(false); - return JsonConvert.DeserializeObject(res); - } - } - - private async Task UpdateCurrency(bool shouldLoad) - { - try - { - var unitTypeString = "currency"; - if (shouldLoad) - { - var currencyRates = await GetCurrencyRates(); - var baseType = new ConvertUnit() - { - Triggers = new[] { currencyRates.Base }, - Modifier = decimal.One, - UnitType = unitTypeString - }; - var range = currencyRates.ConversionRates.Select(u => new ConvertUnit() - { - InternalTrigger = u.Key, - Modifier = u.Value, - UnitType = unitTypeString - }).ToArray(); - var toRemove = Units.Where(u => u.UnitType == unitTypeString); - - using (var uow = _db.UnitOfWork) - { - if(toRemove.Any()) - uow.ConverterUnits.RemoveRange(toRemove.ToArray()); - uow.ConverterUnits.Add(baseType); - uow.ConverterUnits.AddRange(range); - - await uow.CompleteAsync().ConfigureAwait(false); - } - Units.RemoveAll(u => u.UnitType == unitTypeString); - Units.Add(baseType); - Units.AddRange(range); - Units.AddRange(fileData); - } - else - { - using (var uow = _db.UnitOfWork) - { - Units.RemoveAll(u => u.UnitType == unitTypeString); - Units.AddRange(uow.ConverterUnits.GetAll().ToArray()); - } - } - } - catch - { - _log.Warn("Failed updating currency. Ignore this."); - } - } - } - - public class MeasurementUnit - { - public List Triggers { get; set; } - public string UnitType { get; set; } - public decimal Modifier { get; set; } - } - - public class Rates - { - public string Base { get; set; } - public DateTime Date { get; set; } - [JsonProperty("rates")] - public Dictionary ConversionRates { get; set; } - } -} diff --git a/src/NadekoBot/NadekoBot.csproj b/src/NadekoBot/NadekoBot.csproj index 816e2916..1bfb0e4f 100644 --- a/src/NadekoBot/NadekoBot.csproj +++ b/src/NadekoBot/NadekoBot.csproj @@ -4,33 +4,27 @@ netcoreapp2.0 2.0.0 exe - $(AssetTargetFallback);dnxcore50;portable-net45+win8+wpa81 nadeko_icon.ico - win7-x64 - Debug;Release;global_nadeko latest true - 1.9.1 + 2.0.0 $(VersionPrefix).$(VersionSuffix) $(VersionPrefix) - - - - - - - + Always + + PreserveNewest + - Always + PreserveNewest PreserveNewest @@ -38,44 +32,18 @@ PreserveNewest - - PreserveNewest - - - Never - - - - - - - - - - - - - - - - - - - - - - - - - + $(DefineConstants);GLOBAL_NADEKO $(NoWarn);CS1573;CS1591 - + + + + diff --git a/src/NadekoBot/NuGet.Config b/src/NadekoBot/NuGet.Config deleted file mode 100644 index b7e1e1e0..00000000 --- a/src/NadekoBot/NuGet.Config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/NadekoBot/Program.cs b/src/NadekoBot/Program.cs index 09e53142..86349dac 100644 --- a/src/NadekoBot/Program.cs +++ b/src/NadekoBot/Program.cs @@ -1,18 +1,29 @@ -namespace NadekoBot +using NadekoBot.Core.Services; +using System.Diagnostics; +using System.Threading.Tasks; + +namespace NadekoBot { public class Program { - public static void Main(string[] args) + public static Task Main(string[] args) { - if (args.Length == 3 && int.TryParse(args[0], out int shardId) && int.TryParse(args[1], out int parentProcessId)) + if (args.Length == 2 + && int.TryParse(args[0], out int shardId) + && int.TryParse(args[1], out int parentProcessId)) { - int? port = null; - if (int.TryParse(args[2], out var outPort)) - port = outPort; - new NadekoBot(shardId, parentProcessId, outPort).RunAndBlockAsync(args).GetAwaiter().GetResult(); + return new NadekoBot(shardId, parentProcessId) + .RunAndBlockAsync(args); } else - new NadekoBot(0, 0).RunAndBlockAsync(args).GetAwaiter().GetResult(); + { +#if DEBUG + var _ = new NadekoBot(0, Process.GetCurrentProcess().Id) + .RunAsync(args); +#endif + return new ShardsCoordinator() + .RunAndBlockAsync(); + } } } } diff --git a/src/NadekoBot/Services/Database/Models/ClashCaller.cs b/src/NadekoBot/Services/Database/Models/ClashCaller.cs deleted file mode 100644 index 88ad4b78..00000000 --- a/src/NadekoBot/Services/Database/Models/ClashCaller.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations.Schema; - -namespace NadekoBot.Services.Database.Models -{ - public class ClashCaller : DbEntity - { - public int? SequenceNumber { get; set; } = null; - public string CallUser { get; set; } - - public DateTime TimeAdded { get; set; } - - public bool BaseDestroyed { get; set; } - - public int Stars { get; set; } = 3; - - public int ClashWarId { get; set; } - - [ForeignKey(nameof(ClashWarId))] - public ClashWar ClashWar { get; set; } - } -} diff --git a/src/NadekoBot/Services/Database/Models/ClashWar.cs b/src/NadekoBot/Services/Database/Models/ClashWar.cs deleted file mode 100644 index aa1baca1..00000000 --- a/src/NadekoBot/Services/Database/Models/ClashWar.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Discord; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace NadekoBot.Services.Database.Models -{ - public class ClashWar : DbEntity - { - public string EnemyClan { get; set; } - public int Size { get; set; } - public StateOfWar WarState { get; set; } = StateOfWar.Created; - public DateTime StartedAt { get; set; } - - public ulong GuildId { get; set; } - public ulong ChannelId { get; set; } - - [NotMapped] - public ITextChannel Channel { get; set; } - - public List Bases { get; set; } = new List(); - } - - public enum DestroyStars - { - One, Two, Three - } - public enum StateOfWar - { - Started, Ended, Created - } -} diff --git a/src/NadekoBot/Services/Database/Models/ConvertUnit.cs b/src/NadekoBot/Services/Database/Models/ConvertUnit.cs deleted file mode 100644 index f31c4ad3..00000000 --- a/src/NadekoBot/Services/Database/Models/ConvertUnit.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.ComponentModel; -using System.ComponentModel.DataAnnotations.Schema; - -namespace NadekoBot.Services.Database.Models -{ - public class ConvertUnit : DbEntity - { - public ConvertUnit() { } - [NotMapped] - private string[] _triggersValue; - [NotMapped] - public string[] Triggers - { - get - { - return _triggersValue ?? (_triggersValue = InternalTrigger.Split('|')); - } - set - { - _triggersValue = value; - InternalTrigger = string.Join("|", _triggersValue); - } - } - //protected or private? - /// - /// DO NOT CALL THIS - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public string InternalTrigger { get; set; } - public string UnitType { get; set; } - public decimal Modifier { get; set; } - - public override bool Equals(object obj) - { - var cu = obj as ConvertUnit; - if (cu == null) - return false; - return cu.UnitType == this.UnitType; - } - - public override int GetHashCode() - { - return this.UnitType.GetHashCode(); - } - } - -} diff --git a/src/NadekoBot/Services/Database/Models/SelfAssignableRole.cs b/src/NadekoBot/Services/Database/Models/SelfAssignableRole.cs deleted file mode 100644 index 93e70223..00000000 --- a/src/NadekoBot/Services/Database/Models/SelfAssignableRole.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace NadekoBot.Services.Database.Models -{ - public class SelfAssignedRole : DbEntity - { - public ulong GuildId { get; set; } - public ulong RoleId { get; set; } - } -} diff --git a/src/NadekoBot/Services/Database/Repositories/IClashOfClansRepository.cs b/src/NadekoBot/Services/Database/Repositories/IClashOfClansRepository.cs deleted file mode 100644 index 14edcea8..00000000 --- a/src/NadekoBot/Services/Database/Repositories/IClashOfClansRepository.cs +++ /dev/null @@ -1,10 +0,0 @@ -using NadekoBot.Services.Database.Models; -using System.Collections.Generic; - -namespace NadekoBot.Services.Database.Repositories -{ - public interface IClashOfClansRepository : IRepository - { - IEnumerable GetAllWars(List guilds); - } -} diff --git a/src/NadekoBot/Services/Database/Repositories/ICurrencyTransactionsRepository.cs b/src/NadekoBot/Services/Database/Repositories/ICurrencyTransactionsRepository.cs deleted file mode 100644 index dd583ed9..00000000 --- a/src/NadekoBot/Services/Database/Repositories/ICurrencyTransactionsRepository.cs +++ /dev/null @@ -1,8 +0,0 @@ -using NadekoBot.Services.Database.Models; - -namespace NadekoBot.Services.Database.Repositories -{ - public interface ICurrencyTransactionsRepository : IRepository - { - } -} diff --git a/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs b/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs deleted file mode 100644 index 83d10990..00000000 --- a/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs +++ /dev/null @@ -1,9 +0,0 @@ -using NadekoBot.Services.Database.Models; - -namespace NadekoBot.Services.Database.Repositories -{ - public interface ICustomReactionRepository : IRepository - { - - } -} diff --git a/src/NadekoBot/Services/Database/Repositories/IUnitConverterRepository.cs b/src/NadekoBot/Services/Database/Repositories/IUnitConverterRepository.cs deleted file mode 100644 index 527f0de1..00000000 --- a/src/NadekoBot/Services/Database/Repositories/IUnitConverterRepository.cs +++ /dev/null @@ -1,11 +0,0 @@ -using NadekoBot.Services.Database.Models; -using System; - -namespace NadekoBot.Services.Database.Repositories -{ - public interface IUnitConverterRepository : IRepository - { - void AddOrUpdate(Func check, ConvertUnit toAdd, Func toUpdate); - bool Empty(); - } -} diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/ClashOfClansRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/ClashOfClansRepository.cs deleted file mode 100644 index 828c4bce..00000000 --- a/src/NadekoBot/Services/Database/Repositories/Impl/ClashOfClansRepository.cs +++ /dev/null @@ -1,24 +0,0 @@ -using NadekoBot.Services.Database.Models; -using System.Collections.Generic; -using System.Linq; -using Microsoft.EntityFrameworkCore; - -namespace NadekoBot.Services.Database.Repositories.Impl -{ - public class ClashOfClansRepository : Repository, IClashOfClansRepository - { - public ClashOfClansRepository(DbContext context) : base(context) - { - } - - public IEnumerable GetAllWars(List guilds) - { - var toReturn = _set - .Where(cw => guilds.Contains((long)cw.GuildId)) - .Include(cw => cw.Bases) - .ToList(); - toReturn.ForEach(cw => cw.Bases = cw.Bases.Where(w => w.SequenceNumber != null).OrderBy(w => w.SequenceNumber).ToList()); - return toReturn; - } - } -} diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/UnitCOnverterRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/UnitCOnverterRepository.cs deleted file mode 100644 index 2e3caa50..00000000 --- a/src/NadekoBot/Services/Database/Repositories/Impl/UnitCOnverterRepository.cs +++ /dev/null @@ -1,26 +0,0 @@ -using NadekoBot.Services.Database.Models; -using System; -using System.Linq; -using Microsoft.EntityFrameworkCore; - -namespace NadekoBot.Services.Database.Repositories.Impl -{ - public class UnitConverterRepository : Repository, IUnitConverterRepository - { - public UnitConverterRepository(DbContext context) : base(context) - { - } - - public void AddOrUpdate(Func check, ConvertUnit toAdd, Func toUpdate) - { - var existing = _set.FirstOrDefault(check); - if (existing != null) - { - existing = toUpdate.Invoke(existing); - } - else _set.Add(toAdd); - } - - public bool Empty() => !_set.Any(); - } -} diff --git a/src/NadekoBot/Services/IDataCache.cs b/src/NadekoBot/Services/IDataCache.cs deleted file mode 100644 index 3be7ad35..00000000 --- a/src/NadekoBot/Services/IDataCache.cs +++ /dev/null @@ -1,18 +0,0 @@ -using StackExchange.Redis; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace NadekoBot.Services -{ - public interface IDataCache - { - ConnectionMultiplexer Redis { get; } - Task<(bool Success, byte[] Data)> TryGetImageDataAsync(string key); - Task<(bool Success, string Data)> TryGetAnimeDataAsync(string key); - Task SetImageDataAsync(string key, byte[] data); - Task SetAnimeDataAsync(string link, string data); - } -} diff --git a/src/NadekoBot/Services/IImagesService.cs b/src/NadekoBot/Services/IImagesService.cs deleted file mode 100644 index 0b2b94f2..00000000 --- a/src/NadekoBot/Services/IImagesService.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Immutable; - -namespace NadekoBot.Services -{ - public interface IImagesService : INService - { - ImmutableArray Heads { get; } - ImmutableArray Tails { get; } - - ImmutableArray<(string, ImmutableArray)> Currency { get; } - ImmutableArray> Dice { get; } - - ImmutableArray SlotBackground { get; } - ImmutableArray> SlotEmojis { get; } - ImmutableArray> SlotNumbers { get; } - - ImmutableArray WifeMatrix { get; } - ImmutableArray RategirlDot { get; } - - ImmutableArray XpCard { get; } - - void Reload(); - } -} diff --git a/src/NadekoBot/Services/INService.cs b/src/NadekoBot/Services/INService.cs deleted file mode 100644 index 13bbbeea..00000000 --- a/src/NadekoBot/Services/INService.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace NadekoBot.Services -{ - /// - /// All services must implement this interface in order to be auto-discovered by the DI system - /// - public interface INService - { - - } -} diff --git a/src/NadekoBot/Services/Impl/ImagesService.cs b/src/NadekoBot/Services/Impl/ImagesService.cs deleted file mode 100644 index 3bb0bd2e..00000000 --- a/src/NadekoBot/Services/Impl/ImagesService.cs +++ /dev/null @@ -1,93 +0,0 @@ -using NLog; -using System; -using System.Collections.Immutable; -using System.IO; -using System.Linq; - -namespace NadekoBot.Services.Impl -{ - public class ImagesService : IImagesService - { - private readonly Logger _log; - - private const string _basePath = "data/images/"; - - private const string _headsPath = _basePath + "coins/heads.png"; - private const string _tailsPath = _basePath + "coins/tails.png"; - - private const string _currencyImagesPath = _basePath + "currency"; - private const string _diceImagesPath = _basePath + "dice"; - - private const string _slotBackgroundPath = _basePath + "slots/background2.png"; - private const string _slotNumbersPath = _basePath + "slots/numbers/"; - private const string _slotEmojisPath = _basePath + "slots/emojis/"; - - private const string _wifeMatrixPath = _basePath + "rategirl/wifematrix.png"; - private const string _rategirlDot = _basePath + "rategirl/dot.png"; - - private const string _xpCardPath = _basePath + "xp/xp.png"; - - - public ImmutableArray Heads { get; private set; } - public ImmutableArray Tails { get; private set; } - - public ImmutableArray<(string, ImmutableArray)> Currency { get; private set; } - - public ImmutableArray> Dice { get; private set; } - - public ImmutableArray SlotBackground { get; private set; } - public ImmutableArray> SlotNumbers { get; private set; } - public ImmutableArray> SlotEmojis { get; private set; } - - public ImmutableArray WifeMatrix { get; private set; } - public ImmutableArray RategirlDot { get; private set; } - - public ImmutableArray XpCard { get; private set; } - - public ImagesService() - { - _log = LogManager.GetCurrentClassLogger(); - this.Reload(); - } - - public void Reload() - { - try - { - Heads = File.ReadAllBytes(_headsPath).ToImmutableArray(); - Tails = File.ReadAllBytes(_tailsPath).ToImmutableArray(); - - Currency = Directory.GetFiles(_currencyImagesPath) - .Select(x => (Path.GetFileName(x), File.ReadAllBytes(x).ToImmutableArray())) - .ToImmutableArray(); - - Dice = Directory.GetFiles(_diceImagesPath) - .OrderBy(x => int.Parse(Path.GetFileNameWithoutExtension(x))) - .Select(x => File.ReadAllBytes(x).ToImmutableArray()) - .ToImmutableArray(); - - SlotBackground = File.ReadAllBytes(_slotBackgroundPath).ToImmutableArray(); - - SlotNumbers = Directory.GetFiles(_slotNumbersPath) - .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))) - .Select(x => File.ReadAllBytes(x).ToImmutableArray()) - .ToImmutableArray(); - - SlotEmojis = Directory.GetFiles(_slotEmojisPath) - .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))) - .Select(x => File.ReadAllBytes(x).ToImmutableArray()) - .ToImmutableArray(); - - WifeMatrix = File.ReadAllBytes(_wifeMatrixPath).ToImmutableArray(); - RategirlDot = File.ReadAllBytes(_rategirlDot).ToImmutableArray(); - - XpCard = File.ReadAllBytes(_xpCardPath).ToImmutableArray(); - } - catch (Exception ex) - { - _log.Error(ex); - throw; - } - } - } -} \ No newline at end of file diff --git a/src/NadekoBot/Services/Impl/RedisCache.cs b/src/NadekoBot/Services/Impl/RedisCache.cs deleted file mode 100644 index e0951120..00000000 --- a/src/NadekoBot/Services/Impl/RedisCache.cs +++ /dev/null @@ -1,43 +0,0 @@ -using StackExchange.Redis; -using System.Threading.Tasks; - -namespace NadekoBot.Services.Impl -{ - public class RedisCache : IDataCache - { - private ulong _botid; - - public ConnectionMultiplexer Redis { get; } - private readonly IDatabase _db; - - public RedisCache(ulong botId) - { - _botid = botId; - Redis = ConnectionMultiplexer.Connect("127.0.0.1"); - Redis.PreserveAsyncOrder = false; - _db = Redis.GetDatabase(); - } - - public async Task<(bool Success, byte[] Data)> TryGetImageDataAsync(string key) - { - byte[] x = await _db.StringGetAsync("image_" + key); - return (x != null, x); - } - - public Task SetImageDataAsync(string key, byte[] data) - { - return _db.StringSetAsync("image_" + key, data); - } - - public async Task<(bool Success, string Data)> TryGetAnimeDataAsync(string key) - { - string x = await _db.StringGetAsync("anime_" + key); - return (x != null, x); - } - - public Task SetAnimeDataAsync(string key, string data) - { - return _db.StringSetAsync("anime_" + key, data); - } - } -} diff --git a/src/NadekoBot/ShardsCoordinator.cs b/src/NadekoBot/ShardsCoordinator.cs deleted file mode 100644 index 72ed349c..00000000 --- a/src/NadekoBot/ShardsCoordinator.cs +++ /dev/null @@ -1,84 +0,0 @@ -using NadekoBot.Services; -using NadekoBot.Services.Impl; -using NLog; -using System; -using System.Diagnostics; -using System.Linq; -using System.Threading.Tasks; -using NadekoBot.Common.ShardCom; - -namespace NadekoBot -{ - public class ShardsCoordinator - { - private readonly BotCredentials _creds; - private readonly Process[] _shardProcesses; - public ShardComMessage[] Statuses { get; } - public int GuildCount => Statuses.ToArray() - .Where(x => x != null) - .Sum(x => x.Guilds); - - private readonly Logger _log; - private readonly ShardComServer _comServer; - private readonly int _port; - private readonly int _curProcessId; - - public ShardsCoordinator(int port) - { - LogSetup.SetupLogger(); - _creds = new BotCredentials(); - _shardProcesses = new Process[_creds.TotalShards]; - Statuses = new ShardComMessage[_creds.TotalShards]; - _log = LogManager.GetCurrentClassLogger(); - _port = port; - - _comServer = new ShardComServer(port); - _comServer.Start(); - - _comServer.OnDataReceived += _comServer_OnDataReceived; - - _curProcessId = Process.GetCurrentProcess().Id; - } - - private Task _comServer_OnDataReceived(ShardComMessage msg) - { - Statuses[msg.ShardId] = msg; - - if (msg.ConnectionState == Discord.ConnectionState.Disconnected || msg.ConnectionState == Discord.ConnectionState.Disconnecting) - _log.Error("!!! SHARD {0} IS IN {1} STATE", msg.ShardId, msg.ConnectionState.ToString()); - return Task.CompletedTask; - } - - public async Task RunAsync() - { - for (int i = 1; i < _creds.TotalShards; i++) - { - var p = Process.Start(new ProcessStartInfo() - { - FileName = _creds.ShardRunCommand, - Arguments = string.Format(_creds.ShardRunArguments, i, _curProcessId, _port) - }); - await Task.Delay(5000); - } - } - - public async Task RunAndBlockAsync() - { - try - { - await RunAsync().ConfigureAwait(false); - } - catch (Exception ex) - { - _log.Error(ex); - } - - await Task.Delay(-1); - foreach (var p in _shardProcesses) - { - try { p.Kill(); } catch { } - try { p.Dispose(); } catch { } - } - } - } -} diff --git a/src/NadekoBot/_strings/ResponseStrings.ar.json b/src/NadekoBot/_strings/ResponseStrings.ar.json index 9e316646..f959f613 100644 --- a/src/NadekoBot/_strings/ResponseStrings.ar.json +++ b/src/NadekoBot/_strings/ResponseStrings.ar.json @@ -1,44 +1,21 @@ { - "clashofclans_base_already_claimed": "تم الاسنيلاء على القاعدة ,او مدمرة", - "clashofclans_base_already_destroyed": "القاعدة مدمرة", - "clashofclans_base_already_unclaimed": "تلك القاعدة غير محتلة", - "clashofclans_base_destroyed": "** تدمير** القاعدة #{0} في الحرب ضد {1}", - "clashofclans_base_unclaimed": "{0}**قد تنازل**عن قاعدة #{1} في الحرب ضد {2}", - "clashofclans_claimed_base": "{0} استولى على قاعدة #{1} في الحرب ضد {2}", - "clashofclans_claimed_other": "@{0} أنت استوليت بالفعل قاعدة # {1}. لا يمكنك المطالبة بوحدة جديدة.", - "clashofclans_claim_expired": "الاستولى من @{0} في الحرب ضد {1} قد انته.", - "clashofclans_enemy": "عدو", - "clashofclans_info_about_war": "معلومات عن الحرب ضد {0}", - "clashofclans_invalid_base_number": "رقم القاعدة خطأ.", - "clashofclans_invalid_size": "غير متاح حجم الحرب.", - "clashofclans_list_active_wars": "قائمة الحرب القائمة", - "clashofclans_not_claimed": "غير محتلة", - "clashofclans_not_partic": "انت لست مدرج في هذه الحرب", - "clashofclans_not_partic_or_destroyed": "@{0} لست مشارك في الحرب , او ان القاعدة قد تدمرت", - "clashofclans_no_active_wars": "لا توجد حروب ناشطة", - "clashofclans_size": "حجم", - "clashofclans_war_already_started": "الحرب ضد {0} قد بدأت", - "clashofclans_war_created": "أنشئت حرب ضد {0}.", - "clashofclans_war_ended": "الحرب ضد {0} قد انتهت", - "clashofclans_war_not_exist": "هذه الحرب لا توجد", - "clashofclans_war_started": "الحرب ضد {0} قد بدأت", - "customreactions_all_stats_cleared": "كل خصائص الرموز التعبيرية المخصصى خالية", - "customreactions_deleted": "تم محي الرمز التعبيري المخصص", - "customreactions_insuff_perms": "أذونات غير كافية. البوت بحاجة الى تصريح المالك لتعديل الرد التفاعلي , وايضا المدير لتخصيص الرد التفاعلي", + "customreactions_all_stats_cleared": "كل خصائص الرموز التعبيرية المخصصى خالية.", + "customreactions_deleted": "تم محي الرمز التعبيري المخصص.", + "customreactions_insuff_perms": "أذونات غير كافية. البوت بحاجة الى تصريح المالك لتعديل الرد التفاعلي , وايضا المدير لتخصيص الرد التفاعلي.", "customreactions_list_all": "فائمة الرموز التعبيرية المخصصة", "customreactions_name": "الرموز التعبيرية المخصصة", "customreactions_new_cust_react": "رمز تعبيري مخصص جديد", - "customreactions_no_found": "لم يوجد هذا الرمز", - "customreactions_no_found_id": "الرمز التعبيري المخصص ليس موجود حسب المدخل", - "customreactions_response": "الإستجاب", + "customreactions_no_found": "لم يوجد هذا الرمز.", + "customreactions_no_found_id": "الرمز التعبيري المخصص ليس موجود حسب المدخل.", + "customreactions_response": "الإستجابة", "customreactions_stats": "احصائيات الرموز التعبيرية مخصصة", "customreactions_stats_cleared": "الخصائص خالية {0} للترميز التفاعلي", "customreactions_stats_not_found": "لا يوجد خصائص مفعلة متاحة , لم يتم اتخاذ اي اجراء.", "customreactions_trigger": "تفعيل", - "nsfw_autohentai_stopped": "Autohentai توقف", + "nsfw_autohentai_stopped": "توقف Autohentai.", "nsfw_not_found": "لا توجد نتائج.", - "pokemon_already_fainted": "{0} قد اغمي عليه", - "pokemon_already_full": "{0} عنده من قبل HP كامل", + "pokemon_already_fainted": "{0} قد اغمي عليه.", + "pokemon_already_full": "{0} عنده من قبل HP كامل.", "pokemon_already_that_type": "لديك النوع التالي {0}.", "pokemon_attack": "استخدام {0}{1} على {2}{3} لضرر {4}.", "pokemon_cant_attack_again": "لا يمكنك الهجوم مرة أخرى دون انتقام!", @@ -63,9 +40,9 @@ "administration_aar_enabled": "**تعين دور ** على ضخول مستخدم**تم تشغيله **.", "administration_attachments": "مرفق .", "administration_avatar_changed": "تغير المظهر .", - "administration_bandm": "تم طردك من السيرفر {0} .\nالسبب : {1} .", - "administration_banned_pl": "تم طردك .", - "administration_banned_user": "المستخدم مطرود .", + "administration_bandm": "تم حظرك من السيرفر {0} .\nالسبب : {1} .", + "administration_banned_pl": "تم الحظر", + "administration_banned_user": "المستخدم محظور", "administration_bot_name": "تغير اسم البوت الى {0} .", "administration_bot_status": "خصائص البوت غيرت الى {0}.", "administration_byedel_off": "تم تعطيل الحذف الالي لرسالة الوداع.", @@ -203,10 +180,10 @@ "administration_slowmode_desc": "لا يمكن للمستخدمين إرسال أكثر من {0} رسائل كل {1} ثواني.", "administration_slowmode_disabled": "الوضع البطيئ تم ايقافه .", "administration_slowmode_init": "الوضع البطيئ تم تفعيله .", - "administration_soft_banned_pl": "حظر ناعم (رفض)", + "administration_soft_banned_pl": "حظر خفيف", "administration_spam_ignore": "{0} سيتجاهل هذه القناة.", "administration_spam_not_ignore": "{0} لم يعد يتجاهل هذه القناة.", - "administration_spam_stats": "إذا نشر مستخدم {0} نفس الرسائل على التوالي، فسوف أفعل {1} ببهم.\n __ignoredChannels__: {2}", + "administration_spam_stats": "إذا نشر مستخدم {0} نفس الرسائل على التوالي، فسوف أفعل {1} بهم.\n{2} :__ignoredChannels__", "administration_text_chan_created": "قناة كتبه صنعت", "administration_text_chan_destroyed": "تدمير قناة المراسلة .", "administration_undeafen": "ازالة عدم السماع بنجاح .", @@ -214,7 +191,7 @@ "administration_username": "اسم المستخدم", "administration_username_changed": "اسم المستخدم تغير", "administration_users": "المستخدمين .", - "administration_user_banned": "المستخدم مطرود .", + "administration_user_banned": "المستخدم محظور", "administration_user_chat_mute": "{0} تم **صامتة** من الدردشة.", "administration_user_chat_unmute": "{0} تم **إلغاء صامتة** من الدردشة.", "administration_user_joined": "تم اضافة مستخدم .", @@ -239,11 +216,11 @@ "administration_xmuted_text": "المستخدم (0) من كتابة الرسائل", "administration_xmuted_text_and_voice": "المستخدم (0) من الكتابة ومحادثة الصوت", "administration_xmuted_voice": "المستخدم {0} من محادثة الصوت", - "administration_sbdm": "لقد تم حظرك من {0} مزود.\nالسبب: {1}", - "administration_user_unbanned": "ازالة الطرد عن المستخدم", + "administration_sbdm": "لقد تم حظرك بخفة من السيرفر {0}.\nالسبب: {1}", + "administration_user_unbanned": "المستخدم أزيل حظره", "administration_migration_done": "تمت الهجرة !", "administration_presence_updates": "التحديث الحالي", - "administration_sb_user": "المستخدم طرد-مخفض", + "administration_sb_user": "المستخدم أصبح محظور بخفة", "gambling_awarded": "تم منح {0} الى {1}", "gambling_better_luck": "حظا اوفر المرة القادمة ^_^", "gambling_br_win": "مبارك لقد فزت {0} دحرجة فوق {1}", @@ -318,24 +295,24 @@ "gambling_divorces": "طلاق", "gambling_likes": "اعجاب", "gambling_price": "ثمن", - "gambling_waifus_none": "لم يتم المطلبة بأي waifus بعد.", + "gambling_waifus_none": "لم يتم المطلبة بأي Waifus بعد.", "gambling_waifus_top_waifus": "افضل Waifus", "gambling_waifu_affinity_already": "تم تعيين تقاربك بالفعل على Waifus أو كنت تحاول إزالة تقاربك أثناء عدم وجود واحد.", "gambling_waifu_affinity_changed": "تغير إنجذابهم من {0} الى {1}\n*هذا مشكوك فيه أدبياً.*🤔 ", "gambling_waifu_affinity_cooldown": "يجب ان تنتظر {0} ساعات و {1} دقائق إذا اردت تغيير انجذابك مرة أخرى.", "gambling_waifu_affinity_reset": "تم إعادته إنجذابك. ليس لديك أي شخص تحبه.", - "gambling_waifu_affinity_set": "يريد ان يكون {0} وايفو. كيوووت 3>", - "gambling_waifu_claimed": "امتلك {0} waifu مقابل {1}!", - "gambling_waifu_divorced_like": "لقد طلقت waifu التي معجبة بك. أنت الوحش بلا قلب.\n{0} تلقى {1} كتعويض.", - "gambling_waifu_egomaniac": "لا يمكنك تعيين تقارب لنفسك، انت إغومانياك.", + "gambling_waifu_affinity_set": "يريد ان يكون {0} Waifu. كيوووت 3>", + "gambling_waifu_claimed": "امتلك {0} Waifu مقابل {1}!", + "gambling_waifu_divorced_like": "لقد طلقت Waifu التي معجبة بك. أنت الوحش بلا قلب.\n{0} تلقى {1} كتعويض.", + "gambling_waifu_egomaniac": "لا يمكنك تعيين تقارب لنفسك، أيها النرجسي.", "gambling_waifu_fulfilled": "🎉 يتم الوفاء بحبهم! 🎉\nقيمة {0} الجديدة {1}!", - "gambling_waifu_isnt_cheap": "ليس هنلك waifu بذلك الرخيص. يجب أن تدفع {0} على الأقل للحصول على waifu، حتى لو كانت قيمتها الفعلية أقل.", - "gambling_waifu_not_enough": "يجب أن تدفع {0} أو أكثر للمطالبة بذلك waifu!", - "gambling_waifu_not_yours": "هذه ليست زوجنك", + "gambling_waifu_isnt_cheap": "ليس هنلك Waifu بهذا السعر الرخيص. يجب أن تدفع {0} على الأقل للحصول على Waifu، حتى لو كانت قيمتها الفعلية أقل.", + "gambling_waifu_not_enough": "يجب أن تدفع {0} أو أكثر للمطالبة بذلك Waifu!", + "gambling_waifu_not_yours": "هذه ليست الWaifu خاصتك.", "gambling_waifu_not_yourself": "لا يمكنك المطالبة بنفسك.", "gambling_waifu_recent_divorce": "كنت مطلقا مؤخرا. يجب عليك الانتظار {0} ساعة و {1} دقائق للطلاق مرة أخرى.", "gambling_nobody": "لا أحد", - "gambling_waifu_divorced_notlike": "لقد طلقت waifu التي لا تحبك . لقد تلقيت {0}", + "gambling_waifu_divorced_notlike": "لقد طلقت Waifu التي لا تحبك . لقد تلقيت {0}", "games_8ball": "8 كرة", "games_acrophobia": "رهاب الأجسام.", "games_acro_ended_no_sub": "اللعبة انتهت بدون اي اخضاع.", @@ -795,14 +772,101 @@ "administration_migration_error": "حدث خطأ أثناء الترحيل، راجع وحدة تحكم بوت للحصول على مزيد من المعلومات.", "searches_hex_invalid": "اللون المحدد غير صالح.", "permissions_global_perms_reset": "تمت إعادة تعيين الأذونات كاملة.", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "" + "help_module": "وِحدة: {0}", + "games_hangman_stopped": "لعبة الشانق قد توقفت.", + "music_autoplaying": "تم التشغيل الآلي", + "music_queue_stopped": "مشغل الموسيقى قد توقف. استخدم {0} الأمر لإعادة تشغيله.", + "music_removed_song_error": "الاغنية ليست موجدة في الفهرس", + "music_shuffling_playlist": "متخليط الأغاني عشوائياً", + "music_songs_shuffle_enable": "سوف يتم تخليط الأغاني عشوائيأ من الآن فصاعداً", + "music_songs_shuffle_disable": "لن يتم تخليط الأغاني", + "music_song_skips_after": "سيتم تخطي الأغاني بعد {0}", + "administration_warnings_list": "قائمة الاشخاص المحذرين على السيرفر", + "customreactions_redacted_too_long": "تم الحجب لأنه طويل جدا", + "nsfw_blacklisted_tag_list": "قائمة علامات القائمة السوداء", + "nsfw_blacklisted_tag": "احد العلامات التي استخدمتها او اكثر موجودين في القائمة السوداء.", + "nsfw_blacklisted_tag_add": "علامة الNsfw أصبحت من ضمن القائمة السوداء.", + "nsfw_blacklisted_tag_remove": "علامة الNsfw لم تعد من ضمن القائمة السوداء.", + "gambling_waifu_gift": "أهديت {0} ل{1}", + "gambling_waifu_gift_shop": "سوق هدايا الWaifu", + "gambling_gifts": "هدايا", + "games_connect4_created": "تم إنشاء لعبة Connect4. في انتظار المزيد من اللاعبيين.", + "games_connect4_player_to_move": "دور اللاعب: {0}", + "games_connect4_failed_to_start": "لعبة Connect4 فشلت في البدأ لأن لا أحد دخل.", + "games_connect4_draw": "انتهت لعبة Connect4 في التعادل.", + "games_connect4_won": "{0} فاز لعبة Connect4 ضد {1} .", + "games_nunchi_joined": "تم الانضمام للعبة Nunchi. انضموا {0} لاعبين لحد الآن.", + "games_nunchi_ended": "انتهت لعبة Nunchi. فاز {0} . ", + "games_nunchi_ended_no_winner": "انتهت لعبة Nunchi من دون فائز.", + "games_nunchi_started": "لعبة Nunchi بدأت ب{0} لاعبين.", + "games_nunchi_round_ended": "انتهت الجولة. المستخدم {0} خارج من اللعبة.", + "games_nunchi_round_ended_boot": "انتهت اللعبة بسبب انتهاء الوقت المسموح لبعض اللاعبين. اللاعبين ما زالوا في اللعبة: {0}", + "games_nunchi_round_started": "دور Nunchi بدأ ب{0} لاعبين. أبدأ العد من الرقم {0} .", + "games_nunchi_next_number": "تسجل الرقم. آخر رقم تسجل كان {0}.", + "games_nunchi_failed_to_start": "لعبة Nunchi فشلت في البدأ لأن عدد اللاعبين أقل من المطلوب.", + "games_nunchi_created": "لعبة Nunchi بدأت. جاري انتظار اللاعبين.", + "music_sad_enabled": "الأغاني ستمحى من قائمة الموسيقى عندما تنتهي.", + "music_sad_disabled": "الأغاني لن تمحى من قائمة الموسيقى عندما تنتهي.", + "utility_stream_role_enabled": "عندما يبدأ شخص من {0} بالبث, سأعطيه دور {1}.", + "utility_stream_role_disabled": "خاصية بث الدور أغلقت.", + "utility_stream_role_kw_set": "المبثون الآن يحتاجون الى الكلمة {0} للحصول على الدور.", + "utility_stream_role_kw_reset": "اعادة الكلمة الرئيسية لدور البث", + "utility_stream_role_bl_add": "المستخدم {0} لن يحصل على دور البث ابدا.", + "utility_stream_role_bl_add_fail": "المستخدم {0} موجود في القائمة السوداء.", + "utility_stream_role_bl_rem": "المستخدم {0} لم يعد في القائمة السوداء.", + "utility_stream_role_bl_rem_fail": "المستخدم {0} ليس في القائمة السوداء.", + "utility_stream_role_wl_add": "المستخدم {0} سوف يحصل على دور البث اذا لا يوجد كلمة رئيسية في عنوان البث.", + "utility_stream_role_wl_add_fail": "المستخدم {0} موجود في القائمة البيضاء.", + "utility_stream_role_wl_rem": "المستخدم {0} لم يغد في القائمة البيضاء.", + "utility_stream_role_wl_rem_fail": "المستخدم {0} ليس في القائمة البيضاء.", + "utility_bot_config_edit_fail": "فشلت محاولة تحديد {0} لقيمة {1}", + "utility_bot_config_edit_success": "قيمة {0} هي {1}", + "customreactions_crca_disabled": "خصائص الرموز التعبيرية المخصصة مع رمز الهوية {0} لن يكون قادر على الاستجابة الا اذا كانت كلمة الاستجابة في بداية الجملة.", + "customreactions_crca_enabled": "خصائص الرموز التعبيرية المخصصة مع رمز الهوية {0} ستكون قادرة على الاستجابة اذا كانت توجد في أي مكان في الجملة.", + "xp_server_level": "مستوى السيرفر", + "xp_level": "المستوى", + "xp_club": "النادي", + "xp_xp": "الخبرة", + "xp_excluded": "{0} أصبح مستبعدا من نظام الXP على هذا السيرفر.", + "xp_not_excluded": "{0} لم يعد مستبعدا من نظام الXP على هذا السيرفر.", + "xp_exclusion_list": "قائمة الاستبعاد.", + "xp_server_is_excluded": "هذا السيرفر مستبعد.", + "xp_server_is_not_excluded": "هذا السيرفر ليس مستبعدا.", + "xp_excluded_roles": "الادوار المستبعدة.", + "xp_excluded_channels": "القتنوات المستبعدة.", + "xp_level_up_channel": "تهانينا {0}, لقد وصلت المستوى {1}!", + "xp_level_up_dm": "تهانينا {0}, لقد وصلت المستوى {1} في السيرفر {2}!", + "xp_level_up_global": "تهانينا {0}, لقد وصلت المستوى {1} على المستوى الدولي!", + "xp_role_reward_cleared": "المستوى {0} لن يهدي دورا.", + "xp_role_reward_added": "المستخدمين الذين وصلوا المستوى {0} سيحصلون على الدور {1} .", + "xp_role_rewards": "جوائز الدور", + "xp_level_x": "المستوى {0}", + "xp_no_role_rewards": "لا توجد جائزة دور في هذه الصفحة.", + "xp_server_leaderboard": "قائمة متصدرين الXP في السيرفر.", + "xp_global_leaderboard": "قائمة متصدرين الXP على مستوى السيرفرات.", + "xp_modified": "تم تعديل XP السيرفر من قبل المستخدم {0} ب{1} .", + "xp_club_create_error": "فشل في انشاء النادي. تأكد من انك اعلى من المستوى 5  و انك لست عضوا في نادي اخر.", + "xp_club_created": "النادي {0} تكون بنجاح!", + "xp_club_not_exists": "لا يوجد النادي.", + "xp_club_applied": "لقد سجلت للعضوية في النادي {0} .", + "xp_club_apply_error": "خلل في التسجيل. ربما تكون عضوا من قبل, أو أنك لم تصل لأقل متطلبات المستوى, أو أنك محظور منه.", + "xp_club_accepted": "تم قبول المستخدم {0} في النادي.", + "xp_club_accept_error": "لم يتم العثور على المستخدم.", + "xp_club_left": "لقد خرجت من النادي.", + "xp_club_not_in_club": "أنت لست في نادي, أو أنك تحاول الخروج من النادي الذي تملكه.", + "xp_club_user_kick": "تم طرد المستخدم {0} من النادي {1} .", + "xp_club_user_kick_fail": "خلل في الطرد. ربما أنت لست صاحب النادي أو أن المستخدم ليس في ناديك.", + "xp_club_user_banned": "تم حظر المستخدم {0} من النادي {1} . ", + "xp_club_user_ban_fail": "فشلت محاولة الحظر. ربما لست صاحب النادي, أو أن المستخدم ليس في النادي أو سجل فيه.", + "xp_club_user_unbanned": "رفع الحظر عن {0} في النادي {1} .", + "xp_club_user_unban_fail": "فشلت محاولة رفع الحظر. ربما أنت لست صاحب النادي, أو ربما المستخدم ليس في ناديك أو سجل فيه.", + "xp_club_level_req_changed": "تم تغيير متطلبات المستوى في السيرفر ل{0} .", + "xp_club_level_req_change_error": "فشل في تغيير متطلبات المستوى.", + "xp_club_disbanded": "تم حل النادي {0}.", + "xp_club_disband_error": "خلل. إما انك لست عضوا في النادي او انك لست مالك النادي.", + "xp_club_icon_error": "ليس رابط صورة صحيح أو أنك لست صاحب النادي.", + "xp_club_icon_set": "تم تثبيت ايقونة جديدة للنادي. ", + "xp_club_bans_for": "الحظر للنادي {0}", + "xp_club_apps_for": "المسجلين في النادي {0}", + "xp_club_leaderboard": "قائمة المتصدرين للنوادي - صفحة {0} ." } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.da-DK.json b/src/NadekoBot/_strings/ResponseStrings.da-DK.json index 0f556069..2bf18fcf 100644 --- a/src/NadekoBot/_strings/ResponseStrings.da-DK.json +++ b/src/NadekoBot/_strings/ResponseStrings.da-DK.json @@ -1,146 +1,123 @@ { - "clashofclans_base_already_claimed": "Denne base er enten blevet ødelagt, eller der en anden, som allerede har gjort krav på den.", - "clashofclans_base_already_destroyed": "Denne base er allerede ødelagt.", - "clashofclans_base_already_unclaimed": "Der er ikke blevet gjort krav på denne base.", - "clashofclans_base_destroyed": "**ØDELAGT** base #{0} i en krig mod {1}", - "clashofclans_base_unclaimed": "{0} har **OPGIVET DERES KRAV PÅ** base#{1} i krig i mod {2}", - "clashofclans_claimed_base": "{0} har gjort krav på base #{1} i en krig mod {2}", - "clashofclans_claimed_other": "@{0} Du har allerede gjort krav på base #{1}. du kan ikke gøre krav på en ny en.", - "clashofclans_claim_expired": "Kravet fra @{0} på basen i krigen mod {1} er udløbet.", - "clashofclans_enemy": "Modstander", - "clashofclans_info_about_war": "Information omkring krigen mod {0}", - "clashofclans_invalid_base_number": "Ugyldigt base nummer.", - "clashofclans_invalid_size": "Ugyldig krigsstørrelse.", - "clashofclans_list_active_wars": "Liste af aktive krige.", - "clashofclans_not_claimed": "Intet krav", - "clashofclans_not_partic": "Du er ikke med i denne krig.", - "clashofclans_not_partic_or_destroyed": "@{0} Du er enten ikke med i krigen, eller basen er allerede ødelagt.", - "clashofclans_no_active_wars": "Ingen aktive krige.", - "clashofclans_size": "Størrelse", - "clashofclans_war_already_started": "Krig mod {0} er allerede begyndt.", - "clashofclans_war_created": "Krig mod {0} oprettet.", - "clashofclans_war_ended": "Krig mod {0} sluttet.", - "clashofclans_war_not_exist": "Denne krig eksisterer ikke.", - "clashofclans_war_started": "Krigen mod {0} er startet!", - "customreactions_all_stats_cleared": "Alle statistikerne på brugerdefinerede reaktioner er blevet nulstillet.", + "customreactions_all_stats_cleared": "Alle brugerdefinerede reaktionsstatistikker er blevet nulstillet.", "customreactions_deleted": "Brugerdefineret reaktion slettet.", - "customreactions_insuff_perms": "Ikke nogle rettigheder. Kræver Bot ejerskab for globale bruger lavede reaktioner, og Administrator for server reaktioner.", + "customreactions_insuff_perms": "Utilstrækkelige rettigheder. Kræver Bot ejerskab for globale brugerdefinerede reaktioner, og Administrator for server brugerdefinerede reaktioner.", "customreactions_list_all": "Liste på alle brugerdefinerede reaktioner.", "customreactions_name": "Brugerdefinerede reaktioner", "customreactions_new_cust_react": "Ny brugerdefineret reaktion", "customreactions_no_found": "Ingen brugedefineret reaktion blev fundet.", "customreactions_no_found_id": "Ingen brugerdefineret reaktion blev fundet med dette id.", "customreactions_response": "Svar", - "customreactions_stats": "Bruger lavet reaktion statistik.", - "customreactions_stats_cleared": "statistik nulstillet for {0} bruger lavet reaktion.", - "customreactions_stats_not_found": "Ingen statistik for den udløser blev fundet, har ikke udført nogen handling.", + "customreactions_stats": "Brugerlavet reaktion statistikker", + "customreactions_stats_cleared": "Statistik nulstillet for {0} brugerlavet reaktion.", + "customreactions_stats_not_found": "Ingen statistik for denne udløser blev fundet, ingen handling udført.", "customreactions_trigger": "Udløser", - "nsfw_autohentai_stopped": "AutoHentai stoppet.", + "nsfw_autohentai_stopped": "Autohentai stoppet.", "nsfw_not_found": "Ingen resultater fundet.", "pokemon_already_fainted": "{0} er allerede besvimet.", "pokemon_already_full": "{0} har allerede fuld HP.", - "pokemon_already_that_type": "Du er allerede typen {0}", - "pokemon_attack": "Brugte {0}{1} i mod {2}{3} for {4} skade.", + "pokemon_already_that_type": "Din type er allerede {0}", + "pokemon_attack": "brugte {0}{1} imod {2}{3} for {4} skade.", "pokemon_cant_attack_again": "Du kan ikke angribe igen uden et hævnangreb!", "pokemon_cant_attack_yourself": "Du kan ikke angribe dig selv.", "pokemon_fainted": "{0} besvimede!", - "pokemon_healed": "Kurerede {0} med en {1}", + "pokemon_healed": "helede {0} med en {1}", "pokemon_hp_remaining": "{0} har {1} HP tilbage.", - "pokemon_invalid_move": "Du kan ikke bruge {0}. Skriv '{1}ml' for at se en liste af angreb du kan lave.", + "pokemon_invalid_move": "Du kan ikke bruge {0}. Skriv '{1}ml' for at se en liste af træk du kan bruge.", "pokemon_moves": "Angrebsliste for {0} typen.", "pokemon_not_effective": "Det er ikke effektivt.", - "pokemon_no_currency": "Du er ikke nok {0}", - "pokemon_revive_other": "Genoplivede {0} med en {1}", + "pokemon_no_currency": "Du har ikke nok {0}", + "pokemon_revive_other": "genoplivede {0} med en {1}", "pokemon_revive_yourself": "Du genoplivede dig selv med en {0}", "pokemon_settype_success": "Din type er blevet skiftet til {0} for en {1}", "pokemon_somewhat_effective": "Det er nogenlunde effektivt.", "pokemon_super_effective": "Det er super effektivt!", - "pokemon_too_many_moves": "Du brugte for mange angreb efter hinanden, så du kan ikke bevæge dig!", - "pokemon_type_of_user": "typen af {0} er {1}", + "pokemon_too_many_moves": "Du brugte for mange træk efter hinanden, så du kan ikke bevæge dig!", + "pokemon_type_of_user": "{0}s type er {1}", "pokemon_user_not_found": "Bruger blev ikke fundet.", "pokemon_you_fainted": "Du besvimede, så du kan ikke bevæge dig!", - "administration_aar_disabled": "**Automatisk angiv rolle** ved en ny bruger forbinder er nu **Slået fra**.", - "administration_aar_enabled": "**Automatisk angiv rolle** ved en ny bruger forbinder er nu **Slået til**. ", + "administration_aar_disabled": "**Automatisk angiv rolle** ved en ny bruger forbinder er nu **slået fra**.", + "administration_aar_enabled": "**Automatisk angiv rolle** ved en ny bruger forbinder er nu **slået til**.", "administration_attachments": "Bilag", - "administration_avatar_changed": "Avatar skiftet", - "administration_bandm": "Du er blevet bandlyst fra {0} serveren. På grund af: {1}", + "administration_avatar_changed": "Avatar Skiftet", + "administration_bandm": "Du er blevet bandlyst fra {0} serveren. \nBegrundelse: {1}", "administration_banned_pl": "bandlyst", - "administration_banned_user": "Bruger bandlyst", - "administration_bot_name": "Bot navn skiftet til {0}", - "administration_bot_status": "Bot status skiftet til {0}", - "administration_byedel_off": "Automatisk sletning af farvel beskeder er slået fra.", - "administration_byedel_on": "Farvel beskeder vil blive slettet efter {0} sekunder.", - "administration_byemsg_cur": "Nuværende farvel besked: {0}", - "administration_byemsg_enable": "Slå farvel beskeder til ved at skrive {0}", - "administration_byemsg_new": "Ny farvel besked indstillet.", - "administration_bye_off": "Farvel meddelelse slået fra.", - "administration_bye_on": "Farvel meddelelse er slået til på denne kanal.", + "administration_banned_user": "Bruger Bandlyst", + "administration_bot_name": "Bots navn skiftet til {0}", + "administration_bot_status": "Botstatus skiftet til {0}", + "administration_byedel_off": "Automatisk sletning af farvelbeskeder er slået fra.", + "administration_byedel_on": "Farvelbeskeder vil blive slettet efter {0} sekunder.", + "administration_byemsg_cur": "Nuværende farvelbesked: {0}", + "administration_byemsg_enable": "Slå farvelbeskeder til ved at skrive {0}", + "administration_byemsg_new": "Ny farvelbesked sat.", + "administration_bye_off": "Farvelmeddelelse slået fra.", + "administration_bye_on": "Farvelmeddelelser er slået til på denne kanal.", "administration_ch_name_change": "Kanalnavn skiftet", - "administration_ch_old_name": "Gamle navn", - "administration_ch_topic_change": "Kanal emne skiftet", - "administration_cleaned_up": "Ryddet op.", + "administration_ch_old_name": "Gammelt navn", + "administration_ch_topic_change": "Kanalemne Skiftet", + "administration_cleaned_up": "Ryddede op.", "administration_content": "Indhold", - "administration_cr": "sucessrigt lavet en ny rolle {0}", - "administration_createtextchan": "Tekst kanal {0} oprettet.", - "administration_createvoich": "Stemme kanal {0} oprettet", - "administration_deafen": "Døvet lykkedes", - "administration_deleted_server": "Slettet server {0}", - "administration_delmsg_off": "Soppet automatisk sletning af vellykkede kommandoer påkaldelse.", - "administration_delmsg_on": "Sletter nu automatisk vellykkede påkaldelses kommandoer.", - "administration_deltextchan": "Tekst kanal {0} slettet.", + "administration_cr": "Oprettede den nye rolle {0} med succes.", + "administration_createtextchan": "Tekstkanal {0} oprettet.", + "administration_createvoich": "Stemmekanal {0} oprettet.", + "administration_deafen": "Gør Døv lykkedes.", + "administration_deleted_server": "Slettede server {0}", + "administration_delmsg_off": "Stoppede automatisk sletning af vellykkede kommando-påkaldelser.", + "administration_delmsg_on": "Sletter nu automatisk vellykkede kommando-påkaldelser.", + "administration_deltextchan": "Tekstkanal {0} blev slettet.", "administration_delvoich": "Stemmekanalen {0} blev slettet", - "administration_dm_from": "Privat besked fra ", - "administration_donadd": "", - "administration_donators": "Tak til dem som er listet nedenfor fordi i gjorde dette projekt kunne blive lavet!", - "administration_fwall_start": "Jeg vil videresende alle pirvatbeskeder til alle ejere.", - "administration_fwall_stop": "Jeg vil kun videresende privatbeskeder til den første ejer.", - "administration_fwdm_start": "Jeg vil videresende fra nu af.", - "administration_fwdm_stop": "Jeg vil stoppe med at viderersende fra nu af.", - "administration_greetdel_off": "Automatisk sletning af velkomst beskeder er blevet slået fra", - "administration_greetdel_on": "Velkomst beskeder vil blive slettet efter {0} sekunder", - "administration_greetdmmsg_cur": "Nuværende DB velkommen besked: {0}", - "administration_greetdmmsg_enable": "Slå velkomst beskeder i privat besked til ved at skrive {0}", - "administration_greetdmmsg_new": "Ny velkomst besked i privat besked slået til", - "administration_greetdm_off": "Velkomst beskeder i privat besked slået fra", - "administration_greetdm_on": "Velkomst besked i privat besked slået til", - "administration_greetmsg_cur": "Nuværende velkomst besked: {0}", - "administration_greetmsg_enable": "Slå velkomst beskeder til ved at skrive {0}", - "administration_greetmsg_new": "Ny velkomst besked sat", - "administration_greet_off": "Velkomst beskeder slået fra", - "administration_greet_on": "Velkomst beskeder slået til i denne kanal", - "administration_hierarchy": "Du kan ikke bruge denne kommando på brugere der har en rolle, der er højere eller lige med din egen", - "administration_images_loaded": "Billederne blev indlæst på {0} sekunder", - "administration_invalid_format": "Forkert input format", + "administration_dm_from": "DM fra", + "administration_donadd": "Tilføjede ny donor. Sammenlagt doneret mængde fra denne bruger: {0} 👑", + "administration_donators": "Tak til dem listet nedenfor, fordi I gjorde dette projekt muligt!", + "administration_fwall_start": "Jeg vil videresende DM'er til alle ejere.", + "administration_fwall_stop": "Jeg vil kun videresende DM'er til den første ejer.", + "administration_fwdm_start": "Jeg vil videresende DM'er fra nu af.", + "administration_fwdm_stop": "Jeg vil stoppe med at videresende DM'er fra nu af.", + "administration_greetdel_off": "Automatisk sletning af velkomstbeskeder er blevet slået fra.", + "administration_greetdel_on": "Velkomstbeskeder vil blive slettet efter {0} sekunder", + "administration_greetdmmsg_cur": "Nuværende DM velkomstbesked: {0}", + "administration_greetdmmsg_enable": "Slå velkomstbeskeder i DM til, ved at skrive {0}", + "administration_greetdmmsg_new": "Ny velkomstbesked i DM indstillet.", + "administration_greetdm_off": "Velkomstmeddelelser i DM slået fra.", + "administration_greetdm_on": "Velkomstmeddelelser i DM slået til.", + "administration_greetmsg_cur": "Nuværende velkomstbesked: {0}", + "administration_greetmsg_enable": "Slå velkomstbeskeder til ved at skrive {0}", + "administration_greetmsg_new": "Ny velkomstbesked sat.", + "administration_greet_off": "Velkomstmeddelelser slået fra.", + "administration_greet_on": "Velkomstmeddelelser slået til i denne kanal.", + "administration_hierarchy": "Du kan ikke bruge denne kommando på brugere der har en rolle der er højere end eller lige med din egen i rolle-hierakiet.", + "administration_images_loaded": "Billederne blev indlæst efter {0} sekunder", + "administration_invalid_format": "Ugyldigt input format", "administration_invalid_params": "Forkerte parametre", - "administration_joined": "{0} har sluttede sig til {1} ", + "administration_joined": "{0} har sluttet sig til {1}", "administration_kickdm": "Du er blevet fjernet fra følgende server: {0}\nBegrundelse: {1}", - "administration_kicked_user": "Brugeren blev fjernet", + "administration_kicked_user": "Bruger blev fjernet", "administration_lang_list": "Liste af sprog", - "administration_lang_set": "Din servers sprog er nu {0} - {1}", - "administration_lang_set_bot": "Bottens normale sprog er nu {0} - {1}", - "administration_lang_set_bot_show": "Bottens sprog er {0} - {1}", - "administration_lang_set_fail": "Fejlede sprog ændring. Tjek denne kommandos hjælp", - "administration_lang_set_show": "Denne servers sprog er sat til {0} - {1}", + "administration_lang_set": "Din servers lokalitet er nu {0} - {1}", + "administration_lang_set_bot": "Bottens standardlokalitet er nu {0} - {1}", + "administration_lang_set_bot_show": "Bottens sprog er sat til at være {0} - {1}", + "administration_lang_set_fail": "Fejlede sprogændring. Tjek denne kommandos hjælp.", + "administration_lang_set_show": "Denne servers sprog er sat til at være {0} - {1}", "administration_left": "{0} har forladt {1}", "administration_left_server": "Forlod server {0}", "administration_log": "Logger {0} begivenhed i denne kanal", "administration_log_all": "Logger alle begivenheder i denne kanal", - "administration_log_disabled": "Log funktionen er blevet slået fra", - "administration_log_events": "Logger følgende begivenheder:", + "administration_log_disabled": "Log-funktion er slået fra", + "administration_log_events": "Log-begivenheder du kan abonnere på:", "administration_log_ignore": "Log funktionen vil nu ignorere {0}", "administration_log_not_ignore": "Log funktionen ignorerer ikke længere {0}", - "administration_log_stop": "Stoppede med at logge {0} begivenheden", + "administration_log_stop": "Stoppede med at logge begivenheden {0}", "administration_menrole": "{0} har bedt om en underretning for de følgende roller", - "administration_message_from_bo": "Besked fra {0} `[Bot Ejer]`:", + "administration_message_from_bo": "Besked fra {0} `[Bot Owner]`:", "administration_message_sent": "Besked sendt.", "administration_moved": "{0} blev flyttet fra {1} til {2}", "administration_msg_del": "Besked slettet i #{0}", "administration_msg_update": "Besked opdateret i #{0}", - "administration_muted_pl": "Stumme", - "administration_muted_sn": "Stum", + "administration_muted_pl": "Gjort stumme", + "administration_muted_sn": "Gjort stum", "administration_mute_error": "Jeg har formentlig ikke tilladelse til at gøre dette.", "administration_mute_role_set": "Ny stum rolle sat.", - "administration_need_admin": "Jeg har brug for **Administrator** tilladelse for at kunne gøre dette.", + "administration_need_admin": "Jeg har brug for **Administration** tilladelse for at kunne gøre dette.", "administration_new_msg": "Ny besked", "administration_new_nick": "Nyt kaldenavn", "administration_new_topic": "Nyt emne", @@ -150,47 +127,47 @@ "administration_old_msg": "Gammel besked", "administration_old_nick": "Gammelt kaldenavn", "administration_old_topic": "Gammelt emne", - "administration_perms": "Fejl. Jeg har formentlig ikke de rigtige tilladelser", + "administration_perms": "Fejl. Jeg har formentlig ikke de rigtige tilladelser.", "administration_prot_active": "Aktive beskyttelser", "administration_prot_disable": "{0} er blevet **slået fra** på denne server.", - "administration_prot_enable": "{0} slået til", - "administration_prot_error": "Fejl. Jeg har brug for AdministrerRoller tilladelse", + "administration_prot_enable": "{0} Slået til", + "administration_prot_error": "Fejl. Jeg har brug for Administrèr Roller tilladelsen", "administration_prot_none": "Ingen beskyttelse slået til.", "administration_raid_cnt": "Bruger grænseværdien skal være mellem {0} og {1}", "administration_raid_stats": "Hvis {0} eller flere brugere slutter sig til serveren indenfor {1} sekunder, vil jeg {2} dem.", "administration_raid_time": "Tiden skal være mellem {0} og {1} sekunder", "administration_rar": "Fjernede alle roller fra brugeren {0}", "administration_rar_err": "Kunne ikke fjerne roller. Jeg har ikke nok tilladelser.", - "administration_rc": "Rollen {0} farve er blevet ændret", + "administration_rc": "Rollen {0}s farve er blevet ændret.", "administration_rc_not_exist": "Denne rolle eksisterer ikke.", "administration_rc_params": "De opgivede parametre passer ikke", - "administration_rc_perms": "Der skete en fejl grundet forkert farve eller forkerte tilladelser.", + "administration_rc_perms": "Der skete en fejl grundet forkert farve eller utilstrækkelige tilladelser.", "administration_remrole": "Fjernede rolle {0} fra bruger {1}", "administration_remrole_err": "Kunne ikke fjerne rolle. Jeg har ikke nok tilladelser.", "administration_renrole": "Rollen er blevet omdøbt.", "administration_renrole_err": "Kunne ikke omdøbe rollen. Jeg har ikke nok tilladelser.", "administration_renrole_perms": "Du kan ikke ændre roller højere end din højeste rolle.", "administration_reprm": "Fjernede spilstatussen: {0}", - "administration_role_added": "Rollen {0} er blevet tilføjet til listen.", - "administration_role_clean": "{0} kunne ikke findes. Fjernet.", - "administration_role_in_list": "Rollen {0}er allerede på listen.", + "administration_role_added": "Rollen {0} er blevet føjet til listen.", + "administration_role_clean": "{0} kunne ikke findes. Ryddede op.", + "administration_role_in_list": "Rollen {0} er allerede på listen.", "administration_ropl_added": "Tilføjet.", - "administration_ropl_disabled": "Roterende spil status er blevet slået fra", - "administration_ropl_enabled": "Roterende spil status er slået til.", + "administration_ropl_disabled": "Roterende spilstatus er blevet slået fra", + "administration_ropl_enabled": "Roterende spilstatus er slået til.", "administration_ropl_list": "Her er en liste over roterende spilstatusser:\n{0}", - "administration_ropl_not_set": "Ingen roterende spil statusser er blevet specificeret", - "administration_self_assign_already": "Du har allerede {0} rollen", - "administration_self_assign_already_excl": "Du har allerede {0} eksklusive selv overdragelige rolle.", + "administration_ropl_not_set": "Ingen roterende spilstatusser er blevet specificeret.", + "administration_self_assign_already": "Du har allerede rollen {0}.", + "administration_self_assign_already_excl": "Du har allerede {0} eksklusive selvoverdragelige rolle.", "administration_self_assign_excl": "Selvoverdragelige roller er nu eksklusive!", - "administration_self_assign_list": "Der er {0} selv overdragelige roller", - "administration_self_assign_not": "Denne rolle er ikke selv overdragelig.", - "administration_self_assign_not_have": "Du har ikke {0} rollen", - "administration_self_assign_no_excl": "Selv overdragelige roller er ikke længere eksklusive!", - "administration_self_assign_perms": "Jeg kan ikke give denne rolle til dig. `Jeg kan ikke give roller til ejeren eller andre roller højere end min i rolle hierakiet.`", - "administration_self_assign_rem": "{0} er blevet fjernet fra listen over selv overdragelige roller.", - "administration_self_assign_remove": "Du har ikke længere {0} rollen", - "administration_self_assign_success": "Du har nu {0} rollen.", - "administration_setrole": "Tilføjede rolle {0} til bruger {1}", + "administration_self_assign_list": "Der er {0} selvoverdragelige roller.", + "administration_self_assign_not": "Denne rolle er ikke selvoverdragelig.", + "administration_self_assign_not_have": "Du har ikke rollen {0}.", + "administration_self_assign_no_excl": "Selvoverdragelige roller er ikke længere eksklusive!", + "administration_self_assign_perms": "Jeg kan ikke give denne rolle til dig. `Jeg kan ikke give roller til ejere eller andre roller højere end min i rollehierakiet.`", + "administration_self_assign_rem": "{0} er blevet fjernet fra listen over selvoverdragelige roller.", + "administration_self_assign_remove": "Du har ikke længere rollen {0}.", + "administration_self_assign_success": "Du har nu rollen {0}.", + "administration_setrole": "Tilføjede rolle {0} til brugeren {1}", "administration_setrole_err": "Kunne ikke tilføje rolle. Jeg har ikke nok tilladelser.", "administration_set_avatar": "Ny avatar sat!", "administration_set_channel_name": "Nyt kanalnavn sat.", @@ -200,24 +177,24 @@ "administration_shard_reconnected": "Shard {0} tilsluttet.", "administration_shard_reconnecting": "Shard {0} er ved at tilslutte sig igen.", "administration_shutting_down": "Lukker ned", - "administration_slowmode_desc": "Brugere kan ikke sende mere end {0} beskeder hvert {1} sekunder", - "administration_slowmode_disabled": "Lansom tilstand deaktiveret", - "administration_slowmode_init": "Lansom tilstand aktiveret.", - "administration_soft_banned_pl": "blød-bandlyst", + "administration_slowmode_desc": "Brugere kan ikke sende mere end {0} beskeder per {1} sekunder", + "administration_slowmode_disabled": "Langsom tilstand deaktiveret.", + "administration_slowmode_init": "Langsom tilstand aktiveret.", + "administration_soft_banned_pl": "soft-banned", "administration_spam_ignore": "{0} vil ignorere denne kanal.", "administration_spam_not_ignore": "{0} vil ikke længere ignorere denne kanal.", "administration_spam_stats": "Hvis en bruger sender mere end {0} ens beskeder i træk, vil jeg {1} dem.", "administration_text_chan_created": "Tekstkanal lavet.", "administration_text_chan_destroyed": "Tekstkanal slettet.", - "administration_undeafen": "", - "administration_unmuted_sn": "", + "administration_undeafen": "Afdøvet lykkedes.", + "administration_unmuted_sn": "u-stummede", "administration_username": "Brugernavn", "administration_username_changed": "Brugernavn ændret", "administration_users": "Brugere", "administration_user_banned": "Bruger banned", - "administration_user_chat_mute": "{0} er blevet **dæmpet** fra at chatte.", - "administration_user_chat_unmute": "{0} er blevet **frataget retten til at chatte*'.", - "administration_user_joined": "Bruger joinede serveren", + "administration_user_chat_mute": "{0} er blevet **gjort stum** i chatten.", + "administration_user_chat_unmute": "{0} er **ikke længere stum** i chatten.", + "administration_user_joined": "Bruger tilsluttede sig", "administration_user_left": "Bruger forlod serveren", "administration_user_muted": "{0} er blevet **dæmpet** fra text og voice chat.", "administration_user_role_add": "Brugers rolle tilføjet", @@ -226,22 +203,22 @@ "administration_user_unmuted": "{0} er blevet **frataget retten til at chatte med tekst og i stemmekanalerne**.", "administration_user_vjoined": "{0} har tilsluttet {1} stemmekanalen.", "administration_user_vleft": "{0} har forladt {1} stemmekanalen.", - "administration_user_vmoved": "{0} flyttet fra {1} til {2} stemmekanalen.", + "administration_user_vmoved": "{0} flyttet fra {1} til {2} stemmekanal.", "administration_user_voice_mute": "{0} er blevet **dæmpet fra samtalen**.", "administration_user_voice_unmute": "{0} har fået **rettigheden til at tale i stemmekanalerne** igen.", - "administration_voice_chan_created": "Stemmekanal lavet", + "administration_voice_chan_created": "Stemmekanal oprettet", "administration_voice_chan_destroyed": "Stemmekanal slettet", "administration_vt_disabled": "Stemme + tekst funktionen er blevet slået fra.", "administration_vt_enabled": "Stemme + tekst funktionen er blevet slået til.", - "administration_vt_exit": "Jeg har hverken **administrér roller** og/eller **administrér kanaler** tilladelserne, så jeg kan ikke køre `.voice+text` på {0} serveren.", - "administration_vt_no_admin": "Du er i gang med at slå denne funktion til eller fra, og **jeg har ikke ADMINISTRATOR tilladelser**. Dette kan give nogle problemer, og du vil blive bødt til at slette tekstkanaler selv.", - "administration_vt_perms": "Jeg har brug for minimum **administrer roller** eller **administrer kanaler** for at kunne slå denne funktion til (Administrator tilladelser ville være bedst)", + "administration_vt_exit": "Jeg har hverken **administrér roller** og/eller **administrér kanaler** tilladelserne, så jeg kan ikke køre `.voice+text` på serveren {0}.", + "administration_vt_no_admin": "Du er i gang med at slå denne funktion til/fra, og **jeg har ikke ADMINISTRATOR tilladelser**. Dette kan forsage problemer, og du vil blive nødt til at slette tekstkanaler selv.", + "administration_vt_perms": "Jeg har brug for minimum **Administrèr Roller** eller **Administrèr Kanaler** for at kunne slå denne funktion til (Administratortilladelser ville være bedst)", "administration_xmuted_text": "Bruger {0} fra tekst chat", "administration_xmuted_text_and_voice": "Bruger {0} fra tekst og stemme chat", "administration_xmuted_voice": "Bruger {0} fra stemme chat", - "administration_sbdm": "Du er blevet soft-bannet fra {0} serveren.\nBegrundelse: {1}", + "administration_sbdm": "Du er blevet soft-banned fra serveren {0}.\nBegrundelse: {1}", "administration_user_unbanned": "Brugers udelukkelse ophævet", - "administration_migration_done": "Migrasjon gjort!", + "administration_migration_done": "Udvandring færdiggjort!", "administration_presence_updates": "Tilstedeværelses opdateringer", "administration_sb_user": "Brugeren blev soft-bannet", "gambling_awarded": "har givet {0} til {1}", @@ -263,7 +240,7 @@ "gambling_min_bet_limit": "Du kan ikke satse mindre end {0}", "gambling_not_enough": "Du har ikke nok {0}", "gambling_no_more_cards": "Der er ikke flere kort i decket.", - "gambling_raffled_user": "", + "gambling_raffled_user": "Raflede bruger.", "gambling_roll": "Du slog {0}", "gambling_slot_bet": "Væddemål", "gambling_slot_jackpot": "WOAAHHHHHH!!! Tillykkeee!!! x{0}", @@ -271,9 +248,9 @@ "gambling_slot_three": "Wow! Heldigt! Tre ens! x{0}", "gambling_slot_two": "Tillykke! To {0} - væddet x{1}", "gambling_slot_won": "Vandt", - "gambling_sneakygamestatus_desc": "Man skal skrive en hemmelig kode for at få {0}. Varer i {1} sekunder. Lad være med at sige det videre. Shhh.", - "gambling_sneakygamestatus_end": "SneakyGame event færdiggjort. {0} bruger(e) fik belønningen.", - "gambling_sneakygamestatus_title": "SneakyGameStatus event påbegyndt", + "gambling_sneakygamestatus_desc": "Man skal skrive en hemmelig kode for at få {0}. Varer {1} sekunder. Lad være med at sige det videre. Shhh.", + "gambling_sneakygamestatus_end": "SneakyGame event afsluttet. {0} brugere fik belønningen.", + "gambling_sneakygamestatus_title": "SneakyGameStatus hændelse påbegyndt", "gambling_tails": "Hale", "gambling_take": "tog {0} fra {1}", "gambling_take_fail": "kunne ikke tage {0} fra {1}, da brugeren ikke har så mange {2}!", @@ -313,21 +290,21 @@ "gambling_race_failed_starting": "Kunne ikke starte kapløbet. Et andet kapløb er formentlig i gang.", "gambling_race_not_exist": "Der eksisterer ikke noget kapløb på denne server", "gambling_second_larger_than_first": "Det andet nummer, skal være større end det første.", - "gambling_changes_of_heart": "", + "gambling_changes_of_heart": "Holdningsændringer", "gambling_claimed_by": "Gjort krav på af", "gambling_divorces": "Skilsmisser", "gambling_likes": "Lider", "gambling_price": "Pris", "gambling_waifus_none": "Der er ikke blevet gjort krav på nogen waifus endnu.", "gambling_waifus_top_waifus": "Top Waifus", - "gambling_waifu_affinity_already": "", + "gambling_waifu_affinity_already": "dit tilførsforhold er allerede sat til denne waifu eller du prøver at fjerne dit tilhørsforhold uden at have et.", "gambling_waifu_affinity_changed": "ændrede deres tilhørsforhold fra {0} til {1}.\n\n*Dette er moralsk tvivlsomt* 🤔", "gambling_waifu_affinity_cooldown": "Du skal vente {0} timer og {1} minutter for at kunne ændre dit tilhørsforhold igen.", "gambling_waifu_affinity_reset": "Dit tilhørsforhold er blevet nulstillet. Du har ikke længere en person du kan lide.", "gambling_waifu_affinity_set": "vil gerne være {0}s waifu. Aww <3", "gambling_waifu_claimed": "gjorde grav på {0} som deres waifu for {1}!", "gambling_waifu_divorced_like": "Du er blevet skilt fra en waifu der kan lide dig. Dit hjerteløse monster. {0} fik {1} som kompensation.", - "gambling_waifu_egomaniac": "", + "gambling_waifu_egomaniac": "du kan ikke sætte dit tilhørsforhold til dig selv, din egoman.", "gambling_waifu_fulfilled": "🎉 Deres kærlighed er fuldbyrdet! 🎉\n{0}s nye værdi er {1}!", "gambling_waifu_isnt_cheap": "Ingen waifu er så billig. Du bliver nødt til at betale i hvert fald {0}for at få en waifu, også selvom deres værdi er mindre.", "gambling_waifu_not_enough": "Du skal betale {0} eller mere for at gøre krav på denne waifu!", @@ -337,11 +314,11 @@ "gambling_nobody": "Ingen", "gambling_waifu_divorced_notlike": "Du er blevet skilt fra en waifu der ikke kan lide dig. Du har fået {0} tilbage.", "games_8ball": "8ball", - "games_acrophobia": "Højdeskræk", + "games_acrophobia": "Akrofobi", "games_acro_ended_no_sub": "Spillet sluttede uden tilmeldinger.", - "games_acro_no_votes_cast": "Ingen stemmer blev sendt. Spillet sluttede uden en vinder.", + "games_acro_no_votes_cast": "Ingen stemmer indsendt. Spillet sluttede uden en vinder.", "games_acro_nym_was": "Akronymet var {0}.", - "games_acro_running": "", + "games_acro_running": "Akrofobi-spil kører allerede i denne kanal.", "games_acro_started": "Spillet er begyndt. Lav en sætning med det følgende akronym: {0}.", "games_acro_started_footer": "Du har {0} sekunder til at komme med en tilmelding.", "games_acro_submit": "{0} indsendte deres sætning. ({1} i alt)", @@ -358,35 +335,35 @@ "games_category": "Kategori", "games_cleverbot_disabled": "Slog cleverbot fra på denne server.", "games_cleverbot_enabled": "Slog cleverbot til på denne server.", - "games_curgen_disabled": "Valutagenerering er blevet slået fra i denne kanal.", - "games_curgen_enabled": "Valutagenerering er blevet slået til i denne kanal.", - "games_curgen_pl": "{0} tilfældig {1} er dukket op!", + "games_curgen_disabled": "Valutagenerering er slået fra i denne kanal.", + "games_curgen_enabled": "Valutagenerering er slået til i denne kanal.", + "games_curgen_pl": "{0} tilfældige {1} er dukket op!", "games_curgen_sn": "En tilfældig {0} dukkede op!", "games_failed_loading_question": "Kunne ikke indlæse et spørgsmål.", "games_game_started": "Spil startet.", - "games_hangman_game_started": "Hængemands spil startet", - "games_hangman_running": "Hængemand kører allerede i denne kanal.", - "games_hangman_start_errored": "Kunne ikke starte hængemand", + "games_hangman_game_started": "Hangman spil startet", + "games_hangman_running": "Hangman kører allerede i denne kanal.", + "games_hangman_start_errored": "Kunne ikke starte hangman", "games_hangman_types": "Liste over \"{0}hangman\" ord typer:", - "games_leaderboard": "", + "games_leaderboard": "Pointtavle", "games_not_enough": "Du har ikke nok {0}", "games_no_results": "Ingen resultater", "games_picked": "plukkede {0}", "games_planted": "{0} plantede {1}", - "games_trivia_already_running": "", - "games_trivia_game": "", + "games_trivia_already_running": "Quiz kører allerede på denne server.", + "games_trivia_game": "Quiz", "games_trivia_guess": "{0} gættede det! Svaret var: {1}", - "games_trivia_none": "", + "games_trivia_none": "Ingen quiz kører på denne server.", "games_trivia_points": "{0} har {1} point", "games_trivia_stopping": "Stopper efter dette spørgsmål.", - "games_trivia_times_up": "Tiden er ovre! Det rigtige svar var {0}", + "games_trivia_times_up": "Tiden er omme! Det rigtige svar var {0}", "games_trivia_win": "{0} gættede det og vandt spillet! Svaret var: {1}", "games_ttt_against_yourself": "Du kan ikke spille mod dig selv.", "games_ttt_already_running": "Der er allerede et TicTacToe spil i gang i denne kanal.", "games_ttt_a_draw": "Det blev uafgjort!", "games_ttt_created": "har lavet et spil Kryds og Bolle", "games_ttt_has_won": "{0} har vundet!", - "games_ttt_matched_three": "", + "games_ttt_matched_three": "Fik tre på stribe", "games_ttt_no_moves": "Ingen træk tilbage!", "games_ttt_time_expired": "Tiden er udløbet!", "games_ttt_users_move": "{0}s tur", @@ -395,7 +372,7 @@ "music_autoplay_disabled": "Autospil slået fra.", "music_autoplay_enabled": "Autospil slået til.", "music_defvol_set": "Standard volumen blev sat til {0}%", - "music_dir_queue_complete": "", + "music_dir_queue_complete": "Direktoratkøen gennemført.", "music_fairplay": "fairplay", "music_finished_song": "Afspilning af sang færdiggort", "music_fp_disabled": "Fair play slået fra.", @@ -432,10 +409,10 @@ "music_repeating_playlist": "Gentager afspilningslisten", "music_repeating_track": "Gentager sangen", "music_repeating_track_stopped": "Nuværende sang gentagelse stoppet.", - "music_resumed": "", + "music_resumed": "Musikafspilning fortsat.", "music_rpl_disabled": "Gentagelse af afspilningslisten slået fra.", "music_rpl_enabled": "Gentagelse af afspilningslisten slået til.", - "music_set_music_channel": "Jeg vil nu sende afspillende, færdiggjorte, pausede og fjernede sand i denne kanal.", + "music_set_music_channel": "Jeg vil nu sende afspillende, færdiggjorte, pausede og fjernede sange i denne kanal.", "music_skipped_to": "Sprang hen til `{0}:{1}`", "music_song_moved": "Sang flyttet", "music_time_format": "{0}t {1}m {2}s", @@ -455,7 +432,7 @@ "permissions_blacklisted": "Sortlistede {0} med ID {1}", "permissions_cmdcd_add": "Kommandoen {0} har nu en {1}s afkølings periode.", "permissions_cmdcd_cleared": "Kommandoen {0} har nu ingen afkølings periode, og alle eksisterende afkølings perioder er blevet slettet.", - "permissions_cmdcd_none": "Ingen afkølings perioder for kommandoer er blevet sat.", + "permissions_cmdcd_none": "Ingen afkølingsperioder for kommandoer er sat.", "permissions_command_costs": "Kommando pris", "permissions_cx_disable": "Slog brugen af {0} {1} fra i kanalen {2}", "permissions_cx_enable": "Slog brugen af {0} {1} til i kanalen {2}", @@ -469,14 +446,14 @@ "permissions_invite_filter_server_off": "Invitationsfilter slået fra i denne kanal.", "permissions_invite_filter_server_on": "Invitationsfilter slået til på denne server.", "permissions_moved_permission": "Flyttede tilladelse {0} fra #{1} til #{2}", - "permissions_not_found": "", + "permissions_not_found": "Kan ikke finde tilladelse til indeks #{0}", "permissions_no_costs": "Ingen pris specificeret.", "permissions_of_command": "kommando", "permissions_of_module": "modul", "permissions_page": "Tilladelses side {0}", "permissions_permrole": "Den nuværende tilladelsesrolle er {0}", "permissions_permrole_changed": "Man skal nu have {0} rollen for at kunne ændre tilladelser.", - "permissions_perm_out_of_range": "", + "permissions_perm_out_of_range": "Ingen tilladelser fundet på dette indeks.", "permissions_removed": "Fjernede tilladelse #{0} - {1}", "permissions_rx_disable": "Slog brugen af {0} {1} fra for {2} rollen.", "permissions_rx_enable": "Slog brugen af {0} {1} til for {2} rollen.", @@ -500,15 +477,15 @@ "searches_atl_set": "Dit auto-oversæt sprog er blevet sat til {0}>{1}", "searches_atl_started": "Påbegyndte automatisk oversættelse af beskeder i denne kanal.", "searches_atl_stopped": "Stoppede automatisk oversættelse af beskeder i denne kanal.", - "searches_bad_input_format": "", + "searches_bad_input_format": "Dårligt inputformat, eller noget gik galt.", "searches_card_not_found": "Kunne ikke finde det kort.", "searches_catfact": "fakta", "searches_chapters": "Kapitler", "searches_comic_number": "Tegneserie #", - "searches_compet_loses": "", - "searches_compet_played": "", - "searches_compet_rank": "", - "searches_compet_wins": "", + "searches_compet_loses": "Tabte konkurrencer", + "searches_compet_played": "Konkurrencespil spillet.", + "searches_compet_rank": "Konkurrencerangering", + "searches_compet_wins": "Konkurrencespil Sejre", "searches_completed": "Færdiggjort", "searches_condition": "Betingelse", "searches_cost": "Pris", @@ -551,8 +528,8 @@ "searches_pokemon_none": "Ingen pokemon fundet.", "searches_profile_link": "Profil link:", "searches_quality": "Kvalitet:", - "searches_quick_playtime": "", - "searches_quick_wins": "", + "searches_quick_playtime": "Hurtigspil spilletid", + "searches_quick_wins": "Hurtigspil sejre", "searches_rating": "Bedømmelse", "searches_score": "Score:", "searches_search_for": "Søg efter:", @@ -587,7 +564,7 @@ "searches_wind_speed": "Vind hastighed", "searches_x_most_banned_champs": "De {0} mest bannede champions", "searches_yodify_error": "Kunne ikke yodaficere din sætning.", - "utiliity_joined": "", + "utiliity_joined": "Tilsluttede sig", "utility_activity_line": "`{0}.` {1} [{2:F2}/s] - {3} totalt", "utility_activity_page": "Aktivitetsside #{0}", "utility_activity_users_total": "{0} brugere i alt.", @@ -606,7 +583,7 @@ "utility_error": "Fejl", "utility_features": "Funktioner", "utility_id": "ID", - "utility_index_out_of_range": "", + "utility_index_out_of_range": "Indeks uden for rækkevidde.", "utility_inrole_list": "Brugere i {0} rollen", "utility_inrole_not_allowed": "Du må ikke bruge denne kommando på roller med mange brugere, for at forhindre misbrug.", "utility_invalid_value": "Ugyldig {0} værdi.", @@ -614,17 +591,17 @@ "utility_joined_server": "Tilsluttede sig serveren", "utility_listservers": "ID: {0}\nMedlemmer: {1}\nEjer ID: {2}", "utility_listservers_none": "Der kunne ikke findes nogle servere på den side.", - "utility_list_of_repeaters": "", + "utility_list_of_repeaters": "Liste over gentagere.", "utility_members": "Medlemmer", "utility_memory": "Hukommelse", "utility_messages": "Beskeder", - "utility_message_repeater": "", + "utility_message_repeater": "Besked-gentager.", "utility_name": "Navn", "utility_nickname": "Kælenavn", - "utility_nobody_playing_game": "Der er ingen der spiller det spil.", - "utility_no_active_repeaters": "", + "utility_nobody_playing_game": "Der er ingen der spiller dette spil.", + "utility_no_active_repeaters": "Ingen aktive gentagere.", "utility_no_roles_on_page": "Ingen roller på denne side.", - "utility_no_shards_on_page": "", + "utility_no_shards_on_page": "Ingen shards på denne side.", "utility_no_topic_set": "Intet emne specificeret.", "utility_owner": "Ejer", "utility_owner_ids": "Ejer ID'er", @@ -655,9 +632,9 @@ "utility_rrc_stop": "Stoppede med at rotere {0} rollens farve", "utility_serverid": "{0} af denne server er {1}", "utility_server_info": "Server information", - "utility_shard": "", - "utility_shard_stats": "", - "utility_shard_stats_txt": "", + "utility_shard": "Shard", + "utility_shard_stats": "Shard statistikker", + "utility_shard_stats_txt": "Shard **#{0}** er i {1} stadiet med {2} servere - for {3} siden.", "utility_showemojis": "**Navn:** {0} **Link:** {1}", "utility_showemojis_none": "Der blev ikke fundet nogle specielle emojis.", "utility_stats_songs": "Afspiller {0} sange, og {1} er i kø.", @@ -674,9 +651,9 @@ "games_poll_created": "📃 {0} har startet en afstemning der kræver din opmærksomhed:", "games_poll_result": "`{0}.` {1} med {2} stemmer.", "games_poll_voted": "{0} stemte.", - "games_poll_vote_private": "Send mig en PM med det tilsvarende tal til dit svar.", + "games_poll_vote_private": "Send mig en DM med det tilsvarende tal som dit svar.", "games_poll_vote_public": "Send en besked her med det tilsvarende tal til dit svar.", - "games_thanks_for_voting": "Tak fordi du stemte, {0}", + "games_thanks_for_voting": "Tak, fordi du stemte, {0}", "games_x_votes_cast": "{0} stemmer afgivet i alt.", "games_pick_pl": "Saml dem op ved at skrive `{0}pick`", "games_pick_sn": "Saml den op ved at skrive `{0}pick`", @@ -688,16 +665,16 @@ "administration_vcrole_added": "Brugere der tilslutter sig stemmekanalen {0} vil få {1} rollen.", "administration_vcrole_removed": "Brugere der tilslutter sig stemmekanalen {0} vil ikke længere få en rolle.", "administration_vc_role_list": "Stemmekanal roller", - "customreactions_crad_disabled": "", - "customreactions_crad_enabled": "", - "customreactions_crdm_disabled": "", - "customreactions_crdm_enabled": "", + "customreactions_crad_disabled": "Besked som udløser den brugerdefinerede reaktion med id {0} vill ikke blive automatisk slettet.", + "customreactions_crad_enabled": "Besked som udløser den brugerdefinerede reaktion med id {0} vil blive automatisk slettet.", + "customreactions_crdm_disabled": "Svarbesked til den brugerdefinerede reaktion med id {0} vil ikke blive sendt som en DM.", + "customreactions_crdm_enabled": "Svarbesked til den brugerdefinerede reaktion med id {0} vil blive sendt som en DM.", "utility_aliases_none": "Intet alias fundet.", "utility_alias_added": "{0} vil nu være et alias af {1}", "utility_alias_list": "Alias liste", - "utility_alias_removed": "", - "utility_alias_remove_fail": "", - "searches_compet_playtime": "", + "utility_alias_removed": "Udløser {0} har ikke længere et alias.", + "utility_alias_remove_fail": "Udløser {0} havde ikke et alias.", + "searches_compet_playtime": "Kompetitiv spilletid", "administration_channel": "Kanal", "administration_command_text": "Kommandotekst", "administration_kicked_pl": "Smidt ud", @@ -714,53 +691,53 @@ "administration_user_not_found": "Brugeren blev ikke fundet.", "administration_user_warned": "Brugeren {0} er blevet advaret.", "administration_user_warned_and_punished": "Brugeren {0} er blevet advaret og straffen {1} er blevet anvendt.", - "administration_warned_on": "Advaret på {0} server", - "administration_warned_on_by": "på {0} d. {1} af {2}", + "administration_warned_on": "Advaret på serveren {0}", + "administration_warned_on_by": "På {0} d. {1} af {2}", "administration_warnings_cleared": "Alle advarsler blev fjernet for {0}.", "administration_warnings_none": "Ingen advasler på denne side.", "administration_warnlog_for": "Advarselslog for {0}", "administration_warnpl_none": "Ingen straffe er blevet sat.", "administration_warn_cleared_by": "fjernet af {0}", - "administration_warn_punish_list": "", - "administration_warn_punish_rem": "", - "administration_warn_punish_set": "", - "administration_slowmodewl_role_start": "", - "administration_slowmodewl_role_stop": "", - "administration_slowmodewl_user_start": "", - "administration_slowmodewl_user_stop": "", - "utility_clpa_fail": "", - "utility_clpa_fail_already": "", - "utility_clpa_fail_already_title": "", - "utility_clpa_fail_conn": "", - "utility_clpa_fail_conn_title": "", - "utility_clpa_fail_sup": "", + "administration_warn_punish_list": "Advarsels strafliste", + "administration_warn_punish_rem": "Har man {0} vil det ikke længere udløse en straf.", + "administration_warn_punish_set": "Jeg vil anvende straffen {0} til brugere med {1} advarsler.", + "administration_slowmodewl_role_start": "Slowmode vil nu ignorere rollen {0}.", + "administration_slowmodewl_role_stop": "Slowmode vil ikke længere ignorere rollen {0}.", + "administration_slowmodewl_user_start": "Slowmode vil nu ignorere brugeren {0}.", + "administration_slowmodewl_user_stop": "Slowmode vil ikke længere ignorere brugeren {0}.", + "utility_clpa_fail": "Belønningen fejlede grundet en af følgende grunde:", + "utility_clpa_fail_already": "Måske har du allerede fået din belønning for den her måned. Du kan kun få belønninger en gang om måneden med mindre at du øger din støtte.", + "utility_clpa_fail_already_title": "Belønningen er allerede givet", + "utility_clpa_fail_conn": "Din discord-profil er muligvis ikke forbundet til Patreon. Hvis du ikke ved hvad dette betyder, eller ikke ved hvordan man forbinder den - så skal du gå til [Patreon account settings page] (https://patreon.com/settings/account) og klikke 'Connect to discord' knappen.", + "utility_clpa_fail_conn_title": "Discord kontoen er ikke forbundet", + "utility_clpa_fail_sup": "For at kunne få denne belønning skal du støtte projektet på patreon. Du kan bruge {0} kommandoen for at få et link.", "utility_clpa_fail_sup_title": "Ikke understøttende", - "utility_clpa_fail_wait": "", - "utility_clpa_fail_wait_title": "", + "utility_clpa_fail_wait": "Du skal vente et par timer efter at du har støttet, hvis du ikke har så prøv igen senere. ", + "utility_clpa_fail_wait_title": "Vent og prøv igen", "utility_clpa_success": "Du har fået {0} Tak for at støtte projektet!", - "utility_clpa_too_early": "", + "utility_clpa_too_early": "Belønningen kan fås den 5. eller efter i hver måned.", "searches_time": "Klokken i {0} er {1} - {2}", - "administration_rh": "", - "gambling_name": "", - "gambling_shop": "", - "gambling_shop_item_add": "", - "gambling_shop_none": "", + "administration_rh": "Satte fremvisningen af laugsrolle {0} til {1}.", + "gambling_name": "Navn", + "gambling_shop": "Butik", + "gambling_shop_item_add": "Butiksgenstand tilføjet", + "gambling_shop_none": "Ingen genstande fundet på denne side.", "gambling_shop_role": "Du får {0} rollen.", - "gambling_type": "", + "gambling_type": "Type.", "utility_clpa_next_update": "Næste opdatering om {0}", - "administration_gvc_disabled": "", - "administration_gvc_enabled": "", - "administration_not_in_voice": "", - "gambling_item": "", + "administration_gvc_disabled": "Spil Stemmekanal egenskab er deaktiveret på denne server.", + "administration_gvc_enabled": "{0} er en Spil Stemmekanal nu.", + "administration_not_in_voice": "Du er ikke i en stemmekanal på denne server.", + "gambling_item": "Genstand", "gambling_out_of_stock": "Udsolgt", "gambling_random_unique_item": "Tilfældig enestående vare\n", - "gambling_shop_buy_error": "", - "gambling_shop_item_not_found": "", - "gambling_shop_item_purchase": "", + "gambling_shop_buy_error": "Fejl ved DM af artikel. Du er blevet tilbagebetalt.", + "gambling_shop_item_not_found": "Det blev ikke fundet nogen vare på dette indeks.", + "gambling_shop_item_purchase": "Køb af varen var vellykket", "gambling_shop_item_rm": "Butiks vare fjernet\n", - "gambling_shop_item_wrong_type": "", + "gambling_shop_item_wrong_type": "Denne butikspost understøtter ikke varetilføjelse.", "gambling_shop_list_item_added": "Vare vellykket tilføjet ", - "gambling_shop_list_item_not_unique": "", + "gambling_shop_list_item_not_unique": "Denne vare er allerede tilføjet.", "gambling_shop_purchase": "Købt på {0} server", "gambling_shop_role_not_found": "Rollen der bliver solgt eksisterer ikke længere.", "gambling_shop_role_purchase": "Du har købt {0} rollen.", @@ -776,33 +753,120 @@ "gambling_animal_race_no_race": "Dette dyre ræs er fuldt.", "utility_cant_read_or_send": "Du kan hverken læse eller sende beskeder til den kanal.", "utility_quotes_notfound": "Ingen citater med det tilsvarende citat ID kunne findes.", - "administration_prefix_current": "", - "administration_prefix_new": "", - "administration_defprefix_current": "", - "administration_defprefix_new": "", - "administration_bot_nick": "", - "administration_user_nick": "", - "administration_timezone_guild": "", - "administration_timezone_not_found": "", - "administration_timezones_available": "", - "music_song_not_found": "", - "searches_define_unknown": "", - "utility_repeater_initial": "", - "utility_verbose_errors_enabled": "", - "utility_verbose_errors_disabled": "", - "permissions_perms_reset": "", - "permissions_trigger": "", - "administration_migration_error": "", - "searches_hex_invalid": "", - "permissions_global_perms_reset": "", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "" + "administration_prefix_current": "Præfiks på denne server er {0}", + "administration_prefix_new": "Ændrede præfiks på denne server fra {0} til {1}", + "administration_defprefix_current": "Standard bot præfiks er {0}", + "administration_defprefix_new": "Ændrede Standard bot præfiks fra {0} til {1}", + "administration_bot_nick": "Bots kaldenavn er ændret til {0}", + "administration_user_nick": "Kaldenavn på brugeren {0} ændres til {1}", + "administration_timezone_guild": "Tidszonen for dette laug er `{1}`", + "administration_timezone_not_found": "Tidszone ikke fundet. Brug \"tidszoner\" kommando for at se listen over tilgængelige tidszoner.", + "administration_timezones_available": "Tilgængelige Tidszoner", + "music_song_not_found": "Ingen sang fundet.", + "searches_define_unknown": "Definitionen for dette udtryk kunne ikke findes.", + "utility_repeater_initial": "Den oprindelige gentagende besked vil blive sent om {0}h og {1}min.", + "utility_verbose_errors_enabled": "Kommandoer som ikke er brugt korrekt vil vise fejl.", + "utility_verbose_errors_disabled": "Kommandoer som ikke er brugt korrekt vil ikke længere vise fejl.", + "permissions_perms_reset": "Tilladelser for denne server er blevet nulstillet.", + "permissions_trigger": "Adgangs nummer #{0} {1} forhindre denne handling.", + "administration_migration_error": "Fejl ved udvandring, check bots konsol for mere information.", + "searches_hex_invalid": "Ugyldig farve specificeret.", + "permissions_global_perms_reset": "Globale tilladelser er blevet nulstillet.", + "help_module": "Modul: {0}", + "games_hangman_stopped": "Hangman spil afsluttet.", + "music_autoplaying": "spilles automatisk.", + "music_queue_stopped": "Musikspilleren stoppede. Brug {0} kommandoen for at starte igen.", + "music_removed_song_error": "Sang på det register findes ikke", + "music_shuffling_playlist": "Blander sange", + "music_songs_shuffle_enable": "Sange vil blandes fra nu af.", + "music_songs_shuffle_disable": "Sange vil ikke længere blandes.", + "music_song_skips_after": "Sangene vil springes over efter {0}", + "administration_warnings_list": "Liste over advarede brugere på denne server", + "customreactions_redacted_too_long": "Redigeret fordi det er for langt.", + "nsfw_blacklisted_tag_list": "Liste over sortlistede tags:", + "nsfw_blacklisted_tag": "Et eller flere af de tags du har brugt er sortlistet.", + "nsfw_blacklisted_tag_add": "Nsfw tag {0} er nu sortlistet.", + "nsfw_blacklisted_tag_remove": "Nsfw tag {0} er ikke længere sortlistet.", + "gambling_waifu_gift": "Gav {0} til {1}", + "gambling_waifu_gift_shop": "Waifu gavebutik", + "gambling_gifts": "Gaver", + "games_connect4_created": "Oprettede et Connect4 spil. Venter på at en deltager.", + "games_connect4_player_to_move": "Spiller som skal trække: {0}", + "games_connect4_failed_to_start": "Connect4 spillet kunne ikke startes fordi ingen deltog.", + "games_connect4_draw": "Connect4 spillet sluttede uafgjort.", + "games_connect4_won": "{0} vandt over {1} i Connect4.", + "games_nunchi_joined": "deltager i nunchi spil. {0} spillere ind til videre.", + "games_nunchi_ended": "Nunchi spil afsluttet. {0} vandt.", + "games_nunchi_ended_no_winner": "Nunchi spil afsluttet med ingen vinder.", + "games_nunchi_started": "Nunchi spil startet med {0} deltagere.", + "games_nunchi_round_ended": "Nunchi runde afsluttet. {0} er ude af spillet.", + "games_nunchi_round_ended_boot": "Nunchi runde afsluttet pga. timeout hos nogle brugere. Disse brugere er stadig i spillet: {0}", + "games_nunchi_round_started": "Nunchi runde started med {0} brugere. Begynd at tælle fra tallet {1}.", + "games_nunchi_next_number": "Nummer registreret. Sidste nummer var {0}.", + "games_nunchi_failed_to_start": "Nunchi kunne ikke startes fordi der ikke var nok deltagere.", + "games_nunchi_created": "Nunchi spil oprettet. Venter på brugere der vil deltage.", + "music_sad_enabled": "Sange vil blive slettet fra musikkøen når de er færdige med at spille.", + "music_sad_disabled": "Sange vil ikke længere blive slettet fra musikkøen når de er færdige med at spille.", + "utility_stream_role_enabled": "Når en bruger fra {0} rolle begynder at streame, vil jeg give dem {1} rolle.", + "utility_stream_role_disabled": "Stream-rolle funktion er blevet deaktiveret.", + "utility_stream_role_kw_set": "Streamere skal nu bruge {0} nøgleord for at modtage rollen.", + "utility_stream_role_kw_reset": "Stream-rolle nøgleord nulstillet.", + "utility_stream_role_bl_add": "Bruger {0} vil aldrig modtage stream-rollen.", + "utility_stream_role_bl_add_fail": "Bruger {0} er allerede sortlistet.", + "utility_stream_role_bl_rem": "Bruger {0} er ikke længere sortlistet.", + "utility_stream_role_bl_rem_fail": "Bruger {0} er ikke sortlistet.", + "utility_stream_role_wl_add": "Bruger {0} vil modtage stream-rollen selvom de ikke har nøgleordet i streamnavnet.", + "utility_stream_role_wl_add_fail": "Bruger {0} er allerede positivlistet.", + "utility_stream_role_wl_rem": "Bruger {0} er ikke længere positivlistet.", + "utility_stream_role_wl_rem_fail": "Bruger {0} er ikke positivlistet.", + "utility_bot_config_edit_fail": "Kunne ikke sætte {0} til værdien {1}", + "utility_bot_config_edit_success": "Værdien af {0} er sat til {1}", + "customreactions_crca_disabled": "Brugerdefineret reaktion med id {0} vil ikke længere udløses med mindre dens udløsningsord står i begyndelsen af sætningen.", + "customreactions_crca_enabled": "Brugerdefineret reaktion med id {0} vil nu udløses hvis det er hvor som helst i sætningen.", + "xp_server_level": "Serverniveau", + "xp_level": "Niveau", + "xp_club": "Klub", + "xp_xp": "Erfaring", + "xp_excluded": "{0} er blevet ekskluderet fra XP-systemet på denne server.", + "xp_not_excluded": "{0} bliver ikke længere ekskluderet fra XP-systemet på denne server.", + "xp_exclusion_list": "Eksklusionsliste", + "xp_server_is_excluded": "Denne server er ekskluderet.", + "xp_server_is_not_excluded": "Denne server er ikke ekskluderet.", + "xp_excluded_roles": "Ekskluderede Roller", + "xp_excluded_channels": "Ekskluderede Kanaler", + "xp_level_up_channel": "Tillykke, {0}, du har opnået niveau {1}!", + "xp_level_up_dm": "Tillykke {0}, du har opnået niveau {1} på serveren {2}!", + "xp_level_up_global": "Tillykke {0}, Du er opnået global level {1}!", + "xp_role_reward_cleared": "Level {0} vil ikke længere belønnes en rolle", + "xp_role_reward_added": "Brugere som opnår level {0} får {1} rolle.", + "xp_role_rewards": "Rolle Belønninger", + "xp_level_x": "Level {0}", + "xp_no_role_rewards": "Ingen rolle belønning på denne side.", + "xp_server_leaderboard": "Server XP Scoretavle", + "xp_global_leaderboard": "Globalt XP Scoretavle", + "xp_modified": "Modificeret server XP af brugeren {0} ved {1}", + "xp_club_create_error": "Oprettelse af klubben fejlede. Sikre dig at du er over level 5 og ikke medlem af en klub i forvejen.", + "xp_club_created": "Klub {0} oprettet succesfuldt!", + "xp_club_not_exists": "Klubben findes ikke.", + "xp_club_applied": "Du har henvendt dig for medlemskabs i {0} klub.", + "xp_club_apply_error": "Fejl ved applikation. Du er allerede medlem at denne klub eller har du ikke level specifikationen. Det kan også være at du er blevet bandlyst fra klubben.", + "xp_club_accepted": "Accepteret bruger {0} til klubben.", + "xp_club_accept_error": "Bruger blev ikke fundet", + "xp_club_left": "Du har forladt klubben.", + "xp_club_not_in_club": "Du er ikke medlem af en klub, eller prøver du på at forlade den klub du er ejer af.", + "xp_club_user_kick": "Bruger {0} smidt ud fra {1} klub.", + "xp_club_user_kick_fail": "Fejl ved udsmidelse. Du er ikke klub ejer eller kan det være at brugeren ikke er i din klub.", + "xp_club_user_banned": "Bandlyst bruger {0} fra {1} klub.", + "xp_club_user_ban_fail": "Bandlysning fejlede. Du er ikke ejer af klubben, eller er brugeren ikke i klubben eller henvendt sig til den.", + "xp_club_user_unbanned": "Fjernelse af bandlysning bruger {0} i {1} klub.", + "xp_club_user_unban_fail": "Bandlysning fejlede. Du er ikke ejer af klubben, eller er brugeren ikke i klubben eller henvendt sig til den.", + "xp_club_level_req_changed": "Klubbens minimums krab blev ændret til {0}", + "xp_club_level_req_change_error": "Fejl ved ændring af level krav.", + "xp_club_disbanded": "Klub {0} er blevet forladt", + "xp_club_disband_error": "Fejl. Du er ikke medlem af en klub, eller er du ikke ejer af din egen klub.", + "xp_club_icon_error": "Billede url er ikke gyldigt eller kan det være at du ikke ejer af klubben.", + "xp_club_icon_set": "Nyt klubikon sat.", + "xp_club_bans_for": "Bandlysninger for {0} klub", + "xp_club_apps_for": "Applikationer for {0} club", + "xp_club_leaderboard": "Klubbens scoretavle" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.en-US.json b/src/NadekoBot/_strings/ResponseStrings.en-US.json index d1c2e022..7707615d 100644 --- a/src/NadekoBot/_strings/ResponseStrings.en-US.json +++ b/src/NadekoBot/_strings/ResponseStrings.en-US.json @@ -4,8 +4,7 @@ "customreactions_insuff_perms": "Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for server custom reactions.", "customreactions_list_all": "List of all custom reactions", "customreactions_name": "Custom Reactions", - "customreactions_new_cust_react": "\"New Custom Reaction", - "customreactions_edited_cust_react": "Custom Reaction Edited", + "customreactions_new_cust_react": "New Custom Reaction", "customreactions_no_found": "No custom reaction found.", "customreactions_no_found_id": "No custom reaction found with that id.", "customreactions_response": "Response", @@ -13,12 +12,8 @@ "customreactions_stats_cleared": "Stats cleared for {0} custom reaction.", "customreactions_stats_not_found": "No stats for that trigger found, no action taken.", "customreactions_trigger": "Trigger", - "customreactions_redacted_too_long": "Redecated because it's too long.", + "nsfw_autohentai_stopped": "Autohentai stopped.", "nsfw_not_found": "No results found.", - "nsfw_blacklisted_tag_list": "List of blacklisted tags:", - "nsfw_blacklisted_tag": "One or more tags you've used are blacklisted", - "nsfw_blacklisted_tag_add": "Nsfw tag {0} is now blacklisted.", - "nsfw_blacklisted_tag_remove": "Nsfw tag {0} is no longer blacklisted.", "pokemon_already_fainted": "{0} has already fainted.", "pokemon_already_full": "{0} already has full HP.", "pokemon_already_that_type": "Your type is already {0}", @@ -49,8 +44,6 @@ "administration_banned_pl": "banned", "administration_banned_user": "User Banned", "administration_bot_name": "Bot's name changed to {0}", - "administration_bot_nick": "Bot's nickname changed to {0}", - "administration_user_nick": "Nickname of the user {0} changed to {1}", "administration_bot_status": "Bot status changed to {0}", "administration_byedel_off": "Automatic deletion of bye messages has been disabled.", "administration_byedel_on": "Bye messages will be deleted after {0} seconds.", @@ -135,8 +128,6 @@ "administration_old_nick": "Old nickname", "administration_old_topic": "Old topic", "administration_perms": "Error. Most likely I don't have sufficient permissions.", - "permissions_perms_reset": "Permissions for this server are reset.", - "permissions_trigger": "Permission number #{0} {1} is preventing this action.", "administration_prot_active": "Active protections", "administration_prot_disable": "{0} has been **disabled** on this server.", "administration_prot_enable": "{0} Enabled", @@ -157,7 +148,7 @@ "administration_renrole_err": "Failed to rename role. I have insufficient permissions.", "administration_renrole_perms": "You can't edit roles higher than your highest role.", "administration_reprm": "Removed the playing message: {0}", - "administration_role_added": "Role {0} has been added to the list.", + "administration_role_added": "Role {0} has been added to the list in group {1}.", "administration_role_clean": "{0} not found.Cleaned up.", "administration_role_in_list": "Role {0} is already in the list.", "administration_ropl_added": "Added.", @@ -195,9 +186,6 @@ "administration_spam_stats": "If a user posts {0} same messages in a row, I will {1} them.\n __IgnoredChannels__: {2}", "administration_text_chan_created": "Text channel created.", "administration_text_chan_destroyed": "Text channel destroyed.", - "administration_timezone_guild": "Timezone for this guild is `{0}`", - "administration_timezone_not_found": "Timezone not found. Use \"timezones\" command to see the list of available timezones.", - "administration_timezones_available": "Available Timezones", "administration_undeafen": "Undeafen successful.", "administration_unmuted_sn": "Unmuted", "administration_username": "Username", @@ -231,7 +219,6 @@ "administration_sbdm": "You have been soft-banned from {0} server.\nReason: {1}", "administration_user_unbanned": "User unbanned", "administration_migration_done": "Migration done!", - "administration_migration_error": "Error while migrating, check bot's console for more information.", "administration_presence_updates": "Presence updates", "administration_sb_user": "User soft-banned", "gambling_awarded": "has awarded {0} to {1}", @@ -241,9 +228,6 @@ "gambling_flipped": "flipped {0}.", "gambling_flip_guess": "You guessed it! You won {0}", "gambling_flip_invalid": "Invalid number specified. You can flip 1 to {0} coins.", - "gambling_reaction_desc": "Add {0} reaction to this message to get {1} ", - "gambling_reaction_footer": "This event is active for up to {0} hours.", - "gambling_reaction_title": "Reaction event started!", "gambling_gifted": "has gifted {0} to {1}", "gambling_has": "{0} has {1}", "gambling_heads": "Head", @@ -285,7 +269,6 @@ "help_server_permission": "Requires {0} server permission.", "help_table_of_contents": "Table of contents", "help_usage": "Usage", - "help_module": "Module: {0}", "nsfw_autohentai_started": "Autohentai started. Reposting every {0}s with one of the following tags:\n{1}", "nsfw_tag": "Tag", "gambling_animal_race": "Animal race", @@ -325,11 +308,10 @@ "gambling_waifu_not_yours": "That waifu is not yours.", "gambling_waifu_not_yourself": "You can't claim yourself.", "gambling_waifu_recent_divorce": "You divorced recently. You must wait {0} hours and {1} minutes to divorce again.", + "gambling_waifu_transfer_fail": "You're either not the owner of that waifu, or you can't afford it. Alternatively your input is invalid.", + "gambling_waifu_transfer_success": "Claim on {0} has been transfered from {1} to {2}", "gambling_nobody": "Nobody", "gambling_waifu_divorced_notlike": "You have divorced a waifu who doesn't like you. You received {0} back.", - "gambling_waifu_gift": "Gifted {0} to {1}", - "gambling_waifu_gift_shop": "Waifu gift shop", - "gambling_gifts": "Gifts", "games_8ball": "8ball", "games_acrophobia": "Acrophobia", "games_acro_ended_no_sub": "Game ended with no submissions.", @@ -352,11 +334,6 @@ "games_category": "Category", "games_cleverbot_disabled": "Disabled cleverbot on this server.", "games_cleverbot_enabled": "Enabled cleverbot on this server.", - "games_connect4_created": "Created a Connect4 game. Waiting for a player to join.", - "games_connect4_player_to_move": "Player to move: {0}", - "games_connect4_failed_to_start": "Connect4 game failed to start because nobody joined.", - "games_connect4_draw": "Connect4 game ended in a draw.", - "games_connect4_won": "{0} won the game of Connect4 against {1}.", "games_curgen_disabled": "Currency generation has been disabled on this channel.", "games_curgen_enabled": "Currency generation has been enabled on this channel.", "games_curgen_pl": "{0} random {1} appeared!", @@ -366,21 +343,10 @@ "games_hangman_game_started": "Hangman game started", "games_hangman_running": "Hangman game already running on this channel.", "games_hangman_start_errored": "Starting hangman errored.", - "games_hangman_stopped": "Hangman game stopped.", "games_hangman_types": "List of \"{0}hangman\" term types:", "games_leaderboard": "Leaderboard", "games_not_enough": "You don't have enough {0}", "games_no_results": "No results", - "games_nunchi_joined": "Joined nunchi game. {0} users joined so far.", - "games_nunchi_ended": "Nunchi game ended. {0} won", - "games_nunchi_ended_no_winner": "Nunchi game ended with no winner.", - "games_nunchi_started": "Nunchi game started with {0} participants.", - "games_nunchi_round_ended": "Nunchi round ended. {0} is out of the game.", - "games_nunchi_round_ended_boot": "Nunchi round ended due to timeout of some users. These users are still in the game: {0}", - "games_nunchi_round_started": "Nunchi round started with {0} users. Start counting from the number {1}.", - "games_nunchi_next_number": "Number registered. Last number was {0}.", - "games_nunchi_failed_to_start": "Nunchi failed to start because there were not enough participants.", - "games_nunchi_created": "Nunchi game created. Waiting for users to join.", "games_picked": "picked {0}", "games_planted": "{0} planted {1}", "games_trivia_already_running": "Trivia game is already running on this server.", @@ -404,15 +370,12 @@ "music_attempting_to_queue": "Attempting to queue {0} songs...", "music_autoplay_disabled": "Autoplay disabled.", "music_autoplay_enabled": "Autoplay enabled.", - "music_autoplaying": "Auto-playing.", "music_defvol_set": "Default volume set to {0}%", "music_dir_queue_complete": "Directory queue complete.", "music_fairplay": "Fairplay", "music_finished_song": "Finished song", "music_fp_disabled": "Fair play disabled.", "music_fp_enabled": "Fair play enabled.", - "music_sad_enabled": "Songs will be deleted from the music queue when they finish playing.", - "music_sad_disabled": "Songs will no longer be deleted from the music queue when they finish playing.", "music_from_position": "From position", "music_id": "Id", "music_invalid_input": "Invalid input.", @@ -440,24 +403,17 @@ "music_queued_song": "Queued song", "music_queue_cleared": "Music queue cleared.", "music_queue_full": "Queue is full at {0}/{0}.", - "music_queue_stopped": "Player is stopped. Use {0} command to start playing.", "music_removed_song": "Removed song", - "music_removed_song_error": "Song on that index doesn't exist", "music_repeating_cur_song": "Repeating current song", "music_repeating_playlist": "Repeating playlist", "music_repeating_track": "Repeating track", "music_repeating_track_stopped": "Current track repeat stopped.", - "music_shuffling_playlist": "Shuffling songs", "music_resumed": "Music playback resumed.", "music_rpl_disabled": "Repeat playlist disabled.", "music_rpl_enabled": "Repeat playlist enabled.", "music_set_music_channel": "I will now output playing, finished, paused and removed songs in this channel.", "music_skipped_to": "Skipped to `{0}:{1}`", - "music_songs_shuffle_enable": "Songs will shuffle from now on.", - "music_songs_shuffle_disable": "Songs will no longer shuffle.", "music_song_moved": "Song moved", - "music_song_not_found": "No song found.", - "music_song_skips_after": "Songs will skip after {0}", "music_time_format": "{0}h {1}m {2}s", "music_to_position": "To position", "music_unlimited": "unlimited", @@ -534,7 +490,6 @@ "searches_cost": "Cost", "searches_date": "Date", "searches_define": "Define:", - "searches_define_unknown": "Can't find the definition for that term.", "searches_dropped": "Dropped", "searches_episodes": "Episodes", "searches_error_occured": "Error occurred.", @@ -542,10 +497,10 @@ "searches_failed_finding_anime": "Failed finding that animu.", "searches_failed_finding_manga": "Failed finding that mango.", "searches_genres": "Genres", + "searches_authors": "Authors", "searches_hashtag_error": "Failed finding a definition for that tag.", "searches_height_weight": "Height/Weight", "searches_height_weight_val": "{0}m/{1}kg", - "searches_hex_invalid": "Invalid color specified.", "searches_humidity": "Humidity", "searches_image_search_for": "Image search for:", "searches_imdb_fail": "Failed to find that movie.", @@ -609,26 +564,12 @@ "searches_wind_speed": "Wind speed", "searches_x_most_banned_champs": "The {0} most banned champions", "searches_yodify_error": "Failed to yodify your sentence.", - "utility_stream_role_enabled": "When a user from {0} role starts streaming, I will give them {1} role.", - "utility_stream_role_disabled": "Stream role feature has been disabled.", - "utility_stream_role_kw_set": "Streamers now require {0} keyword in order to receive the role.", - "utility_stream_role_kw_reset": "Stream role keyword reset.", - "utility_stream_role_bl_add": "User {0} will never receive the stream role.", - "utility_stream_role_bl_add_fail": "User {0} is already blacklisted.", - "utility_stream_role_bl_rem": "User {0} is no longer blacklisted.", - "utility_stream_role_bl_rem_fail": "User {0} is not blacklisted.", - "utility_stream_role_wl_add": "User {0} will receive the stream role even if they don't have the keyword in the stream title.", - "utility_stream_role_wl_add_fail": "User {0} is already whitelisted.", - "utility_stream_role_wl_rem": "User {0} is no longer whitelisted.", - "utility_stream_role_wl_rem_fail": "User {0} is not whitelisted.", "utiliity_joined": "Joined", "utility_activity_line": "`{0}.` {1} [{2:F2}/s] - {3} total", "utility_activity_page": "Activity page #{0}", "utility_activity_users_total": "{0} users total.", "utility_author": "Author", "utility_botid": "Bot ID", - "utility_bot_config_edit_fail": "Failed setting {0} to the value {1}", - "utility_bot_config_edit_success": "The value of {0} is set to {1}", "utility_calcops": "List of functions in {0}calc command", "utility_channelid": "{0} of this channel is {1}", "utility_channel_topic": "Channel topic", @@ -648,6 +589,8 @@ "utility_invalid_value": "Invalid {0} value.", "utility_joined_discord": "Joined Discord", "utility_joined_server": "Joined server", + "administration_joined_discord": "Joined Discord", + "administration_joined_server": "Joined server", "utility_listservers": "ID: {0}\nMembers: {1}\nOwner ID: {2}", "utility_listservers_none": "No servers found on that page.", "utility_list_of_repeaters": "List of repeater", @@ -678,7 +621,6 @@ "utility_remind_invalid_format": "Not a valid time format. Check the commandlist.", "utility_remind_template": "New remind template set.", "utility_repeater": "Repeating {0} every {1} day(s), {2} hour(s) and {3} minute(s).", - "utility_repeater_initial": "Initial repeating message will be sent in {0}h and {1}min.", "utility_repeaters_list": "List of repeaters", "utility_repeaters_none": "No repeaters running on this server.", "utility_repeater_stopped": "#{0} stopped.", @@ -703,14 +645,12 @@ "utility_uptime": "Uptime", "utility_userid": "{0} of the user {1} is {2}", "utility_users": "Users", - "utility_verbose_errors_enabled": "Incorrectly used commands will now show errors.", - "utility_verbose_errors_disabled": "Incorrectly used commands will no longer show errors.", "utility_voice_channels": "Voice channels", "gambling_animal_race_already_in": "You've already joined this race!", "games_current_poll_results": "Current poll results", "games_no_votes_cast": "No votes cast.", "games_poll_already_running": "Poll is already running on this server.", - "games_poll_created": "📃 {0} has created a poll which requires your attention:", + "games_poll_created": "📃 {0} has created a poll", "games_poll_result": "`{0}.` {1} with {2} votes.", "games_poll_voted": "{0} voted.", "games_poll_vote_private": "Private Message me with the corresponding number of the answer.", @@ -721,6 +661,7 @@ "games_pick_sn": "Pick it up by typing `{0}pick`", "gambling_no_users_found": "No user found.", "gambling_page": "page {0}", + "administration_sql_confirm_exec": "Confirm execution of the following SQL command", "administration_must_be_in_voice": "You must be in a voice channel on this server.", "administration_no_vcroles": "There are no voice channel roles.", "administration_user_muted_time": "{0} has been **muted** from text and voice chat for {1} minutes.", @@ -731,8 +672,6 @@ "customreactions_crad_enabled": "Message triggering the custom reaction with id {0} will get automatically deleted.", "customreactions_crdm_disabled": "Response message for the custom reaction with id {0} won't be sent as a DM.", "customreactions_crdm_enabled": "Response message for the custom reaction with id {0} will be sent as a DM.", - "customreactions_crca_disabled": "Custom reaction with id {0} will no longer trigger unless it's trigger word is at the beggining of the sentence.", - "customreactions_crca_enabled": "Custom reaction with id {0} will now trigger if it's contained anywhere in the sentence.", "utility_aliases_none": "No alias found", "utility_alias_added": "Typing {0} will now be an alias of {1}.", "utility_alias_list": "List of aliases", @@ -759,7 +698,6 @@ "administration_warned_on_by": "On {0} at {1} by {2}", "administration_warnings_cleared": "All warnings have been cleared for {0}.", "administration_warnings_none": "No warning on this page.", - "administration_warnings_list": "List of all warned users on the server", "administration_warnlog_for": "Warnlog for {0}", "administration_warnpl_none": "No punishments set.", "administration_warn_cleared_by": "cleared by {0}", @@ -790,7 +728,6 @@ "gambling_shop_role": "You will get {0} role.", "gambling_type": "Type", "utility_clpa_next_update": "Next update in {0}", - "permissions_global_perms_reset": "Global permissions have been reset.", "administration_gvc_disabled": "Game Voice Channel feature has been disabled on this server.", "administration_gvc_enabled": "{0} is a Game Voice Channel now.", "administration_not_in_voice": "You are not in a voice channel on this server.", @@ -823,6 +760,72 @@ "administration_prefix_new": "Changed prefix on this server from {0} to {1}", "administration_defprefix_current": "Default bot prefix is {0}", "administration_defprefix_new": "Changed Default bot prefix from {0} to {1}", + "administration_bot_nick": "Bot's nickname changed to {0}", + "administration_user_nick": "Nickname of the user {0} changed to {1}", + "administration_timezone_guild": "Timezone for this guild is `{0}`", + "administration_timezone_not_found": "Timezone not found. Use \"timezones\" command to see the list of available timezones.", + "administration_timezones_available": "Available Timezones", + "music_song_not_found": "No song found.", + "searches_define_unknown": "Can't find the definition for that term.", + "utility_repeater_initial": "Initial repeating message will be sent in {0}h and {1}min.", + "utility_verbose_errors_enabled": "Incorrectly used commands will now show errors.", + "utility_verbose_errors_disabled": "Incorrectly used commands will no longer show errors.", + "permissions_perms_reset": "Permissions for this server are reset.", + "permissions_trigger": "Permission number #{0} {1} is preventing this action.", + "administration_migration_error": "Error while migrating, check bot's console for more information.", + "searches_hex_invalid": "Invalid color specified.", + "permissions_global_perms_reset": "Global permissions have been reset.", + "help_module": "Module: {0}", + "games_hangman_stopped": "Hangman game stopped.", + "music_autoplaying": "Auto-playing.", + "music_queue_stopped": "Player is stopped. Use {0} command to start playing.", + "music_removed_song_error": "Song on that index doesn't exist", + "music_shuffling_playlist": "Shuffling songs", + "music_songs_shuffle_enable": "Songs will shuffle from now on.", + "music_songs_shuffle_disable": "Songs will no longer shuffle.", + "music_song_skips_after": "Songs will skip after {0}", + "administration_warnings_list": "List of all warned users on the server", + "customreactions_redacted_too_long": "Redacted because it's too long.", + "nsfw_blacklisted_tag_list": "List of blacklisted tags:", + "nsfw_blacklisted_tag": "One or more tags you've used are blacklisted", + "nsfw_blacklisted_tag_add": "Nsfw tag {0} is now blacklisted.", + "nsfw_blacklisted_tag_remove": "Nsfw tag {0} is no longer blacklisted.", + "gambling_waifu_gift": "Gifted {0} to {1}", + "gambling_waifu_gift_shop": "Waifu gift shop", + "gambling_gifts": "Gifts", + "games_connect4_created": "Created a Connect4 game. Waiting for a player to join.", + "games_connect4_player_to_move": "Player to move: {0}", + "games_connect4_failed_to_start": "Connect4 game failed to start because nobody joined.", + "games_connect4_draw": "Connect4 game ended in a draw.", + "games_connect4_won": "{0} won the game of Connect4 against {1}.", + "games_nunchi_joined": "Joined nunchi game. {0} users joined so far.", + "games_nunchi_ended": "Nunchi game ended. {0} won", + "games_nunchi_ended_no_winner": "Nunchi game ended with no winner.", + "games_nunchi_started": "Nunchi game started with {0} participants.", + "games_nunchi_round_ended": "Nunchi round ended. {0} is out of the game.", + "games_nunchi_round_ended_boot": "Nunchi round ended due to timeout of some users. These users are still in the game: {0}", + "games_nunchi_round_started": "Nunchi round started with {0} users. Start counting from the number {1}.", + "games_nunchi_next_number": "Number registered. Last number was {0}.", + "games_nunchi_failed_to_start": "Nunchi failed to start because there were not enough participants.", + "games_nunchi_created": "Nunchi game created. Waiting for users to join.", + "music_sad_enabled": "Songs will be deleted from the music queue when they finish playing.", + "music_sad_disabled": "Songs will no longer be deleted from the music queue when they finish playing.", + "utility_stream_role_enabled": "When a user from {0} role starts streaming, I will give them {1} role.", + "utility_stream_role_disabled": "Stream role feature has been disabled.", + "utility_stream_role_kw_set": "Streamers now require {0} keyword in order to receive the role.", + "utility_stream_role_kw_reset": "Stream role keyword reset.", + "utility_stream_role_bl_add": "User {0} will never receive the stream role.", + "utility_stream_role_bl_add_fail": "User {0} is already blacklisted.", + "utility_stream_role_bl_rem": "User {0} is no longer blacklisted.", + "utility_stream_role_bl_rem_fail": "User {0} is not blacklisted.", + "utility_stream_role_wl_add": "User {0} will receive the stream role even if they don't have the keyword in the stream title.", + "utility_stream_role_wl_add_fail": "User {0} is already whitelisted.", + "utility_stream_role_wl_rem": "User {0} is no longer whitelisted.", + "utility_stream_role_wl_rem_fail": "User {0} is not whitelisted.", + "utility_bot_config_edit_fail": "Failed setting {0} to the value {1}", + "utility_bot_config_edit_success": "The value of {0} is set to {1}", + "customreactions_crca_disabled": "Custom reaction with id {0} will no longer trigger unless it's trigger word is at the beggining of the sentence.", + "customreactions_crca_enabled": "Custom reaction with id {0} will now trigger if it's contained anywhere in the sentence.", "xp_server_level": "Server Level", "xp_level": "Level", "xp_club": "Club", @@ -837,18 +840,20 @@ "xp_level_up_channel": "Congratulations {0}, You've reached level {1}!", "xp_level_up_dm": "Congratulations {0}, You've reached level {1} on {2} server!", "xp_level_up_global": "Congratulations {0}, You've reached global level {1}!", - "xp_role_reward_cleared": "Level {0} will no longer reward a role.", + "xp_role_reward_cleared": "Reaching level {0} will no longer reward a role.", "xp_role_reward_added": "Users who reach level {0} will receive {1} role.", - "xp_role_rewards": "Role Rewards", + "xp_cur_reward_cleared": "Reaching level {0} will no longer reward any {1}.", + "xp_cur_reward_added": "Users who reach level {0} will receive {1}.", + "xp_level_up_rewards": "Level Up Rewards", "xp_level_x": "Level {0}", - "xp_no_role_rewards": "No role reward on this page.", + "xp_role_reward": "{0} role", + "xp_no_level_up_rewards": "No level up reward on this page.", "xp_server_leaderboard": "Server XP Leaderboard", "xp_global_leaderboard": "Global XP Leaderboard", "xp_modified": "Modified server XP of the user {0} by {1}", "xp_club_create_error": "Failed creating the club. Make sure you're above level 5 and not a member of a club already.", "xp_club_created": "Club {0} successfully created!", "xp_club_not_exists": "That club doesn't exist.", - "xp_club_not_exists_owner": "You are not the owner or the admin of the club.", "xp_club_applied": "You've applied for membership in {0} club.", "xp_club_apply_error": "Error applying. You are either already a member of the club, or you don't meet the minimum level requirement, or you've been banned from this one.", "xp_club_accepted": "Accepted user {0} to the club.", @@ -870,6 +875,18 @@ "xp_club_bans_for": "Bans for {0} club", "xp_club_apps_for": "Applicants for {0} club", "xp_club_leaderboard": "Club leaderboard - page {0}", + "customreactions_edited_cust_react": "Custom Reaction Edited", + "administration_self_assign_are_exclusive": "You can only choose 1 role from each group.", + "administration_self_assign_are_not_exclusive": "You can choose any number of roles from any group.", + "administration_self_assign_group": "Group {0}", + "gambling_reaction_desc": "Add {0} reaction to this message to get {1} ", + "gambling_reaction_footer": "This event is active for up to {0} hours.", + "gambling_reaction_title": "Reaction event started!", + "administration_no_shards_on_page": "No shards on this page.", + "administration_shard_stats": "Shard stats", + "administration_shard_stats_txt": "Shard **#{0}** is in {1} state with {2} servers - {3} ago", + "games_poll_closed": "Poll Closed!", + "xp_club_not_exists_owner": "You are not the owner or the admin of the club.", "xp_club_admin_add": "{0} is now a club admin.", "xp_club_admin_remove": "{0} is no longer club admin.", "xp_club_admin_error": "Error. You are either not the owner of the club, or that user is not in your club.", @@ -884,5 +901,31 @@ "administration_restarting": "Restarting.", "customreactions_edit_fail": "Custom reaction with that ID does not exist.", "searches_streaming": "Streaming", - "searches_followers": "Followers" + "searches_followers": "Followers", + "gambling_rafflecur": "{0} Currency Raffle", + "gambling_rafflecur_joined": "User {0} joined the raffle", + "gambling_rafflecur_already_joined": "You have already joined this raffle or the value you used is not valid.", + "gambling_rafflecur_ended": "{0} raffle ended. {1} won {2}!", + "music_autodc_enable": "I will disconnect from the voice channel when there are no more songs to play.", + "music_autodc_disable": "I will no longer disconnect from the voice channel when there are no more songs to play.", + "gambling_timely_none": "Bot owner didn't specify a timely reward.", + "gambling_timely_already_claimed": "You've already claimed your timely reward. You can get it again in {0}.", + "gambling_timely": "You've claimed your {0}. You can claim again in {1}h", + "gambling_timely_set": "Users will be able to claim {0} every {1}h", + "gambling_timely_set_none": "Users will not be able to claim any timely currency.", + "gambling_timely_reset": "All users will be able to claim timely currency again.", + "searches_price": "Price", + "searches_market_cap": "Market Cap", + "searches_volume_24h": "Volume (24h)", + "searches_change_7d_24h": "Change (7d/24h)", + "searches_crypto_not_found": "Cryptocurrency with that name was not found.", + "searches_did_you_mean": "Did you mean {0}?", + "administration_self_assign_level_req": "Self assignable role {0} now requires at least server level {1}.", + "administration_self_assign_not_level": "That self-assignable role requires at least server level {0}.", + "administration_invalid": "Invalid / Can't be found ({0})", + "administration_mass_kill_in_progress": "Mass Banning and Blacklisting of {0} users is in progress...", + "administration_mass_kill_completed": "Mass Banning and Blacklisting of {0} users is complete.", + "searches_failed_finding_novel": "Can't find that novel. Make sure you've typed the exact full name, and that it exists on novelupdates.com", + "xp_club_transfered": "Ownership of the club {0} has been transfered to {1}", + "xp_club_transfer_failed": "Transfer failed. You must be the club owner. Target must be a member of your club." } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.fr-FR.json b/src/NadekoBot/_strings/ResponseStrings.fr-FR.json index ef17903d..fd94d9f5 100644 --- a/src/NadekoBot/_strings/ResponseStrings.fr-FR.json +++ b/src/NadekoBot/_strings/ResponseStrings.fr-FR.json @@ -336,7 +336,7 @@ "games_cleverbot_disabled": "Cleverbot désactivé sur ce serveur.", "games_cleverbot_enabled": "Cleverbot activé sur ce serveur.", "games_curgen_disabled": "La génération monétaire a été désactivée sur ce salon.", - "games_curgen_enabled": "La génération monétaire a été désactivée sur ce salon.", + "games_curgen_enabled": "La génération monétaire a été activé sur ce salon.", "games_curgen_pl": "{0} {1} aléatoires sont apparus!", "games_curgen_sn": "Un {0} aléatoire est apparu!", "games_failed_loading_question": "Impossible de charger une question.", diff --git a/src/NadekoBot/_strings/ResponseStrings.he-IL.json b/src/NadekoBot/_strings/ResponseStrings.he-IL.json index 33e31ee5..c97559b1 100644 --- a/src/NadekoBot/_strings/ResponseStrings.he-IL.json +++ b/src/NadekoBot/_strings/ResponseStrings.he-IL.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "הבסיס הזה נתפס או נהרס.", - "clashofclans_base_already_destroyed": "הבסיס הזה כבר נהרס.", - "clashofclans_base_already_unclaimed": "הבסיס הזה לא נתפס.", - "clashofclans_base_destroyed": "הבסיס #{0} **הושמד** במלחמה נגד {1}", - "clashofclans_base_unclaimed": "{0} **שיחרר** את בסיס #{1} במלחמה נגד {2}", - "clashofclans_claimed_base": "{0} תפס את בסיס #{1} במלחמה נגד {2}", - "clashofclans_claimed_other": "@{0} אתה כבר תפסת את בסיס #{1}. אינך יכול לתפוס אחד חדש", - "clashofclans_claim_expired": "התפיסה מ- @{0} במלחמה נגד {1} פגה.", - "clashofclans_enemy": "אויב", - "clashofclans_info_about_war": "מידע על המלחמה נגד {0}", - "clashofclans_invalid_base_number": "מספר בסיס שגוי", - "clashofclans_invalid_size": "גודל המלחמה לא נכון.", - "clashofclans_list_active_wars": "רשימת מלחמות פעילות", - "clashofclans_not_claimed": "לא תפוס", - "clashofclans_not_partic": "אתה לא משתתף במלחמה זאת", - "clashofclans_not_partic_or_destroyed": "@{0} אתה כנראה לא משתתף במלחמה זאת או הבסיס הזה כבר הושמד.", - "clashofclans_no_active_wars": "אין מלחמות פעילות.", - "clashofclans_size": "גודל.", - "clashofclans_war_already_started": "המלחמה נגד {0} כבר התחילה.", - "clashofclans_war_created": "מלחמה נגד {0} נוצרה.", - "clashofclans_war_ended": "המלחמה נגד {0} נגמרה.", - "clashofclans_war_not_exist": "המלחמה הזאת לא קיימת.", - "clashofclans_war_started": "מלחמה נגד {0} התחילה!", "customreactions_all_stats_cleared": "כל הסטטיסטיקות של התגובות המותאמות נמחקו.", "customreactions_deleted": "תגובות מותאמות אישית נמחקו", "customreactions_insuff_perms": "אין מספיק רשות, מתחייבת בעלות של הבוט בשביל תגובות מתאם גלובליות, ומנהג בשביל תגובות מתאם של הרשת.", @@ -776,10 +753,10 @@ "gambling_animal_race_no_race": "מרוץ החיות מלא!", "utility_cant_read_or_send": "את\\ה לא יכול לשלוח הודאות מ\\לערוץ זה.", "utility_quotes_notfound": "אין ציטוטים המתאימים למס' זהות זה.", - "administration_prefix_current": "", - "administration_prefix_new": "", - "administration_defprefix_current": "", - "administration_defprefix_new": "", + "administration_prefix_current": "קידומת על שרת זה היא {0}", + "administration_prefix_new": "קידומת שונה על שרת זה מ {0} ל {1}", + "administration_defprefix_current": "קידומת ברירת מחדל הבוט היא {0}", + "administration_defprefix_new": "שונתה קידומת ברירת מחדל הבוט מ {0} ל {1}", "administration_bot_nick": "כינוי הבוט שונה ל {0}", "administration_user_nick": "כינוי של המשתמש {0} שונה ל{1}", "administration_timezone_guild": "אזור הזמן של אגודה זו הוא '{0}'", @@ -787,22 +764,109 @@ "administration_timezones_available": "אזורי זמן זמינים", "music_song_not_found": "שיר לא נמצא.", "searches_define_unknown": "לא ניתן למצוא את ההגדרה של מושג זה.", - "utility_repeater_initial": "", + "utility_repeater_initial": "הודעה חוזרה התחלתית תשלח בעוד {0} שעות ו {1}דקות.", "utility_verbose_errors_enabled": "פקודות לא נכונות יציגו הערת שגיאה שוב.", "utility_verbose_errors_disabled": "פקודות לא נכונות לא יציגו הערת שגיאה שוב.", "permissions_perms_reset": "הרשאות בשביל שרת זה אופסו.", - "permissions_trigger": "", + "permissions_trigger": "רשות מספר #{0} {1} מונעת מלעשות פעולה זו", "administration_migration_error": "שגיאה בזמן מעבר. למידע נוסף, ראה את הקונסולה של הבוט.", "searches_hex_invalid": "צבע לא קיים", "permissions_global_perms_reset": "הרשאות כלליות התאפסו", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "" + "help_module": "מודול: {0}", + "games_hangman_stopped": "משחק \"איש תלוי\" סוים.", + "music_autoplaying": "משחק אוטומטי", + "music_queue_stopped": "שחקן נעצר. השתמש בפקודה {0} כדי להמשיך", + "music_removed_song_error": "שיר כזה לא קיים!", + "music_shuffling_playlist": "מערבב שירים", + "music_songs_shuffle_enable": "שירים יעורבבו מעכשיו.", + "music_songs_shuffle_disable": "שירים לא יעורבבו יותר.", + "music_song_skips_after": "השיר ידולג אחרי {0}", + "administration_warnings_list": "רשימה של כל המשתמשים עם אזהרה", + "customreactions_redacted_too_long": "נערך בגלל שזה ארוך מדי.", + "nsfw_blacklisted_tag_list": "רשימת תגים ברשימה שחורה:", + "nsfw_blacklisted_tag": "תג אחד או יותר שהשתמשת בהם נמצאים ברשימה השחורה.", + "nsfw_blacklisted_tag_add": "NSFW תג {0} עכשיו ברשימה השחורה.", + "nsfw_blacklisted_tag_remove": "NSFW תג {0} כבר לא נמצא ברשימה השחורה.", + "gambling_waifu_gift": "הביא במתנה {0} ל {1}.", + "gambling_waifu_gift_shop": "Waifu חנות מתנות", + "gambling_gifts": "מתנות", + "games_connect4_created": "יצר משחק 4 בשורה. מחכה לשחקן שיצטרף.", + "games_connect4_player_to_move": "התור של: {0}", + "games_connect4_failed_to_start": "המשחק 4 בשורה לא התחיל כי אף אחד לא התחבר.", + "games_connect4_draw": "4 בשורה נגמר בשוויון.", + "games_connect4_won": "{0} ניצח את {1} במשחק 4 בשורה.", + "games_nunchi_joined": "התחבר למשחק נונצ'י. {0} משתמשים התחברו עד עכשיו.", + "games_nunchi_ended": "משחק נונצ'י הסתיים. {0} ניצח.", + "games_nunchi_ended_no_winner": "משחק נונצ'י נגמר ללא מנצח.", + "games_nunchi_started": "משחק נונצ'י התחיל עם {0} משתתפים.", + "games_nunchi_round_ended": "סיבוב של נונצ'י הסתיים. {0} מחוץ למשחק.", + "games_nunchi_round_ended_boot": "סיבוב של נונצ'י הסתיים בגלל פסק זמן של מספר משתמשים. אלה הם המשתתפים שעדיין במשחק: {0}", + "games_nunchi_round_started": "סיבוב נונצ'י התחיל עם {0} משתתפים. תתחילו לספור מהמספר {1}.", + "games_nunchi_next_number": "מספר נרשם. המספר האחרון היה {0}.", + "games_nunchi_failed_to_start": "משחק נונצ'י לא התחיל כי לא היו מספיק משתתפים.", + "games_nunchi_created": "משחק נונצ'י נוצר. מחכים לעוד משתמשים שיצטרפו.", + "music_sad_enabled": "שירים ימחקו מרשימת השירים כשהם יסתיימו להתנגן.", + "music_sad_disabled": "שירים לא ימחקו יותר מרשימת השירים כשיסתיימו להתנגן.", + "utility_stream_role_enabled": "כשמשתמש מתפקיד {0} מתחיל שידור חי, אני אביא לו את תפקיד {1}.", + "utility_stream_role_disabled": "מאפיין של תפקיד שידור חי בוטל.", + "utility_stream_role_kw_set": "שדרנים עכשיו צריכים מילת מפתח {0} על מנת לקבל את התפקיד.", + "utility_stream_role_kw_reset": "מילת מפתח לתפקיד השדרנים אופס.", + "utility_stream_role_bl_add": "משתמש {0} לעולם לא יקבל את תפקיד השדרן.", + "utility_stream_role_bl_add_fail": "משתמש {0} כבר נמצא ברשימה השחורה.", + "utility_stream_role_bl_rem": "משתמש {0} לא נמצא ברשימה השחורה יותר.", + "utility_stream_role_bl_rem_fail": "משתמש {0} לא ברשימה השחורה.", + "utility_stream_role_wl_add": "משתמש {0} יקבל את תפקיד השדרן גם אם אין להם את מילת המפתח בכותרת השידור החי שלהם.", + "utility_stream_role_wl_add_fail": "משתמש {0} כבר נמצא ברשימה הלבנה.", + "utility_stream_role_wl_rem": "משתמש {0} כבר לא נמצא ברשימה הלבנה.", + "utility_stream_role_wl_rem_fail": "משתמש {0} לא נמצא ברשימה הלבנה.", + "utility_bot_config_edit_fail": "לא הצליח להגדיר {0} ל {1}", + "utility_bot_config_edit_success": "{0} הוגדר ל {1}", + "customreactions_crca_disabled": "תגובה מותאמת בעלת מספר זהות {0} לא תופעל אלא אם מילת ההפעלה נמצאת בתחילת המשפט.", + "customreactions_crca_enabled": "תגובה מותאמת בעלת מספר הזהות {0} עכשיו תופעל אם מילת ההפעלה תמצא בכל מקום במשפט.", + "xp_server_level": "רמת השרת", + "xp_level": "רמה", + "xp_club": "מועדון", + "xp_xp": "ניסיון.", + "xp_excluded": "{0} הוצא ממערכת XP בשרת זה.", + "xp_not_excluded": "{0} כבר לא חלק שלא נכלל במערכת XP בשרת זה.", + "xp_exclusion_list": "רשימה אקסקלוסיבית.", + "xp_server_is_excluded": "השרת הזה נכלל.", + "xp_server_is_not_excluded": "השרת הזה אינו נכלל.", + "xp_excluded_roles": "תפקידים לא נכללים", + "xp_excluded_channels": "ערוצים לא נכללים", + "xp_level_up_channel": "כל הכבוד {0}, אתה הגעת לרמה (1)!", + "xp_level_up_dm": "כל הכבוד {0}, אתה הגעת לרמה {1} בשרת {2}! ", + "xp_level_up_global": "כל הכבוד {0}, אתה הגעת לרמה עולמית {1}!", + "xp_role_reward_cleared": "רמה {0} לא תביא תפקיד יותר.", + "xp_role_reward_added": "משתמשים שמגיעים לרמה {0} יקבלו תפקיד {1}.", + "xp_role_rewards": "פרסי תפקידים", + "xp_level_x": "רמה {0}", + "xp_no_role_rewards": "אין פרסי תפקידים בעמוד זה", + "xp_server_leaderboard": "לוח מובילי נקודות ניסיון בשרת.", + "xp_global_leaderboard": "לוח מובילי נקודות ניסיון בעולם.", + "xp_modified": "נקודות ניסיון בשרת זה שונו למשתמש {0} ב {1)", + "xp_club_create_error": "לא הצליח ליצור מועדון. תבדוקו שאתם רמה 5 ולא חבר במועדון כבר.", + "xp_club_created": "מועדון {0} נוצר בהצלחה", + "xp_club_not_exists": "מועדון זה אינו קיים", + "xp_club_applied": "אתה הגשת בקשה לחברות במועדון {0}.", + "xp_club_apply_error": "שגיאה בהגשת מועמדות. אתה כבר חבר במועדון, או שאתה לא עונה על הדרישה ברמה המינימלית, או שנחסמת מהצטרפות למועדון זה.", + "xp_club_accepted": "אושר משתמש {0} למועדון", + "xp_club_accept_error": "משתמש אינו נמצא", + "xp_club_left": "עזבת/ה את המועדון", + "xp_club_not_in_club": "אתה לא חבר מועדון, או שאתה מנסה לעזור את המועדון שנמצא בבעלותך.", + "xp_club_user_kick": "משתמש {0} הועף מ {1} מועדון", + "xp_club_user_kick_fail": "שגיעה בהעזבה. אתה לא בעלים של המועדון, או שמשתמש ההוא אינו נמצא במועדון שלך.", + "xp_club_user_banned": "משתמש {0} נחסם ממועדון {1}.", + "xp_club_user_ban_fail": "החסימה נכשלה. אתה לא בעלים של המועדון, או שהמתשמש לא במועדון שלך או הגיש מועמדות אליו.", + "xp_club_user_unbanned": "חסימה של משתמש {0} ממועדון {1} הוסר.", + "xp_club_user_unban_fail": "ביטול החסימה נכשל.", + "xp_club_level_req_changed": "רמה דרושה בשביל כניסה למועדון שונתה ל {0}", + "xp_club_level_req_change_error": "שינוי דרישת הרמה נכשלה.", + "xp_club_disbanded": "מועדון {0} פורק", + "xp_club_disband_error": "שגיאה. אתה לא חבר במועדוןת או שאתה לא הבעלים של המועדון שלך.", + "xp_club_icon_error": "כתובת אתר לא חוקית או שאתה לא הבעלים של המועדון.", + "xp_club_icon_set": "סמל מועדון חדש מוכן", + "xp_club_bans_for": "איסורים ל {0} מועדון", + "xp_club_apps_for": "מועמדים ל {0} מועדון", + "xp_club_leaderboard": "לוח תוצאות של המועדון - דף {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.hu-HU.json b/src/NadekoBot/_strings/ResponseStrings.hu-HU.json new file mode 100644 index 00000000..8352214f --- /dev/null +++ b/src/NadekoBot/_strings/ResponseStrings.hu-HU.json @@ -0,0 +1,872 @@ +{ + "customreactions_all_stats_cleared": "Reakcióstatisztikák nullázva.", + "customreactions_deleted": "Egyedi reakció törölve.", + "customreactions_insuff_perms": "Alkalmatlan engedély. A bot birtoklása szükséges az egyedi globális reakciókhoz, és adminisztrátori jogosultság a szerver egyedi reakcióihoz.", + "customreactions_list_all": "Minden egyedi reakció listája.", + "customreactions_name": "Egyedi reakciók", + "customreactions_new_cust_react": "Új egyedi reakció.", + "customreactions_no_found": "Nem található egyedi reakció.", + "customreactions_no_found_id": "Nem található egyedi reakció ilyen azonosítóval.", + "customreactions_response": "Válasz", + "customreactions_stats": "Egyedi reakciók statisztikája", + "customreactions_stats_cleared": "Statisztikák törlése a(z) {0} egyedi reakcióhoz.", + "customreactions_stats_not_found": "Nincs talált statisztika ilyen feltétellel, nem történt változtatás.", + "customreactions_trigger": "Ravasz", + "nsfw_autohentai_stopped": "Autohentai megállítva.", + "nsfw_not_found": "Nincs találat.", + "pokemon_already_fainted": "{0} már elájult.", + "pokemon_already_full": "{0} már teljes életerővel rendelkezik.", + "pokemon_already_that_type": "A típusod már {0}", + "pokemon_attack": "{0}{1} használtál {2}{3}-on {4} sebzésért.", + "pokemon_cant_attack_again": "Nem támadhatsz újra visszavágás nélkül.", + "pokemon_cant_attack_yourself": "Nem tudod magadat támadni.", + "pokemon_fainted": "{0} elájult.", + "pokemon_healed": "{0} gyógyítva egy {1}-gal.", + "pokemon_hp_remaining": "{0}-nak {1} élete maradt.", + "pokemon_invalid_move": "Nem használhatod {0}-t. Írj '{1}ml'-t, hogy lásd a használható lépések listáját.", + "pokemon_moves": "{0} típus lépéseinek listája", + "pokemon_not_effective": "Nem effektív.", + "pokemon_no_currency": "Nincs elég {0}", + "pokemon_revive_other": "Felélesztetted {0}-t egy {1}-el.", + "pokemon_revive_yourself": "Felélesztetted magad egy {0}-val", + "pokemon_settype_success": "A típusod {0} lett egy {1}-ért", + "pokemon_somewhat_effective": "Kicsit effektív.", + "pokemon_super_effective": "Nagyon effektív.", + "pokemon_too_many_moves": "Túl sok lépést használtál egymást után, nem léphetsz.", + "pokemon_type_of_user": "{0} típusa {1}", + "pokemon_user_not_found": "A felhasználó nem található.", + "pokemon_you_fainted": "Elájultál, ezért nem tudsz lépni.", + "administration_aar_disabled": "**Automatikus rang kiosztás** felhasználó csatlakozásakor **letiltva**.", + "administration_aar_enabled": "**Automatikus rang kiosztás** felhasználó csatlakozásakor **engedélyezve**", + "administration_attachments": "Melléklet", + "administration_avatar_changed": "Avatár megváltoztatva.", + "administration_bandm": "Ki lettél tiltva a {0} szerverről.\nOk: {1}", + "administration_banned_pl": "kitiltva", + "administration_banned_user": "Felhasználó kitiltva", + "administration_bot_name": "Bot neve megváltoztatva {0}-ra", + "administration_bot_status": "Bot státusza megváltoztatva {0}-ra", + "administration_byedel_off": "Elköszönő üzenet törlése letiltva.", + "administration_byedel_on": "Elköszönő üzenet {0} másodperc múlva törlődik.", + "administration_byemsg_cur": "Jelenlegi elköszönő üzenet: {0}", + "administration_byemsg_enable": "Elköszönő üzenetek engedélyezése {0} beírásával", + "administration_byemsg_new": "Új elköszönő üzenet beállítva.", + "administration_bye_off": "Elköszönő üzenetek letiltva.", + "administration_bye_on": "Elköszönő üzenetek engedélyezése ezen a csatornán.", + "administration_ch_name_change": "Csatorna neve megváltoztatva", + "administration_ch_old_name": "Régi név", + "administration_ch_topic_change": "Csatorna témája megváltoztatva.", + "administration_cleaned_up": "Feltakarítva.", + "administration_content": "Tartalom", + "administration_cr": "Sikeresen elkészült {0} rang.", + "administration_createtextchan": "Elkészült {0} chat szoba.", + "administration_createvoich": "Elkészült beszéd szoba {0}.", + "administration_deafen": "Némítás sikeres.", + "administration_deleted_server": "Törölt szerver {0}", + "administration_delmsg_off": "Sikeresen végrehajtott parancs automatikus törlése megállítva.", + "administration_delmsg_on": "Sikeresen végrehajtott parancsok automatikus törlése.", + "administration_deltextchan": "{0} chat szoba törölve.\n", + "administration_delvoich": "Beszéd szoba {0} törölve.", + "administration_dm_from": "Privát üzenet {0} felhasználótól.", + "administration_donadd": "Adományozó sikeresen hozzáadva. Teljes adományozott összeg a felhasználótól: {0} 👑", + "administration_donators": "Köszönet az alábbi embereknek, hogy ez a projekt létre jöhetett!", + "administration_fwall_start": "Továbbítani fogom a privát üzeneteket minden tulajdonosnak.", + "administration_fwall_stop": "Továbbítani fogom a privát üzeneteket az eredeti tulajdonosnak.", + "administration_fwdm_start": "Továbbítani fogom a privát üzeneteket.", + "administration_fwdm_stop": "Nem fogom továbbítani a privát üzeneteket.", + "administration_greetdel_off": "Az üdvözlő üzenetek automatikus törlése letiltva.", + "administration_greetdel_on": "Üdvözlő üzenetek törlődnek {0} másodperc múlva.", + "administration_greetdmmsg_cur": "Jelenlegi privát üdvözlő üzenet: {0}", + "administration_greetdmmsg_enable": "Privát üdvözlő üzenet engedélyezése {0} beírásával.", + "administration_greetdmmsg_new": "Új privát üdvözlő üzenet beállítva.", + "administration_greetdm_off": "Privát üdvözlő bejelentés kikapcsolva.", + "administration_greetdm_on": "Privát üdvözlő bejelentések bekapcsolva.", + "administration_greetmsg_cur": "Jelenlegi üdvözlő üzenet: {0}", + "administration_greetmsg_enable": "Üdvözlő üzenetek beállítása {0} beírásával.", + "administration_greetmsg_new": "Új üdvözlő üzenet beállítva.", + "administration_greet_off": "Üdvözlő bejelentések kikapcsolva.", + "administration_greet_on": "Üdvözlő bejelentések bekapcsolva ezen a csatornán.", + "administration_hierarchy": "Ezt a parancsot nem használhatod felhasználókon, akik a tiédnél nagyobb vagy azonos szereppel rendelkeznek a hierarchiában.", + "administration_images_loaded": "Képek betöltve {0} másodperc múlva!", + "administration_invalid_format": "Nem megfelelő beviteli formátum.", + "administration_invalid_params": "Nem megfelelő paraméterek.", + "administration_joined": "{0} csatlakozott {1} szerverhez.", + "administration_kickdm": "Ki lettél rúgva {0} szerverről.\nOk: {1}", + "administration_kicked_user": "Felhasználó kirúgva", + "administration_lang_list": "Nyelvek listája", + "administration_lang_set": "A bot nyelve mostantól {0} - {1}", + "administration_lang_set_bot": "A bot alapértelmezett nyelve mostantól {0} - {1}", + "administration_lang_set_bot_show": "A bot {0} - {1} nyelvre van állítva", + "administration_lang_set_fail": "Nem sikerült a nyelv beállítása. Ellenőrizd a parancs leírását segítségért.", + "administration_lang_set_show": "A szerver {0} - {1} nyelvre van állítva", + "administration_left": "{0} elhagyta {1} szobát", + "administration_left_server": "{0} szerver elhagyva", + "administration_log": "{0} esemény naplózása ebben a szobában", + "administration_log_all": "Minden esemény naplózása ebben a szobában", + "administration_log_disabled": "Naplózás kikapcsolva.", + "administration_log_events": "Használható naplózási beállítások:", + "administration_log_ignore": "Naplózás figyelmen kívül hagyva {0} szobára", + "administration_log_not_ignore": "Naplózás engedélyezve {0} szobára", + "administration_log_stop": "Naplózás megállítva {0} eseményre", + "administration_menrole": "{0} idézte a következő rangokkal rendelkező embereket", + "administration_message_from_bo": "Üzenet {0} `[Bot Owner]`-tól/-től:", + "administration_message_sent": "Üzenet elküldve.", + "administration_moved": "{0} átváltott {1} szobából {2} szobába", + "administration_msg_del": "Üzenet törölve #{0} szobában", + "administration_msg_update": "Üzenet szerkesztve #{0} szobában", + "administration_muted_pl": "Némítva", + "administration_muted_sn": "Némítva", + "administration_mute_error": "Valószínűleg nem rendelkezem az ehhez szükséges jogokkal.", + "administration_mute_role_set": "Új némítási rang került beállításra.", + "administration_need_admin": "Ehhez **adminisztrátori** jogosultságokra van szükségem.", + "administration_new_msg": "Új üzenet", + "administration_new_nick": "Új becenév", + "administration_new_topic": "Új téma", + "administration_nick_change": "Becenév megváltoztatva", + "administration_no_server": "A szerver nem található", + "administration_no_shard_id": "Nem található shard ezzel az azonosítóval.", + "administration_old_msg": "Előző üzenet", + "administration_old_nick": "Előző becenév", + "administration_old_topic": "Előző téma", + "administration_perms": "Hiba. Valószínűleg nem rendelkezem a szükséges jogokkal.", + "administration_prot_active": "Aktív védelmek", + "administration_prot_disable": "{0} **leállítva** ezen a szerveren.", + "administration_prot_enable": "{0} engedélyezve", + "administration_prot_error": "Hiba. Ehhez rangkezelő jogokra van szükségem.", + "administration_prot_none": "Nincs aktív hozzáadott védelem.", + "administration_raid_cnt": "A felhasználók számának {0} és {1} fő között kell lennie.", + "administration_raid_stats": "Ha {0} vagy több ember csatlakozik {1} másodpercen belül, {2}-t kapnak.", + "administration_raid_time": "Az időtartamnak {0} és {1} másodperc között kell lennie.", + "administration_rar": "Minden rang sikeresen eltávolítva {0} felhasználóról", + "administration_rar_err": "Nem sikerült a rangok törlése. Nem rendelkezem a szükséges jogokkal.", + "administration_rc": "{0} rang színe megváltozott.", + "administration_rc_not_exist": "Nincs ilyen rang.", + "administration_rc_params": "A paraméterek helytelenül lettek megadva.", + "administration_rc_perms": "Helytelen színkód vagy nincs jogosultságod ehhez.", + "administration_remrole": "{0} rang sikeresen eltávolítva {1} felhasználóról", + "administration_remrole_err": "Nem sikerült a rang eltávolítása. Nem rendelkezem a szükséges jogokkal.", + "administration_renrole": "Rang átnevezve", + "administration_renrole_err": "Nem sikerült a rang átnevezése. Nem rendelkezem a szükséges jogokkal.", + "administration_renrole_perms": "Nem szerkeszthetsz a sajátodnál magasabb rangot.", + "administration_reprm": "A következő üzenet eltávoltíva: {0}", + "administration_role_added": "{0} rang hozzá lett adva a listához.", + "administration_role_clean": "{0} nem található. Üzenetek eltakartíva.", + "administration_role_in_list": "{0} rang már rajta van a listán.", + "administration_ropl_added": "Hozzáadva.", + "administration_ropl_disabled": "Körstátusz mód leállítva", + "administration_ropl_enabled": "Körstátusz mód engedélyezve", + "administration_ropl_list": "Az eddig megadott státuszok:", + "administration_ropl_not_set": "Még nincs megadott státusz.", + "administration_self_assign_already": "Már van {0} rangod.", + "administration_self_assign_already_excl": "Már van {0} ekszkluzívan választható rangod.", + "administration_self_assign_excl": "Az egyénileg adható rangok mostantól ekszkluzívak!", + "administration_self_assign_list": "Összesen {0} egyénileg választható rang van", + "administration_self_assign_not": "Ez a rang nem egyénileg választható.", + "administration_self_assign_not_have": "Nincs {0} rangod.", + "administration_self_assign_no_excl": "Az egyénileg adható rangok mostantól nem ekszkluzívak!", + "administration_self_assign_perms": "Nem tudom neked adni a rangot. Nem adhatok rangot tulajdonosnak vagy a sajátomnál magasabb rendű rangot.", + "administration_self_assign_rem": "{0} eltávolítva az egyénileg választható rangok listájáról.", + "administration_self_assign_remove": "Most már nincs {0} rangod.", + "administration_self_assign_success": "{0} rang hozzáadva", + "administration_setrole": "{0} rang sikeresen hozzáadva {1} felhasználóhoz", + "administration_setrole_err": "Nem sikerült a rang hozzáadása. Nem rendelkezem a szükséges jogokkal.", + "administration_set_avatar": "Kép beállítva!", + "administration_set_channel_name": "Új szobanév került beállításra.", + "administration_set_game": "Játék beállítva!", + "administration_set_stream": "Stream beállítva!", + "administration_set_topic": "Új téma került beállításra.", + "administration_shard_reconnected": "Shard {0} visszacsatlakozott.", + "administration_shard_reconnecting": "Shard {0} visszacsatlakozása folyamatban.", + "administration_shutting_down": "Leállítás folyamatban", + "administration_slowmode_desc": "Csak {0} üzenet küldése lehetséges minden {1} másodpercben.", + "administration_slowmode_disabled": "Lassú mód kikapcsolva", + "administration_slowmode_init": "Lassú mód engedélyezve", + "administration_soft_banned_pl": "enyhén-kitiltva", + "administration_spam_ignore": "{0} nem vonatkozik erre a szobára.", + "administration_spam_not_ignore": "{0} figyelembe veszi ezt a szobát is.", + "administration_spam_stats": "Ha valaki {0} alkalommal küldi el egymás után ugyanazt az üzenetet, {1}-t kapnak. __Kivételt képező szobák__: {2}", + "administration_text_chan_created": "Chat szoba létrehozva", + "administration_text_chan_destroyed": "Chat szoba törölve", + "administration_undeafen": "Némítás sikeresen feloldva.", + "administration_unmuted_sn": "Némítás feloldva", + "administration_username": "Felhasználónév", + "administration_username_changed": "Felhasználónév megváltozott", + "administration_users": "Felhasználók", + "administration_user_banned": "Felhasználó kitiltva", + "administration_user_chat_mute": "**tiltotta** {0} felhasználót az írásban való csevegéstől.", + "administration_user_chat_unmute": "**engedélyezte** {0} számára az írásban való csevegést.", + "administration_user_joined": "Felhasználó csatlakozott", + "administration_user_left": "Felhasználó kilépett", + "administration_user_muted": "{0} **megfosztva** a szöveges és a beszélgető szobákban való kommunikációtól.", + "administration_user_role_add": "Felhasználó szerepe hozzáadva", + "administration_user_role_rem": "Felhasználó szerepe eltávolítva", + "administration_user_status_change": "{0} {1}", + "administration_user_unmuted": "Szöveges és beszélgető szobákban való kommunikáció engedélyezve {0} számára.", + "administration_user_vjoined": "{0} csatlakozott a(z) {1} beszélgető szobához.", + "administration_user_vleft": "{0} elhagyta a(z) {1} beszélgető szobát.", + "administration_user_vmoved": "{0} átment {1}-ból/-ből a(z) {2} beszélgető szobába.", + "administration_user_voice_mute": "**tiltotta** {0} felhasználót a szóban való csevegéstől.", + "administration_user_voice_unmute": "**engedélyezte** {0} számára a szóban való csevegést.", + "administration_voice_chan_created": "Beszélgetőszoba létrehozva", + "administration_voice_chan_destroyed": "Beszélgetőszoba törölve", + "administration_vt_disabled": "Beszélgető + szöveges funkció letiltva.", + "administration_vt_enabled": "Beszélgető + szöveges funkció engedélyezve.", + "administration_vt_exit": "Nincs **manage roles** és/vagy **manage channels** engedélyem, ezért nem tudom futtatni a `voice+text`-t a {0} szerveren.", + "administration_vt_no_admin": "Jelenleg engedélyezed/letiltod ezt a funkciót, miközben **nem rendelkezem ADMINISZTRÁTORI engedélyekkel**. Ez okozhat némi problémát, és lehet, hogy később magadnak kell majd törölnöd a nem használt szöveges szobákat.", + "administration_vt_perms": "Minimum **rangkezelő** és **szobakezelő** jogokra van szükségem ennek a funkciónak az engedélyezéséhez (admin jog preferálva).", + "administration_xmuted_text": "{0} egy szöveges szobából", + "administration_xmuted_text_and_voice": "{0} egy szöveges és beszélgető szobából", + "administration_xmuted_voice": "{0} egy beszélgető szobából", + "administration_sbdm": "Ki lettél enyhén-tiltva {0} szerverről.\nOka: {1}", + "administration_user_unbanned": "Felhasználó tiltása feloldva", + "administration_migration_done": "Elkészültem az adatok migrációjával!", + "administration_presence_updates": "Helyzetjelentés", + "administration_sb_user": "Felhasználó enyhén-kitiltva", + "gambling_awarded": "{0}-gal jutalmazta {1} felhasználót.", + "gambling_better_luck": "Legközelebb biztos sikerül ^_^", + "gambling_br_win": "Gratulálok! {0} a nyereményed {1} feletti dobásért.", + "gambling_deck_reshuffled": "Pakli megkeverve.", + "gambling_flipped": "érméje {0} lett.", + "gambling_flip_guess": "Eltaláltad! {0} a nyereményed.", + "gambling_flip_invalid": "Helytelen szám. 1 és {0} közötti számú érmét tudsz feldobni.", + "gambling_flowerreaction_desc": "Nyomj egy {0} emojit erre az üzenetre, hogy {1}-ot kapj", + "gambling_flowerreaction_footer": "Az event legfeljebb {0} órán át aktív.", + "gambling_flowerreaction_title": "Virágevent elindítva!", + "gambling_gifted": "{0}-ot adott {1} felhasználónak.", + "gambling_has": "{0} felhasználónak {1}-a van.", + "gambling_heads": "Fej", + "gambling_leaderboard": "Ranglista", + "gambling_mass_award": "{0} ajándékozva {2} szereppel rendelkező {1} felhasználónak.", + "gambling_max_bet_limit": "Nem tehetsz fel többet, mint {0}", + "gambling_min_bet_limit": "Nem tehetsz fel kevesebbet, mint {0}", + "gambling_not_enough": "Nincs elég {0}-d", + "gambling_no_more_cards": "Nincs több kártya a pakliban.", + "gambling_raffled_user": "Kisorsolt felhasználó", + "gambling_roll": "{0}-t pörgettél.", + "gambling_slot_bet": "Tét", + "gambling_slot_jackpot": "AZTA!!! Gratulálunk!!!", + "gambling_slot_single": "Egyetlen {0}, x{1}", + "gambling_slot_three": "Ejha! Micsoda szerencse! Három egyforma! x{0}", + "gambling_slot_two": "Szép munka! Két {0} - x{1} szorzó", + "gambling_slot_won": "Nyert", + "gambling_sneakygamestatus_desc": "A felhasználóknak a titkos kódot kell beírniuk, hogy {0}-t kapjanak. {1} másodpercig tart. Ne mondd el senkinek! Sss!", + "gambling_sneakygamestatus_end": "TrükkösJáték esemény véget ért. {0} felhasználók megkapták a jutalmukat.", + "gambling_sneakygamestatus_title": "TürrkösJátékStátusz esemény elkezdődött", + "gambling_tails": "Írás", + "gambling_take": "sikeresen elvette {0} {1}-tól/-től", + "gambling_take_fail": "képtelen volt elvenni {0}-t {1}-tól/-től, mert a felhasználónak nincs elég {2}-je!", + "help_back_to_toc": "Vissza a tartal", + "help_bot_owner_only": "csak a bot tulajdonos számára engedélyezett", + "help_channel_permission": "Ehhez {0} szobajog szükséges.", + "help_cmdlist_donate": "Támogathatod a projektet patreonon: <{0}> vagy paypalon: <{1}>", + "help_cmd_and_alias": "Parancsok és helyettesítőszavak", + "help_commandlist_regen": "Parancslista újragenerálva.", + "help_commands_instr": "`{0}h parancsnév` részletes leírást ad az adott parancsról. Pl.: `{0}h {0}8ball`", + "help_command_not_found": "Nem találtam ilyen parancsot. Kérlek, ellenőrizd, hogy biztos jót adtál meg.", + "help_desc": "Leírás", + "help_donate": "A NadekoBot projektet támogathatod:\nPatreonon <{0}> vagy\nPaypallal <{1}>\nNe felejtsd el megadni a discord neved vagy az azonosítód az üzenetben.\n\n**Köszi** ♥️", + "help_guide": "**Parancsok listája**: <{0}>\n**Saját bot működtetéséhez segítséget itt találsz**: <{1}>", + "help_list_of_commands": "Parancsok listája", + "help_list_of_modules": "Modulok listája", + "help_modules_footer": "`{0}cmds modulnév` listázza az adott modul parancsait. Pl.: `{0}cmds games`", + "help_module_not_found": "Nincs ilyen modul.", + "help_server_permission": "Ehhez {0} szerverjog szükséges.", + "help_table_of_contents": "Tartalomjegyzék", + "help_usage": "Használat", + "nsfw_autohentai_started": "Autohentai elindítva. Minden {0} másodpercben poszt a következő címkék egyikével:\n{1}", + "nsfw_tag": "Címke", + "gambling_animal_race": "Állatverseny", + "gambling_animal_race_failed": "Nem sikerült elindítani, mivel nem volt elég résztvevő.", + "gambling_animal_race_full": "A verseny megtelt! Azonnali kezdés.", + "gambling_animal_race_join": "{0} csatlakozott {1}-ként", + "gambling_animal_race_join_bet": "{0} csatlakozott {1}-ként és feltett {2}-t!", + "gambling_animal_race_join_instr": "Írj \"{0}jr\"-t, hogy csatlakozz a versenyhez.", + "gambling_animal_race_starting": "Kezdés 20 másodpercen belül vagy amikor megtelik a szoba.", + "gambling_animal_race_starting_with_x": "Kezdés {0} résztvevővel.", + "gambling_animal_race_won": "{0} {1}-ként Megnyerte a versenyt!", + "gambling_animal_race_won_money": "{0} {1}-ként Megnyerte a versenyt és {2}-t!", + "gambling_dice_invalid_number": "Érvénytelen szám. {0}-{1} kockával dobhatsz egyszerre.", + "gambling_dice_rolled": "dobása {0}", + "gambling_dice_rolled_num": "A dobott érték: {0}", + "gambling_race_failed_starting": "Nem sikerült a verseny elindítása. Valószínűleg már fut egy másik.", + "gambling_race_not_exist": "Nem fut verseny a szerveren", + "gambling_second_larger_than_first": "A második számnak nagyobbnak kell lennie, mint az első számnak.", + "gambling_changes_of_heart": "Szív változása", + "gambling_claimed_by": "Birtokolja", + "gambling_divorces": "Válások", + "gambling_likes": "Vonzódás", + "gambling_price": "Ár", + "gambling_waifus_none": "Még senki sem birtokol waifut.", + "gambling_waifus_top_waifus": "Legjobb waifuk", + "gambling_waifu_affinity_already": "az affinitásod már megadtad ehhez a waifuhoz vagy próbálod eltávolítani az affinitásodat, miközben nincs beállítva senki, akit kedvelnél.", + "gambling_waifu_affinity_changed": "mostantól {0} helyett {1} felhasználót kedveli.\n\n*Ez erkölcsileg megkérdőjelezhető.*🤔", + "gambling_waifu_affinity_cooldown": "{0} órát és {1} percet kell várnod, mielőtt ismét változtathatsz az affinitásodon.", + "gambling_waifu_affinity_reset": "Affinitás alaphelyzetbe állítva. Jelenleg nincs kedvelt személyed.", + "gambling_waifu_affinity_set": "szeretne {0} waifuja lenni. Óóó <3", + "gambling_waifu_claimed": "megszerezte {0}-t waifujának {1}-ért!", + "gambling_waifu_divorced_like": "Elváltál egy waifutól, aki szeret. Te szívtelen szörnyeteg.\n{0} kapott {1}-t kárpótlásként.", + "gambling_waifu_egomaniac": "nem tudsz affinitást állítani magadnak, te egomániás.", + "gambling_waifu_fulfilled": " 🎉 Egymásnak lettek teremtve! 🎉\n{0} új ára {1}!", + "gambling_waifu_isnt_cheap": "Ennél azért bőkezűbb is lehetnél. Legalább {0} egy waifu még akkor is, ha nem ennyi van kiírva.", + "gambling_waifu_not_enough": "Muszáj {0}-t vagy többet fizetned, hogy megszerezd azt a waifut!", + "gambling_waifu_not_yours": "Az a waifu nem a tiéd.", + "gambling_waifu_not_yourself": "Nem lehetsz a saját magad waifuja.", + "gambling_waifu_recent_divorce": "Nem rég váltál el valakitől. ", + "gambling_nobody": "Senki", + "gambling_waifu_divorced_notlike": "Elváltál egy waifutól, aki nem vonzódik hozzád. Visszakaptál: {0}", + "games_8ball": "8ball", + "games_acrophobia": "Akrofóbia", + "games_acro_ended_no_sub": "A játéknak vége, nem érkezett megoldás.", + "games_acro_no_votes_cast": "Nem érkezett be szavazat. A játék nyertes nélkül ért véget.", + "games_acro_nym_was": "A rövidítés: {0}", + "games_acro_running": "Már fut egy akrofóbia játék a szobában.", + "games_acro_started": "A játék elindult. Írj egy mondatot, melyre illeszkedik a következő rövidítés: {0}", + "games_acro_started_footer": "{0} másodperced van megoldás beküldésére.", + "games_acro_submit": "{0} beküldte megoldását (összesen {1}).", + "games_acro_vote": "Szavazz a szerinted legjobb mondatra a megoldás számának elküldésével.", + "games_acro_vote_cast": "{0} szavazott!", + "games_acro_winner": "A győztes {0} {1} ponttal.", + "games_acro_winner_only": "A győztes {0}, mert egyedül ő küldött be megoldást!", + "games_question": "Kérdés", + "games_rps_draw": "Döntetlen! Mindkettőtök választása {0} volt.", + "games_rps_win": "{0} nyert! {1} erősebb mint {2}", + "games_submissions_closed": "Beküldés lezárva", + "gambling_animal_race_already_started": "Az Állatverseny már fut.", + "gambling_total_average": "Teljes: {0} Átlag: {1}", + "games_category": "Kategória", + "games_cleverbot_disabled": "Cleverbot funkció kikapcsolva a szerveren.", + "games_cleverbot_enabled": "Cleverbot funkció engedélyezve a szerveren.", + "games_curgen_disabled": "A pénzgenerálás le lett tiltva ebben a szobában.", + "games_curgen_enabled": "A pénzgenerálás engedélyezve lett ebben a szobában.", + "games_curgen_pl": "{0} {1} jelent meg!", + "games_curgen_sn": "Egy {0} jelent meg!", + "games_failed_loading_question": "Nem sikerült a kérdés betöltése.", + "games_game_started": "Játék elindítva", + "games_hangman_game_started": "Akasztófa elindítva", + "games_hangman_running": "Akasztófa játék már fut ezen a szobán.", + "games_hangman_start_errored": "Hibába ütköztem az akasztófa indításakor.", + "games_hangman_types": "\"{0}hangman\" parancs lehetséges paraméterei:", + "games_leaderboard": "Ranglista", + "games_not_enough": "Nincs elég {0}-d", + "games_no_results": "Nincsenek eredmények", + "games_picked": "{0}-t választott", + "games_planted": "{0} ültetett {1}-ot", + "games_trivia_already_running": "Már fut tudáspróba a szerveren.", + "games_trivia_game": "Tudáspróba", + "games_trivia_guess": "{0} kitalálta! A válasz {1} volt.", + "games_trivia_none": "Nem fut tudáspróba a szerveren.", + "games_trivia_points": "{0}-nak/-nek {1} pontja van", + "games_trivia_stopping": "Befejezés ezután a kérdés után.", + "games_trivia_times_up": "Lejárt az idő! A helyes válasz {0} volt.", + "games_trivia_win": "{0} kitalálta és MEGNYERTE a játékot! A válasz {0} volt.", + "games_ttt_against_yourself": "Nem játszhatsz saját magad ellen.", + "games_ttt_already_running": "Már játszanak a szobában amőbát.", + "games_ttt_a_draw": "Döntetlen!", + "games_ttt_created": "Tic-Tac-Toe játékot készített", + "games_ttt_has_won": "{0} Nyert!", + "games_ttt_matched_three": "Három sikeresen összekötve", + "games_ttt_no_moves": "Nem maradt több lépésed!", + "games_ttt_time_expired": "Lejárt az idő!", + "games_ttt_users_move": "{0} lépése", + "games_vs": "{0} kontra {1}", + "music_attempting_to_queue": "Kísérlet {0} szám a listára tételére.", + "music_autoplay_disabled": "Automatikus lejátszás letiltva", + "music_autoplay_enabled": "Automatikus lejátszás engedélyezve", + "music_defvol_set": "Alapértelmezett hangerő {0}%-ra állítva.", + "music_dir_queue_complete": "A könyvtár végére értem.", + "music_fairplay": "Fair lejátszás", + "music_finished_song": "Dal befejezve", + "music_fp_disabled": "Fair lejátszás leállítva.", + "music_fp_enabled": "Fair lejátszás elindítva.", + "music_from_position": "Pozíciótól", + "music_id": "Azonosító", + "music_invalid_input": "Érvénytelen bemenet.", + "music_max_playtime_none": "Maximális játékidő most korlátlan.", + "music_max_playtime_set": "Maximális játékidő beállítva {0} másodpercre.", + "music_max_queue_unlimited": "Maximális lejátszási sor kapacitás korlátlanra állítva.", + "music_max_queue_x": "Maximális lejátszási sor kapacitás beállítva {0} számra.", + "music_must_be_in_voice": "Beszélgető szobában kell lenned ezen a szerveren.", + "music_name": "Cím", + "music_now_playing": "Jelenleg játszott", + "music_no_player": "Nincs aktív zenelejátszó.", + "music_no_search_results": "Nincs keresési találat.", + "music_paused": "Zenevisszajátszás szüneteltetve.", + "music_player_queue": "Lejátszási lista - {0}./{1} oldal", + "music_playing_song": "#{0} zene lejátszása", + "music_playlists": "`#{0}` - **{1}**, létrehozta: *{2}* ({3} szám)", + "music_playlists_page": "{0} . oldal a mentett lejátszási listákból", + "music_playlist_deleted": "Lejátszási lista törölve.", + "music_playlist_delete_fail": "Lejátszási lista törlése meghiúsult. Vagy nem létezik, vagy nem te vagy a szerzője.", + "music_playlist_id_not_found": "Ezzel az azonosítóval nem létezik lejátszási lista.", + "music_playlist_queue_complete": "Lejátszási lista kész.", + "music_playlist_saved": "Lejátszási lista mentve", + "music_play_limit": "{0} másodperces limit", + "music_queue": "Lista", + "music_queued_song": "Következő szám", + "music_queue_cleared": "Lejátszási sor törölve.", + "music_queue_full": "A lista tele van {0}/{0}-nál/-nél.", + "music_removed_song": "Dal törölve", + "music_repeating_cur_song": "Jelenlegi dal ismétlése", + "music_repeating_playlist": "Lejátszási lista ismétlése", + "music_repeating_track": "Track ismétlése", + "music_repeating_track_stopped": "A jelenlegi szám ismétlése megállítva.", + "music_resumed": "Zenelejátszás folytatva.", + "music_rpl_disabled": "Lejátszási lista ismétlése kikapcsolva.", + "music_rpl_enabled": "Lejátszási lista ismétlése bekapcsolva.", + "music_set_music_channel": "Mostantól ebbe a szobába írom a lejátszva lévő, befejezett, szüneteltetett és eltávolított számokat.", + "music_skipped_to": "Ugorva `{0}:{1}`-hoz/-hez/-höz", + "music_song_moved": "Zene áthelyezve", + "music_time_format": "{0} óra {1} perc {2} másodperc", + "music_to_position": "Pozicióhoz", + "music_unlimited": "korlátlan", + "music_volume_input_invalid": "A hangerőnek 0 és 100 között kell lennie.", + "music_volume_set": "Hangerő {0}%-ra állítva.", + "permissions_acm_disable": "Az ÖSSZES MODUL használata letiltva a(z) {0} szobán.", + "permissions_acm_enable": "Az ÖSSZES MODUL használata engedélyezve a(z) szobán.", + "permissions_allowed": "Engedélyezve", + "permissions_arm_disable": "Az ÖSSZES MODUL használata letiltva {0} rang számára.", + "permissions_arm_enable": "Az ÖSSZES MODUL használata engedélyezve {0} rang számára.", + "permissions_asm_disable": "Az ÖSSZES MODUL használata letiltva ezen a szerveren.", + "permissions_asm_enable": "Az ÖSSZES MODUL használata engedélyezve ezen a szerveren.", + "permissions_aum_disable": "Az ÖSSZES MODUL használata megtiltva {0} felhasználónak.", + "permissions_aum_enable": "Az ÖSSZES MODUL használata engedélyezve {0} felhasználónak.", + "permissions_blacklisted": "{0} feketelistázva {1} azonosítóval.", + "permissions_cmdcd_add": "A {0} parancs töltési ideje {1} lett.", + "permissions_cmdcd_cleared": "A {0} parancsnak innentől nincs töltési ideje és az eddigiek is törölve lettek.", + "permissions_cmdcd_none": "A parancs töltési ideje nincs beállítva.", + "permissions_command_costs": "Parancs árai", + "permissions_cx_disable": "{0} {1} használata letiltva {2} szobában.", + "permissions_cx_enable": "{0} {1} használata engedélyezve {2} szobában.", + "permissions_denied": "Megtagadva", + "permissions_filter_word_add": "{0} hozzáadva a szűrt szavak listájához.", + "permissions_filter_word_list": "Szűrés alatt álló szavak listája", + "permissions_filter_word_remove": "{0} eltávolítva a szűrt szavak listájából", + "permissions_invalid_second_param_between": "A második paraméter érvénytelen (a számnak {0} és {1} között kell lennie).", + "permissions_invite_filter_channel_off": "A meghívás szűrése le van tiltva ebben a szobában.", + "permissions_invite_filter_channel_on": "Meghívás-szűrés bekapcsolva a csatornán.", + "permissions_invite_filter_server_off": "Meghívás-szűrés kikapcsolva a csatornán.", + "permissions_invite_filter_server_on": "Meghívás-szűrés bekapcsolva a szerveren.", + "permissions_moved_permission": "{0} szabály áthelyezve {1}. helyről {2}. helyre.", + "permissions_not_found": "Nem található szabály {0} sorszámmal.", + "permissions_no_costs": "Nincs érték beállítva.", + "permissions_of_command": "parancs", + "permissions_of_module": "modul", + "permissions_page": "Szabály előzmények ({0}. oldal)", + "permissions_permrole": "A jelenlegi rang, amellyel a szabályok szerkeszthetőek {0}.", + "permissions_permrole_changed": "Az új rang, amellyel a szabályok szerkeszthetőek {0}.", + "permissions_perm_out_of_range": "Nincs ilyen sorszámú engedély.", + "permissions_removed": "engedély törölve #{0} - {1}", + "permissions_rx_disable": "{0}{1} használata megtiltva {2} rangnak.", + "permissions_rx_enable": "{0} {1} használata engedélyezve {2} rangnak.", + "permissions_sec": "mp.", + "permissions_sx_disable": "{0} {1} használata megtiltva a szerveren.", + "permissions_sx_enable": "{0} {1} használata engedélyezve a szerveren.", + "permissions_unblacklisted": "{0} levéve a feketelistáról {1} azonosítóval.", + "permissions_uneditable": "nem szerkeszthető", + "permissions_ux_disable": "{0} {1} használata letiltva {2} felhasználónak.", + "permissions_ux_enable": "{0} {1} használata engedélyezve {2} felhasználónak.", + "permissions_verbose_false": "Mostantól nem küldök hibaüzenetet, ha a parancs vagy modul használata le van tiltva.", + "permissions_verbose_true": "Mostantól mindig küldök hibaüzenetet, ha a parancs vagy modul használata le van tiltva.", + "permissions_word_filter_channel_off": "Szószűrés letiltva ebben a szobában.", + "permissions_word_filter_channel_on": "Szószűrés engedélyezve ebben a szobában.", + "permissions_word_filter_server_off": "Szószűrés letiltva ezen a szerveren.", + "permissions_word_filter_server_on": "Szószűrés engedélyezve ezen a szerveren.", + "searches_abilities": "Képességek", + "searches_anime_no_fav": "Nincs még kedvenc anime", + "searches_atl_ad_started": "Automatikus üzenetfordítás elkezdve ebben a szobában. Felhasználói üzenetek automatikusan ki lesznek törölve.", + "searches_atl_removed": "az automatikus fordítás nyelved el lett távolítva.", + "searches_atl_set": "Az automatikus fordítás nyelved {0}>{1}-ra/-re lett állítva.", + "searches_atl_started": "Üzenetek automatikus fordítása elkezdve ebben a szobában.", + "searches_atl_stopped": "Üzenetek automatikus fordítása befejezve ebben a szobában.", + "searches_bad_input_format": "Rossz bevitel vagy valami hiba történt.", + "searches_card_not_found": "Nem található az a kártya.", + "searches_catfact": "tény", + "searches_chapters": "Fejezetek", + "searches_comic_number": "Képregény #", + "searches_compet_loses": "Kompetitív vereségek", + "searches_compet_played": "Kompetitív lejátszott", + "searches_compet_rank": "Kompetitív rang", + "searches_compet_wins": "Kompetitív győzelmek", + "searches_completed": "Befejezett", + "searches_condition": "Kikötés", + "searches_cost": "Ár", + "searches_date": "Dátum", + "searches_define": "Definíció:", + "searches_dropped": "Dobva", + "searches_episodes": "Epizódok", + "searches_error_occured": "Hiba történt.", + "searches_example": "Példa", + "searches_failed_finding_anime": "Az animu megtalálása sikertelen volt.", + "searches_failed_finding_manga": "A mango megtalálása sikertelen volt.", + "searches_genres": "Műfajok", + "searches_hashtag_error": "Nem sikerült definíciót találni ehhez a címkéhez.", + "searches_height_weight": "Magasság/Súly", + "searches_height_weight_val": "{0}m/{1}kg", + "searches_humidity": "Páratartalom", + "searches_image_search_for": "Képkeresés erre:", + "searches_imdb_fail": "A film megtalálása sikertelen volt.", + "searches_invalid_lang": "Érvénytelen forrás vagy célnyelv.", + "searches_jokes_not_loaded": "Nem sikerült a viccek betöltése.", + "searches_latlong": "Szélesség/Hosszúság", + "searches_level": "Szint", + "searches_list_of_place_tags": "{0}place címkék listája", + "searches_location": "Hely", + "searches_magicitems_not_loaded": "A varázstárgyak nincsenek betöltve.", + "searches_mal_profile": "{0} MAL profilja", + "searches_mashape_api_missing": "A bot tulajdonosa nem adott meg Mashape API kulcsot. Nincs lehetőség a funkció használatára.", + "searches_min_max": "Minimum/Maximum", + "searches_no_channel_found": "Nem található csatorna.", + "searches_no_results": "Nincsenek találatok.", + "searches_on_hold": "Függőben", + "searches_original_url": "Eredeti URL", + "searches_osu_api_key": "Egy osu! API kulcsra van szükség.", + "searches_osu_failed": "Osu! profil lekérdezése sikertelen", + "searches_over_x": "Több mint {0} kép. Random {0} mutatása.", + "searches_ow_user_not_found": "Nem található ilyen felhasználó! Ellenőrizd, hogy helyes régiót és BattleTaget adtál-e meg.", + "searches_plan_to_watch": "Megnézendő", + "searches_platform": "Platform", + "searches_pokemon_ability_none": "Nem található ilyen képesség.", + "searches_pokemon_none": "Nem található ilyen pokemon.", + "searches_profile_link": "Profil link:", + "searches_quality": "Minőség:", + "searches_quick_playtime": "Gyors játékidő", + "searches_quick_wins": "Gyors győzelmek", + "searches_rating": "Értékelés", + "searches_score": "Pontszám:", + "searches_search_for": "Keresés erre:", + "searches_shorten_fail": "Az URL rövidítése sikertelen volt.", + "searches_short_url": "Rövid URL", + "searches_something_went_wrong": "Hiba történt.", + "searches_specify_search_params": "Kérlek pontosítsd a keresési paramétereket.", + "searches_status": "Állapot", + "searches_store_url": "URL tárolása", + "searches_streamer_offline": "{0} közvetítő nem elérhető.", + "searches_streamer_online": "{0} közvetítő elérhető {1} nézővel.", + "searches_streams_following": "{0} közvetítést követsz ezen a szerveren.", + "searches_streams_none": "Nem követsz semmilyen közvetítést ezen a szerveren.", + "searches_stream_no": "Nincs ilyen közvetítés.", + "searches_stream_not_exist": "A stream valószínűleg nem létezik.", + "searches_stream_removed": "törölte {0} streamjét ({1}) az értesítési listából.", + "searches_stream_tracked": "Értesíteni fogom a szobát a státusz változtatásakor.", + "searches_sunrise": "Napfelkelte", + "searches_sunset": "Naplemente", + "searches_temperature": "Hőmérséklet", + "searches_title": "Cím:", + "searches_top_3_fav_anime": "Top 3 kedvenc anime:", + "searches_translation": "Fordítás:", + "searches_types": "Fajták", + "searches_ud_error": "Nem található definíció ehhez a kifejezéshez.", + "searches_url": "Url", + "searches_viewers": "Nézők", + "searches_watching": "Jelenleg nézett", + "searches_wikia_error": "Nem sikerült ilyen kifejezéssel a megadott wikián való keresés.", + "searches_wikia_input_error": "Add meg a célpont wikia nevét és a keresendő kifejezést.", + "searches_wiki_page_not_found": "Az oldal nem található.", + "searches_wind_speed": "Szélsebesség", + "searches_x_most_banned_champs": "A {0} legtiltottabb bajnok", + "searches_yodify_error": "Nem sikerült Yoda-ifikálni a mondatod.", + "utiliity_joined": "Csatlakozott", + "utility_activity_line": "`{0}.` {1} [{2:F2}/mp] - {3} összesen", + "utility_activity_page": "Aktivitás ({0}. oldal)", + "utility_activity_users_total": "Összesen {0} felhasználó.", + "utility_author": "Szerző", + "utility_botid": "Bot azonosító", + "utility_calcops": "{0}calc paranccsal használható műveletek:", + "utility_channelid": "A csatorna {0}-ja/-je {1}", + "utility_channel_topic": "A szoba témája", + "utility_commands_ran": "Parancsok futtatva", + "utility_convert": "{0} {1} egyenlő {2} {3}", + "utility_convertlist": "A váltó által használható mértékegységek", + "utility_convert_not_found": "Nem lehetséges az átváltás {0} és {1} között: nem találhatók ilyen mértékegységek", + "utility_convert_type_error": "Nem lehetséges az átváltás {0} és {1} között: a mértékegységek nem azonos csoportba tartoznak", + "utility_created_at": "Készítve", + "utility_custom_emojis": "Egyedi emojik", + "utility_error": "Hiba", + "utility_features": "Jellemzők", + "utility_id": "Azonosító", + "utility_index_out_of_range": "Helytelen sorszám.", + "utility_inrole_list": "Felhasználók listája {0} szerepben", + "utility_inrole_not_allowed": "Nincs engedélyed használni ezt a parancsot olyan szerepen, amit sok felhasználó használ visszaélések megelőzéséért.", + "utility_invalid_value": "Érvénytelen {0} érték.", + "utility_joined_discord": "Csatlakozott a Discordhoz", + "utility_joined_server": "Csatlakozott a szerverhez", + "utility_listservers": "Azonosító: {0}\nTagok: {1}\nTulajdonos azonosítója: {2}", + "utility_listservers_none": "Az oldalon nem található szerver.", + "utility_list_of_repeaters": "Ismétlők listája", + "utility_members": "Tagok", + "utility_memory": "Memória", + "utility_messages": "Üzenetek", + "utility_message_repeater": "Üzenet-ismétlő", + "utility_name": "Név", + "utility_nickname": "Becenév", + "utility_nobody_playing_game": "Senki sem játssza azt a játékot.", + "utility_no_active_repeaters": "Nincsenek aktív ismétlők.", + "utility_no_roles_on_page": "Nincsenek rangok ezen az oldalon.", + "utility_no_shards_on_page": "Nincsenek shardok az oldalon.", + "utility_no_topic_set": "Nincs téma beállítva.", + "utility_owner": "Tulajdonos", + "utility_owner_ids": "Tulajdonos azonosítók", + "utility_presence": "Jelenlét", + "utility_presence_txt": "{0} Szerver\n{1} Chat Szoba\n{2} Beszélgető Szoba", + "utility_quotes_deleted": "Minden idézet törölve {0} kulcsszóval.", + "utility_quotes_page": "{0}. oldal az idézetekből", + "utility_quotes_page_none": "Nincsenek idézetek az oldalon.", + "utility_quotes_remove_none": "Nincs találat olyan idézetre,amit ", + "utility_quote_added": "Idézet hozzáadva", + "utility_quote_deleted": "#{0} idézet törölve.", + "utility_region": "Terület", + "utility_registered_on": "Regisztrálva", + "utility_remind": "Emlékeztetni fogom {0}-t \"{1}\"-re ", + "utility_remind_invalid_format": "Nem érvényes idő formátum. Ellenőrizd a command listát.", + "utility_remind_template": "Új emlékeztető minta beállítva.", + "utility_repeater": "{0} ismétlése {1} nap {2} óra {3} percenként.", + "utility_repeaters_list": "Ismétlők listája", + "utility_repeaters_none": "Nincs futó ismétlés a szerveren.", + "utility_repeater_stopped": "#{0} megállítva", + "utility_repeat_invoke_none": "Nincs ismétlődő üzenet a szerveren.", + "utility_result": "Eredmény", + "utility_roles": "Rangok", + "utility_roles_all_page": "A szerveren található összes rang ({0}. oldal):", + "utility_roles_page": "{1} rangjai ({0}. oldal):", + "utility_rrc_no_colors": "Egy szín sincs rendes formátumban. Helyes példa: \"#00ff00\".", + "utility_rrc_start": "{0} rang színéne mostantól folyamatosan változik.", + "utility_rrc_stop": "{0} rang színénének változatása megállítva.", + "utility_serverid": "A szerver {0}-ja/-je {1}", + "utility_server_info": "Szerver infó", + "utility_shard": "Shard", + "utility_shard_stats": "Shard státusz", + "utility_shard_stats_txt": "Shard **#{0}** {1} állapotban van {2} szerverrel - {3} ezelőtt", + "utility_showemojis": "**Név:** {0} **Link:** {1}", + "utility_showemojis_none": "Nincsenek egyedi emojik találva.", + "utility_stats_songs": "{0} zene játszása, {1} várakozó.", + "utility_text_channels": "Chat szobák", + "utility_togtub_room_link": "Itt van a szobád linkje:", + "utility_uptime": "Futási idő", + "utility_userid": "{1} {0} száma {2}", + "utility_users": "Felhasználók", + "utility_voice_channels": "Beszélgető szobák", + "gambling_animal_race_already_in": "Már csatlakoztál ehhez a versenyhez!", + "games_current_poll_results": "Jelenlegi szavazás állása", + "games_no_votes_cast": "Senki sem szavazott.", + "games_poll_already_running": "A szavazás már fut ezen a szerveren.", + "games_poll_created": "📃 {0} szavazást hozott létre:", + "games_poll_result": "`{0}.` {1} {2} szavazattal.", + "games_poll_voted": "{0} szavazott.", + "games_poll_vote_private": "Küldj privát üzenetet a megfelelő válasz számáról", + "games_poll_vote_public": "Küldj egy üzenetet itt a megfelelő válasz számával.", + "games_thanks_for_voting": "Köszönöm, hogy szavaztál, {0}", + "games_x_votes_cast": "{0} szavazat beküldve.", + "games_pick_pl": "Vedd fel őket a `{0}pick` beírásával.", + "games_pick_sn": "Vedd fel a `{0}pick` beírásával.", + "gambling_no_users_found": "Nincs ilyen felhasználó.", + "gambling_page": "{0} oldal", + "administration_must_be_in_voice": "Ezen a szerveren muszáj bent lenned egy beszélgetős szobában.", + "administration_no_vcroles": "Nincsenek beszélgető szobai szerepek.", + "administration_user_muted_time": "{0} **némítva** lett a szöveges és beszélgető szobákból {1} percre.", + "administration_vcrole_added": "A {0} beszélgető szobába csatlakozók megkapják az {1} szerepet.", + "administration_vcrole_removed": "A {0} beszélgető szobába csatlakozók mostantól nem kapnak szerepet.", + "administration_vc_role_list": "Beszélgető szobai szerepek", + "customreactions_crad_disabled": "{0} azonosítóval rendelkező reakciót előhívó üzenetek nem kerülnek automatikus törlésre.", + "customreactions_crad_enabled": "{0} azonosítóval rendelkező reakciót előhívó üzenetek automatikusan törlésre kerülnek.", + "customreactions_crdm_disabled": "{0} azonosítóval rendelkező reakció nem privát üzenetben kerül küldésre.", + "customreactions_crdm_enabled": "{0} azonosítóval rendelkező reakció privát üzenetben kerül küldésre.", + "utility_aliases_none": "Nem található becenév", + "utility_alias_added": "{0} mostantól használható {1} helyett.", + "utility_alias_list": "Helyettesítő kulcsszavak listája", + "utility_alias_removed": "{0} kulcsszó többé nem működik helyettesítőként.", + "utility_alias_remove_fail": "{0} kulcsszóra nem létezik helyettesítés.", + "searches_compet_playtime": "Versenyképes játékidő", + "administration_channel": "Csatorna", + "administration_command_text": "Parancs szövege", + "administration_kicked_pl": "Kickelve", + "administration_moderator": "Moderátor", + "administration_page": "{0} oldal", + "administration_reason": "Ok", + "administration_scadd": "Új indító parancs létrehozva.", + "administration_scrm": "Indító parancs sikeresen törölve.", + "administration_scrm_fail": "Az indító parancs nem található.", + "administration_server": "Szerver", + "administration_startcmdlist_none": "Nincsenek indító parancsok ezen az oldalon.", + "administration_startcmds_cleared": "Indítási parancsok listája ürítve", + "administration_unbanned_user": "{0} felhasználó tiltása feloldva.", + "administration_user_not_found": "A felhasználó nem található.", + "administration_user_warned": "{0} felhasználó figyelmeztetve.", + "administration_user_warned_and_punished": "{0} felhasználó figyelmeztetve, és {1} büntetés alkalmazva.", + "administration_warned_on": "Figyelmeztetve {0} szerveren", + "administration_warned_on_by": "{0} napon {1}-kor {2} által", + "administration_warnings_cleared": "{0} minden figyelmeztetése törölve lett.", + "administration_warnings_none": "Nincs figyelmeztetés ezen az oldalon.", + "administration_warnlog_for": "{0} figyelmeztetési listája", + "administration_warnpl_none": "Nincs büntetés beállítva.", + "administration_warn_cleared_by": "tisztítva {0} által", + "administration_warn_punish_list": "Figyelmeztetésekért járó büntetések", + "administration_warn_punish_rem": "{0} figyelmeztetésért többé nem jár büntetés.", + "administration_warn_punish_set": "{0} büntetést fogok alkalmazni {1} figyelmeztetéssel rendelkező felhasználókon.", + "administration_slowmodewl_role_start": "Lassú mód mostantól figyelmen kívül fogja hagyni a(z) {0} rangot.", + "administration_slowmodewl_role_stop": "Lassú mód mostantól nem fogja figyelmen kívül hagyni a(z) {0} rangot.", + "administration_slowmodewl_user_start": "Lassú mód mostantól figyelmen kívül fogja hagyni {0} felhasználót.", + "administration_slowmodewl_user_stop": "Lassú mód mostantól nem fogja figyelmen kívül hagyni {0} felhasználót.", + "utility_clpa_fail": "Hibás igénylés a jutalmakra a következő ok(ok) miatt:", + "utility_clpa_fail_already": "Talán már megkaptad a jutalmad a hónapra. Havonta csak egyszer kaphatsz jutalmakat kivéve ha növeled a felajánlást.", + "utility_clpa_fail_already_title": "Már jutalmazva", + "utility_clpa_fail_conn": "A discord felhasználód nincs csatlakoztatva a Patreonhoz. Ha nem vagy biztos benne mit jelent ez, vagy nem tudod hogyan csatlakoztasd - Menj a [Patreon account settings oldalra] (https://patreon.com/settings/account) és kattints a 'Connect to discord' gombra.", + "utility_clpa_fail_conn_title": "Discord fiók nincs csatlakoztatva", + "utility_clpa_fail_sup": "Hogy jogosult legyél jutalmakra támogatnod kell a projektet patreonon. Használd a {0} parancsot a linkért.", + "utility_clpa_fail_sup_title": "Nem támogatod", + "utility_clpa_fail_wait": "Várnod kell pár óráta felajánlás után, ha nem vártál, próbálkozz újra később.", + "utility_clpa_fail_wait_title": "Várj kis időt", + "utility_clpa_success": "Kaptál {0} Köszönöm, hogy támogatod a projektet.", + "utility_clpa_too_early": "A jutalmakat minden hónap 5.-én vagy utána tudod igényelni.", + "searches_time": "{0} -ban az idő {1} - {2}", + "administration_rh": "Szerver rang {0} ", + "gambling_name": "Név", + "gambling_shop": "Bolt", + "gambling_shop_item_add": "Bolti tárgy hozzáadva.", + "gambling_shop_none": "Bolti tárgyak nem találva ezen az oldalon.", + "gambling_shop_role": "Meg fogod kapni {0} rangot", + "gambling_type": "Típus", + "utility_clpa_next_update": "Új frissítés {0} időpontban.", + "administration_gvc_disabled": "Játék Beszéd Szoba funkció kikapcsolva ezen a szerveren.", + "administration_gvc_enabled": "{0} egy Játék Beszéd Szoba.", + "administration_not_in_voice": "Nem vagy beszéd szobában ezen a szerveren.", + "gambling_item": "Tárgy", + "gambling_out_of_stock": "Nincs készleten.", + "gambling_random_unique_item": "Véletlenszerű egyedi tárgy.", + "gambling_shop_buy_error": "Hiba a tárgy megkapásával. Vissza lett térítve.", + "gambling_shop_item_not_found": "Nincs tárgy ezzel a jegyzékkel.", + "gambling_shop_item_purchase": "Tárgy vásárlás sikeres.", + "gambling_shop_item_rm": "Tárgy eltávolítva", + "gambling_shop_item_wrong_type": "Bolt bejegyzés nem támogatja tárgy hozzáadását.", + "gambling_shop_list_item_added": "Tárgy sikeresen hozzá adva.", + "gambling_shop_list_item_not_unique": "Ez a tárgy már hozzá van adva.", + "gambling_shop_purchase": "Vásárlás {0}szerveren", + "gambling_shop_role_not_found": "Vásárolható rang többé nem létezik.", + "gambling_shop_role_purchase": "Sikeresen megvásároltad {0} rangot.", + "gambling_shop_role_purchase_error": "Sikertelen rang átadás. A vásárlást vissza térítettük.", + "gambling_unique_items_left": "{0} egyedi tárgy maradt.", + "permissions_blocked_commands": "Blokkolt parancsok", + "permissions_blocked_modules": "Blokkolt modulok", + "permissions_gcmd_add": "{0} parancs kikapcsolva minden szerveren.", + "permissions_gcmd_remove": "{0} parancs engedélyezve minden szerveren.", + "permissions_gmod_add": "{0} modul kikapcsolva minden szerveren.", + "permissions_gmod_remove": "{0} modul engedélyezve minden szerveren.", + "permissions_lgp_none": "Nincsenek blokkolt parancsok és modulok.", + "gambling_animal_race_no_race": "Állat verseny tele!", + "utility_cant_read_or_send": "Nem írhatsz vagy olvashatsz ebben a szobában.", + "utility_quotes_notfound": "Nem található idézet ezzel az azonosítóval.", + "administration_prefix_current": "Előjel ezen a szerveren {0}", + "administration_prefix_new": "Előjel ezen a szerveren kicserélve {0}-ról {1}-re.", + "administration_defprefix_current": "Alapértelmezett bot előjel {0}", + "administration_defprefix_new": "Alapértelmezett bot előjel kicserélve {0}-ról {1}-re.", + "administration_bot_nick": "Bot beceneve {0} -ra/-re változtatva", + "administration_user_nick": "Felhasználó {0} beceneve kicserélve {1}", + "administration_timezone_guild": "Az időzónája ennek a klánnak '{0}'", + "administration_timezone_not_found": "Nincs időzóna. Használd a \"timezones\" parancsot, hogy lásd az elérhető időzónákat.", + "administration_timezones_available": "Elérhető időzónák", + "music_song_not_found": "Nem talált zene.", + "searches_define_unknown": "Nem talált definíció a kifejezésre.", + "utility_repeater_initial": "Kezdeti ismétlődő üzenet {0} óra és {1} perc múlva lesz küldve.", + "utility_verbose_errors_enabled": "Nem megfelelően használt parancsok hibaüzenetet fognak mutatni.", + "utility_verbose_errors_disabled": "Nem megfelelően használt parancsok nem fognak hibaüzenetet mutatni.", + "permissions_perms_reset": "Hozzáférések a szerveren visszaállítva.", + "permissions_trigger": "#{0} számú szabály ({1}) miatt ez a művelet nem lehetséges.", + "administration_migration_error": "Nem sikerült az adatok másolása, ellenőrizd a konzolt további információért.", + "searches_hex_invalid": "Érvénytelen megadott szín.", + "permissions_global_perms_reset": "Globális hozzáférések visszaállítva.", + "help_module": "Modul: {0}", + "games_hangman_stopped": "Akasztófa játék megállítva.", + "music_autoplaying": "Autó-lejátszás.", + "music_queue_stopped": "Lejátszó megállítva. Használd a {0} parancsot az elindításhoz.", + "music_removed_song_error": "Nincs ilyen sorszámmal rendelkező zeneszám.", + "music_shuffling_playlist": "Zenék megkeverése.", + "music_songs_shuffle_enable": "Mostantól a zenék keverednek.", + "music_songs_shuffle_disable": "A zenék nem ", + "music_song_skips_after": "A {0} utáni dalok át lesznek ugorva.", + "administration_warnings_list": "Az összes figyelmeztetett felhasználó listája a szerveren", + "customreactions_redacted_too_long": "Rövidítve, mert túl hosszú.", + "nsfw_blacklisted_tag_list": "Tiltólistás címkék:", + "nsfw_blacklisted_tag": "Egy vagy több általad használt címke a tiltólistán van.", + "nsfw_blacklisted_tag_add": "\"{0}\" NSFW címke a tiltólistára került.", + "nsfw_blacklisted_tag_remove": "\"{0}\" NSFW címke már nincs a tiltólistán.", + "gambling_waifu_gift": "{0} ajándékozva {1} által", + "gambling_waifu_gift_shop": "Waifu ajándékbolt", + "gambling_gifts": "Ajándékok", + "games_connect4_created": "Egy Connect4 játék létrehozva. Várakozás egy résztvevőre.", + "games_connect4_player_to_move": "Játékos mozgatása: {0}", + "games_connect4_failed_to_start": "Connect4 indítása sikertelen, mert senki sem csatlakozott a játékhoz.", + "games_connect4_draw": "A játék kimenetele döntetlen.", + "games_connect4_won": "{0} megnyerte a játékot {1} ellen.", + "games_nunchi_joined": "Csatlakozva a nunchi játékhoz. {0} felhasználó csatlakozott eddig", + "games_nunchi_ended": "Nunchi játék véget ért. {0} nyert", + "games_nunchi_ended_no_winner": "A nunchi játék győztes nélkül ért véget.", + "games_nunchi_started": "A nunchi játék elkezdődött {0} résztvevővel.", + "games_nunchi_round_ended": "Nunchi kör vége. {0} kiesett a játékból.", + "games_nunchi_round_ended_boot": "Nunchi kör véget ért játékosok időtúllépése miatt. Ezek a játékosok vannak még játékban: {0}", + "games_nunchi_round_started": "Nunchi kör elkezdődött {0} játékossal. Kezdjétek a számolást {1} számtól.", + "games_nunchi_next_number": "Szám regisztrálva. Utolsó szám {1} volt.", + "games_nunchi_failed_to_start": "Nunchi kör elindítása sikertelen nem elég résztvevő miatt.", + "games_nunchi_created": "Nunchi játék elkészült. Várakozás játékosok csatlakozására.", + "music_sad_enabled": "A zenék ki lesznek törölve a sorból, mikor vége a lejátszásuknak.", + "music_sad_disabled": "A zenék nem lesznek többé törölve a sorból, mikor vége a lejátszásuknak.", + "utility_stream_role_enabled": "Mikor a felhasználó {0} rangról elkezd streamelni, odaadom nekik a(z) {1} rangot.", + "utility_stream_role_disabled": "Stream rang funkció kikapcsolva.", + "utility_stream_role_kw_set": "A streamereknek mostantól szükségük van {0} kulcsszóra, hogy megkapják a rangot.", + "utility_stream_role_kw_reset": "Stream rang kulcsszó visszaállítva.", + "utility_stream_role_bl_add": "{0} felhasználó többé soha nem fog stream rangot kapni.", + "utility_stream_role_bl_add_fail": "{0} felhasználó már feketelistán van.", + "utility_stream_role_bl_rem": "{0} felhasználó nincs többé feketelistán.", + "utility_stream_role_bl_rem_fail": "{0} felhasználó nincs feketelistán.", + "utility_stream_role_wl_add": "{0} felhasználó akkor is fog stream rangot kapni, ha nincs kulcsszó a stream címükben.", + "utility_stream_role_wl_add_fail": "{0} felhasználó már a fehérlistán van.", + "utility_stream_role_wl_rem": "{0} felhasználó nincs többé a fehérlistán.", + "utility_stream_role_wl_rem_fail": "{0} felhasználó nem fehérlistás.", + "utility_bot_config_edit_fail": "{0} beállítása sikertelen {1} értékre.", + "utility_bot_config_edit_success": "{0} beállítása {1} értékre.", + "customreactions_crca_disabled": "Az egyedi reakció {0} azonosítóval többé nem aktiválódik, csak ha a szó a mondat elején van.", + "customreactions_crca_enabled": "Az egyedi reakció {0} azonosítóval aktiválódik bárhol van a mondatban.", + "xp_server_level": "Szerver szint.", + "xp_level": "Szint", + "xp_club": "Klub", + "xp_xp": "Tapasztalat", + "xp_excluded": "{0} kizárva az XP rendszerből a szerveren.", + "xp_not_excluded": "{0} többé nincs kizárva az XP rendszerből a szerveren.", + "xp_exclusion_list": "Kizártak listája", + "xp_server_is_excluded": "Ez a szerver kizárva.", + "xp_server_is_not_excluded": "Ez a szerver nincs kizárva.", + "xp_excluded_roles": "Kizárt rang", + "xp_excluded_channels": "Kizárt csatorna", + "xp_level_up_channel": "Gratulálok {0}, elérted a(z) {1} szintet!", + "xp_level_up_dm": "Gratulálok {0}, elérted a(z) {1} szintet {2} szerveren!", + "xp_level_up_global": "Gratulálok {0}, elérted a globális {1} szintet!", + "xp_role_reward_cleared": "{0} szint többé nem ad rangot.", + "xp_role_reward_added": "A felhasználók akik elérik a {0} szintet megkapják a(z) {1} rangot.", + "xp_role_rewards": "Szerep jutalmak", + "xp_level_x": "Szint {0}", + "xp_no_role_rewards": "Nincs szerep jutalom az oldalon.", + "xp_server_leaderboard": "Szerver szint ranglista", + "xp_global_leaderboard": "Globális szint ranglista", + "xp_modified": "A {0} felhasználó szerver szintje {0} xpvel változott.", + "xp_club_create_error": "Klub létrehozása sikertelen. Bizonyosodj meg, hogy 5ös szint felett vagy, és nem vagy klub tagja.", + "xp_club_created": "Klub {0} sikeresen létrehozva.", + "xp_club_not_exists": "Ez a klub nem létezik.", + "xp_club_applied": "Jelentkeztél tagnak a {0} klubba.", + "xp_club_apply_error": "Hiba a jelentkezéssel. Vagy a klub tagja vagy már, nem éred el a minimum szintet, vagy ki vagy tiltva ebből a klubból.", + "xp_club_accepted": "Felhasználó {0} csatlakozása elfogadva a klubba.", + "xp_club_accept_error": "Nem talált felhasználó", + "xp_club_left": "Kiléptél a klubból.", + "xp_club_not_in_club": "Nem vagy a klubban, vagy a saját klubodból próbálsz kilépni.", + "xp_club_user_kick": "Felhasználó {0} kirúgva {1} klubból.", + "xp_club_user_kick_fail": "Hiba a kirúgással. Vagy nem vagy klub tulajdonos, vagy a felhasználó nincs a klubban.", + "xp_club_user_banned": "Felhasználó {0} kitiltva {1} klubból.", + "xp_club_user_ban_fail": "Hiba a kitiltással. Vagy nem vagy klub tulajdonos, vagy a felhasználó nincs a klubban.", + "xp_club_user_unbanned": "Felhasználó {0} kitiltása visszavonva {1} klubból.", + "xp_club_user_unban_fail": "Unbanolás sikertelen. Vagy nem vagy a klub tulajdonos, a felhasználó nincs a klubbodban vagy nem jelentkezett.", + "xp_club_level_req_changed": "Klub szint követelménye megváltoztatva {0} szintre.", + "xp_club_level_req_change_error": "Szint követelmény megváltoztatása sikertelen.", + "xp_club_disbanded": "Klub {0} feloszlatásra került.", + "xp_club_disband_error": "Hiba. Vagy nem vagy a klubban, vagy nem te vagy a klub tulajdonosa.", + "xp_club_icon_error": "Nem megfelelő kép url, vagy nem te vagy a klub tulajdonos.", + "xp_club_icon_set": "Új klub ikon beállítva.", + "xp_club_bans_for": "A {0} klub bannjai.", + "xp_club_apps_for": "A {0} klub jelentkezői.", + "xp_club_leaderboard": "Klub ranglista - oldal {0}" +} \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.id-ID.json b/src/NadekoBot/_strings/ResponseStrings.id-ID.json index af888820..ad7e593a 100644 --- a/src/NadekoBot/_strings/ResponseStrings.id-ID.json +++ b/src/NadekoBot/_strings/ResponseStrings.id-ID.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "Markas itu telah diklaim atau dihancurkan.", - "clashofclans_base_already_destroyed": "Markas itu telah dihancurkan.", - "clashofclans_base_already_unclaimed": "Markas itu belum diklaim.", - "clashofclans_base_destroyed": "**DIHANCURKAN** markas #{0} di sebuah perang melawan {1}", - "clashofclans_base_unclaimed": "{0} telah **MEMBATALKAN KLAIM** markas #{1} di sebuah perang melawan {2}", - "clashofclans_claimed_base": "{0} Telah mengklaim sebuah markas #{1} di perang melawan {2}", - "clashofclans_claimed_other": "@{0} Anda telah mengklaim markas #{1}. Anda tidak bisa mengklaim lagi.", - "clashofclans_claim_expired": "Klaim dari @{0} di sebuah perang melawan {1} telah kadaluarsa.", - "clashofclans_enemy": "Musuh", - "clashofclans_info_about_war": "Info tentang perang melawan {0}", - "clashofclans_invalid_base_number": "Jumlah markas yang salah.", - "clashofclans_invalid_size": "Bukan ukuran perang yang benar.", - "clashofclans_list_active_wars": "Daftar perang aktif.", - "clashofclans_not_claimed": "Tidak diklaim.", - "clashofclans_not_partic": "Anda tidak berpartisipasi di perang itu.", - "clashofclans_not_partic_or_destroyed": "@{0} Antara anda tidak berpartisipasi di perang itu, atau markas itu telah dihancurkan.", - "clashofclans_no_active_wars": "Tidak ada perang aktif.", - "clashofclans_size": "Ukuran", - "clashofclans_war_already_started": "Perang melawan {0} telah dimulai.", - "clashofclans_war_created": "Telah membuat perang melawan {0}.", - "clashofclans_war_ended": "Perang melawan {0} telah selesai.", - "clashofclans_war_not_exist": "Perang itu tidak ada.", - "clashofclans_war_started": "Perang melawan {0} mulai!", "customreactions_all_stats_cleared": "Semua reaksi kustom telah dibersihkan.", "customreactions_deleted": "Reaksi kustom telah dihapus.", "customreactions_insuff_perms": "Izin anda kurang. Dibutuhkan kepemilikan Bot untuk reaksi kostum global, dan Administrator untuk reaksi kustom server.", @@ -804,5 +781,92 @@ "music_songs_shuffle_enable": "Lagu - lagu akan teracak mulai sekarang.", "music_songs_shuffle_disable": "Lagu - lagu tidak akan teracak.", "music_song_skips_after": "Lagu - lagu akan melompat setelah {0}", - "administration_warnings_list": "Daftar pengguna yang diperingatkan." + "administration_warnings_list": "Daftar pengguna yang diperingatkan.", + "customreactions_redacted_too_long": "Dikurangi karena terlalu panjang.", + "nsfw_blacklisted_tag_list": "Daftar label yang dilarang", + "nsfw_blacklisted_tag": "Satu atau lebih tag yang anda gunakan telah diblokir", + "nsfw_blacklisted_tag_add": "tag NSFW {0} sudah dimasukkan blacklist.", + "nsfw_blacklisted_tag_remove": "tag NSFW {0} sudah tidak di blacklist.", + "gambling_waifu_gift": "Hadiah {0} telah diberikan ke {1}", + "gambling_waifu_gift_shop": "Toko hadiah waifu", + "gambling_gifts": "Hadiah", + "games_connect4_created": "Telah dibuat permainan Connect4. Menunggu pemain untuk bergabung", + "games_connect4_player_to_move": "Pemain yang akan bermain: {0}", + "games_connect4_failed_to_start": "Permainan Connect4 gagal dimulai karena tidak ada yang bergabung", + "games_connect4_draw": "Permainan Connect4 berakhir dengan hasil seri", + "games_connect4_won": "{0} memenangkan permainan Connect4 melawan {1}", + "games_nunchi_joined": "Masuk permainan nunchi. {0} pengguna bermain sejauh ini.", + "games_nunchi_ended": "Permainan Nunchi selesai. {0} menang", + "games_nunchi_ended_no_winner": "Permainan Nunchi selesai tanpa pemenang", + "games_nunchi_started": "Permainan Nunchi dimulai dengan {0} pemain.", + "games_nunchi_round_ended": "Ronde nunchi selesai. {0} telah dikeluarkan dari permainan", + "games_nunchi_round_ended_boot": "Ronde Nunchi berhenti karena kehabisan waktu. Pengguna yang masih di dalam permainan {0}", + "games_nunchi_round_started": "Ronde Nunchi dimulai dengan {0} pengguna. Memulai menghitung dari nomor {1}.", + "games_nunchi_next_number": "Nomor terdaftar. Nomor terakhir adalah {0}.", + "games_nunchi_failed_to_start": "Nunchi gagal dimulai karena pemain tidak mencukupi", + "games_nunchi_created": "Permainan Nunchi telah dibuat. menunggu pemain untuk bergabung", + "music_sad_enabled": "Lagu akan di hapus dari antrian musik setelah selesai dimainkan", + "music_sad_disabled": "Lagu akan tidak di hapus dari antrian musik setelah selesai dimainkan", + "utility_stream_role_enabled": "Saat pengguna dari peran {0} memulai streaming, saya akan memberikan mereka peran {1}.", + "utility_stream_role_disabled": "Fitur role stream telah dimatikan.", + "utility_stream_role_kw_set": "Streamer membutuhkan kata kunci {0} untuk mendapatkan role.", + "utility_stream_role_kw_reset": "Kata kunci untuk stream role telah di setel ulang.", + "utility_stream_role_bl_add": "Pengguna {0} tidak akan pernah mendapatkan peran stream.", + "utility_stream_role_bl_add_fail": "Pengguna {0} sudah dimasukkan blacklist.", + "utility_stream_role_bl_rem": "Pengguna {0} sudah tidak di blacklist.", + "utility_stream_role_bl_rem_fail": "Pengguna {0} tidak di blacklist.", + "utility_stream_role_wl_add": "Pengguna {0} akan mendapatkan peran stream bahkan jika mereka tidak memiliki kata kunci di judul stream.", + "utility_stream_role_wl_add_fail": "Pengguna {0} sudah di whitelist.", + "utility_stream_role_wl_rem": "Pengguna {0} sudah tidak di whitelist.", + "utility_stream_role_wl_rem_fail": "Pengguna {0} tidak di whitelist.", + "utility_bot_config_edit_fail": "Gagal mengatur {0} menjadi {1}", + "utility_bot_config_edit_success": "Nilai dari {0} dirubah menjadi {1}.", + "customreactions_crca_disabled": "Reaksi kustom dengan id {0} tidak akan dilakukan kecuali kata pemicunya ada di awal kalimat.", + "customreactions_crca_enabled": "Reaksi kustom dengan id {0} akan mulai jika ada dibagian manapun di sebuah kalimat.", + "xp_server_level": "Level Server", + "xp_level": "Level", + "xp_club": "Klub", + "xp_xp": "Pengalaman", + "xp_excluded": "{0} sudah dikeluarkan dari sistem XP di server ini.", + "xp_not_excluded": "{0} sudah tidak dikeluarkan dari sistem XP di server ini.", + "xp_exclusion_list": "Daftar pengecualian", + "xp_server_is_excluded": "Server ini dikecualikan", + "xp_server_is_not_excluded": "Server ini tidak dikecualikan.", + "xp_excluded_roles": "Peran yang dikecualikan", + "xp_excluded_channels": "Saluran yang dikecualikan", + "xp_level_up_channel": "Selamat {0}, Anda telah mencapai level {1}!", + "xp_level_up_dm": "Selamat {0}, Anda telah mencapai level {1} dalam server {2}", + "xp_level_up_global": "Selamat {0}, anda telah mencapai level global {1}!", + "xp_role_reward_cleared": "Level {0} tidak akan mendapat role apapun.", + "xp_role_reward_added": "Pengguna yang telah mencapai level {0} akan mendapat role {1}.", + "xp_role_rewards": "Hadiah Role", + "xp_level_x": "Level {0}", + "xp_no_role_rewards": "TIdak ada hadiah peran di halaman ini.", + "xp_server_leaderboard": "Peringkat XP Server", + "xp_global_leaderboard": "Peringkat XP Global", + "xp_modified": "XP Server dari user {0} telah dimodifikasi oleh {1}", + "xp_club_create_error": "Gagal membuat klub. Pastikan level anda berada di atas level 5 dan belum menjadi member dari klub apapun.", + "xp_club_created": "klub {0} berhasil terbuat", + "xp_club_not_exists": "klub tersebut tidak ada", + "xp_club_applied": "Anda telah melamar untuk menjadi member di klub {0}.", + "xp_club_apply_error": "Galat ketika melamar. Antara anda sudah menjadi member dari sebuah klub, atau anda tidak memenuhi syarat level minimum, atau anda telah diblokir dari klub ini.", + "xp_club_accepted": "Pengguna {0} telah diterima ke dalam klub.", + "xp_club_accept_error": "Pengguna tidak ditemukan", + "xp_club_left": "Anda telah meninggalkan klub", + "xp_club_not_in_club": "Anda tidak berada di dalam sebuah klub, atau anda mencoba untuk keluar dari klub yang anda miliki.", + "xp_club_user_kick": "Pengguna {0} telah ditendang dari klub {1}.", + "xp_club_user_kick_fail": "Galat ketika menendang. Antara anda bukan pemilik klub, atau pengguna tersebut tidak termasuk ke dalam klub anda.", + "xp_club_user_banned": "Pengguna {0} dilarang dari klub {1}.", + "xp_club_user_ban_fail": "Gagal untuk melarang. Anda antara bukan pemilik klub, atau pengguna itu tidak di klub anda atau mengaplikasikan diri ke itu.", + "xp_club_user_unbanned": "Sudah tidak melarang pengguna {0} di klub {1}.", + "xp_club_user_unban_fail": "Gagal untuk tidak melarang. Anda antara bukan pemilik klub, atau pengguna itu tidak di klub anda atau mengaplikasikan diri ke itu.", + "xp_club_level_req_changed": "Syarat level klub telah diubah ke {0}", + "xp_club_level_req_change_error": "Gagal mengubah syarat level.", + "xp_club_disbanded": "Klub {0} telah dibubarkan", + "xp_club_disband_error": "Galat. Antara anda bukan bagian dari sebuah klub, atau anda bukan pemilik dari klub anda.", + "xp_club_icon_error": "URL gambar tidak valid atau anda bukan pemilik klub.", + "xp_club_icon_set": "ikon klub baru ditetapkan.", + "xp_club_bans_for": "Pengguna yang dilarang untuk klub {1}", + "xp_club_apps_for": "Pelamar untuk klub {0}", + "xp_club_leaderboard": "Papan peringkat - halaman {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.it-IT.json b/src/NadekoBot/_strings/ResponseStrings.it-IT.json index ac53c9b2..a3b7c322 100644 --- a/src/NadekoBot/_strings/ResponseStrings.it-IT.json +++ b/src/NadekoBot/_strings/ResponseStrings.it-IT.json @@ -1,30 +1,7 @@ { - "clashofclans_base_already_claimed": "Quella base è già stata rivendicata o distrutta.", - "clashofclans_base_already_destroyed": "Quella base è già distrutta.", - "clashofclans_base_already_unclaimed": "Quella base non è stata rivendicata.", - "clashofclans_base_destroyed": "**DISTRUTTA** base #{0} in una guerra contro {1}", - "clashofclans_base_unclaimed": "{0} ha **NON RIVENDICATO** la base #{1} in una guerra contro {2}", - "clashofclans_claimed_base": "{0} ha rivendicato la base #{1} in una guerra contro {2}", - "clashofclans_claimed_other": "@{0} Hai già rivendicato la base #{1}. Non puoi rivendicarne un'altra.", - "clashofclans_claim_expired": "La rivendicazione di @{0} in una guerra contro {1} è scaduta.", - "clashofclans_enemy": "Nemico", - "clashofclans_info_about_war": "Informazioni sulla guerra contro {0}", - "clashofclans_invalid_base_number": "Numero della base invalido.", - "clashofclans_invalid_size": "Dimensione della guerra non valida.", - "clashofclans_list_active_wars": "Lista delle guerre in corso", - "clashofclans_not_claimed": "non rivendicata", - "clashofclans_not_partic": "Non stai partecipando a quella guerra", - "clashofclans_not_partic_or_destroyed": "@{0} Non stai partecipando in quella guerra oppure quella base è già distrutta.", - "clashofclans_no_active_wars": "Nessuna guerra in corso.", - "clashofclans_size": "Dimensione", - "clashofclans_war_already_started": "La guerra contro {0} è già iniziata.", - "clashofclans_war_created": "Guerra contro {0} creata.", - "clashofclans_war_ended": "Guerra contro {0} conclusa.", - "clashofclans_war_not_exist": "Questa guerra non esiste.", - "clashofclans_war_started": "Guerra contro {0} avviata!", "customreactions_all_stats_cleared": "Tutte le reazioni personalizzate sono state approvate.", "customreactions_deleted": "Reazione personalizzata cancellata", - "customreactions_insuff_perms": "Permessi insufficienti. Bisogna essere proprietario del Bot per personalizzare le reazioni globali e l'amministratore del server per le personalizzare le reazioni del server.", + "customreactions_insuff_perms": "Permessi insufficienti. Bisogna essere proprietario del Bot per personalizzare le reazioni globali e l'amministratore del server per personalizzare le reazioni del server.", "customreactions_list_all": "Lista di tutte le reazioni personalizzate", "customreactions_name": "Reazioni Personalizzate", "customreactions_new_cust_react": "Nuove Reazioni Personalizzate", @@ -33,7 +10,7 @@ "customreactions_response": "Risposta", "customreactions_stats": "Statistiche Reazioni Personalizzate", "customreactions_stats_cleared": "Statistiche pulite per {0} reazioni personalizzate.", - "customreactions_stats_not_found": "Nessuna statistica per questo innesco trovata, nessun azione presa.", + "customreactions_stats_not_found": "Nessuna statistica per questo innesco trovata, nessuna azione presa.", "customreactions_trigger": "Innesco", "nsfw_autohentai_stopped": "Autohentai fermato.", "nsfw_not_found": "Nessun risultato trovato.", @@ -53,7 +30,7 @@ "pokemon_revive_other": "ha resuscitato {0} con un {1}", "pokemon_revive_yourself": "Hai resuscitato te stesso con un {0}", "pokemon_settype_success": "Il tuo tipo è cambiato in {0} per un {1}", - "pokemon_somewhat_effective": "È lievemente efficace.", + "pokemon_somewhat_effective": "È in qualche modo efficace.", "pokemon_super_effective": "È superefficace!", "pokemon_too_many_moves": "Hai usato troppe mosse di fila, quindi ora non puoi muoverti!", "pokemon_type_of_user": "Tipo di {0} è {1}", @@ -74,13 +51,13 @@ "administration_byemsg_enable": "Attiva i messaggi di arrivederci scrivendo {0}", "administration_byemsg_new": "Nuovo messaggio di arrivederci impostato.", "administration_bye_off": "Annunci di arrivederci disattivati.", - "administration_bye_on": "Annunci di arrivederci attivati in questo canale.", + "administration_bye_on": "Annunci di arrivederci attivati su questo canale.", "administration_ch_name_change": "Nome del canale cambiato", - "administration_ch_old_name": "Vecchio nome", + "administration_ch_old_name": "Nome vecchio", "administration_ch_topic_change": "Argomento del canale cambiato", "administration_cleaned_up": "Pulito.", "administration_content": "Contenuto", - "administration_cr": "Ruolo creato con successo {0}", + "administration_cr": "Ruolo {0} creato con successo", "administration_createtextchan": "Canale di testo {0} creato.", "administration_createvoich": "Canale vocale {0} creato.", "administration_deafen": "Assordato con successo.", @@ -783,26 +760,113 @@ "administration_bot_nick": "Il soprannome del Bot é cambiato in {0}", "administration_user_nick": "Il soprannome dell'utente {0} é cambiato in {1}", "administration_timezone_guild": "Il fuso orario di questa gilda é '{0}'", - "administration_timezone_not_found": "", + "administration_timezone_not_found": "Ora legale non trovata. Utilizzare comando \"ore legali\" per vedere una lista di ore legali esistenti.", "administration_timezones_available": "Fuso orari disponibili", "music_song_not_found": "Nessuna canzone trovata.", "searches_define_unknown": "Impossibile trovare la definizione per quel termine.", - "utility_repeater_initial": "", + "utility_repeater_initial": "Messaggio di ripetizione iniziale sarà inviato in {0}h e {1}min.", "utility_verbose_errors_enabled": "I comandi usati incorrettamente faranno ora vedere gli errori", - "utility_verbose_errors_disabled": "", + "utility_verbose_errors_disabled": "Comandi incorretti non faranno più vedere errori.", "permissions_perms_reset": "I permessi per questo server sono stati resettati.", - "permissions_trigger": "", + "permissions_trigger": "Numero di permesso #{0} {1} sta bloccando l'azione.", "administration_migration_error": "Errore nella migrazione, controlla la console del bot per maggiori informazioni.", - "searches_hex_invalid": "", + "searches_hex_invalid": "Colore specificato non valido.", "permissions_global_perms_reset": "I permessi globali sono stati resettati.", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "Lista di tutti gli utenti avvisati in questo server" + "help_module": "Modulo: {0}", + "games_hangman_stopped": "Gioco dell'impiccato fermato.", + "music_autoplaying": "Auto-play.", + "music_queue_stopped": "Il player è fermato. Usa il comando {0} per iniziare.", + "music_removed_song_error": "Canzone elencata non esistente", + "music_shuffling_playlist": "Mescolando conzoni", + "music_songs_shuffle_enable": "Canzoni mescoleranno da ora in poi.", + "music_songs_shuffle_disable": "Canzoni non mescoleranno più.", + "music_song_skips_after": "Le canzoni skipperanno dopo {0}.", + "administration_warnings_list": "Lista di tutti gli utenti avvisati in questo server", + "customreactions_redacted_too_long": "Redatto perché troppo lungo.", + "nsfw_blacklisted_tag_list": "Lista delle tags della lista nera:", + "nsfw_blacklisted_tag": "Una o più tags hai usato sono nella lista nera.", + "nsfw_blacklisted_tag_add": "Contenuto (non adatto ai minori) Nsfw {0} è stato vietato.", + "nsfw_blacklisted_tag_remove": "Contenuto (non adatto ai minori) Nsfw {0} non è piú vietato.", + "gambling_waifu_gift": "Regalato {0} a {1}", + "gambling_waifu_gift_shop": "Mercato per le waifu", + "gambling_gifts": "Regali", + "games_connect4_created": "Connect4 game creato. In attesa che un giocatore si unisca.", + "games_connect4_player_to_move": "Giocatore si sposta: {0}", + "games_connect4_failed_to_start": "Connect4 game interrotto perché nessuno si è unito.", + "games_connect4_draw": "Connect4 game finito in un pareggio.", + "games_connect4_won": "{0} ha vinto Connect4 game contro {1}.", + "games_nunchi_joined": "Unito a nunchi. {0} uniti fino a ora.", + "games_nunchi_ended": "Gioco nunchi finito. Vincitore {0}", + "games_nunchi_ended_no_winner": "Gioco nunchi finito senza nessun vincitore.", + "games_nunchi_started": "Gioco nunchi iniziato con {0} partecipanti.", + "games_nunchi_round_ended": "Round finito. {0} è fuori dal gioco.", + "games_nunchi_round_ended_boot": "Round finito a causa dello scadere del tempo di alcuni giocatori. I giocatori {0} sono ancora nel gioco.", + "games_nunchi_round_started": "Round iniziato con {0} giocatori. Iniziare a contare dal numero {1}.", + "games_nunchi_next_number": "Numero registrato. Ultimo numero era {0}.", + "games_nunchi_failed_to_start": "Nunchi non ha potuto iniziare a causa di pochi giocatori.", + "games_nunchi_created": "Gioco nunchi creato. In attesa di giocatori.", + "music_sad_enabled": "Le canzoni verranno rimosse dalla coda quando finiranno.", + "music_sad_disabled": "Canzoni non verranno più cancellate dalla lista dopo il loro termine.", + "utility_stream_role_enabled": "Quando un utente dal {0} inizia a streammare, li darò il {1} ruolo.", + "utility_stream_role_disabled": "Ruolo Stream è stato disabilitato.", + "utility_stream_role_kw_set": "Streamers ora hanno bisogno di parola chiave {0} per ottenere il ruolo.", + "utility_stream_role_kw_reset": "Cambio parola chiave per il ruolo Stream.", + "utility_stream_role_bl_add": "L'utente {0} non riceverà mai il stream role.", + "utility_stream_role_bl_add_fail": "L'utente {0} è già sulla lista nera.", + "utility_stream_role_bl_rem": "L'utente {0} non è più nella lista nera.", + "utility_stream_role_bl_rem_fail": "L'utente {0} non è nella lista nera.", + "utility_stream_role_wl_add": "L'utente {0} riceverà il stream role pure se non hanno la parola chiave nel titolo di stream.", + "utility_stream_role_wl_add_fail": "L'utente {0} è già sulla whitelist.", + "utility_stream_role_wl_rem": "{0} non è più nella lista bianca.", + "utility_stream_role_wl_rem_fail": "{0} non è nella lista bianca.", + "utility_bot_config_edit_fail": "Sbagliato a impostare {0} al valore {1}", + "utility_bot_config_edit_success": "Il valore di {0} è impostato a {1}", + "customreactions_crca_disabled": "Reazione personalizzata con id {0} sarà innescata solo se la parola da innescare è al inizio della frase.", + "customreactions_crca_enabled": "Reazione personalizzata con id {0} ora è innescabile anche se contenuta in qualsiasi parte della frase.", + "xp_server_level": "Livello del Server", + "xp_level": "Livello", + "xp_club": "Club", + "xp_xp": "Esperienza", + "xp_excluded": "{0} è stato escluso dal sistema di XP di questo server.", + "xp_not_excluded": "{0} non è più escluso dal sistema d'esperienza su questo server.", + "xp_exclusion_list": "Elenco delle esclusioni.", + "xp_server_is_excluded": "Questo server è escluso.", + "xp_server_is_not_excluded": "Questo server non è escluso.", + "xp_excluded_roles": "Ruoli esclusi", + "xp_excluded_channels": "Canali esclusi", + "xp_level_up_channel": "Congratulazioni {0}, hai raggiunto il livello {1}!", + "xp_level_up_dm": "Congratulazioni {0}, hai raggiunto il livello {1} sul {2} server!", + "xp_level_up_global": "Congratulazioni {0}, hai raggiunto il livello globale {1}!", + "xp_role_reward_cleared": "Il livello {0} non avrà più un ruolo di ricompensa.", + "xp_role_reward_added": "Utenti che arrivano al livello {0} riceveranno il seguente ruolo {1}.", + "xp_role_rewards": "Ricompense ", + "xp_level_x": "Livello {0}", + "xp_no_role_rewards": "Nessun ruolo ricevuto su questa pagina.", + "xp_server_leaderboard": "Tabella di esperienza del server", + "xp_global_leaderboard": "Tabella di esperienza globale", + "xp_modified": "Modificata esperienza del server per l'untente {0} a {1}", + "xp_club_create_error": "Errore nella creazione del club. Accertati di essere superiore al livello 5 e di non far parte di nessun club.", + "xp_club_created": "Club {0} creato con successo!", + "xp_club_not_exists": "Quel club non esiste.", + "xp_club_applied": "Sei stato aggiunto come membro al club }0}.", + "xp_club_apply_error": "Errore nell applicazione. Fai già parte di questo club, non soddisfi il livello minimo richiesto, oppure sei stato bannato.", + "xp_club_accepted": "Utente {0} è stato accettao nel club.", + "xp_club_accept_error": "Utente non trovato", + "xp_club_left": "Hai lasciato il club.", + "xp_club_not_in_club": "Non sei in un club, oppure stai cercando di uscire dal club del quale sei capo.", + "xp_club_user_kick": "Utente {0} è stato buttato fuori dal club {1}", + "xp_club_user_kick_fail": "Errore nell applicazione. Non sei il capo, oppure l'utente non fa parte del club.", + "xp_club_user_banned": "Utente {0} è stato bannato dal club {1}.", + "xp_club_user_ban_fail": "Errore nel applicazione. Non sei il capo, oppure l'utente non è e non fa parte del club.", + "xp_club_user_unbanned": "Utente {0} è stato riammesso al club {1}.", + "xp_club_user_unban_fail": "Errore nel applicazione. Non sei il capo, oppure l'utente non è o fa parte del club.", + "xp_club_level_req_changed": "Livello richiesto del club cambiato a {0}", + "xp_club_level_req_change_error": "Errore nel cambiare livello richiesto.", + "xp_club_disbanded": "Il club {0} è stato sciolto", + "xp_club_disband_error": "Errore. Non sei in un club, oppure non sei il proprietario di esso.", + "xp_club_icon_error": "Nessun url di una immagine valida o non sei il proprietario del club.", + "xp_club_icon_set": "Nuova icona del club impostata.", + "xp_club_bans_for": "Ban per {0} club", + "xp_club_apps_for": "Candidati per {0} club", + "xp_club_leaderboard": "Classifica del club - pagina {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.ja-JP.json b/src/NadekoBot/_strings/ResponseStrings.ja-JP.json index 934754ad..8f37fc84 100644 --- a/src/NadekoBot/_strings/ResponseStrings.ja-JP.json +++ b/src/NadekoBot/_strings/ResponseStrings.ja-JP.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "そのベースはもう要求・破壊されました。", - "clashofclans_base_already_destroyed": "そのベースはもう破壊されました。", - "clashofclans_base_already_unclaimed": "そのベースは要求されていません。", - "clashofclans_base_destroyed": "{1}との対戦でベース#{0}を**破壊**しました。", - "clashofclans_base_unclaimed": "{0}は{2}との戦いで、未請求の塩基番号{1}を持っています\n", - "clashofclans_claimed_base": "{0}は{2}との戦いで塩基番号{1}を主張しました\n", - "clashofclans_claimed_other": "@ {0}あなたはすでに基本番号{1}を主張しています。あなたは新しいものを請求することはできません。\n", - "clashofclans_claim_expired": "{1}との対戦で@{0}の要求が失効しました。", - "clashofclans_enemy": "敵", - "clashofclans_info_about_war": "{0} との対戦に関する情報", - "clashofclans_invalid_base_number": "無効な城の番号\n", - "clashofclans_invalid_size": "有効な戦争サイズではありません。\n", - "clashofclans_list_active_wars": "アクティブな戦争を一覧表示する。\n", - "clashofclans_not_claimed": "請求されていない\n", - "clashofclans_not_partic": "あなたはこの戦争の参加者ではありません。\n", - "clashofclans_not_partic_or_destroyed": "@{0} \nあなたはその戦争に参加していないか、その基地はすでに破壊されています。", - "clashofclans_no_active_wars": "活動的な戦争はない", - "clashofclans_size": "サイズ", - "clashofclans_war_already_started": "{0}に対する大戦が既に始まった。", - "clashofclans_war_created": "戦争{0}が作成されました。\n", - "clashofclans_war_ended": "{0}との対戦が終わりました。", - "clashofclans_war_not_exist": "そのッ対戦は存在しません。", - "clashofclans_war_started": "{0}との対戦が始まりました!", "customreactions_all_stats_cleared": "すべてのカスタム反応がクリアされました。\n", "customreactions_deleted": "カスタム反応が削除されました。\n", "customreactions_insuff_perms": "権限が不十分です。グローバルカスタム反応のために必要なボットの所有権、サーバーカスタム反応の管理者。\n", @@ -804,5 +781,92 @@ "music_songs_shuffle_enable": "", "music_songs_shuffle_disable": "", "music_song_skips_after": "", - "administration_warnings_list": "" + "administration_warnings_list": "", + "customreactions_redacted_too_long": "", + "nsfw_blacklisted_tag_list": "", + "nsfw_blacklisted_tag": "", + "nsfw_blacklisted_tag_add": "", + "nsfw_blacklisted_tag_remove": "", + "gambling_waifu_gift": "", + "gambling_waifu_gift_shop": "", + "gambling_gifts": "", + "games_connect4_created": "", + "games_connect4_player_to_move": "", + "games_connect4_failed_to_start": "", + "games_connect4_draw": "", + "games_connect4_won": "", + "games_nunchi_joined": "", + "games_nunchi_ended": "", + "games_nunchi_ended_no_winner": "", + "games_nunchi_started": "", + "games_nunchi_round_ended": "", + "games_nunchi_round_ended_boot": "", + "games_nunchi_round_started": "", + "games_nunchi_next_number": "", + "games_nunchi_failed_to_start": "", + "games_nunchi_created": "", + "music_sad_enabled": "", + "music_sad_disabled": "", + "utility_stream_role_enabled": "", + "utility_stream_role_disabled": "", + "utility_stream_role_kw_set": "", + "utility_stream_role_kw_reset": "", + "utility_stream_role_bl_add": "", + "utility_stream_role_bl_add_fail": "", + "utility_stream_role_bl_rem": "", + "utility_stream_role_bl_rem_fail": "", + "utility_stream_role_wl_add": "", + "utility_stream_role_wl_add_fail": "", + "utility_stream_role_wl_rem": "", + "utility_stream_role_wl_rem_fail": "", + "utility_bot_config_edit_fail": "", + "utility_bot_config_edit_success": "", + "customreactions_crca_disabled": "", + "customreactions_crca_enabled": "", + "xp_server_level": "", + "xp_level": "", + "xp_club": "", + "xp_xp": "", + "xp_excluded": "", + "xp_not_excluded": "", + "xp_exclusion_list": "", + "xp_server_is_excluded": "", + "xp_server_is_not_excluded": "", + "xp_excluded_roles": "", + "xp_excluded_channels": "", + "xp_level_up_channel": "", + "xp_level_up_dm": "", + "xp_level_up_global": "", + "xp_role_reward_cleared": "", + "xp_role_reward_added": "", + "xp_role_rewards": "", + "xp_level_x": "", + "xp_no_role_rewards": "", + "xp_server_leaderboard": "", + "xp_global_leaderboard": "", + "xp_modified": "", + "xp_club_create_error": "", + "xp_club_created": "", + "xp_club_not_exists": "", + "xp_club_applied": "", + "xp_club_apply_error": "", + "xp_club_accepted": "", + "xp_club_accept_error": "", + "xp_club_left": "", + "xp_club_not_in_club": "", + "xp_club_user_kick": "", + "xp_club_user_kick_fail": "", + "xp_club_user_banned": "", + "xp_club_user_ban_fail": "", + "xp_club_user_unbanned": "", + "xp_club_user_unban_fail": "", + "xp_club_level_req_changed": "", + "xp_club_level_req_change_error": "", + "xp_club_disbanded": "", + "xp_club_disband_error": "", + "xp_club_icon_error": "", + "xp_club_icon_set": "", + "xp_club_bans_for": "", + "xp_club_apps_for": "", + "xp_club_leaderboard": "" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.ko-KR.json b/src/NadekoBot/_strings/ResponseStrings.ko-KR.json index 60c4cac6..188c7232 100644 --- a/src/NadekoBot/_strings/ResponseStrings.ko-KR.json +++ b/src/NadekoBot/_strings/ResponseStrings.ko-KR.json @@ -517,7 +517,7 @@ "searches_no_channel_found": "채널을 찾을 수 없습니다", "searches_no_results": "결과를 찾을 수 없습니다.", "searches_on_hold": "보류", - "searches_original_url": "원본 Url", + "searches_original_url": "원본 URL", "searches_osu_api_key": "osu! API키가 필요합니다.", "searches_osu_failed": "osu! 정보 검색에 실패했습니다.", "searches_over_x": "{0}개 이상의 이미지가 발견되었습니다. 무작위로 {0}개를 표시합니다.", @@ -533,12 +533,12 @@ "searches_rating": "레이팅", "searches_score": "점수:", "searches_search_for": "검색 쿼리:", - "searches_shorten_fail": "Url 단축에 실패했습니다.", - "searches_short_url": "Url 단축", + "searches_shorten_fail": "URL 단축에 실패했습니다.", + "searches_short_url": "URL 단축", "searches_something_went_wrong": "무언가가 잘못되었습니다.", "searches_specify_search_params": "검색어를 입력해주세요.", "searches_status": "상태", - "searches_store_url": "상점 url", + "searches_store_url": "상점 URL", "searches_streamer_offline": "스트리머 {0}은(는) 오프라인입니다.", "searches_streamer_online": "스트리머 {0}은(는) {1}명의 시청자와 함께 온라인입니다.", "searches_streams_following": "당신은 이 서버에서 {0}개의 스트리밍을 팔로우 중입니다.", @@ -555,7 +555,7 @@ "searches_translation": "번역 결과:", "searches_types": "종류", "searches_ud_error": "해당 용어에 대한 정의를 찾지 못했습니다.", - "searches_url": "Url", + "searches_url": "URL", "searches_viewers": "시청자", "searches_watching": "시청중", "searches_wikia_error": "해당 용어에 대한 특정 Wikia를 찾지 못했습니다.", @@ -791,7 +791,7 @@ "gambling_waifu_gift_shop": "와이프 선물 가게", "gambling_gifts": "선물", "games_connect4_created": "Connect4 게임을 생성했습니다. 플레이어의 참여를 기다리는 중입니다.", - "games_connect4_player_to_move": "", + "games_connect4_player_to_move": "이동할 플레이어: {0}", "games_connect4_failed_to_start": "아무도 게임에 참여하지 않아서 Connect4 게임 시작에 실패했습니다.", "games_connect4_draw": "Connect4 게임이 무승부로 끝났습니다.", "games_connect4_won": "{0}님이 {1}을 상대로 Connect4 게임을 이겼습니다.", @@ -806,8 +806,8 @@ "games_nunchi_failed_to_start": "충분한 플레이어가 없어서 눈치게임 시작에 실패했습니다.", "games_nunchi_created": "눈치게임이 생성되었습니다. 플레이어의 참여를 기다리는 중입니다.", "music_sad_enabled": "음악 재생이 완료되면 대기열에서 삭제됩니다.", - "music_sad_disabled": "", - "utility_stream_role_enabled": "", + "music_sad_disabled": "음악 재생이 완료되면 때 더 이상 대기열에서 삭제되지 않을 것입니다.", + "utility_stream_role_enabled": "{0} 역할을 가진 사용자가 스트리밍을 시작하면 {1} 역할을 부여하겠습니다", "utility_stream_role_disabled": "스트림 역할 기능이 비활성화되었습니다.", "utility_stream_role_kw_set": "이제 스트리머는 역할을 얻기위해 {0} 키워드가 필요합니다.", "utility_stream_role_kw_reset": "스트림 역할 키워드가 초기화되었습니다.", @@ -815,58 +815,58 @@ "utility_stream_role_bl_add_fail": "{0}은(는) 이미 블랙리스트에 추가됬습니다.", "utility_stream_role_bl_rem": "{0}은(는) 더 이상 블랙리스트에 속해있지 않습니다.", "utility_stream_role_bl_rem_fail": "{0}은(는) 블랙리스트에 속해있지 않습니다.", - "utility_stream_role_wl_add": "", + "utility_stream_role_wl_add": "사용자가 {0}이(가) 스트림 제목에 키워드가 없더라도 스트림 역할을받습니다.", "utility_stream_role_wl_add_fail": "{0}은(는) 이미 화이트리스트에 추가되었습니다.", - "utility_stream_role_wl_rem": "", - "utility_stream_role_wl_rem_fail": "", - "utility_bot_config_edit_fail": "", - "utility_bot_config_edit_success": "", - "customreactions_crca_disabled": "", - "customreactions_crca_enabled": "", + "utility_stream_role_wl_rem": "사용자 {0}은(는) 더 이상 화이트리스트에 속해있지 않습니다.", + "utility_stream_role_wl_rem_fail": "사용자 {0}은(는) 화이트리스트에 속해있지 않습니다.", + "utility_bot_config_edit_fail": "{0}을(를) {1} 값으로 설정하지 못했습니다.", + "utility_bot_config_edit_success": "{0} 의 값이 {1}(으)로 설정되었습니다.", + "customreactions_crca_disabled": "ID가 {0} 인 커스텀 리액션이 트리거 단어가 문장의 시작점에 있지 않으면 더 이상 트리거되지 않을것입니다.", + "customreactions_crca_enabled": "ID가 {0} 인 커스텀 리액션이 이제 문장의 아무 곳에 나 포함되어 있으면 트리거될것니다.", "xp_server_level": "서버 레벨", "xp_level": "레벨", "xp_club": "클럽", "xp_xp": "경험치", - "xp_excluded": "", - "xp_not_excluded": "", + "xp_excluded": "사용자 {0}이(가) 서버의 XP 시스템에서 제외되었습니다.", + "xp_not_excluded": "사용자 {0}은(는) 더 이상이 서버의 XP 시스템에서 제외되지 않습니다.", "xp_exclusion_list": "제외 목록", "xp_server_is_excluded": "이 서버가 제외 됐습니다", "xp_server_is_not_excluded": "이 서버가 제외되지 않습니다", - "xp_excluded_roles": "", - "xp_excluded_channels": "", - "xp_level_up_channel": "", - "xp_level_up_dm": "", + "xp_excluded_roles": "제외 된 역할", + "xp_excluded_channels": "제외 된 채널", + "xp_level_up_channel": "{0} 축하합니다! 당신은 레벨 {1} 달성했습니다!", + "xp_level_up_dm": "{0} 축하합니다! 당신은 {2} 서버에서 레벨 {1} 달성했습니다!", "xp_level_up_global": "{0}님 축하드립니다, 글로벌 레벨 {1}을(를) 달성했습니다.", "xp_role_reward_cleared": "{0} 레벨에 도달해도 역할을 얻지않습니다.", "xp_role_reward_added": "{0} 레벨에 도달한 유저는 {1} 역할을 얻게됩니다.", "xp_role_rewards": "역할 보상", "xp_level_x": "레벨 {0}", - "xp_no_role_rewards": "", + "xp_no_role_rewards": "이 페이지에는 역할 보상이 없습니다.", "xp_server_leaderboard": "서버 XP 리더보드", "xp_global_leaderboard": "글로벌 XP 리더보드", - "xp_modified": "", - "xp_club_create_error": "", - "xp_club_created": "", - "xp_club_not_exists": "", - "xp_club_applied": "", - "xp_club_apply_error": "", - "xp_club_accepted": "", + "xp_modified": "사용자 {0}의 서버 XP를 {1}(으)로 수정되었습니다.", + "xp_club_create_error": "클럽을 만들지 못했습니다. 레벨 5 이상하며 이미 클럽 회원이 아닌지 확인하십시오.", + "xp_club_created": "클럽 {0}이(가) 생성되었습니다!", + "xp_club_not_exists": "그 클럽은 존재하지 않습니다.", + "xp_club_applied": "{0} 클럽에 회원 가입을 신청하셨습니다.", + "xp_club_apply_error": "신청 오류. 당신은 이미 클럽 회원이거나 레벨 요구 사항을 충족하지 못했거나 클럽으로부터 밴 되었습니다.", + "xp_club_accepted": "클럽에 사용자 {0}을(를) 허용했습니다.", "xp_club_accept_error": "사용자를 찾을 수 없습니다", - "xp_club_left": "", - "xp_club_not_in_club": "", - "xp_club_user_kick": "", - "xp_club_user_kick_fail": "", - "xp_club_user_banned": "", - "xp_club_user_ban_fail": "", - "xp_club_user_unbanned": "", - "xp_club_user_unban_fail": "", - "xp_club_level_req_changed": "", - "xp_club_level_req_change_error": "", - "xp_club_disbanded": "", - "xp_club_disband_error": "", - "xp_club_icon_error": "", - "xp_club_icon_set": "", + "xp_club_left": "당신은 클럽을 떠났습니다..", + "xp_club_not_in_club": "당신은 클럽에 없거나 당신이 소유하고있는 클럽을 떠나려하고 있습니다.", + "xp_club_user_kick": "사용자 {0}이(가) {1} 클럽에서 퇴장당했습니다.", + "xp_club_user_kick_fail": "사용자 강제퇴장 오류. 당신은 클럽 주인이 아니거나 그 사용자가 클럽에 소속되어 있지 않습니다.", + "xp_club_user_banned": "{1} 클럽의 사용자 {0}이(가) 밴되었습니다.", + "xp_club_user_ban_fail": "사용자 밴에 실패했습니다. 당신은 클럽 주인이 아니거나 그 사용자가 클럽에 소속되어있지 않거나 신청자가 아닙니다.", + "xp_club_user_unbanned": "{1} 클럽의 사용자 {0}이(가) 밴 해제했습니다.", + "xp_club_user_unban_fail": "사용자 밴 해제에 실패했습니다. 당신은 클럽 주인이 아니거나 그 사용자가 클럽에 소속되어있지 않거나 신청자가 아닙니다.", + "xp_club_level_req_changed": "클럽의 레벨 요구 사항을 {0} (으)로 변경되었습니다.", + "xp_club_level_req_change_error": "레벨 요구 사항을 변경하지 못했습니다.", + "xp_club_disbanded": "클럽 {0}이 해산되었습니다", + "xp_club_disband_error": "오류. 당신은 클럽에 소속되지 않거나 당신의 클럽에 주인이 아닙니다.", + "xp_club_icon_error": "유효하지않은 이미지 URL이 아니거나 당신은 클럽 주인이 아닙니다.", + "xp_club_icon_set": "새 클럽 아이콘 설정되었습니다.", "xp_club_bans_for": "{0} 클럽 밴 목록", - "xp_club_apps_for": "", + "xp_club_apps_for": "{0} 클럽 신청자", "xp_club_leaderboard": "클럽 리더보드 - 페이지 {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.pl-PL.json b/src/NadekoBot/_strings/ResponseStrings.pl-PL.json index d1c79767..84b27ab7 100644 --- a/src/NadekoBot/_strings/ResponseStrings.pl-PL.json +++ b/src/NadekoBot/_strings/ResponseStrings.pl-PL.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "Ta baza została już zdobyta lub zniszczona.", - "clashofclans_base_already_destroyed": "Ta baza została już zniszczona.", - "clashofclans_base_already_unclaimed": "Ta baza nie jest zdobyta.", - "clashofclans_base_destroyed": "**ZNISZCZONO** bazę #{0} w wojnie przeciwko {1}", - "clashofclans_base_unclaimed": "{0} **POZBYŁ SIĘ** bazy #{1} w wojnie przeciwko {2}", - "clashofclans_claimed_base": "{0} zdobył bazę #{1} w wojnie przeciwko {2}", - "clashofclans_claimed_other": "@{0} Już zdobyłeś bazę #{1}. Nie możesz zdobyć nowej. ", - "clashofclans_claim_expired": "Wypowiedzenie wojny od @{0} przeciwko {1} straciło ważność.", - "clashofclans_enemy": "Wróg", - "clashofclans_info_about_war": "Informacje o wojnie przeciwko {0}", - "clashofclans_invalid_base_number": "Nieprawidłowy numer bazy.", - "clashofclans_invalid_size": "Nieprawidłowy rozmiar wojny.", - "clashofclans_list_active_wars": "Lista aktywnych wojen", - "clashofclans_not_claimed": "niezdobyta", - "clashofclans_not_partic": "Nie uczestniczysz w tej wojnie.", - "clashofclans_not_partic_or_destroyed": "@{0} Nie uczestniczysz w tej wojnie albo ta baza została już zniszczona.", - "clashofclans_no_active_wars": "Brak aktywnej wojny.", - "clashofclans_size": "Rozmiar", - "clashofclans_war_already_started": "Wojna przeciwko {0} już się zaczęła.", - "clashofclans_war_created": "Wojna przeciwko {0} stworzona.", - "clashofclans_war_ended": "Wojna przeciwko {0} zakończyła się.", - "clashofclans_war_not_exist": "Ta wojna nie istnieje.", - "clashofclans_war_started": "Wojna przeciwko {0} zaczęła się!", "customreactions_all_stats_cleared": "Wszystkie statystyki niestandardowych reakcji zostały wyczyszczone.", "customreactions_deleted": "Niestandardowe reakcje zostały usunięte", "customreactions_insuff_perms": "Brak wystarczających uprawnień. Wymagane są uprawnienia właściciela dla globalnych niestandardowych reakcji lub uprawnienia administratora dla serwerowych niestandardowych reakcji.", @@ -787,22 +764,109 @@ "administration_timezones_available": "Dostępne strefy czasowe.", "music_song_not_found": "Nie znaleziono piosenki.", "searches_define_unknown": "Nie można znaleźć definicji tego terminu.", - "utility_repeater_initial": "", + "utility_repeater_initial": "Pierwsza powtarzana wiadomość będzie wysłana za {0} godziny i {1} minut.", "utility_verbose_errors_enabled": "Niewłaściwie użyte komendy będą teraz wyświetlać błędy.", "utility_verbose_errors_disabled": "Niewłaściwie użyte komendy nie będą już pokazywać błędów.", - "permissions_perms_reset": "", - "permissions_trigger": "", - "administration_migration_error": "", - "searches_hex_invalid": "", - "permissions_global_perms_reset": "", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "" + "permissions_perms_reset": "Permisje tego serwera zostały zresetowane.", + "permissions_trigger": "Zezwolenia numer #{0} {1} zapobiegają tej akcji.", + "administration_migration_error": "Wystąpił błąd podczas migracji, sprawdź konsolę bota by dowiedzieć się więcej.", + "searches_hex_invalid": "Nieprawidłowy kolor.", + "permissions_global_perms_reset": "Globalne zezwolenia zostały zresetowane.", + "help_module": "Moduł: {0}", + "games_hangman_stopped": "Gra w wisielca zatrzymana.", + "music_autoplaying": "Auto-odtwarzanie.", + "music_queue_stopped": "Odtwarzacz jest zatrzymany. Użyj komendy {0} by zacząć odtwarzać.", + "music_removed_song_error": "Muzyka pod tym indexem nie istnieje", + "music_shuffling_playlist": "Mieszanie utworów", + "music_songs_shuffle_enable": "Od teraz utwory będą mieszane.", + "music_songs_shuffle_disable": "Utwory już nie będą mieszane", + "music_song_skips_after": "Piosenki zostaną pominięte ", + "administration_warnings_list": "Lista wszystkich ostrzeżonych uczestników serwera", + "customreactions_redacted_too_long": "Zredagowano ponieważ jest to za długie.", + "nsfw_blacklisted_tag_list": "Lista blacklistowanych tagów:", + "nsfw_blacklisted_tag": "Jeden, lub kilka tagów które użyłeś, są zblacklistowane", + "nsfw_blacklisted_tag_add": "Tag dla dorosłych {0} jest teraz od teraz na czarnej liście.", + "nsfw_blacklisted_tag_remove": "Tag dla dorosłych {0} został zdjęty z czarnej listy.", + "gambling_waifu_gift": "Podarowano {0} {1}.", + "gambling_waifu_gift_shop": "Sklep z prezentami dla waifu", + "gambling_gifts": "Prezenty", + "games_connect4_created": "Rozpoczęto rozgrywkę Connect4. Oczekiwanie na dołączenie gracza.", + "games_connect4_player_to_move": "Kolejka gracza: {0}", + "games_connect4_failed_to_start": "Gra w connect4 nie zaczeła się ponieważ nikt nie dołączył", + "games_connect4_draw": "Rozgrywka Connect4 zakończyła się remisem.", + "games_connect4_won": "{0} wygrał w Connect4 z {1}.", + "games_nunchi_joined": "Dołączono do rozgrywki Nunchi. {0} użytkowników dołączyło do tej pory.", + "games_nunchi_ended": "Zakończono rozgrywkę Nunchi. Wygrywa {0}", + "games_nunchi_ended_no_winner": "Gra w nunchi zakończyła się bez wygranej", + "games_nunchi_started": "Rozpoczęto rozgrywkę Nunchi z {0} uczestnikami.", + "games_nunchi_round_ended": "Zakończono rundę Nunchi. {0} odpada z gry.", + "games_nunchi_round_ended_boot": "Zakończono rundę Nunchi ze względu na koniec czasu na ruch niektórych użytkowników. Gracze wciąż w grze: {0}", + "games_nunchi_round_started": "Runda Nunchi rozpoczęta z {0} użytkownikami. Zacznijcie liczyć od {1}.", + "games_nunchi_next_number": "Numer zarejestrowany. Ostatnim numerem był {0}.", + "games_nunchi_failed_to_start": "Nieudało się zacząć gry w nunchi ponieważ nie było wystarczająco uczestników.", + "games_nunchi_created": "Gra w nunchi stworzona. Czekanie na graczy", + "music_sad_enabled": "Utwory zostaną usunięte z kolejki gdy przestaną być odtwarzane.", + "music_sad_disabled": "Utwory od teraz nie będą usuwane z kolejki gdy przestaną być odtwarzane.", + "utility_stream_role_enabled": "Kiedy użytkownik z rolą {0} zacznie streamować, dam im rolę {1}.", + "utility_stream_role_disabled": "Funkcja roli streamera została wyłączona.", + "utility_stream_role_kw_set": "Streamerzy teraz potrzebują słowa kluczowego {0} by otrzymać rolę.", + "utility_stream_role_kw_reset": "Słowo kluczowe roli streamera zostało zresetowane.", + "utility_stream_role_bl_add": "Użytkownik {0} nigdy nie otrzyma roli streamera.", + "utility_stream_role_bl_add_fail": "Użytkownik {0} już jest na czarnej liście.", + "utility_stream_role_bl_rem": "Użytkownik {0} został zdjęty z czarnej listy.", + "utility_stream_role_bl_rem_fail": "Użytkownik {0} nie jest na czarnej liście.", + "utility_stream_role_wl_add": "Użytkownik {0} otrzyma rolę streamera nawet jeśli nie mają oni słowa kluczonego w tytule streamu.", + "utility_stream_role_wl_add_fail": "Użytkownik {0} już jest na białej liście.", + "utility_stream_role_wl_rem": "Użytkownik {0} został zdjęty z białej listy.", + "utility_stream_role_wl_rem_fail": "Użytkownik {0} nie jest na białej liście.", + "utility_bot_config_edit_fail": "Nie udało się ustawić wartości {0} na {1}", + "utility_bot_config_edit_success": "Wartość {0} została ustawiona na {1}", + "customreactions_crca_disabled": "Niestandardowe reakcje o ID {0} nie będą od teraz wywoływane chyba że słowo wyzwalające jest na początku wiadomości.", + "customreactions_crca_enabled": "Niestandardowe reakcje o ID {0} będą od teraz wywoływane jeśli są one zawarte gdziekolwiek w wiadomości.", + "xp_server_level": "Poziom serwerowy", + "xp_level": "Poziom", + "xp_club": "Klub", + "xp_xp": "Doświadczenie", + "xp_excluded": "Wykluczono {0} z systemu XP na tym serwerze.", + "xp_not_excluded": "{0} nie jest od teraz wykluczony z systemu XP na tym serwerze.", + "xp_exclusion_list": "Lista Wykluczeń", + "xp_server_is_excluded": "Ten serwer jest wykluczony.", + "xp_server_is_not_excluded": "Ten serwer nie jest wykluczony.", + "xp_excluded_roles": "Wykluczone Role", + "xp_excluded_channels": "Wykluczone Kanały", + "xp_level_up_channel": "Gratulacje {0}, osiągnąłeś/-ęłaś poziom {1}!", + "xp_level_up_dm": "Gratulacje {0}, osiągnąłeś/-ęłaś poziom {1} na serwerze {2}!", + "xp_level_up_global": "Gratulacje {0}, osiągnąłeś/-ęłaś globalny poziom {1}!", + "xp_role_reward_cleared": "Poziom {0} nie będzie od teraz nagradzać rolą.", + "xp_role_reward_added": "Użytkownicy którzy osiągną poziom {0} otrzymają rolę {1}.", + "xp_role_rewards": "Role Nagrody", + "xp_level_x": "Poziom {0}", + "xp_no_role_rewards": "Brak ról nagród na tej stronie.", + "xp_server_leaderboard": "Tablica wyników XP serwera", + "xp_global_leaderboard": "Globalna tablica wyników XP", + "xp_modified": "Zmieniono serwerowe XP użytkownika {0} o {1}", + "xp_club_create_error": "Nie udało się utworzyć klubu. Upewnij się że masz poziom 5 lub wyższy i nie jesteś w żadnym klubie.", + "xp_club_created": "Klub {0} został pomyślnie utworzony!", + "xp_club_not_exists": "Ten klub nie istnieje", + "xp_club_applied": "Zaaplikowano o członkostwo w klubie {0}.", + "xp_club_apply_error": "Błąd podczas aplikowania. Jesteś już członkiem tego klubu, nie spełniasz wymagania poziomu, lub jesteś z niego zbanowany.", + "xp_club_accepted": "Przyjęto użytkownika {0} do klubu.", + "xp_club_accept_error": "Nie znaleziono użytkownika.", + "xp_club_left": "Wyszedłeś z klubu", + "xp_club_not_in_club": "Nie jesteś w żadnym klubie, lub próbujesz opuścić klub którego jesteś właścicielem.", + "xp_club_user_kick": "Użytkownik {0} został wyrzucony z klubu {1}.", + "xp_club_user_kick_fail": "Błąd podczas wyrzucania. Nie jesteś właścicielem klubu, lub ten użytkownik nie jest w twoim klubie.", + "xp_club_user_banned": "Zbanowano użytkownika {0} z klubu {1}.", + "xp_club_user_ban_fail": "Błąd podczas banowania. Nie jesteś właścicielem klubu, użytkownik nie jest w twoim klubie lub nigdy do niego nie aplikował.", + "xp_club_user_unbanned": "Odbanowano użytkownika {0} w klubie {1}.", + "xp_club_user_unban_fail": "Błąd podczas odbanowania. Nie jesteś właścicielem klubu albo ten użytkownik nie jest w nim ani do niego nie aplikuje.", + "xp_club_level_req_changed": "Zmieniono wymagania poziomu klubu na {0}", + "xp_club_level_req_change_error": "Nie udało się zmienić wymagań poziomu.", + "xp_club_disbanded": "Klub {0} został rozwiązany.", + "xp_club_disband_error": "Error. Nie jesteś w klubie/nie jesteś właścicielem klubu w którym jesteś", + "xp_club_icon_error": "Niewłaściwy kod url/nie jesteś właścicielem klubu", + "xp_club_icon_set": "Nowa ikona klubu ustawiona.", + "xp_club_bans_for": "Bany w klubie {0}", + "xp_club_apps_for": "Aplikujący do klubu {0}", + "xp_club_leaderboard": "Klubowa tablica wyników - strona {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.pt-BR.json b/src/NadekoBot/_strings/ResponseStrings.pt-BR.json index fb5ee165..85d572b1 100644 --- a/src/NadekoBot/_strings/ResponseStrings.pt-BR.json +++ b/src/NadekoBot/_strings/ResponseStrings.pt-BR.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "Esta base já foi reivindicada ou destruída.", - "clashofclans_base_already_destroyed": "Esta base já está destruída.", - "clashofclans_base_already_unclaimed": "Esta base não foi reivindicada.", - "clashofclans_base_destroyed": "Base #{0} **DESTRUÍDA** na guerra contra {1}", - "clashofclans_base_unclaimed": "{0} **RENUNCIOU** a base #{1} na guerra contra {2}", - "clashofclans_claimed_base": "{0} reivindicou a base #{1} durante a guerra contra {2}", - "clashofclans_claimed_other": "@{0} Você já reivindicou a base #{1}. Você não pode reivindicar uma nova.", - "clashofclans_claim_expired": "O pedido de guerra de @{0} contra {1} expirou.", - "clashofclans_enemy": "Inimigo\n", - "clashofclans_info_about_war": "Informações sobre a guerra contra {0}", - "clashofclans_invalid_base_number": "Número de base inválido.", - "clashofclans_invalid_size": "Não é um tamanho de guerra válido.", - "clashofclans_list_active_wars": "Lista de guerras ativas", - "clashofclans_not_claimed": "não reivindicado", - "clashofclans_not_partic": "Você não está participando nesta guerra.", - "clashofclans_not_partic_or_destroyed": "@{0} Você não está participando nessa guerra, ou essa base já está destruída.", - "clashofclans_no_active_wars": "Nenhuma guerra ativa.", - "clashofclans_size": "Tamanho", - "clashofclans_war_already_started": "Guerra contra {0} já começou.", - "clashofclans_war_created": "Guerra contra {0} criada.", - "clashofclans_war_ended": "Guerra contra {0} acabou.", - "clashofclans_war_not_exist": "Essa guerra não existe.", - "clashofclans_war_started": "Guerra contra {0} iniciada!", "customreactions_all_stats_cleared": "Todos os status de reações personalizadas limpos.", "customreactions_deleted": "Reação personalizada deletada", "customreactions_insuff_perms": "Permissão Insuficiente. Precisa ser dono do bot para reações personalizadas globais, e permissão de administrador para reações personalizadas no servidor.", @@ -283,7 +260,7 @@ "help_cmdlist_donate": "Você pode dar suporte ao projeto no Patreon: <{0}> ou Paypal: <{1}>", "help_cmd_and_alias": "Comandos e abreviações", "help_commandlist_regen": "Lista de Comandos Regenerada.", - "help_commands_instr": "Digite `{0}h NomeDoComando` para ver a ajuda para o comando especificado. Ex: `{0}h >8ball`", + "help_commands_instr": "Digite `{0}h NomeDoComando` para ver a ajuda para o comando especificado. Ex: `{0}h {0}8ball`", "help_command_not_found": "Não consigo encontrar esse comando. Por favor, verifique se esse comando existe antes de tentar de novo.", "help_desc": "Descrição", "help_donate": "Você pode dar suporte ao projeto da NadekoBot por\nPatreon <{0}> ou\nPaypal <{1}>\nNão esqueça de deixar seu nome ou id do discord na mensagem.\n**Obrigado**♥️", @@ -311,7 +288,7 @@ "gambling_dice_rolled": "rolou {0}", "gambling_dice_rolled_num": "Dados rolados: {0}", "gambling_race_failed_starting": "Falha ao iniciar a corrida. Outra corrida provavelmente está em andamento.", - "gambling_race_not_exist": "Nenhuma raça existe neste servidor.", + "gambling_race_not_exist": "Não existem corridas neste servidor.", "gambling_second_larger_than_first": "O segundo número deve ser maior que o primeiro.", "gambling_changes_of_heart": "Mudanças de ideia", "gambling_claimed_by": "Reivindicado por", @@ -396,7 +373,7 @@ "music_autoplay_enabled": "Autoplay habilitado.", "music_defvol_set": "Volume padrão definido para {0}%", "music_dir_queue_complete": "Diretório adicionado à fila.", - "music_fairplay": "fairplay", + "music_fairplay": "Fairplay", "music_finished_song": "Música concluída.", "music_fp_disabled": "Fair play desativado.", "music_fp_enabled": "Fair play ativado.", @@ -414,7 +391,7 @@ "music_no_search_results": "Nenhum resultado para a busca.", "music_paused": "Música pausada.", "music_player_queue": "Fila de Músicas - Página {0}/{1}", - "music_playing_song": "Tocando Musica", + "music_playing_song": "Tocando Musica #{0}", "music_playlists": "`#{0}` - **{1}** by *{2}* ({3} músicas)", "music_playlists_page": "Página {0} de Playlists Salvas", "music_playlist_deleted": "Playlist deletada.", @@ -632,7 +609,7 @@ "utility_presence_txt": "{0} Servidores\n{1} Canais de Texto\n{2} Canais de Voz", "utility_quotes_deleted": "Todas as citações com a palavra-chave {0} foram deletadas.", "utility_quotes_page": "Página {0} de citações", - "utility_quotes_page_none": "Nenhuma citação nesta página.", + "utility_quotes_page_none": "Nenhuma citação encontrada nessa página.", "utility_quotes_remove_none": "Nenhuma citação que você possa remover foi encontrada.", "utility_quote_added": "Citação adicionada", "utility_quote_deleted": "Citação #{0} Deletada.", @@ -657,7 +634,7 @@ "utility_server_info": "Informações do Servidor", "utility_shard": "Shard", "utility_shard_stats": "Status do Shard", - "utility_shard_stats_txt": "Shard **#{0}** está no estado {1} com {2} servidores", + "utility_shard_stats_txt": "Shard **#{0}** está no estado {1} com {2} servidores - {3} atrás", "utility_showemojis": "**Nome:** {0} **Link:** {1}", "utility_showemojis_none": "Nenhum emoji especial encontrado.", "utility_stats_songs": "Tocando {0} músicas, {1} na fila.", @@ -804,5 +781,92 @@ "music_songs_shuffle_enable": "Músicas serão embaralhadas a partir de agora.", "music_songs_shuffle_disable": "Músicas não serão mais embaralhadas.", "music_song_skips_after": "Músicas serão puladas depois de {0}", - "administration_warnings_list": "Lista de todos os usuários advertidos neste server" + "administration_warnings_list": "Lista de todos os usuários advertidos neste server", + "customreactions_redacted_too_long": "Redigido porque é muito longo.", + "nsfw_blacklisted_tag_list": "Lista de novas tags na lista negra:", + "nsfw_blacklisted_tag": "Uma ou mais tags que você usou estão na lista negra", + "nsfw_blacklisted_tag_add": "Tag nsfw {0} agora está na lista negra.", + "nsfw_blacklisted_tag_remove": "Tag nsfw {0} não está mais na lista negra.", + "gambling_waifu_gift": "Presenteou {0} a {1}", + "gambling_waifu_gift_shop": "Loja de presentas para waifu", + "gambling_gifts": "Presentes", + "games_connect4_created": "Jogo de Connect4 criado. Aguardando a entrada de um jogador.", + "games_connect4_player_to_move": "Jogador a se mover: {0}", + "games_connect4_failed_to_start": "Jogo de Connect4 falhou em começar pois ninguém entrou.", + "games_connect4_draw": "Jogo de Connect4 terminou em empate.", + "games_connect4_won": "{0} venceu o jogo de Connect4 contra {1}.", + "games_nunchi_joined": "Entrou em um jogo de nunchi. {0} usuários entraram até agora.", + "games_nunchi_ended": "Jogo de nunchi terminou. {0} venceu", + "games_nunchi_ended_no_winner": "Jogo de nunchi terminou sem vencedores.", + "games_nunchi_started": "Jogo de nunchi começou com {0} participantes.", + "games_nunchi_round_ended": "Round de nunchi terminado. {0} está fora do jogo.", + "games_nunchi_round_ended_boot": "Round de nunchi terminado devido ao timeout de alguns usuários. Estes usuários ainda estão no jogo: {0}", + "games_nunchi_round_started": "Round de nunchi começou com {0} usuários. Comece contando do número {1}.", + "games_nunchi_next_number": "Número registrado. O último número era {0}.", + "games_nunchi_failed_to_start": "Nunchi falhou em começar pois não havia participantes o suficiente.", + "games_nunchi_created": "Jogo de nunchi criado. Aguardando a entrada de usuários.", + "music_sad_enabled": "Músicas serão deletadas da fila de músicas quando elas terminarem de tocar.", + "music_sad_disabled": "Músicas não serão mais deletadas da fila de músicas quando elas terminarem de tocar.", + "utility_stream_role_enabled": "Quando um usuário da role {0} começar a streamar, eu darei a ele/ela a role {1}.", + "utility_stream_role_disabled": "Role de stream foi desabilitada.", + "utility_stream_role_kw_set": "Streamers agora precisam da keyword {0} para receber a role.", + "utility_stream_role_kw_reset": "Keyword para a role de stream resetada.", + "utility_stream_role_bl_add": "Usuário {0} nunca irá receber a role de stream.", + "utility_stream_role_bl_add_fail": "Usuário {0} já está na lista negra.", + "utility_stream_role_bl_rem": "Usuário {0} não está mais na lista negra.", + "utility_stream_role_bl_rem_fail": "Usuário {0} não está na lista negra.", + "utility_stream_role_wl_add": "Usuário {0} irá receber a role de stream mesmo se ele/ela não possui a keyword no título da stream.", + "utility_stream_role_wl_add_fail": "Usuário {0} já está na lista branca.", + "utility_stream_role_wl_rem": "Usuário {0} não está mais na lista branca.", + "utility_stream_role_wl_rem_fail": "Usuário {0} não está na lista branca.", + "utility_bot_config_edit_fail": "Falha em configurar o valor {1} para {0}", + "utility_bot_config_edit_success": "O valor de {0} foi configurado para {1}", + "customreactions_crca_disabled": "Reações customizadas com id {0} não irão mais acionar ao menos que seja uma palavra de gatilho no início.", + "customreactions_crca_enabled": "Reações customizadas com id {0} irá desencadear se contiver qualquer lugar na frase.", + "xp_server_level": "Nível do servidor", + "xp_level": "Nível", + "xp_club": "Clube", + "xp_xp": "Experiência", + "xp_excluded": "{0} foi excluído do sistema de XP deste server.", + "xp_not_excluded": "{0} não está mais excluído do sistema de XP neste server.", + "xp_exclusion_list": "Lista de Exclusão", + "xp_server_is_excluded": "Este server está excluído.", + "xp_server_is_not_excluded": "Este server não está excluído.", + "xp_excluded_roles": "Roles excluídas", + "xp_excluded_channels": "Canais excluídos", + "xp_level_up_channel": "Parabéns {0}, você alcançou o nível {1}!", + "xp_level_up_dm": "Parabéns {0}, você alcançou o nível {1} no server {2}!", + "xp_level_up_global": "Parabéns {0}, você alcançou o nível {1} global!", + "xp_role_reward_cleared": "Nível {0} não irá mais recompensar com uma role.", + "xp_role_reward_added": "Usuários que alcancem o nível {0} irão receber a role {1}", + "xp_role_rewards": "Recompensas de Role", + "xp_level_x": "Nível {0}", + "xp_no_role_rewards": "Não há recompensas de role nesta página.", + "xp_server_leaderboard": "Leaderboard de XP do server", + "xp_global_leaderboard": "Leaderboard de XP global", + "xp_modified": "XP do servidor modificada por {1} para o usuário {0}", + "xp_club_create_error": "Falha em criar o clube. Certifique-se que você está acima do nível 5 e já não é membro de um clube.", + "xp_club_created": "Clube {0} criado com sucesso!", + "xp_club_not_exists": "Esse clube não existe.", + "xp_club_applied": "Você solicitou adesão no clube {0}", + "xp_club_apply_error": "Erro ao se candidatar. Você ou já é membro de um clube, ou não possui o requerimento mínimo de nível, ou foi banido deste clube.", + "xp_club_accepted": "Usuário {0} aceito no clube.", + "xp_club_accept_error": "Usuário não encontrado", + "xp_club_left": "Você saiu do clube.", + "xp_club_not_in_club": "Você não está em um clube, ou está tentando sair do clube que você é o dono.", + "xp_club_user_kick": "Usuário {0} foi chutado do clube {1}.", + "xp_club_user_kick_fail": "Erro ao chutar. Você não é o dono do clube, ou este usuário não está no seu clube.", + "xp_club_user_banned": "Baniu usuário {0} do clube {1}.", + "xp_club_user_ban_fail": "Falha em banir. Você não é o dono do clube, ou este usuário não está no seu clube ou não é um candidato a ele.", + "xp_club_user_unbanned": "Desbaniu usuário {0} no clube {1}.", + "xp_club_user_unban_fail": "Falha em desbanir. Você não é o dono do clube, ou este usuário não está no seu clube ou não é um candidato a ele.", + "xp_club_level_req_changed": "Requerimento de nível do clube mudado para {0}", + "xp_club_level_req_change_error": "Falha em mudar o requerimento de nível", + "xp_club_disbanded": "Clube {0} foi dissolvido", + "xp_club_disband_error": "Erro. Você não está em um clube ou não é o dono do seu clube.", + "xp_club_icon_error": "Não é um url válido de imagem ou você não é o dono do seu clube.", + "xp_club_icon_set": "Novo set de ícones para o clube.", + "xp_club_bans_for": "Bans pro clube {0}", + "xp_club_apps_for": "Candidatos ao clube {0}", + "xp_club_leaderboard": "Leaderboard de Clubes - página {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.ro-RO.json b/src/NadekoBot/_strings/ResponseStrings.ro-RO.json index 3c4720c8..0869ec11 100644 --- a/src/NadekoBot/_strings/ResponseStrings.ro-RO.json +++ b/src/NadekoBot/_strings/ResponseStrings.ro-RO.json @@ -1,38 +1,15 @@ { - "clashofclans_base_already_claimed": "Baza aceea este deja revendicată sau distrusă.", - "clashofclans_base_already_destroyed": "Baza aceea este deja distrusă.", - "clashofclans_base_already_unclaimed": "Baza aceea nu este revendicată.", - "clashofclans_base_destroyed": "**DISTRUS** baza #{0} intr-un razboi contra {1} ", - "clashofclans_base_unclaimed": "{0} a **NEREVENDICAT** baza #{1} intr-un razboi contra {2} ", - "clashofclans_claimed_base": "{0} a revendicat o baza #{1} intr-un razboi contra {2}", - "clashofclans_claimed_other": "@{0} Deja ai revendicat baza #{1}. Nu poți revendica una nouă.", - "clashofclans_claim_expired": "Revendicarea lui @{0} în războiul împotriva lui {1} a expirat.", - "clashofclans_enemy": "Inamic", - "clashofclans_info_about_war": "Informație despre războiul contra {0} ", - "clashofclans_invalid_base_number": "Număr de bază invalid.", - "clashofclans_invalid_size": "Dimensiunea războiului invalid.", - "clashofclans_list_active_wars": "Lista războaielor în desfășurare", - "clashofclans_not_claimed": "nerevendicat", - "clashofclans_not_partic": "Nu participi în acel război.", - "clashofclans_not_partic_or_destroyed": "@{0} Nu participi in războiul acela, sau baza aceea este deja distrusă.", - "clashofclans_no_active_wars": "Nici un război în desfășurare.", - "clashofclans_size": "Mărime", - "clashofclans_war_already_started": "Războiul împotriva {0} a început deja.", - "clashofclans_war_created": "Război împotriva {0} creat.", - "clashofclans_war_ended": "Război împotriva {0} sfârșit.", - "clashofclans_war_not_exist": "Acel război nu există.", - "clashofclans_war_started": "Războiul împotriva {0} a început!", - "customreactions_all_stats_cleared": "Toate reacțiile custom au fost șterse.", - "customreactions_deleted": "Reacție Custom ștearsă", - "customreactions_insuff_perms": "Permisiuni insuficiente. Necesită deținerea bot-ului pentru reacții custom globale, și administrator pentru reacții custom locale.", - "customreactions_list_all": "Lista tuturor reacțiilor custom", - "customreactions_name": "Reacții Custom", - "customreactions_new_cust_react": "Reacție Custom Nouă", - "customreactions_no_found": "Nici o reacție custom găsită.", - "customreactions_no_found_id": "Nici o reacție cu acel ID găsită.", + "customreactions_all_stats_cleared": "Toate reacțiile personalizate au fost șterse.", + "customreactions_deleted": "Reacție Personalizată ștearsă", + "customreactions_insuff_perms": "Permisiuni insuficiente. Necesită deținerea bot-ului pentru reacții personalizate globale și administrator pentru reacții personalizate locale.", + "customreactions_list_all": "Lista tuturor reacțiilor personalizate\n", + "customreactions_name": "Reacții Personalizate", + "customreactions_new_cust_react": "Reacție Personalizată Nouă", + "customreactions_no_found": "Nici o reacție personalizată găsită.", + "customreactions_no_found_id": "Nici o reacție personalizată cu acel ID găsită.", "customreactions_response": "Răspuns", - "customreactions_stats": "Statisticile Reacțiilor Custom", - "customreactions_stats_cleared": "Statistici șterse pentru reacția custom {0}.", + "customreactions_stats": "Statisticile Reacțiilor Personalizate", + "customreactions_stats_cleared": "Statistici șterse pentru reacția personalizată {0}.", "customreactions_stats_not_found": "Nu a fost găsită nicio statistică pentru acel declanșator, nicio acțiune nu a fost luată.", "customreactions_trigger": "Declanșator", "nsfw_autohentai_stopped": "Autohentai oprit.", @@ -40,42 +17,42 @@ "pokemon_already_fainted": "{0} a leșinat deja.", "pokemon_already_full": "{0} are HP-ul plin deja.", "pokemon_already_that_type": "Tipul tău este deja {0}", - "pokemon_attack": "folosit {0}{1} pe {2}{3} pentru {4} daune.", + "pokemon_attack": "S-a folosit {0}{1} pe {2}{3} pentru {4} daune.", "pokemon_cant_attack_again": "Nu poți să ataci din nou fara retorsiune!", - "pokemon_cant_attack_yourself": "Nu poți să te ataci pe tine însuși.", + "pokemon_cant_attack_yourself": "Nu poți să te ataci pe tine însuți.", "pokemon_fainted": "{0} a leșinat!", - "pokemon_healed": "vindecat {0} cu un/o {1} ", + "pokemon_healed": "vindecat {0} cu {1}", "pokemon_hp_remaining": "{0} are {1} HP rămas.", - "pokemon_invalid_move": "Nu poți folosi {0}. Scrie `{1}ml` să vezi o listă de mişcări pe care le poţi folosi. ", + "pokemon_invalid_move": "Nu poți folosi {0}. Scrie `{1}ml` să vezi o listă de mişcări pe care le poţi folosi.", "pokemon_moves": "Lista mișcărilor pentru tipul {0}", - "pokemon_not_effective": "Nu are efect.", + "pokemon_not_effective": "Nu este efectiv.", "pokemon_no_currency": "Nu ai destui {0}", - "pokemon_revive_other": "reînviat {0} cu o {1}", - "pokemon_revive_yourself": "Te-ai reînviat cu o {0}", - "pokemon_settype_success": "Tipul tău a fost schimbat din {0} pentru o {1}", - "pokemon_somewhat_effective": "Este oarecum efectiv", + "pokemon_revive_other": "reînviat {0} cu {1}", + "pokemon_revive_yourself": "Te-ai reînviat cu {0}", + "pokemon_settype_success": "Tipul tău a fost schimbat din {0} pentru {1}", + "pokemon_somewhat_effective": "Este oarecum efectiv.", "pokemon_super_effective": "Este foarte efectiv!", "pokemon_too_many_moves": "Ai folosit prea multe mișcări una după alta, nu te mai poți mișca!", "pokemon_type_of_user": "Tipul lui {0} este {1}", "pokemon_user_not_found": "Jucătorul nu a fost găsit.", - "pokemon_you_fainted": "Ai leșinat, nu poți să te miști!", + "pokemon_you_fainted": "Ai leșinat, deci nu poți să te miști!", "administration_aar_disabled": "**Auto atribuire rol** la intrarea utilizatorului este acum **dezactivată**", "administration_aar_enabled": "**Auto atribuire rol** la intrarea utilizatorului este acum **activată**", "administration_attachments": "Atașamente", "administration_avatar_changed": "Avatar schimbat", - "administration_bandm": "Ai fost banat din server-ul {0}\nCauză: {1}", - "administration_banned_pl": "bannați", - "administration_banned_user": "Utilizator bannat", + "administration_bandm": "Nu îți mai este permisă intrarea in server-ul {0}\nCauză: {1}", + "administration_banned_pl": "utilizatori interziși din server", + "administration_banned_user": "Utilizator interzis din server", "administration_bot_name": "Numele bot-ului schimbat în {0}", "administration_bot_status": "Statusul bot-ului schimbat în {0}", "administration_byedel_off": "Ștergerea automată a mesajelor de la revedere a fost dezactivată.", - "administration_byedel_on": "Mesajele de la revedere o sa fie șterse după {0} secunde.", - "administration_byemsg_cur": "Mesajul actual de la revedere: {0} ", - "administration_byemsg_enable": "Permite mesaje de la revedere scriind {0} ", - "administration_byemsg_new": "Mesaj nou de la revedere făcut.", + "administration_byedel_on": "Mesajele de la revedere vor fi șterse după {0} secunde.", + "administration_byemsg_cur": "Mesajul actual de la revedere: {0}", + "administration_byemsg_enable": "Permite mesajele de la revedere scriind {0}", + "administration_byemsg_new": "Mesaj nou de la revedere setat.", "administration_bye_off": "Anunțuri de la revedere dezactivate.", "administration_bye_on": "Anunțuri de la revedere sunt activate in canalul acesta.", - "administration_ch_name_change": "Numele Canaluli Schimbat", + "administration_ch_name_change": "Numele Canalului Schimbat", "administration_ch_old_name": "Nume vechi\n", "administration_ch_topic_change": "Subiectul Canalului Schimbat", "administration_cleaned_up": "Curăţat.", @@ -89,29 +66,29 @@ "administration_delmsg_on": "Ștergerea automată a invocărilor de comandă reușite a fost pornită.", "administration_deltextchan": "Canalul de text {0} șters.", "administration_delvoich": "Canalul de voce {0} șters.", - "administration_dm_from": "DM de la", + "administration_dm_from": "Mesaj privat de la", "administration_donadd": "Un nou donator a fost adăugat cu succes. Total donat de la acest utilizator: {0} 👑 ", "administration_donators": "Mulțumesc oamenilor listați mai jos pentru că au făcut ca acest proiect să aibă loc!", - "administration_fwall_start": "Voi transmite DM-uri la toți proprietarii.", - "administration_fwall_stop": "Voi transmite DM-uri numai la primul proprietar.", - "administration_fwdm_start": "Voi transmite DM-uri de acum înainte.", - "administration_fwdm_stop": "Nu voi transmite DM-uri de acum înainte.", + "administration_fwall_start": "Voi transmite mai departe mesaje private către toți proprietarii.", + "administration_fwall_stop": "Voi transmite mai departe mesaje private numai către primul proprietar.", + "administration_fwdm_start": "Voi transmite mai departe mesaje private de acum înainte.", + "administration_fwdm_stop": "Nu voi transmite mai departe mesaje private de acum înainte.", "administration_greetdel_off": "Ștergerea automată a mesajelor de bun venit a fost dezactivată.", "administration_greetdel_on": "Mesajele de bun venit vor fi șterse după {0} secunde.", - "administration_greetdmmsg_cur": "Mesajul curent de bun venit: {0}", - "administration_greetdmmsg_enable": "Activează measje de bun venit prin DM scriind {0} ", - "administration_greetdmmsg_new": "Mesaj innoit de bun venit prin DM setat.", - "administration_greetdm_off": "Mesaje de întâmpinare prin DM au fost dezactivate.", - "administration_greetdm_on": "Mesaje de bun venit prin DM au fost activate.", + "administration_greetdmmsg_cur": "Actualul mesaj privat de bun venit: {0}", + "administration_greetdmmsg_enable": "Activează mesaje private de bun venit scriind {0} ", + "administration_greetdmmsg_new": "Schimbat noul mesaj de bun venit prin mesaj privat.", + "administration_greetdm_off": "Mesaje private de întâmpinare au fost dezactivate.", + "administration_greetdm_on": "Mesaje private de bun venit au fost activate.", "administration_greetmsg_cur": "Mesajul actual de bun venit: {0} ", "administration_greetmsg_enable": "Activează mesaje de bun venit scriind {0} ", - "administration_greetmsg_new": "Mesaj innoit de bun venit setat.", + "administration_greetmsg_new": "Setat mesaj nou de bun venit.", "administration_greet_off": "Anunțuri de bun venit dezactivate.", "administration_greet_on": "Anunțuri de bun venit sunt activate în canalul acesta. ", - "administration_hierarchy": "Nu poți folosi această comandă pe alți utilizatori cu un grad mai mare sau egal ca altău in ierarhia de roluri.", + "administration_hierarchy": "Nu poți folosi această comandă pe alți utilizatori cu un grad mai mare sau egal ca al tău in ierarhia de roluri.", "administration_images_loaded": "Imagini incărcate după {0} secunde!", "administration_invalid_format": "Formatul de intrare este invalid.", - "administration_invalid_params": "Parametrii nevalizi", + "administration_invalid_params": "Parametrii invalizi", "administration_joined": "{0} a intrat în {1}", "administration_kickdm": "Ai fost dat afară din {0} server.\nDin cauză că: {1}", "administration_kicked_user": "Utilizator dat afară", @@ -165,12 +142,12 @@ "administration_rc_not_exist": "Rolul acela nu există.", "administration_rc_params": "Parametrii specificați nu sunt valizi.", "administration_rc_perms": "O eroare a luat loc din cauza unei culori invalide sau din cauza permisiunilor insuficiente.", - "administration_remrole": "Rolul a fost dat jos cu success {0} de la utilizator {1}", + "administration_remrole": "Rolul {0} a fost dat jos cu success de la utilizator {1}", "administration_remrole_err": "Nu am putut să dau jos rolul. Nu am permisiuni suficiente.", "administration_renrole": "Rol redenumit.", "administration_renrole_err": "Redenumirea rolului a fost nereușită. Nu am permisii suficiente.", "administration_renrole_perms": "Nu poți edita un rol mai mare decât al tău \n", - "administration_reprm": "Am eliminat mesajul de joc: {0}", + "administration_reprm": "Am eliminat statusul de joc: {0}", "administration_role_added": "Rolul {0} a fost adăugat listei.", "administration_role_clean": "{0} nu a fost găsit. Curățat.", "administration_role_in_list": "Rolul {0} este deja în listă.", @@ -215,7 +192,7 @@ "administration_username_changed": "Nume de utilizator schimbat", "administration_users": "Utilizatori", "administration_user_banned": "Utilizator bannat", - "administration_user_chat_mute": "{0} a fost **mut** din scris.", + "administration_user_chat_mute": "{0} a fost **amuțit** din scris.", "administration_user_chat_unmute": "{0} a fost **dezamuțit** de la chat.", "administration_user_joined": "Utilizator a intrat", "administration_user_left": "Utilizator a ieșit", @@ -225,7 +202,7 @@ "administration_user_status_change": "{0} este acum {1}", "administration_user_unmuted": "{0} a fost **dezamuțit** de la text si chat vocal.", "administration_user_vjoined": "{0} a intrat {1} canal de voce.", - "administration_user_vleft": "{0} a ieșit {1} canal de voce.", + "administration_user_vleft": "{0} a ieșit din canalul de voce (1).", "administration_user_vmoved": "{0} mutat de la canalul de voce {1} la {2}.", "administration_user_voice_mute": "{0} a fost **amuțit vocal**.", "administration_user_voice_unmute": "{0} a fost **dezamuțit vocal**.", @@ -234,18 +211,18 @@ "administration_vt_disabled": "Dezactivată caracteristica vocal + text", "administration_vt_enabled": "Activată caracteristica vocal + text", "administration_vt_exit": "Nu am permisiunea **Manage Roles** și/sau **Manage Channels**, deci nu pot rula voce + text pe serverul {0}.", - "administration_vt_no_admin": "Activezi/dezactivezi aceasta caracteristica si **Nu am permisiuni de ADMINISTRATOR**. Asta poate cauza probleme, si va trebui sa stergi toate canalele de text dupa.", - "administration_vt_perms": "Am nevoie de cel putin permisiunile de **gestionare roluri** si **gestionare canale** pentru a activa aceasta caracteristica. (preferabil permisie Administrator)", + "administration_vt_no_admin": "Activezi/dezactivezi această caracteristică si **Nu am permisiuni de ADMINISTRATOR**. Asta poate cauza probleme, si va trebui sa cureți după canalele de text singur.", + "administration_vt_perms": "Am nevoie de cel putin permisiunile de **gestionare roluri** si **gestionare canale** pentru a activa aceasta caracteristică. (preferabil permisie Administrator)", "administration_xmuted_text": "Utilizatorul {0} de la chatul de text.", "administration_xmuted_text_and_voice": "Utilizatorul {0} de la chatul vocal și de text.", "administration_xmuted_voice": "Utilizatorul {0} de la chatul vocal.", "administration_sbdm": "Ai fost banat-ușor din serverul {0}.\nMotivul: {1}", - "administration_user_unbanned": "Utilizator bannat.", - "administration_migration_done": "Migrare terminata!", + "administration_user_unbanned": "Ridicată interdicția utilizatorului de a intra.", + "administration_migration_done": "Migrare terminată!", "administration_presence_updates": "Actualizări de prezență.", "administration_sb_user": "Utilizator banat-ușor.", "gambling_awarded": "A acordat {0} la {1}.", - "gambling_better_luck": "Mai mult noroc următoarea dată!", + "gambling_better_luck": "Mai mult noroc următoarea dată! ^_^", "gambling_br_win": "Bravo! Ai câștigat {0} pentru că ai rulat mai mult de {1}", "gambling_deck_reshuffled": "Pachet reamestecat.", "gambling_flipped": "aruncat {0}", @@ -263,7 +240,7 @@ "gambling_min_bet_limit": "Nu poţi paria mai puţin decat {0}", "gambling_not_enough": "Nu ai destule {0}", "gambling_no_more_cards": "Nu mai sunt cărți în pachet.", - "gambling_raffled_user": "Utilizator raffled", + "gambling_raffled_user": "Utilizator luat din tombolă", "gambling_roll": "Ai aruncat {0}.", "gambling_slot_bet": "Pariu", "gambling_slot_jackpot": "UAAAAAAUUU!!! Felicitări!!! x{0}", @@ -271,7 +248,7 @@ "gambling_slot_three": "Wow! Norocos! Trei de același tip! x{0}", "gambling_slot_two": "Bună treabă! Două {0} - pariat x{1}", "gambling_slot_won": "Câștigat", - "gambling_sneakygamestatus_desc": "Utilizatorii trebuie să tasteze un cod secret pentru a primii {0}.\nDureaza {1} secunde. Nu spune nimănui. Shhh.", + "gambling_sneakygamestatus_desc": "Utilizatorii trebuie să tasteze un cod secret pentru a primi {0}.\nDureaza {1} secunde. Nu spune nimănui. Shhh.", "gambling_sneakygamestatus_end": "Evenimentul SneakyGame s-a încheiat. {0} utilizatori au primit recompensa.", "gambling_sneakygamestatus_title": "Evenimentul SneakyGameStatus a început", "gambling_tails": "Pajură", @@ -280,10 +257,10 @@ "help_back_to_toc": "Înapoi la cuprins.", "help_bot_owner_only": "Numai deținătorul bot-ului.", "help_channel_permission": "Necesită permisia {0} a canalului.", - "help_cmdlist_donate": "Poti sustine proiectul pe patreon: <{0}> sau paypal: <{1}>", + "help_cmdlist_donate": "Poti susține proiectul pe patreon: <{0}> sau paypal: <{1}>", "help_cmd_and_alias": "Comenzi si abrevieri", "help_commandlist_regen": "Lista de comenzi generata.", - "help_commands_instr": "Tasteaza `{0}h NumeleComenzii` pentru a vedea informatii legate de acea comanda. ex. `{0}h >8ball`", + "help_commands_instr": "Tastează `{0}h NumeleComenzii` pentru a vedea informații legate de acea comandă. ex. `{0}h {0}8ball`", "help_command_not_found": "Nu gasesc acea comanda. Te rog asigura-te ca exista comanda inainte de a incerca din nou.", "help_desc": "Descriere", "help_donate": "Poți susține proiectul NadekoBot pe\nPatreon <{0}> sau\nPaypal <{1}>\nNu uita să iți lași numele de Discord sau ID-ul în mesaj.\n\n**Mulțumesc** ♥️", @@ -296,7 +273,7 @@ "help_table_of_contents": "Cuprins", "help_usage": "Folosință", "nsfw_autohentai_started": "Autohentai pornit. Voi posta o dată la {0}s cu una dintre următoarele etichete:\n{1}", - "nsfw_tag": "Tag", + "nsfw_tag": "Etichetă", "gambling_animal_race": "Cursă cu animale", "gambling_animal_race_failed": "Pornirea cursei a eșuat datorită faptului că nu erau suficienți participanți.", "gambling_animal_race_full": "Cursa este plinã! Începe imediat.", @@ -318,24 +295,24 @@ "gambling_divorces": "Divorțuri", "gambling_likes": "Aprecieri", "gambling_price": "Preț", - "gambling_waifus_none": "Niciun waifu nu a fost revendicat încă.", + "gambling_waifus_none": "Nicio waifu nu a fost revendicat încă.", "gambling_waifus_top_waifus": "Topul waifurilor", - "gambling_waifu_affinity_already": "Afinitatea ta este deja setată pe acel waifu sau încerci să iți elimini afinitatea în moment ce tu nu ai una.", + "gambling_waifu_affinity_already": "Afinitatea ta este deja setată pe acea waifu sau încerci să iți elimini afinitatea în moment ce tu nu ai una.", "gambling_waifu_affinity_changed": "Afinitatea a fost schimbată de la {0} la {1}.\n*Acest lucru este dubios din punct de vedere moral.* 🤔", "gambling_waifu_affinity_cooldown": "Trebuie să aștepți {0} ore și {1} minute pentru a-ți schimba afinitatea din nou.", "gambling_waifu_affinity_reset": "Afinitatea ta a fost resetată. Nu mai ai o persoană de care îți place.", "gambling_waifu_affinity_set": "vrea să fie waiful lui {0}. Aww <3", "gambling_waifu_claimed": "a revendicat pe {0} ca și waifu pentru {1}!", - "gambling_waifu_divorced_like": "Ai divorțat un waifu care îi place de tine. Ești un monstru fără inimă.\n{0} a primit {1} drept compensație.", + "gambling_waifu_divorced_like": "Ai divorțat o waifu căreia îi place de tine. Ești un monstru fără inimă.\n{0} a primit {1} drept compensație.", "gambling_waifu_egomaniac": "Nu poți să iți setezi afinitatea pe tine, egocentristule.", "gambling_waifu_fulfilled": "🎉 Iubirea lor este împlinită! 🎉\nNoua valoare a lui {0} este acum {1}!", - "gambling_waifu_isnt_cheap": "Niciun waifu nu este atât de ieftin. Trebuie să platești cel puțin {0} pentru a lua un waifu, chiar dacă valoarea lui adevărată este mai mică.", - "gambling_waifu_not_enough": "Trebuie să plătești {0} sau mai mult pentru a revendica acel waifu!", - "gambling_waifu_not_yours": "Acel waifu nu este al tău.", + "gambling_waifu_isnt_cheap": "Nicio waifu nu este atât de ieftină. Trebuie să plătești cel puțin {0} pentru a lua o waifu, chiar dacă valoarea ei adevărată este mai mică.", + "gambling_waifu_not_enough": "Trebuie să plătești {0} sau mai mult pentru a revendica acea waifu!", + "gambling_waifu_not_yours": "Acea waifu nu este a ta.", "gambling_waifu_not_yourself": "Nu poți să te revendici pe tine.", "gambling_waifu_recent_divorce": "Ai divorțat recent. Trebuie să aștepți {0} ore și {1} minute pentru a divorța din nou.", "gambling_nobody": "Nimeni", - "gambling_waifu_divorced_notlike": "Ai divorțat un waifu care nu îi place de tine. Ai primit {0} înapoi.", + "gambling_waifu_divorced_notlike": "Ai divorțat de o waifu căruia nu îi place de tine. Ai primit {0} înapoi.", "games_8ball": "8ball", "games_acrophobia": "Acrofobia", "games_acro_ended_no_sub": "Joc terminat fără prezentări.", @@ -345,12 +322,12 @@ "games_acro_started": "Jocul a început. Formează o propoziție cu următorul acronim: {0}.", "games_acro_started_footer": "Ai {0} secunde pentru a lua o prezentare.", "games_acro_submit": "{0} și-a prezentat propoziția. ({1} total)", - "games_acro_vote": "Voteaza scriind un număr al unei prezentări", + "games_acro_vote": "Voteaza scriind numărul unei prezentări", "games_acro_vote_cast": "{0} a votat!", "games_acro_winner": "Câștigătorul este {0} cu {1} puncte.", "games_acro_winner_only": "{0} este câștigătorul pentru că este singurul utilizator care a făcut o prezentare!", "games_question": "Întrebare", - "games_rps_draw": "Este o remiză! Amândoi selectați {0}", + "games_rps_draw": "Este o remiză! Amândoi au ales {0}", "games_rps_win": "{0} a câștigat! {1} a învins pe {2}", "games_submissions_closed": "Prezentări închise", "gambling_animal_race_already_started": "Cursa de animale este deja în desfășurare.", @@ -361,7 +338,7 @@ "games_curgen_disabled": "Generatorul de valută a fost dezactivat în acest canal.", "games_curgen_enabled": "Generatorul de valută a fost activat în acest canal.", "games_curgen_pl": "{0} aleatoriu {1} a apărut!", - "games_curgen_sn": "Un aleatoriu {0} a apărut!", + "games_curgen_sn": "Un {0} a apărut spontan!", "games_failed_loading_question": "Am eșuat încărcând o întrebare.", "games_game_started": "Joc început", "games_hangman_game_started": "Spânzurătoarea a început", @@ -417,7 +394,7 @@ "music_playing_song": "Redare melodie", "music_playlists": "#{0}` - **{1}** de *{2}* ({3} căntece)", "music_playlists_page": "Pagina {0} de playlisturi salvate", - "music_playlist_deleted": "Playlist șters.", + "music_playlist_deleted": "Listă de redare ștearsă.", "music_playlist_delete_fail": "Am eșuat să sterg această listă de redare. Ea nu există sau nu sunteți autorul ei.", "music_playlist_id_not_found": "Un playlist cu acest ID nu există.", "music_playlist_queue_complete": "Rândul listei de redare complet.", @@ -454,8 +431,8 @@ "permissions_aum_enable": "Activat folosirea a TOATE MODULELE pentru utilizator {0}.", "permissions_blacklisted": "Adaugat la lista neagră {0} cu ID-ul {1}", "permissions_cmdcd_add": "Comanda {0} acum are {1}s cooldown.", - "permissions_cmdcd_cleared": "Comanda {0} nu are cooldown acum și toate cooldownurile existente au fost șterse.", - "permissions_cmdcd_none": "Nu sunt comenzi cu cooldown setate.", + "permissions_cmdcd_cleared": "Comanda {0} nu are timp de folosire acum și toate timpurile de folosire existente au fost șterse.", + "permissions_cmdcd_none": "Nu sunt comenzi cu timp de folosire setate.", "permissions_command_costs": "Comanda costă", "permissions_cx_disable": "Dezactivat folosirea de {0} {1} pe canal {2}.", "permissions_cx_enable": "Activat folosirea de {0} {1} pe canal {2}.", @@ -470,7 +447,7 @@ "permissions_invite_filter_server_on": "Filtrul de invitații activat pe acest server.", "permissions_moved_permission": "Mutat permisiuni {0} de la #{1} la #{2}", "permissions_not_found": "Nu pot găsi permisia în index #{0}", - "permissions_no_costs": "Nici-un cost încă.", + "permissions_no_costs": "Niciun cost încă.", "permissions_of_command": "comandă", "permissions_of_module": "modul", "permissions_page": "Pagina de permisiuni {0}", @@ -494,7 +471,7 @@ "permissions_word_filter_server_off": "Filtrarea cuvintelor dezactivată pe acest server.", "permissions_word_filter_server_on": "Filtrarea cuvintelor activată pe acest server.", "searches_abilities": "Abilități", - "searches_anime_no_fav": "Nici un anime favorit încă", + "searches_anime_no_fav": "Niciun anime favorit încă", "searches_atl_ad_started": "Am început traducerea automată a mesajelor din acest canal. Mesajele utilizatorului vor fi șterse automat.", "searches_atl_removed": "Traducerea automată a fost scoasă.", "searches_atl_set": "Auto-traducerea limbii a fost setată {0}>{1}", @@ -504,7 +481,7 @@ "searches_card_not_found": "Nu am găsit cartea aceea.", "searches_catfact": "fapt", "searches_chapters": "Capitole", - "searches_comic_number": "Revistă de benzi desenate #", + "searches_comic_number": "Numărul revistei de benzi desenate", "searches_compet_loses": "Pierderi competitive", "searches_compet_played": "Competitive jucate", "searches_compet_rank": "Clasament competitiv", @@ -514,12 +491,12 @@ "searches_cost": "Cost", "searches_date": "Dată", "searches_define": "Definește:", - "searches_dropped": "Aruncat", + "searches_dropped": "Abandonat", "searches_episodes": "Episoade", "searches_error_occured": "O eroare a apărut.", "searches_example": "Exemplu", - "searches_failed_finding_anime": "Nu am găsit acel anime.", - "searches_failed_finding_manga": "Nu am găsit acel manga.", + "searches_failed_finding_anime": "Nu am găsit acel animu.", + "searches_failed_finding_manga": "Nu am găsit acel mango.", "searches_genres": "Genuri", "searches_hashtag_error": "Nu a reușit să se găsească o definiție pentru acea etichetă.", "searches_height_weight": "Înalțime/Greutate", @@ -531,20 +508,20 @@ "searches_jokes_not_loaded": "Glumele nu au fost încărcate.", "searches_latlong": "Lat/Long", "searches_level": "Nivel", - "searches_list_of_place_tags": "Lista {0}etichete plasate", + "searches_list_of_place_tags": "Listă de {0}place etichete", "searches_location": "Locație", "searches_magicitems_not_loaded": "Articolele magice nu au fost încărcate", "searches_mal_profile": "profilul MAL al lui {0}", "searches_mashape_api_missing": "Proprietarul botului nu a specificat MashapeApiKey. Nu puteți utiliza această funcție.", "searches_min_max": "Min/Max", - "searches_no_channel_found": "Nici-un canal găsit.", - "searches_no_results": "Nici-un rezultat găsit.", + "searches_no_channel_found": "Niciun canal găsit.", + "searches_no_results": "Niciun rezultat găsit.", "searches_on_hold": "În așteptare", "searches_original_url": "Url original", - "searches_osu_api_key": "Osu! Cheia API este necesară.", + "searches_osu_api_key": "O cheie API osu! este necesară.", "searches_osu_failed": "Am eșuat recuperarea semnăturii osu!", "searches_over_x": "Am găsit peste {0} imagini. Redau aleatoriu {0}.", - "searches_ow_user_not_found": "Utilizator nu a fost găsit! Verificați Regiunea și Tagul de Luptă înainte de a încerca din nou.", + "searches_ow_user_not_found": "Utilizator nu a fost găsit! Verificați Regiunea și Battletag-ul înainte de a încerca din nou.", "searches_plan_to_watch": "Planificat de urmărit", "searches_platform": "Platformă", "searches_pokemon_ability_none": "Nici o abilitate găsită.", @@ -561,15 +538,15 @@ "searches_something_went_wrong": "Ceva nu a mers bine.", "searches_specify_search_params": "Te rog specifică parametrii de căutare.", "searches_status": "Status", - "searches_store_url": "Url stocat", + "searches_store_url": "Stocheaza URL", "searches_streamer_offline": "Streamer-ul {0} este offline.", "searches_streamer_online": "Streamer-ul {0} este online cu {1} vizualizatori.", "searches_streams_following": "Urmărești {0} fluxuri pe acest server.", "searches_streams_none": "Nu urmărești nici un flux pe acest server.", "searches_stream_no": "Nu există un astfel de flux.", - "searches_stream_not_exist": "Fluxul, probabil, nu există.", - "searches_stream_removed": "Eliminat fluxul {0} ({1}) din notificări.", - "searches_stream_tracked": "Voi notifica când statutul acestui canal se va schimba.", + "searches_stream_not_exist": "Fluxul probabil nu există.", + "searches_stream_removed": "Eliminat fluxul lui {0} ({1}) din notificări.", + "searches_stream_tracked": "Voi notifica acest canal când statutul se schimbă", "searches_sunrise": "Răsărit", "searches_sunset": "Apus", "searches_temperature": "Temperatură", @@ -602,13 +579,13 @@ "utility_convert_not_found": "Nu se poate converti {0} la {1}: unitățile nu pot fii găsite", "utility_convert_type_error": "Nu se poate converti {0} la {1}: tipurile de unități nu sunt egale.", "utility_created_at": "Creat la", - "utility_custom_emojis": "Emojis personalizate", + "utility_custom_emojis": "Emojiuri personalizate", "utility_error": "Eroare", "utility_features": "Caracteristici", "utility_id": "ID", "utility_index_out_of_range": "Indexul este în afara intervalului.", "utility_inrole_list": "Lista utilizatorilor în rolul {0}", - "utility_inrole_not_allowed": "Nu ai voie să folosești această comanda pe roluri cu mulți utilizatori pentru a prevenii abuzul.", + "utility_inrole_not_allowed": "Nu ai voie să folosești această comandă pe roluri cu mulți utilizatori în ele pentru a prevenii abuzul.", "utility_invalid_value": "Valoare invalidă {0}.", "utility_joined_discord": "Alăturat Discord", "utility_joined_server": "Alăturat Server", @@ -692,7 +669,7 @@ "customreactions_crad_enabled": "Mesajul care declanșează reacția personalizată cu ID {0} va fi șters automat.", "customreactions_crdm_disabled": "Mesaj de răspuins pentru reacţiia custom cu id {0} nu va fi trimis ca un DM.", "customreactions_crdm_enabled": "Mesaj de răspuns pentru reacţia custom cu id {0} va fi trimis ca un DM. ", - "utility_aliases_none": "Nici un alais găsit", + "utility_aliases_none": "Nici un alias găsit", "utility_alias_added": "Scriind {0} va fii un alias acum de {1}.", "utility_alias_list": "Lista de alias-uri.", "utility_alias_removed": "Declanșatorul {0} nu mai are o abreviere.", @@ -745,17 +722,17 @@ "gambling_shop": "Magazin", "gambling_shop_item_add": "Articol adăugat în magazin", "gambling_shop_none": "Nici un articol de magazin nu a fost găsit pe această pagină.", - "gambling_shop_role": "O sa primești rolul {0}.", + "gambling_shop_role": "O să primești rolul {0}.", "gambling_type": "Tip", - "utility_clpa_next_update": "Urmatorul update în {0}", + "utility_clpa_next_update": "Următorul update în {0}", "administration_gvc_disabled": "Caracteristica Canalul Vocal de Joc a fost dezactivat pe acest server.", "administration_gvc_enabled": "{0} este un Canal Vocal de Joc acum.", - "administration_not_in_voice": "Nu ești intr-un canal vocal pe acest server.", + "administration_not_in_voice": "Nu ești într-un canal vocal pe acest server.", "gambling_item": "Item", "gambling_out_of_stock": "Nu mai este în stoc.", "gambling_random_unique_item": "Articol unic aleatoriu.", - "gambling_shop_buy_error": "Eroare trimițând elementul în mesaj privat. A fost returnat", - "gambling_shop_item_not_found": "Nici-un item în acel index nu a fost găsit.", + "gambling_shop_buy_error": "Eroare trimițând elementul în mesaj privat. A fost returnat.", + "gambling_shop_item_not_found": "Nici un item în acel index nu a fost găsit.", "gambling_shop_item_purchase": "Articol cumpărat cu succes.", "gambling_shop_item_rm": "Articol șters din magazin.", "gambling_shop_item_wrong_type": "Această intrare de magazin nu acceptă adăugarea de articole.", @@ -779,30 +756,117 @@ "administration_prefix_current": "Prefixul pe acest server este {0}", "administration_prefix_new": "Am schimbat prefixul pe acest server din {0} în {1}", "administration_defprefix_current": "Prefixul implicit al bot-ului este {0}", - "administration_defprefix_new": "Am schimbat prefixul implicit at bot-ului din {0} în {1}", - "administration_bot_nick": "", - "administration_user_nick": "", - "administration_timezone_guild": "", - "administration_timezone_not_found": "", - "administration_timezones_available": "", - "music_song_not_found": "", - "searches_define_unknown": "", - "utility_repeater_initial": "", - "utility_verbose_errors_enabled": "", - "utility_verbose_errors_disabled": "", - "permissions_perms_reset": "", - "permissions_trigger": "", - "administration_migration_error": "", - "searches_hex_invalid": "", - "permissions_global_perms_reset": "", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "" + "administration_defprefix_new": "Am schimbat prefixul implicit al bot-ului din {0} în {1}", + "administration_bot_nick": "Porecla Bot-ului a fost schimbată la {0}", + "administration_user_nick": "Porecla utilizatorului {0} a fost schimbată în {1}", + "administration_timezone_guild": "Fusul orar pentru acest grup este `{0}", + "administration_timezone_not_found": "Fus orar negăsit. Folosiţi comanda \"timezones\" pentru a vedea lista fusurilor orare disponibile.", + "administration_timezones_available": "Fusuri orare disponibile", + "music_song_not_found": "Nici o melodie găsită.", + "searches_define_unknown": "Nu pot găsi definiția pentru acel termen.", + "utility_repeater_initial": "Mesajul de repetare inițial va fi trimis în {0} ore și {1} minute.", + "utility_verbose_errors_enabled": "Comenzile folosite incorect vor afişa acum erori.", + "utility_verbose_errors_disabled": "Comenzile folosite incorect nu vor mai afişa erori.", + "permissions_perms_reset": "Permisiunile pentru acest server au fost resetate.", + "permissions_trigger": "Permisiunea numărul #{0} {1} împiedică această acţiune.", + "administration_migration_error": "Eroare în timpul migrației, verifică consola botului pentru mai multă informație.", + "searches_hex_invalid": "Culoare invalidă specificată.", + "permissions_global_perms_reset": "Permisiunile globale au fost resetate.", + "help_module": "Modulul: {0}", + "games_hangman_stopped": "Jocul Spânzurătoarea a fost oprit.", + "music_autoplaying": "Redând automat.", + "music_queue_stopped": "Muzica oprită. Folosește comanda {0} pentru a începe.", + "music_removed_song_error": "Melodia de pe acel index nu există", + "music_shuffling_playlist": "Amestecând melodiile", + "music_songs_shuffle_enable": "Melodiile se vor amesteca de acum încolo.", + "music_songs_shuffle_disable": "Melodiile nu se vor mai amesteca de acum încolo.", + "music_song_skips_after": "Se va sări peste melodii după {0}", + "administration_warnings_list": "Lista tuturor utilizatorilor avertizaţi din acest server.", + "customreactions_redacted_too_long": "Redactat deoarece e prea lung.", + "nsfw_blacklisted_tag_list": "Lista etichetelor pe lista neagră:", + "nsfw_blacklisted_tag": "Unul sau mai multe etichete pe care le-ai pus pe lista neagră", + "nsfw_blacklisted_tag_add": "Eticheta indecentă {0} este acum pe lista neagră.", + "nsfw_blacklisted_tag_remove": "Eticheta indecentă {0} nu mai este pe lista neagră.", + "gambling_waifu_gift": "Dăruit {0} lui {1}", + "gambling_waifu_gift_shop": "Magazin de cadouri pentru waifu", + "gambling_gifts": "Cadouri", + "games_connect4_created": "Creat un joc de Connect4. Așteptând dupa un jucător să se alăture.", + "games_connect4_player_to_move": "Jucătorul care mișcă: {0}", + "games_connect4_failed_to_start": "Jocul de Connect4 a eșuat să înceapă deoarece nimeni nu s-a alăturat.", + "games_connect4_draw": "Jocul de Connect4 s-a terminat la egalitate.", + "games_connect4_won": "{0} a câștigat jocul de Connect4 împotriva {1}.", + "games_nunchi_joined": "Alăturat jocului de nunchi. {0} utilizatori s-au alăturat până acum.", + "games_nunchi_ended": "Jocul de nunchi s-a terminat. {0} a câștigat.", + "games_nunchi_ended_no_winner": "Jocul de nunchi s-a terminat fără vreun câștigător.", + "games_nunchi_started": "Jocul de nunchi a început cu {0} participanți.", + "games_nunchi_round_ended": "Runda Nunchi s-a incheiat. {0} a fost eliminat.", + "games_nunchi_round_ended_boot": "Runda de Nunchi terminată din cauza trecerii unor utilizatori peste timpul permis. Acești utilizatori incă sunt în joc: {0}", + "games_nunchi_round_started": "Runda Nunchi a început cu {0} jucatori. Începeți numărătoarea de la numarul {1}", + "games_nunchi_next_number": "Numar înregistrat. Ultimul număr a fost {0}.", + "games_nunchi_failed_to_start": "Runda de Nunchi nu a început pentru că nu au fost destui participanți.", + "games_nunchi_created": "Jocul de Nunchi a fost creat. Așteptăm ca jucătorii să intre.", + "music_sad_enabled": "Melodiile vor fi șterse din listă atunci când se termină.", + "music_sad_disabled": "Melodiile nu vor mai fi șterse din listă atunci când se vor termina.", + "utility_stream_role_enabled": "Când un utilizator din rolul {0} transmite un flux live, îi voi da rolul {1}.", + "utility_stream_role_disabled": "Rolul transmițătorilor de flux live a fost dezactivat.", + "utility_stream_role_kw_set": "\nTransmițătorii de flux live au nevoie de cuvântul cheie {0} pentru a primi rolul.", + "utility_stream_role_kw_reset": "Cuvântul cheie pentru rolul transmițătorilor de flux a fost resetat.", + "utility_stream_role_bl_add": "Utilizatorul {0} nu va primi niciodată rolul transmițătorilor de flux.", + "utility_stream_role_bl_add_fail": "Utilizatorul {0} este deja pe lista neagră.", + "utility_stream_role_bl_rem": "Utilizatorul {0} nu mai este pe lista neagră.", + "utility_stream_role_bl_rem_fail": "Utilizatorul {0} nu este pe lista neagră.", + "utility_stream_role_wl_add": "Utilizatorul {0} va primi rolul de transmițător de flux chiar dacă nu au cuvântul cheie in fluxul lor.", + "utility_stream_role_wl_add_fail": "Utilizatorul {0} este deja pe lista albă.", + "utility_stream_role_wl_rem": "Utilizatorul {0} nu mai este pe lista albă.", + "utility_stream_role_wl_rem_fail": "Utilizatorul {0} nu este pe lista albă.", + "utility_bot_config_edit_fail": "Am eșuat schimbarea {0} la valoarea {1}", + "utility_bot_config_edit_success": "Valoarea lui {0} a fost setată la {1}", + "customreactions_crca_disabled": "Reacția personalizată cu ID-ul {0} nu se va mai declanșa decât daca cuvantul declanșator va fi la inceputul propoziției.", + "customreactions_crca_enabled": "Reacție personalizată cu ID-ul {0} va fi declanșata daca este oriunde in propoziție", + "xp_server_level": "Nivel pe Server", + "xp_level": "Nivel", + "xp_club": "Club", + "xp_xp": "Experienţă", + "xp_excluded": "{0} a fost exclus din sistemul de XP de pe acest server.", + "xp_not_excluded": "{0} nu mai este exclus din sistemul de XP de pe acest server.", + "xp_exclusion_list": "Lista Excluderilor", + "xp_server_is_excluded": "Acest server este exclus.", + "xp_server_is_not_excluded": "Acest server nu este exclus.", + "xp_excluded_roles": "Roluri excluse", + "xp_excluded_channels": "Canale excluse", + "xp_level_up_channel": "Felicitări {0}, ai atins nivelul {1}!", + "xp_level_up_dm": "Felicitări {0}, ai atins nivelul {1} în serverul {2}!", + "xp_level_up_global": "Felicitări {0}, ai atins nivelul global {1}!", + "xp_role_reward_cleared": "Nivelul {0} nu va mai avea ca recompensă un rol.", + "xp_role_reward_added": "Utilizatorii care ajung la nivelul {0} vor primi rolul {1}.", + "xp_role_rewards": "Recompense ale Rolului", + "xp_level_x": "Nivel {0}", + "xp_no_role_rewards": "Nicio recompensă ale rolului pe această pagină.", + "xp_server_leaderboard": "Clasament XP pe Server", + "xp_global_leaderboard": "Clasament XP Global", + "xp_modified": "XP-ul pe Server a fost modificat pentru {0} cu {1}", + "xp_club_create_error": "Eșuat la creerea clubului. Asigură-te ca ești peste nivelul 5 și nu ești deja un membru al unui club.", + "xp_club_created": "Clubul {0} a fost creat!", + "xp_club_not_exists": "Acel club nu există.", + "xp_club_applied": "Ai aplicat in clubul {0}.", + "xp_club_apply_error": "Eroare la aplicație. Ești deja membrul unui club, sau nu întâlnești nivelul minim necesar, sau ai accesul interzis în acesta.", + "xp_club_accepted": "Utilizatorul {0} a fost acceptat in club.", + "xp_club_accept_error": "Utilizatorul nu a fost gasit.", + "xp_club_left": "Ai ieșit din club.", + "xp_club_not_in_club": "Nu ești într-un club sau încerci sa ieși dintr-un grup pe care îl deții.", + "xp_club_user_kick": "Utilizatorul {0} a fost dat afara din clubul {1}.", + "xp_club_user_kick_fail": "A fost o eroare la dat afară. Nu ești proprietarul clubului, sau acel utilizator nu aparține clubului tău.", + "xp_club_user_banned": "Am interzis intrarea utilizatorului {0} din clubul {1}.", + "xp_club_user_ban_fail": "Eroare la interdicția accesului. Nu ești proprietarul clubului, sau acel utilizator nu aparține clubului tău sau nu a făcut o aplicație pentru acesta.", + "xp_club_user_unbanned": "Interdicția utilizatorului {0} a fost ridicata din clubul {1}.", + "xp_club_user_unban_fail": "Eșuare la ridicarea interdicției. Nu ești deținătorul grupului sau acel utilizator nu este in club sau nu a aplicat.", + "xp_club_level_req_changed": "S-a schimbat nivelul necesar pentru intrarea in club la {0}", + "xp_club_level_req_change_error": "Am eșuat la schimbarea nivelului necesar.", + "xp_club_disbanded": "Clubul {0} a fost destrămat", + "xp_club_disband_error": "Eroare. Nu ești intr-un club sau nu ești deținătorul unui grup", + "xp_club_icon_error": "Nu este un link-ul imaginii valid sau nu ești deținătorul clubului.", + "xp_club_icon_set": "Nouă iconiță de club setată.", + "xp_club_bans_for": "Interdicții pentru clubul {0}", + "xp_club_apps_for": "Aplicanții pentru clubul {0}", + "xp_club_leaderboard": "Clasamentul clubului - pagina {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.sr-cyrl-rs.json b/src/NadekoBot/_strings/ResponseStrings.sr-cyrl-rs.json index 58f91079..8d0ae70f 100644 --- a/src/NadekoBot/_strings/ResponseStrings.sr-cyrl-rs.json +++ b/src/NadekoBot/_strings/ResponseStrings.sr-cyrl-rs.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "Та база је већ под захетвом или је уништена.", - "clashofclans_base_already_destroyed": "Та база је већ под захтевом.", - "clashofclans_base_already_unclaimed": "Та база није под захтевом.", - "clashofclans_base_destroyed": "**УНИШТЕНА** база #{0} у рату против {1}", - "clashofclans_base_unclaimed": "{0} је **ПОНИШТИО ЗАХТЕВ** за базу #{1} у рату против {2}", - "clashofclans_claimed_base": "{0} захтева базу #{1} у рату против {2}", - "clashofclans_claimed_other": "@{0} Ти већ захтеваш базу #{1}. Не можеш захтевати још једну.", - "clashofclans_claim_expired": "Захтев од @{0} у рату против {1} је истекао.", - "clashofclans_enemy": "Противник", - "clashofclans_info_about_war": "Подаци о рату против {0}", - "clashofclans_invalid_base_number": "Број базе није валидан.", - "clashofclans_invalid_size": "Величина рата није валидна.", - "clashofclans_list_active_wars": "Листа ратова у току", - "clashofclans_not_claimed": "нема захтева", - "clashofclans_not_partic": "Ти не учествујеш у том рату.", - "clashofclans_not_partic_or_destroyed": "@{0} Ти или не учествујеш у рату или је та база већ уништена.", - "clashofclans_no_active_wars": "Нема ратова у току.", - "clashofclans_size": "Величина", - "clashofclans_war_already_started": "Рат против {0} је већ почео.", - "clashofclans_war_created": "Рат против {0} је направљен.", - "clashofclans_war_ended": "Рат против {0} је завршен.", - "clashofclans_war_not_exist": "Тај рат не постоји.", - "clashofclans_war_started": "Рат против {0} је започет!", "customreactions_all_stats_cleared": "Сва статистика Реакција по Избору је обрисана.", "customreactions_deleted": "Реакција по Избору обрисана", "customreactions_insuff_perms": "Немате дозволу. Потребно је поседовати бота за глобалне Реакције по Избору, а Администратор за серверске Реакције по Избору.", @@ -66,7 +43,7 @@ "administration_bandm": "You have been banned from {0} server.\nReason: {1}", "administration_banned_pl": "banned", "administration_banned_user": "User Banned", - "administration_bot_name": "Bot name changed to {0}", + "administration_bot_name": "Име бота је промењено у {0}", "administration_bot_status": "Bot status changed to {0}", "administration_byedel_off": "Automatic deletion of bye messages has been disabled.", "administration_byedel_on": "Bye messages will be deleted after {0} seconds.", @@ -115,12 +92,12 @@ "administration_joined": "{0} has joined {1}", "administration_kickdm": "You have been kicked from {0} server.\nReason: {1}", "administration_kicked_user": "Кикован корисник", - "administration_lang_list": "List Of Languages", + "administration_lang_list": "Листа језика", "administration_lang_set": "Your server's locale is now {0} - {1}", "administration_lang_set_bot": "Bot's default locale is now {0} - {1}", "administration_lang_set_bot_show": "Језик бота је постављен на {0} - {1}", "administration_lang_set_fail": "Failed setting locale. Revisit this command's help.", - "administration_lang_set_show": "This server's language is set to {0} - {1}", + "administration_lang_set_show": "Језик сервера је постављен на {0} - {1}", "administration_left": "{0} has left {1}", "administration_left_server": "Left server {0}", "administration_log": "Logging {0} event in this channel.", @@ -151,7 +128,6 @@ "administration_old_nick": "Стари надимак", "administration_old_topic": "Стара тема", "administration_perms": "Error. Most likely I don't have sufficient permissions.", - "administration_perms_reset": "Permissions for this server are reset.", "administration_prot_active": "Активне заштите", "administration_prot_disable": "{0} has been **disabled** on this server.", "administration_prot_enable": "{0} Enabled", @@ -165,7 +141,7 @@ "administration_rc": "Color of {0} role has been changed.", "administration_rc_not_exist": "That role does not exist.", "administration_rc_params": "The parameters specified are invalid.", - "administration_rc_perms": "Error occured due to invalid color or insufficient permissions.", + "administration_rc_perms": "Грешка због погрешне боје или недовољних дозвола.", "administration_remrole": "Successfully removed role {0} from user {1}", "administration_remrole_err": "Failed to remove role. I have insufficient permissions.", "administration_renrole": "Role renamed.", @@ -243,7 +219,6 @@ "administration_sbdm": "You have been soft-banned from {0} server.\nReason: {1}", "administration_user_unbanned": "User Unbanned", "administration_migration_done": "Migration done!", - "administration_migration_error": "Error while migrating, check bot's console for more information.", "administration_presence_updates": "Presence Updates", "administration_sb_user": "User Soft-Banned", "gambling_awarded": "has awarded {0} to {1}", @@ -439,7 +414,6 @@ "music_rpl_enabled": "Понављање плејлисте је упаљено.", "music_set_music_channel": "Исписиваћу поруке за почетак, крај, паузу и брисање песме у овом каналу.", "music_skipped_to": "Прескочено на `{0}:{1}`", - "music_songs_shuffled": "Песме су измешане", "music_song_moved": "Песме су померене", "music_time_format": "{0}х {1}м {2}с", "music_to_position": "На позицију", @@ -605,9 +579,6 @@ "utility_convert_not_found": "Неуспешно конвертовање {0} у {1}: мера није пронађена", "utility_convert_type_error": "Неуспешно конвертовање {0} у {1}: типови мера нису једнаки", "utility_created_at": "Направљен", - "utility_csc_join": "Прикључен у међусерверни канал.", - "utility_csc_leave": "Међусерверни канал напуштен.", - "utility_csc_token": "Ово је твој CSC токен", "utility_custom_emojis": "Емотикони по Мери", "utility_error": "Грешка", "utility_features": "Додатак", @@ -754,24 +725,23 @@ "gambling_shop_role": "Добићете {0} улогу.", "gambling_type": "Тип", "utility_clpa_next_update": "Следеће ажурирање у {0}", - "administration_global_perms_reset": "Глобални дозволе су ресет.", "administration_gvc_disabled": "Игра карактеристика Глас канал је онемогућен на овом серверу.", "administration_gvc_enabled": "{0} је игра Глас канал сада.", "administration_not_in_voice": "Нисте у говорног канала на овом серверу.", - "gambling_item": "ставка", - "gambling_out_of_stock": "Нема на залихи.", - "gambling_random_unique_item": "Рандом уникат.", - "gambling_shop_buy_error": "Еррор ДМинг ставку. Си враћен.", - "gambling_shop_item_not_found": "Ниједан предмет на том индексу фоунд.", - "gambling_shop_item_purchase": "Тачка куповина успешна.", - "gambling_shop_item_rm": "Схоп ставка уклоњена", - "gambling_shop_item_wrong_type": "То радња унос не подржава ставка додавање.", - "gambling_shop_list_item_added": "Ставка успешно додат.", - "gambling_shop_list_item_not_unique": "Та ставка је већ додат.", - "gambling_shop_purchase": "Куповина на {0} сервера", - "gambling_shop_role_not_found": "Улога која се продаје више не постоји.", - "gambling_shop_role_purchase": "Успешно сте купили {0} улогу.", - "gambling_shop_role_purchase_error": "Еррор додељивања улога. Ваша куповина је враћен.", + "gambling_item": "Ставка", + "gambling_out_of_stock": "Нема на залихама.", + "gambling_random_unique_item": "Насумична јединствена ставка.", + "gambling_shop_buy_error": "Грешка приликом ДМовања ставке. Ваша куповина је враћена.", + "gambling_shop_item_not_found": "Ниједан предмет под тим бројем није пронађен.", + "gambling_shop_item_purchase": "Куповина ставке успешна.", + "gambling_shop_item_rm": "Ставка продавнице је уклоњена", + "gambling_shop_item_wrong_type": "Тај унос у продавници не подржава додавање ставки.", + "gambling_shop_list_item_added": "Ставка успешно додата.", + "gambling_shop_list_item_not_unique": "Та ставка је већ додата.", + "gambling_shop_purchase": "Куповина на серверу {0}", + "gambling_shop_role_not_found": "Рола која се продаје више не постоји.", + "gambling_shop_role_purchase": "Успешно сте купили {0} ролу.", + "gambling_shop_role_purchase_error": "Грешка у додели роле. Ваша куповина је враћена.", "gambling_unique_items_left": "{0} уникати лево.", "permissions_blocked_commands": "Блокирани Команде", "permissions_blocked_modules": "Блокирани Модули", @@ -780,7 +750,123 @@ "permissions_gmod_add": "Модул {0} је онемогућена на свим серверима.", "permissions_gmod_remove": "Модул {0} је омогућено на свим серверима.", "permissions_lgp_none": "Нема блокираних команди или модула.", - "gambling_animal_race_no_race": "", - "utility_cant_read_or_send": "", - "utility_quotes_notfound": "" + "gambling_animal_race_no_race": "Ова Трка Животиња је пуна!", + "utility_cant_read_or_send": "Не можете слати или писати поруке у том каналу.", + "utility_quotes_notfound": "Нема цитата са тим ИД-ем.", + "administration_prefix_current": "Префикс на овом серверу је {0}", + "administration_prefix_new": "Промењен је префикс на овом серверу са {0} на {1}", + "administration_defprefix_current": "Подразумевани префикс бота је {0}", + "administration_defprefix_new": "Промењен је подразумевани префикс бота са {0} на {1}", + "administration_bot_nick": "Надимак бота је промењен у {0}", + "administration_user_nick": "Надимак корисника {0} је промењен у {1}", + "administration_timezone_guild": "Временска зона на овом серверу је `{0}`", + "administration_timezone_not_found": "Временска зона није нађена. Употребите \"timezones\" команду да би сте видели листу доступних зона.", + "administration_timezones_available": "Доступне Временске зоне", + "music_song_not_found": "Песма није нађена.", + "searches_define_unknown": "Није нађена дефиниција за ту реч.", + "utility_repeater_initial": "Почетна понављајућа порука ће бити послата у {0}ч и {1}мин.", + "utility_verbose_errors_enabled": "Неисправно коришћене команде ће од сада приказивати грешке.", + "utility_verbose_errors_disabled": "Неисправно коришћене команде виће неће приказивати грешке.", + "permissions_perms_reset": "", + "permissions_trigger": "", + "administration_migration_error": "", + "searches_hex_invalid": "", + "permissions_global_perms_reset": "", + "help_module": "", + "games_hangman_stopped": "", + "music_autoplaying": "", + "music_queue_stopped": "", + "music_removed_song_error": "", + "music_shuffling_playlist": "", + "music_songs_shuffle_enable": "", + "music_songs_shuffle_disable": "", + "music_song_skips_after": "", + "administration_warnings_list": "", + "customreactions_redacted_too_long": "", + "nsfw_blacklisted_tag_list": "", + "nsfw_blacklisted_tag": "", + "nsfw_blacklisted_tag_add": "", + "nsfw_blacklisted_tag_remove": "", + "gambling_waifu_gift": "", + "gambling_waifu_gift_shop": "", + "gambling_gifts": "", + "games_connect4_created": "", + "games_connect4_player_to_move": "", + "games_connect4_failed_to_start": "", + "games_connect4_draw": "", + "games_connect4_won": "", + "games_nunchi_joined": "", + "games_nunchi_ended": "", + "games_nunchi_ended_no_winner": "", + "games_nunchi_started": "", + "games_nunchi_round_ended": "", + "games_nunchi_round_ended_boot": "", + "games_nunchi_round_started": "", + "games_nunchi_next_number": "", + "games_nunchi_failed_to_start": "", + "games_nunchi_created": "", + "music_sad_enabled": "", + "music_sad_disabled": "", + "utility_stream_role_enabled": "", + "utility_stream_role_disabled": "", + "utility_stream_role_kw_set": "", + "utility_stream_role_kw_reset": "", + "utility_stream_role_bl_add": "", + "utility_stream_role_bl_add_fail": "", + "utility_stream_role_bl_rem": "", + "utility_stream_role_bl_rem_fail": "", + "utility_stream_role_wl_add": "", + "utility_stream_role_wl_add_fail": "", + "utility_stream_role_wl_rem": "", + "utility_stream_role_wl_rem_fail": "", + "utility_bot_config_edit_fail": "", + "utility_bot_config_edit_success": "", + "customreactions_crca_disabled": "", + "customreactions_crca_enabled": "", + "xp_server_level": "Ниво Сервера", + "xp_level": "Ниво", + "xp_club": "Клуб", + "xp_xp": "Искуство", + "xp_excluded": "", + "xp_not_excluded": "", + "xp_exclusion_list": "Листа искључениџ", + "xp_server_is_excluded": "Овај сервер је искључен из ХР система.", + "xp_server_is_not_excluded": "Овај сервер није искључен из ХР система.", + "xp_excluded_roles": "", + "xp_excluded_channels": "", + "xp_level_up_channel": "", + "xp_level_up_dm": "", + "xp_level_up_global": "", + "xp_role_reward_cleared": "", + "xp_role_reward_added": "", + "xp_role_rewards": "Награде Улога", + "xp_level_x": "{0}. Ниво", + "xp_no_role_rewards": "Нема награда улога на овој страници.", + "xp_server_leaderboard": "Сервер ХР табела", + "xp_global_leaderboard": "Глобална ХР табела", + "xp_modified": "Сервер ХР корисника {0} је промењен за {1}", + "xp_club_create_error": "Неуспешно прављење клуба. Морате бити преко нивоа 5, и не смете бити члан клуба.", + "xp_club_created": "Клуб {0} је успешно направљен.", + "xp_club_not_exists": "Тај клуб не постоји.", + "xp_club_applied": "Пријавили сте се за чланство у {0} клубу.", + "xp_club_apply_error": "Неуспешна пријава. Или сте члан клуба, или нисте испунили минимални захтев за ниво, или сте бановани.", + "xp_club_accepted": "Корисник {0} је прихваћен у клуб.", + "xp_club_accept_error": "Корисник није нађен.", + "xp_club_left": "Напустили сте клуб.", + "xp_club_not_in_club": "Нисте у клубу, или покушавате да изађете из клуба ког сте власник.", + "xp_club_user_kick": "Корисник {0} је избачен из клуба {1}.", + "xp_club_user_kick_fail": "Грешка приликом избацивања. Нисте власник клуба, или тај корисник није у вашем клубу.", + "xp_club_user_banned": "Корисник {0} је банован из клуба {1}.", + "xp_club_user_ban_fail": "Неуспешно бановање. Нисте власник клуба, или тај корисник није члан нити пријављен у ваш клуб.", + "xp_club_user_unbanned": "", + "xp_club_user_unban_fail": "", + "xp_club_level_req_changed": "Тражени ниво за клуб је промењен на {0}", + "xp_club_level_req_change_error": "Мењање траженог нивоа је неуспешно.", + "xp_club_disbanded": "Клуб {0} је распуштен.", + "xp_club_disband_error": "Грешка. Или нисте у клубу, или нисте власник клуба.", + "xp_club_icon_error": "Линк ка слици није исправан, или нисте власник клуба.", + "xp_club_icon_set": "Нова иконица клуба је постављена.", + "xp_club_bans_for": "Банови за клуб {0}", + "xp_club_apps_for": "Пријављени за клуб {0}", + "xp_club_leaderboard": "Табела клубова - стр. {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.sv-SE.json b/src/NadekoBot/_strings/ResponseStrings.sv-SE.json index 4e170a60..7596fcd9 100644 --- a/src/NadekoBot/_strings/ResponseStrings.sv-SE.json +++ b/src/NadekoBot/_strings/ResponseStrings.sv-SE.json @@ -1,27 +1,4 @@ { - "clashofclans_base_already_claimed": "Denna bas är redan tagen eller förstörd.", - "clashofclans_base_already_destroyed": "Denna bas är redan förstörd.", - "clashofclans_base_already_unclaimed": "Denna bas är inte tagen.", - "clashofclans_base_destroyed": "**FÖRSTÖRD** bas #{0} i krig mot {1}", - "clashofclans_base_unclaimed": "{0} har **TAGIT BORT SITT ANSPRÅK PÅ** bas #{1} i krig mot {2}", - "clashofclans_claimed_base": "{0} har gjort anspråk på en bas #{1} i ett krig mot {2}", - "clashofclans_claimed_other": "@{0} Du har redan gjort anspråk på bas #{1}. Du kan inte göra ett anspråk på en ny bas.", - "clashofclans_claim_expired": "Anspråk från @{0} för ett krig mot {1} har gått ut.", - "clashofclans_enemy": "Fiende", - "clashofclans_info_about_war": "Information om krig mot {0}", - "clashofclans_invalid_base_number": "Ogiltigt basnummer.", - "clashofclans_invalid_size": "Ogiltig krigsstorlek.", - "clashofclans_list_active_wars": "Lista över aktiva krig", - "clashofclans_not_claimed": "Inte gjort anspråk på", - "clashofclans_not_partic": "Du är inte med i det kriget.", - "clashofclans_not_partic_or_destroyed": "@{0} Du är antingen inte med i det kriget eller så är basen redan förstörd.", - "clashofclans_no_active_wars": "Inga aktiva krig.", - "clashofclans_size": "Storlek", - "clashofclans_war_already_started": "Krig mot {0} har redan börjat.", - "clashofclans_war_created": "Krig mot {0} skapat.", - "clashofclans_war_ended": "Krig mot {0} har tagit slut.", - "clashofclans_war_not_exist": "Det kriget existerar inte.", - "clashofclans_war_started": "Krig mot {0} har börjat!", "customreactions_all_stats_cleared": "Alla anpassade emojis uppgifter borttagna.", "customreactions_deleted": "Anpassad emoji har blivit raderad", "customreactions_insuff_perms": "Otillräckliga behörigheter. Kräver Bot ägande för globala anpassade reaktioner, och administratör för server anpassade reaktioner.", @@ -66,7 +43,7 @@ "administration_bandm": "Du har blivit bannad från {0} server. anledning: {1}", "administration_banned_pl": "bannad", "administration_banned_user": "Användare bannad", - "administration_bot_name": "Bot namn byttes till {0}", + "administration_bot_name": "Botens namn byttes till {0}", "administration_bot_status": "Bot status byttes till {0}", "administration_byedel_off": "Automastisk radering av avskeds meddelanden har blivit avaktiverat.", "administration_byedel_on": "Avskeds meddelanden kommer bli raderade efter {0} sekunder.", @@ -151,7 +128,6 @@ "administration_old_nick": "Gammal smeknamn", "administration_old_topic": "Gammal ämne", "administration_perms": "Fel. Troligtvis så har jag inte tillräcklig behörighet.", - "administration_perms_reset": "Tillstånd för denna server har blivit återställt.", "administration_prot_active": "Aktiva skydd", "administration_prot_disable": "{0} har blivit **avaktiverat** på denna server.", "administration_prot_enable": "{0} Aktiverad", @@ -243,7 +219,6 @@ "administration_sbdm": "Du har blivit mjuk-bannad från {0} server.\nAnledning: {1}", "administration_user_unbanned": "Användare inte längre bannad.", "administration_migration_done": "Migration gjort!", - "administration_migration_error": "Fel vid migrering, kontrollera botens konsol för mer information.", "administration_presence_updates": "Närvaro Uppdateringar.", "administration_sb_user": "Användare mjuk-bannad.", "gambling_awarded": "har tilldelat {0} till {1}", @@ -416,7 +391,7 @@ "music_no_search_results": "Inga sök resultat.", "music_paused": "Musikuppspelning pausas.", "music_player_queue": "Spelar Kö - Sida {0}/{1}", - "music_playing_song": "Spelar låt", + "music_playing_song": "Spelar låt #{0}", "music_playlists": " `#{0}` - **{1}** by *{2}* ({3} låtar)", "music_playlists_page": "Sida {0} av Sparade Spellistor", "music_playlist_deleted": "Spelllista borttagen.", @@ -439,7 +414,6 @@ "music_rpl_enabled": "Upprepning av spellista aktiverad.", "music_set_music_channel": "Jag kommer nu att utgångs spela, färdig pausad och borttagna låtar i denna kanal.", "music_skipped_to": "Skippat till `{0}:{1}`", - "music_songs_shuffled": "Sånger blandade.", "music_song_moved": "Sång flyttad", "music_time_format": "{0}h {1}m {2}s", "music_to_position": "Till position", @@ -605,9 +579,6 @@ "utility_convert_not_found": "Kan inte konvertera {0} till {1}: enheter inte funna.", "utility_convert_type_error": "Kan inte konvertera {0} till {1}: typer av enheter är inte lika värda.", "utility_created_at": "Skapad vid", - "utility_csc_join": "Gå med kanal för att prata över servrar.", - "utility_csc_leave": "Lämnade kanal för att prata över servrar.", - "utility_csc_token": "Detta är din CSC token", "utility_custom_emojis": "Egengjorda emojis", "utility_error": "Fel", "utility_features": "Funktioner", @@ -754,7 +725,6 @@ "gambling_shop_role": "Du kommer att få {0} roll.", "gambling_type": "Typ", "utility_clpa_next_update": "Nästa uppdatering i {0}", - "administration_global_perms_reset": "Global tillåtelse har blivit återställt. ", "administration_gvc_disabled": "Spel Röst Kanal funktion har blivit inaktiverad på denna servern. ", "administration_gvc_enabled": "{0} är ett Spel Röst Kanal nu.\n", "administration_not_in_voice": "Du är inte i röst kanalen på denna server. ", @@ -782,5 +752,121 @@ "permissions_lgp_none": "Ingen blockerad kommando eller moduller. ", "gambling_animal_race_no_race": "Detta djur lopp är fullt!", "utility_cant_read_or_send": "Du kan inte läsa eller skicka medelanden till den kanalen.", - "utility_quotes_notfound": "Inget citat hittades som matchade det specifierade citat ID:t" + "utility_quotes_notfound": "Inget citat hittades som matchade det specifierade citat ID:t", + "administration_prefix_current": "Prefix på den här servern är {0}", + "administration_prefix_new": "Ändrat prefix på denna servern från {0} till {1}", + "administration_defprefix_current": "Grundprefix på denna boten är {0}", + "administration_defprefix_new": "Ändrat grundprefix på boten från {0} till {1}", + "administration_bot_nick": "Botens smeknamn ändrat till {0}", + "administration_user_nick": "Smeknamnet på användare {0} ändrat till {1}", + "administration_timezone_guild": "Tidszon för denna guild är `{0}`", + "administration_timezone_not_found": "Tidszonen inte funnen. Använd \"timezones\" kommandot för att se listan över tillgängliga tidszoner.", + "administration_timezones_available": "Tillgängliga tidszoner", + "music_song_not_found": "Hittar inte låten", + "searches_define_unknown": "Kan inte hitta definitionen av det ordet", + "utility_repeater_initial": "Ett initialt upprepande meddelande kommer att skickas om {0} timmar och {1} minuter", + "utility_verbose_errors_enabled": "Felaktig angivna kommandon kommer nu att visa felen", + "utility_verbose_errors_disabled": "Felaktig angivna kommandon kommer inte längre att visa felen", + "permissions_perms_reset": "Accesser till servern har återställts", + "permissions_trigger": "Tillstånd nummer #{0} {1} förhindrar detta.", + "administration_migration_error": "Fel under montering, kontrollera botens kontrollpanel för mer information", + "searches_hex_invalid": "Felaktig färg angiven", + "permissions_global_perms_reset": "Globala accesser har återställts", + "help_module": "Modul: {0}", + "games_hangman_stopped": "Hänga-gubbe stoppat", + "music_autoplaying": "Auto-uppspelning", + "music_queue_stopped": "Spelaren stoppad. Använd {0} kommandot för att starta spelaren", + "music_removed_song_error": "En låt med det indexet finns inte", + "music_shuffling_playlist": "Blandar låtar", + "music_songs_shuffle_enable": "Låtlistan blandas från och med nu", + "music_songs_shuffle_disable": "Låtar kommer inte längre blandas.", + "music_song_skips_after": "Låten kommer skippade efter {0}", + "administration_warnings_list": "Lista över alla varnade användare på servern", + "customreactions_redacted_too_long": "Redigerat för att det är för långt", + "nsfw_blacklisted_tag_list": "Lista på svartlistade taggar.", + "nsfw_blacklisted_tag": "En eller flera av taggarna du använt är svartlistade", + "nsfw_blacklisted_tag_add": "NSFW tag {0} är nu svartlistad", + "nsfw_blacklisted_tag_remove": "NSFW tag {0} är inte längre svartlistad", + "gambling_waifu_gift": "Gav {0} till {1}", + "gambling_waifu_gift_shop": "Waifu present shop", + "gambling_gifts": "Presenter", + "games_connect4_created": "Skapade ett Connect4 parti. Väntar på spelare", + "games_connect4_player_to_move": "Spelares tur att lägga: {0}", + "games_connect4_failed_to_start": "Connect4 startar inte eftersom ingen spelare anslöt", + "games_connect4_draw": "Connect4 slutade lika", + "games_connect4_won": "{0} vann Connect4 mot {1}", + "games_nunchi_joined": "Anslöt till Nunchi. {0} spelare har anslutit hittills ", + "games_nunchi_ended": "Nunchi avslutat. {0} vann", + "games_nunchi_ended_no_winner": "Nunchi avslutat utan någon vinnare", + "games_nunchi_started": "Nunchi har startat med {0} deltagare", + "games_nunchi_round_ended": "Nunchi runda avslutad. {0} är ute ur spelet", + "games_nunchi_round_ended_boot": "Nunchi rundan avslutad på grund av att vissa användare använt för mycket tid. Dessa användare är fortfarande med i spelet: {0}", + "games_nunchi_round_started": "Nunchi runda startade med {0} deltagare. Börja räkna från nummer {1}.", + "games_nunchi_next_number": "Nummer registrerat. Senaste numret var {0}", + "games_nunchi_failed_to_start": "Nunchi startas inte eftersom det inte fanns tillräckligt många deltagare", + "games_nunchi_created": "Nunchi skapat. Väntar på att deltagare ska ansluta", + "music_sad_enabled": "Låtar tas bort ur kön när dom har spelats klart.", + "music_sad_disabled": "Låtar kommer inte längre tas bort från kön när dom spelats klart.", + "utility_stream_role_enabled": "När en användare från {0} rollen börjar strömma, kommer jag att ge dom {1} rollen.", + "utility_stream_role_disabled": "Strömmningsroll har blivit otillgänglig", + "utility_stream_role_kw_set": "Strömmare måste nu ha {0} nyckelord för att kunna få sin roll.", + "utility_stream_role_kw_reset": "Återställ strömningsrollens nyckelord", + "utility_stream_role_bl_add": "Användare {0} kommer aldrig att få strömningsroll .", + "utility_stream_role_bl_add_fail": "Användare {0} är redan svartlistad", + "utility_stream_role_bl_rem": "Användare {0} är inte längre svartlistad", + "utility_stream_role_bl_rem_fail": "Användare {0} är inte svartlistad", + "utility_stream_role_wl_add": "Användare {0} kommer få strömningrollen även om nyckelordet inte återfanns i titeln", + "utility_stream_role_wl_add_fail": "Användare {0} är redan vitlistad", + "utility_stream_role_wl_rem": "Användare {0} är inte längre vitlistad", + "utility_stream_role_wl_rem_fail": "Användare {0} är inte vitlistad", + "utility_bot_config_edit_fail": "Misslyckades att ändra {0} till {1}", + "utility_bot_config_edit_success": "Värdet {0} är ändrat till {1}", + "customreactions_crca_disabled": "Anpassade emojis med id {0} kommer inte längre att aktiveras förutom om det finns i början av meningen.", + "customreactions_crca_enabled": "Anpassade emojis med id {0} kommer aktiveras om det finns någonstans i meningen. ", + "xp_server_level": "Server nivå", + "xp_level": "Nivå", + "xp_club": "Klubb", + "xp_xp": "Erfarenhet", + "xp_excluded": "{0} har blivit bortplockad från erfarenhetssystemet på denna server.", + "xp_not_excluded": "{0} är inte längre exkluderad från erfarenhetssystemet på den här servern.", + "xp_exclusion_list": "Uteslutningslista", + "xp_server_is_excluded": "Den här servern är exkluderad", + "xp_server_is_not_excluded": "Den här servern är inte exkluderad", + "xp_excluded_roles": "Exkluderade roller", + "xp_excluded_channels": "Exkluderade kanaler", + "xp_level_up_channel": "Grattis {0}, du har nått nivå {1}!", + "xp_level_up_dm": "Grattis {0}, du har nått nivå {1} på {2} servern!", + "xp_level_up_global": "Grattis {0}, du har nått den globala nivån {1}!", + "xp_role_reward_cleared": "Nivå {0} kommer inte längre resultera i en roll.", + "xp_role_reward_added": "Användare som när nivå {0} kommer att få {1} roll.", + "xp_role_rewards": "Rollbelöningar", + "xp_level_x": "Nivå {0}", + "xp_no_role_rewards": "Ingen rollbelöning på denna sida", + "xp_server_leaderboard": "Server erfarenhetstopplista", + "xp_global_leaderboard": "Global erfarenhetstopplista", + "xp_modified": "Servererfarenhet modifierad av {0} av {1}", + "xp_club_create_error": "Misslyckades med att skapa klubben. Säkerställ att du är över nivå 5 och att du inte redan är medlem i en klubb.", + "xp_club_created": "Klubb {0} har framgångsrikt skapats", + "xp_club_not_exists": "Den klubben finns inte", + "xp_club_applied": "Du har ansökt om medlemskap till {0} klubben", + "xp_club_apply_error": "Fel vid ansökan. Du är antingen redan medlem, eller så når du inte minimikravet eller så är du bannad från den här klubben.", + "xp_club_accepted": "Användare {0} accepterad till klubben", + "xp_club_accept_error": "Hittar inte användaren", + "xp_club_left": "Du har lämnat klubben", + "xp_club_not_in_club": "Du är inte i en klubb eller så försöker du lämna en klubb du inte är ägare till", + "xp_club_user_kick": "Användare {0} har blivit sparkad från {1} klubben.", + "xp_club_user_kick_fail": "Fel vid utsparkning. Du är antingen inte klubbens ägare eller så är inte användaren med i din klubb.", + "xp_club_user_banned": "Bannad användare {0} från klubben {1}", + "xp_club_user_ban_fail": "Misslyckat försök att banna. Du är antingen inte ägaren till klubben eller så är inte användaren i din klubb eller ens har sökt till den.", + "xp_club_user_unbanned": "Användare {0} är inte längre avstängd från {1} klubben.", + "xp_club_user_unban_fail": "Misslyckades att ta bort avstängningen. Du är antingen inte klubbens ägare eller så är användaren inte med i din klubb eller ens har sökt till den. ", + "xp_club_level_req_changed": "Ändrade klubbens nivåkrav till {0}", + "xp_club_level_req_change_error": "Misslyckades med att ändra nivåkravet", + "xp_club_disbanded": "Klubb {0} är nu upplöst", + "xp_club_disband_error": "Fel. Du är inte med i en klubb eller så är du inte ägare till klubben.", + "xp_club_icon_error": "Ogiltig bildlänk eller så är du inte äga", + "xp_club_icon_set": "Ställ in en ny klubbikon", + "xp_club_bans_for": "Avstängningar från {0} klubben", + "xp_club_apps_for": "Sökande till {0} klubben", + "xp_club_leaderboard": "Klubbtopplista - sida {0}" } \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.ts-TS.json b/src/NadekoBot/_strings/ResponseStrings.ts-TS.json new file mode 100644 index 00000000..be259308 --- /dev/null +++ b/src/NadekoBot/_strings/ResponseStrings.ts-TS.json @@ -0,0 +1,911 @@ +{ + "customreactions_all_stats_cleared": "All custom reaction stats rinsed away!", + "customreactions_deleted": "Got rid of that Custom Reaction", + "customreactions_insuff_perms": "You don't have the perms - you hafta own me for global custom reactions, and you need Administrator for server reactions!", + "customreactions_list_all": "List of all dumb things you make me say", + "customreactions_name": "Custom Reactions", + "customreactions_new_cust_react": "New Custom Reaction", + "customreactions_no_found": "You haven't forced me to say any stupid stuff yet.", + "customreactions_no_found_id": "I didn't find any reaction with that ID.", + "customreactions_response": "Response", + "customreactions_stats": "Custom Reaction Stats", + "customreactions_stats_cleared": "Rinsed away stats for {0} custom reaction.", + "customreactions_stats_not_found": "You want me to get stats for one without them?", + "customreactions_trigger": "Trigger", + "nsfw_autohentai_stopped": "About time, you perv.", + "nsfw_not_found": "No results found. Maybe you should take it as a sign to stop.", + "pokemon_already_fainted": "{0} is already checked out.", + "pokemon_already_full": "{0}'s already up and ready to kick butt!", + "pokemon_already_that_type": "Your type is already {0}, learn to read..", + "pokemon_attack": "hit {2}{3} with {0}{1} for {4} HP!", + "pokemon_cant_attack_again": "Yeah, I'd do that too, but let them attack back first..", + "pokemon_cant_attack_yourself": "You whacked in the head? You can't attack yourself!", + "pokemon_fainted": "{0} has been wiped out!", + "pokemon_healed": "cheated and healed {0} with one {1}", + "pokemon_hp_remaining": "{0} has {1} HP left.", + "pokemon_invalid_move": "You can't just use {0} like that.. Type `{1}ml` to see what you can actually do..", + "pokemon_moves": "List of attacks for {0} type", + "pokemon_not_effective": "It's not effective. Did you even learn your types?", + "pokemon_no_currency": "You're out of {0} for that.", + "pokemon_revive_other": "brought back {0} with one {1}", + "pokemon_revive_yourself": "You cheated and revived yourself with one {0}", + "pokemon_settype_success": "You successfully cheated and set your type to {0} for a {1}", + "pokemon_somewhat_effective": "It's kinda effective.", + "pokemon_super_effective": "It's SUPER effective!", + "pokemon_too_many_moves": "You ran your moves out too many times, so you're stunned!", + "pokemon_type_of_user": "{0}'s type is {1}, stalker-tan..", + "pokemon_user_not_found": "User not found. Use a real user next time.", + "pokemon_you_fainted": "Um. You can't move when you're dead.", + "administration_aar_disabled": "I **won't auto assign roles** anymore when a user joins!", + "administration_aar_enabled": "**Enabling auto assign role** when users join, cause your lazy butt can't do it yourself..", + "administration_attachments": "Attachments", + "administration_avatar_changed": "Pic Changed", + "administration_bandm": "You have been kicked out to space from {0},\nfor {1}", + "administration_banned_pl": "bunned", + "administration_banned_user": "User Bunned", + "administration_bot_name": "Ok i lost a bet and now everyone can call me {0}", + "administration_bot_status": "Playing {0} now, but it's not like it's for you or anything...", + "administration_byedel_off": "Honestly, I wasn't gonna delete that many messages in a server that makes so many people wanna leave anyways..", + "administration_byedel_on": "I'll get rid of bye messages after {0} seconds.", + "administration_byemsg_cur": "{0} left your dumb little server, great for them!", + "administration_byemsg_enable": "Now ya gotta turn on byemessages by typing {0}!", + "administration_byemsg_new": "Changed the byemessage!", + "administration_bye_off": "No more byemessages.", + "administration_bye_on": "Turning on byemessages for this channel~!", + "administration_ch_name_change": "Channel's Name Changed", + "administration_ch_old_name": "Last Name", + "administration_ch_topic_change": "Channel Topic Changed", + "administration_cleaned_up": "Cleaned that stuff up.", + "administration_content": "Content", + "administration_cr": "Made the role {0}... but don't get the wrong idea!", + "administration_createtextchan": "Finished making text channel {0}.", + "administration_createvoich": "Piled up voice channel {0} together!", + "administration_deafen": "Literal earshot complete!", + "administration_deleted_server": "Deleted server {0}, byebye!", + "administration_delmsg_off": "Finally quit cleaning up all that mess. Sheesh, really?", + "administration_delmsg_on": "I'll delete all user commands that work out now. Hmph.", + "administration_deltextchan": "{0} was the worse text channel anyways.", + "administration_delvoich": "No one ever used {0} anyways.", + "administration_dm_from": "Blackmail from", + "administration_donadd": "A new donator? Well... thanks I guess. Total donated: {0} 👑", + "administration_donators": "Thanks to these people for donating.. It's not like I needed you to or anything!", + "administration_fwall_start": "All my masters will be receiving DMs now.", + "administration_fwall_stop": "Only my first master deserves attention.", + "administration_fwdm_start": "You because I'll forward DMs now, doesn't mean I'm giving you special attention!", + "administration_fwdm_stop": "Good. I was getting tired of DMs anyways.", + "administration_greetdel_off": "About time you stopped removing my hard work, rude!", + "administration_greetdel_on": "Greet messages will be deleted after {0} seconds. What, my greetings weren't good enough for you?", + "administration_greetdmmsg_cur": "Ugh, greeting people EVERY TIME with: {0}", + "administration_greetdmmsg_enable": "Enable DM blackmail by typing {0}", + "administration_greetdmmsg_new": "New on-join blackmail created.", + "administration_greetdm_off": "I won't deliver on-join blackmail in DMs anymore.", + "administration_greetdm_on": "I'll send your admission blackmail in DMs now!", + "administration_greetmsg_cur": "Current tribute blackmail: {0}", + "administration_greetmsg_enable": "Enable admission blackmail by typing {0}", + "administration_greetmsg_new": "New admission blackmail set!", + "administration_greet_off": "Admission blackmail's off.", + "administration_greet_on": "I'll send greetmessages in this channel from now on!", + "administration_hierarchy": "Can't use this one on people with a role higher or equal to yours in power, know your place you tiny little dummy!", + "administration_images_loaded": "Pics loaded after {0} seconds! Creep.", + "administration_invalid_format": "Follow the format next time!", + "administration_invalid_params": "Not what you put there..", + "administration_joined": "{0} got pulled into {1}", + "administration_kickdm": "I threw you out of {0} server because {1}", + "administration_kicked_user": "Thrown out", + "administration_lang_list": "Languages\n{0}", + "administration_lang_set": "Changed your server's locale to {0} - {1}", + "administration_lang_set_bot": "Bot's default locale is now {0} - {1}", + "administration_lang_set_bot_show": "For now, this is my attitude. {0} - {1}", + "administration_lang_set_fail": "Wroooong! Check the help for this one again.", + "administration_lang_set_show": "My attitude right now is {0} - {1}", + "administration_left": "{0} has saved themselves from {1}", + "administration_left_server": "Walked out of {0}", + "administration_log": "Tracking {0} here... why can't you do it yourself, lazyhead?", + "administration_log_all": "Logging EVERY SINGLE event here.. seriously??", + "administration_log_disabled": "Tracking disabled.", + "administration_log_events": "I can track these. For the server. Not you.", + "administration_log_ignore": "I won't care about {0} in logs.", + "administration_log_not_ignore": "Won't ignore {0} in logs anymore.", + "administration_log_stop": "Quit logging {0}, finally..", + "administration_menrole": "{0} is annoying these people", + "administration_message_from_bo": "Useless junk from {0} `[Master]`:", + "administration_message_sent": "Threw the message to em!", + "administration_moved": "{0} sneaked from {1} to {2}", + "administration_msg_del": "Message Shot Out in #{0}", + "administration_msg_update": "Message Sneakily Changed in #{0}", + "administration_muted_pl": "Shutted them up.", + "administration_muted_sn": "Shutted them up.", + "administration_mute_error": "Uhh, I probably don't have the perms for that, seriously?", + "administration_mute_role_set": "New duct-tape role set.", + "administration_need_admin": "Um. I need **Administration** for that one first, dumbhead..", + "administration_new_msg": "New Message", + "administration_new_nick": "New Nickname", + "administration_new_topic": "New Topic", + "administration_nick_change": "Nickname Changed", + "administration_no_server": "Can't find that server", + "administration_no_shard_id": "No shard with that ID found.", + "administration_old_msg": "Old Message", + "administration_old_nick": "Old Nickname", + "administration_old_topic": "Old Topic", + "administration_perms": "Error. Most likely I don't have sufficient permissions.", + "administration_prot_active": "Active Protections", + "administration_prot_disable": "{0} has been **disabled** on this server.", + "administration_prot_enable": "{0} Enabled", + "administration_prot_error": "Error. I need ManageRoles permission", + "administration_prot_none": "No protections enabled.", + "administration_raid_cnt": "User threshold must be between {0} and {1}.", + "administration_raid_stats": "If {0} or more users join within {1} seconds, I will {2} them.", + "administration_raid_time": "Time must be between {0} and {1} seconds.", + "administration_rar": "Successfully removed all roles from user {0}", + "administration_rar_err": "Failed to remove roles. I have insufficient permissions.", + "administration_rc": "Color of {0} role has been changed.", + "administration_rc_not_exist": "That role does not exist.", + "administration_rc_params": "The parameters specified are invalid.", + "administration_rc_perms": "Ok so this mistake came because you aren't giving me a valid color? Or daddy didn't gave you permission to do this...", + "administration_remrole": "Successfully removed role {0} from user {1}", + "administration_remrole_err": "Failed to remove role. I have insufficient permissions.", + "administration_renrole": "Role renamed.", + "administration_renrole_err": "Failed to rename role. I have insufficient permissions.", + "administration_renrole_perms": "You can't edit roles higher than your highest role.", + "administration_reprm": "Removed the playing message: {0}", + "administration_role_added": "Role {0} has been added to the neverending list in group {1}.", + "administration_role_clean": "{0} not found.Cleaned up.", + "administration_role_in_list": "Role {0} is already in the list.", + "administration_ropl_added": "Added.", + "administration_ropl_disabled": "Rotating playing status disabled.", + "administration_ropl_enabled": "Rotating playing status enabled.", + "administration_ropl_list": "Here is a list of rotating statuses:\n{0}", + "administration_ropl_not_set": "No rotating playing statuses set.", + "administration_self_assign_already": "You already have {0} role.", + "administration_self_assign_already_excl": "You already have {0} exclusive self-assigned role.", + "administration_self_assign_excl": "Self assigned roles are now exclusive!", + "administration_self_assign_list": "There are {0} self assignable roles", + "administration_self_assign_not": "That role is not self-assignable.", + "administration_self_assign_not_have": "You don't have {0} role.", + "administration_self_assign_no_excl": "Self assigned roles are now not exclusive!", + "administration_self_assign_perms": "I am unable to add that role to you. `I can't add roles to owners or other roles higher than my role in the role hierarchy.`", + "administration_self_assign_rem": "{0} has been removed from the list of self-assignable roles.", + "administration_self_assign_remove": "You no longer have {0} role.", + "administration_self_assign_success": "You now have {0} role.", + "administration_setrole": "Sucessfully added role {0} to user {1}", + "administration_setrole_err": "Failed to add role. I have insufficient permissions.", + "administration_set_avatar": "New avatar set!", + "administration_set_channel_name": "New channel name set.", + "administration_set_game": "New game set!", + "administration_set_stream": "New stream set!", + "administration_set_topic": "New channel topic set.", + "administration_shard_reconnected": "Shard {0} reconnected.", + "administration_shard_reconnecting": "Shard {0} reconnecting.", + "administration_shutting_down": "Shutting down", + "administration_slowmode_desc": "Users can't send more than {0} messages every {1} seconds.", + "administration_slowmode_disabled": "Slow mode disabled.", + "administration_slowmode_init": "Slow mode initiated", + "administration_soft_banned_pl": "soft-banned (kicked)", + "administration_spam_ignore": "{0} will ignore this channel.", + "administration_spam_not_ignore": "{0} will no longer ignore this channel.", + "administration_spam_stats": "If a user posts {0} same messages in a row, I will {1} them.\n __IgnoredChannels__: {2}", + "administration_text_chan_created": "Text Channel Created", + "administration_text_chan_destroyed": "Text Channel Destroyed ", + "administration_undeafen": "Undeafen successful.", + "administration_unmuted_sn": "Unmuted", + "administration_username": "Username", + "administration_username_changed": "Username Changed", + "administration_users": "Users", + "administration_user_banned": "User Banned", + "administration_user_chat_mute": "{0}, ever heard of knowing when to shut your mouth? Or fingers?", + "administration_user_chat_unmute": "**Unmuted** {0} from chatting.", + "administration_user_joined": "User Joined", + "administration_user_left": "User Left", + "administration_user_muted": "Hey {0}, SHUTUPSHUTUPSHUTUPSHUTUPSHUTUP!!!!", + "administration_user_role_add": "User's Role Added", + "administration_user_role_rem": "User's Role Removed", + "administration_user_status_change": "{0} is now {1}", + "administration_user_unmuted": "{0}, you can talk now..", + "administration_user_vjoined": "{0} has joined {1} voice channel.", + "administration_user_vleft": "{0} has left {1} voice channel.", + "administration_user_vmoved": "{0} moved from {1} to {2} voice channel.", + "administration_user_voice_mute": "{0}, URUSAAAAAAAIIIIIIIIII!!!", + "administration_user_voice_unmute": "Freed {0}'s voice.", + "administration_voice_chan_created": "Voice Channel Created", + "administration_voice_chan_destroyed": "Voice Channel Destroyed", + "administration_vt_disabled": "Disabled voice + text feature.", + "administration_vt_enabled": "Enabled voice + text feature.", + "administration_vt_exit": "I don't have **manage roles** and/or **manage channels** permission, so I cannot run `voice+text` on {0} server.", + "administration_vt_no_admin": "You are enabling/disabling this feature and **I do not have ADMINISTRATOR permissions**. This may cause some issues, and you will have to clean up text channels yourself afterwards.", + "administration_vt_perms": "I require atleast **manage roles** and **manage channels** permissions to do what you want from me. Please don't let it be lewd. I prefer Administration permission tho. Please?", + "administration_xmuted_text": "User {0} from text chat", + "administration_xmuted_text_and_voice": "User {0} from text and voice chat", + "administration_xmuted_voice": "User {0} from voice chat", + "administration_sbdm": "You have been soft-banned from {0} server.\nReason: {1}", + "administration_user_unbanned": "User Unbanned", + "administration_migration_done": "Migration done!", + "administration_presence_updates": "Presence Updates", + "administration_sb_user": "User Soft-Banned", + "gambling_awarded": "has awarded {0} to {1}. You better be grateful!", + "gambling_better_luck": "Ha, are you even trying?? ^_^", + "gambling_br_win": "You won {0} for rolling above {1}. You got lucky this time, ok?", + "gambling_deck_reshuffled": "Deck reshuffled.", + "gambling_flipped": "flipped {0}.", + "gambling_flip_guess": "I guess that was OK. You won {0}", + "gambling_flip_invalid": "You only can flip 1 to {0} coins!", + "gambling_flowerreaction_desc": "Add {0} reaction to this message to get {1}, but it's not like I like you or anything!", + "gambling_flowerreaction_footer": "This event is active for up to {0} hours, so don't be slow.", + "gambling_flowerreaction_title": "I guess I'll give out some flowers.", + "gambling_gifted": "has gifted {0} to {1}. You better be grateful!", + "gambling_has": "{0} only has {1}, HA", + "gambling_heads": "Heads", + "gambling_leaderboard": "Real Senpais", + "gambling_mass_award": "Awarded {0} to {1} users from {2} role.", + "gambling_max_bet_limit": "You can't bet more than {0}", + "gambling_min_bet_limit": "You can't bet less than {0}", + "gambling_not_enough": "You don't have enough {0}", + "gambling_no_more_cards": "No more cards in the deck.", + "gambling_raffled_user": "Raffled User", + "gambling_roll": "You rolled {0}.", + "gambling_slot_bet": "Bet", + "gambling_slot_jackpot": "Wow. You actually impressed me. x{0}", + "gambling_slot_single": "Only one {0}, x{1}", + "gambling_slot_three": "Three of a kind. That was alright I suppose. x{0}", + "gambling_slot_two": "Two {0} - bet x{1}", + "gambling_slot_won": "Won", + "gambling_sneakygamestatus_desc": "Users must type a secret code to get {0}.\nLasts {1} seconds. If you tell anyone, I won't forgive you!", + "gambling_sneakygamestatus_end": "SneakyGame event ended. Only {0} users received the reward.", + "gambling_sneakygamestatus_title": "SneakyGameStatus event started", + "gambling_tails": "Tails", + "gambling_take": "successfully took {0} from {1}. Thief!", + "gambling_take_fail": "was unable to take {0} from{1} because the user is poor and only has {2}!", + "help_back_to_toc": "Back to ToC", + "help_bot_owner_only": "Bot Owner Only", + "help_channel_permission": "Requires {0} channel permission.", + "help_cmdlist_donate": "You can support the project on patreon: <{0}> or paypal: <{1}>", + "help_cmd_and_alias": "Command and aliases", + "help_commandlist_regen": "Commandlist Regenerated.", + "help_commands_instr": "Type `{0}h CommandName` to see the help for that specified command. e.g. `{0}h {0}8ball` ...or don't, i don't care!", + "help_command_not_found": "I can't find that command. Does it even exist?.", + "help_desc": "Description", + "help_donate": "You can support the NadekoBot project on \nPatreon <{0}> or\nPaypal <{1}>\nDon't forget to leave your discord name or id in the message.\n\n**Thank you** ♥️", + "help_guide": "**You better read these commands before asking questions**: <{0}>\n**Hosting Guides and docs can be found here**: <{1}>", + "help_list_of_commands": "List Of Commands", + "help_list_of_modules": "List Of Modules", + "help_modules_footer": "Type `{0}cmds ModuleName` to get a list of commands in that module. eg `{0}cmds games`", + "help_module_not_found": "That module does not exist.", + "help_server_permission": "Requires {0} server permission.", + "help_table_of_contents": "Table Of Contents", + "help_usage": "Usage", + "nsfw_autohentai_started": "Autohentai started. Reposting every {0}s with one of the following tags:\n{1}", + "nsfw_tag": "Tag", + "gambling_animal_race": "Animal Race", + "gambling_animal_race_failed": "Failed to start since there was not enough participants.", + "gambling_animal_race_full": "Race is full! Starting immediately.", + "gambling_animal_race_join": "{0} joined as a {1}", + "gambling_animal_race_join_bet": "{0} joined as a {1} and bet {2}!", + "gambling_animal_race_join_instr": "Type {0}jr to join the race.", + "gambling_animal_race_starting": "Starting in 20 seconds or when the room is full.", + "gambling_animal_race_starting_with_x": "Starting with {0} participants.", + "gambling_animal_race_won": "{0} as {1} Won the race!", + "gambling_animal_race_won_money": "{0} as {1} Won the race and {2}!", + "gambling_dice_invalid_number": "Invalid number specified. You can roll {0}-{1} dice at once.", + "gambling_dice_rolled": "rolled {0}", + "gambling_dice_rolled_num": "Dice rolled: {0}", + "gambling_race_failed_starting": "Failed starting the race. Another race is probably running.", + "gambling_race_not_exist": "No race exists on this server", + "gambling_second_larger_than_first": "Second number must be larger than the first one.", + "gambling_changes_of_heart": "Changes Of Heart", + "gambling_claimed_by": "Claimed By", + "gambling_divorces": "Divorces", + "gambling_likes": "Likes", + "gambling_price": "Price", + "gambling_waifus_none": "No waifus have been claimed yet.", + "gambling_waifus_top_waifus": "Top Waifus", + "gambling_waifu_affinity_already": "your affinity is already set to that waifu or you're trying to remove your affinity while not having one.", + "gambling_waifu_affinity_changed": "changed their affinity from {0} to {1}.\n\n*This is morally questionable.*🤔", + "gambling_waifu_affinity_cooldown": "You must wait {0} hours and {1} minutes in order to change your affinity again.", + "gambling_waifu_affinity_reset": "Your affinity is reset. You no longer have a person you like.", + "gambling_waifu_affinity_set": "wants to be {0}'s waifu. Aww <3", + "gambling_waifu_claimed": "claimed {0} as their waifu for {1}!", + "gambling_waifu_divorced_like": "You have divorced a waifu who likes you. You heartless monster.\n{0} received {1} as a compensation.", + "gambling_waifu_egomaniac": "you can't set affinity to yourself, you egomaniac.", + "gambling_waifu_fulfilled": "🎉 Their love is fulfilled! 🎉\n{0}'s new value is {1}!", + "gambling_waifu_isnt_cheap": "No waifu is that cheap. You must pay at least {0} to get a waifu, even if their actual value is lower.", + "gambling_waifu_not_enough": "You must pay {0} or more to claim that waifu!", + "gambling_waifu_not_yours": "That waifu is not yours.", + "gambling_waifu_not_yourself": "You can't claim yourself.", + "gambling_waifu_recent_divorce": "You divorced recently. You must wait {0} hours and {1} minutes to divorce again.", + "gambling_nobody": "Nobody", + "gambling_waifu_divorced_notlike": "You have divorced a waifu who doesn't like you. You received {0} back.", + "games_8ball": "8ball", + "games_acrophobia": "Acrophobia", + "games_acro_ended_no_sub": "Game ended with no submissions. I guess everyone is afraid to lose.", + "games_acro_no_votes_cast": "No votes cast. Game ended with no winner.", + "games_acro_nym_was": "Acronym was {0}.", + "games_acro_running": "Acrophobia game is already running in this channel.", + "games_acro_started": "Game started. Create a sentence with the following acronym: {0}.", + "games_acro_started_footer": "You have {0} seconds to make a submission.", + "games_acro_submit": "{0} submitted their sentence. ({1} total)", + "games_acro_vote": "Vote by typing a number of the submission", + "games_acro_vote_cast": "{0} cast their vote!", + "games_acro_winner": "Winner is {0} with {1} points.", + "games_acro_winner_only": "{0} is the winner for being the only user who made a submission!", + "games_question": "Question", + "games_rps_draw": "It's a draw! Both picked {0}", + "games_rps_win": "{0} won! {1} beats {2}", + "games_submissions_closed": "Submissions Closed", + "gambling_animal_race_already_started": "Animal Race is already running.", + "gambling_total_average": "Total: {0} Average: {1}", + "games_category": "Category", + "games_cleverbot_disabled": "Disabled cleverbot on this server.", + "games_cleverbot_enabled": "Enabled cleverbot on this server.", + "games_curgen_disabled": "Currency generation has been disabled on this channel.", + "games_curgen_enabled": "Currency generation has been enabled on this channel.", + "games_curgen_pl": "{0} random {1} appeared!", + "games_curgen_sn": "A random {0} appeared!", + "games_failed_loading_question": "Failed loading a question.", + "games_game_started": "Game Started", + "games_hangman_game_started": "Hangman game started", + "games_hangman_running": "Hangman game already running on this channel.", + "games_hangman_start_errored": "Starting hangman errored.", + "games_hangman_types": "List of \"{0}hangman\" term types:", + "games_leaderboard": "Leaderboard", + "games_not_enough": "You don't have enough {0}", + "games_no_results": "No results", + "games_picked": "picked {0}", + "games_planted": "{0} planted {1}", + "games_trivia_already_running": "Trivia game is already running on this server.", + "games_trivia_game": "Trivia Game", + "games_trivia_guess": "{0} guessed it! The answer was: {1}", + "games_trivia_none": "No trivia is running on this server.", + "games_trivia_points": "{0} has {1} points", + "games_trivia_stopping": "Stopping after this question.", + "games_trivia_times_up": "Time's up! The correct answer was {0}", + "games_trivia_win": "{0} guessed it and WON the game! The answer was: {1}", + "games_ttt_against_yourself": "You can't play against yourself.", + "games_ttt_already_running": "TicTacToe Game is already running in this channel.", + "games_ttt_a_draw": "A draw!", + "games_ttt_created": "has created a game of TicTacToe.", + "games_ttt_has_won": "{0} has Won!", + "games_ttt_matched_three": "Matched Three", + "games_ttt_no_moves": "No moves left!", + "games_ttt_time_expired": "Time Expired!", + "games_ttt_users_move": "{0}'s move", + "games_vs": "{0} vs {1}", + "music_attempting_to_queue": "Attempting to queue {0} songs...", + "music_autoplay_disabled": "Autoplay disabled.", + "music_autoplay_enabled": "Autoplay enabled.", + "music_defvol_set": "Default volume set to {0}%", + "music_dir_queue_complete": "Directory queue complete.", + "music_fairplay": "Fairplay.", + "music_finished_song": "The Song is done, finally. Hmmh? it was", + "music_fp_disabled": "You don't like being fair huh?", + "music_fp_enabled": "Oh wow, acting all fair.", + "music_from_position": "From position", + "music_id": "Id", + "music_invalid_input": "Invalid input.", + "music_max_playtime_none": "There it goes, the only thing I ever agreed with, undone. As expected of you.", + "music_max_playtime_set": "Oh? if it is longer than {0} second(s) don't let it be played? I am impressed, that is the first thing you said that wasn't stupid!", + "music_max_queue_unlimited": "It doesn't matter huh? Just let them queue all the things? Do you think I am some kind of bot?", + "music_max_queue_x": "Hmmh, so much to watch out for.. After {0} track(s) don't not them down anymore..", + "music_must_be_in_voice": "Come in the room before you try to make me play your stupid songs!", + "music_name": "Name", + "music_now_playing": "Now Playing", + "music_no_player": "No I am not playing music, can't you hear that?", + "music_no_search_results": "Some day I will just not even try anymore. Search for something that exists.", + "music_paused": "*presses pause*", + "music_player_queue": "Player Queue - Page {0}/{1}", + "music_playing_song": "Playing your stupid song #{0}", + "music_playlists": "`#{0}` - **{1}** by *{2}* ({3} songs)", + "music_playlists_page": "Page {0} of Saved Playlist notes", + "music_playlist_deleted": "*throws the playlist note into fire*", + "music_playlist_delete_fail": "I can't delete playlist notes if they don't exist! And I am definitely not going to delete those you didn't make, you selfish animal!", + "music_playlist_id_not_found": "Baka, there is no playlist like this. Just look at the notes!", + "music_playlist_queue_complete": "All the Songs are in place! What perfect work, ***I*** am amazing after all.", + "music_playlist_saved": "Playlist note Saved", + "music_play_limit": "{0}s limit", + "music_queue": "Queue", + "music_queued_song": "Queued Song", + "music_queue_cleared": "Music queue cleared.", + "music_queue_full": "That one person, what was *its* name again? Well I was told that after {0}/{0} nothing should be allowed.", + "music_removed_song": "Removed song", + "music_repeating_cur_song": "Repeating Current Song", + "music_repeating_playlist": "Repeating Playlist", + "music_repeating_track": "This song? Really? I have do endure it over and over?", + "music_repeating_track_stopped": "Finally it stopped!", + "music_resumed": "I wonder how you can be unable to press the **ON** button on this speaker.", + "music_rpl_disabled": "Finally it stops, if you weren't so useless you could do it yourself.", + "music_rpl_enabled": "Hmmh, when it ends add it to the end of the line, I guess I have to huh?", + "music_set_music_channel": "Haaa? Here? Sometimes I wonder why ***I*** have to do this for you. I'll call out the playing, finished, paused and removed songs here.", + "music_skipped_to": "Skipped to `{0}:{1}`", + "music_song_moved": "Away you go!", + "music_time_format": "{0}h {1}m {2}s", + "music_to_position": "To position", + "music_unlimited": "unlimited", + "music_volume_input_invalid": "0 and 100. Is it that hard to hit between them?", + "music_volume_set": "Volume set to {0}%", + "permissions_acm_disable": "Disabled usage of ALL MODULES on {0} channel.", + "permissions_acm_enable": "Enabled usage of ALL MODULES on {0} channel.", + "permissions_allowed": "Allowed", + "permissions_arm_disable": "Disabled usage of ALL MODULES for {0} role.", + "permissions_arm_enable": "Enabled usage of ALL MODULES for {0} role.", + "permissions_asm_disable": "Disabled usage of ALL MODULES on this server.", + "permissions_asm_enable": "Enabled usage of ALL MODULES on this server.", + "permissions_aum_disable": "Disabled usage of ALL MODULES for {0} user.", + "permissions_aum_enable": "Enabled usage of ALL MODULES for {0} user.", + "permissions_blacklisted": "Blacklisted {0} with ID {1}", + "permissions_cmdcd_add": "Command {0} now has a {1}s cooldown.", + "permissions_cmdcd_cleared": "O-okay, command {0} has no coooldown now and all existing cooldowns have been cleared.", + "permissions_cmdcd_none": "No command cooldowns set.", + "permissions_command_costs": "Command Costs", + "permissions_cx_disable": "Disabled usage of {0} {1} on {2} channel.", + "permissions_cx_enable": "Enabled usage of {0} {1} on {2} channel.", + "permissions_denied": "Denied", + "permissions_filter_word_add": "Added word {0} to the list of filtered words.", + "permissions_filter_word_list": "The No-no's, as you would say", + "permissions_filter_word_remove": "Good good, less to do.. Not watching out for {0} anymore.", + "permissions_invalid_second_param_between": "Baka! The second one is wrong! (Must be a number between {0} and {1})", + "permissions_invite_filter_channel_off": "Yes yes I'll stop.", + "permissions_invite_filter_channel_on": "Gah, so many special wishes. I'll only try to eliminate the Pest on this channel.", + "permissions_invite_filter_server_off": "Eh? Okay, I'll stop eliminating the pests tries on this server.", + "permissions_invite_filter_server_on": "I'll eliminate the pests tries to get more people on this server!", + "permissions_moved_permission": "Moved permission {0} from #{1} to #{2}", + "permissions_not_found": "Hmph. You are just entering this as a joke aren't you? There is nothing at #{0}!", + "permissions_no_costs": "It's free!", + "permissions_of_command": "command", + "permissions_of_module": "module", + "permissions_page": "Permissions page {0}", + "permissions_permrole": "I let people with {0} change your stupid rules.", + "permissions_permrole_changed": "Haaaaa, people with {0} will be able to edit persmissions now.", + "permissions_perm_out_of_range": "Nothing to be fouuund! Are you doing this right?", + "permissions_removed": "removed permission #{0} - {1}", + "permissions_rx_disable": "Disabled usage of {0} {1} for {2} role.", + "permissions_rx_enable": "Enabled usage of {0} {1} for {2} role.", + "permissions_sec": "sec.", + "permissions_sx_disable": "Disabled usage of {0} {1} on this server.", + "permissions_sx_enable": "Enabled usage of {0} {1} on this server.", + "permissions_unblacklisted": "Unblacklisted {0} with ID {1}", + "permissions_uneditable": "uneditable", + "permissions_ux_disable": "Disabled usage of {0} {1} for {2} user.", + "permissions_ux_enable": "Enabled usage of {0} {1} for {2} user.", + "permissions_verbose_false": "Well, I'll not show you your stupid tries then.", + "permissions_verbose_true": "Oho? Sure, I will show you your stupid tries.", + "permissions_word_filter_channel_off": "Pfft, Didn't like me cleaning words huh? What did you expect?", + "permissions_word_filter_channel_on": "You want only this one to be cleaned? Special needs, wow.", + "permissions_word_filter_server_off": "Pfft, Didn't like me cleaning words huh? What did you expect?", + "permissions_word_filter_server_on": "Ha! I have to clean after them? Sure, I'll help you incompetents here.", + "searches_abilities": "Abilities", + "searches_anime_no_fav": "No favorite anime yet", + "searches_atl_ad_started": "Let's see, hehe. I'll just remove your messages to write them in the way it is supposed to be!", + "searches_atl_removed": "No need to show off my *amazing* skills huh?", + "searches_atl_set": "Change huh? I shall use my *amazing* skills with {from}>{to} instead!", + "searches_atl_started": "I shall use my *amazing* skills to help you fools in this channel.", + "searches_atl_stopped": "Okay I will stop to use my *amazing* skills for this channel.", + "searches_bad_input_format": "That is, what? No I don't understand what this is.", + "searches_card_not_found": "Who sorted this? It's impossible to find anything!", + "searches_catfact": "fact", + "searches_chapters": "Chapters", + "searches_comic_number": "Comic #", + "searches_compet_loses": "Competitive Losses", + "searches_compet_played": "Competitive Played", + "searches_compet_rank": "Competitive Rank", + "searches_compet_wins": "Competitive Wins", + "searches_completed": "Completed", + "searches_condition": "Condition", + "searches_cost": "Cost", + "searches_date": "Date", + "searches_define": "Define:", + "searches_dropped": "Dropped", + "searches_episodes": "Episodes", + "searches_error_occured": "EH? A mistake? I don't make mistakes, you made a mistake! BAKA!", + "searches_example": "Example", + "searches_failed_finding_anime": "I can't find that animu.", + "searches_failed_finding_manga": "Can't find that fruit. Ha!.. You don't get it? Hmph.", + "searches_genres": "Genres", + "searches_hashtag_error": "Woah, you are so out! There is nothing to explain to you about this.", + "searches_height_weight": "Height/Weight", + "searches_height_weight_val": "{0}m/{1}kg", + "searches_humidity": "Humidity", + "searches_image_search_for": "Image Search For:", + "searches_imdb_fail": "What are you even searching for?", + "searches_invalid_lang": "This is not how this works. I need a source and a target language.", + "searches_jokes_not_loaded": "What? Jokes? No such thing.", + "searches_latlong": "Lat/Long", + "searches_level": "Level", + "searches_list_of_place_tags": "List of {0}place tags", + "searches_location": "Location", + "searches_magicitems_not_loaded": "Magic Items not loaded.", + "searches_mal_profile": "{0}'s MAL profile", + "searches_mashape_api_missing": "I need a MashapeApiKey for that... M-maybe we should ask Master?", + "searches_min_max": "Min/Max", + "searches_no_channel_found": "Not quite sure what you expected, no channel found.", + "searches_no_results": "Nothing! Absolutely nothing.", + "searches_on_hold": "On-Hold", + "searches_original_url": "Original Url", + "searches_osu_api_key": "Haaa? I need an osu! API key for that.", + "searches_osu_failed": "Hmph.They didn't give **me** the osu! signature!", + "searches_over_x": "Hehe, I found over {0} images. I'll show random {0}.", + "searches_ow_user_not_found": "Doesn't exist! I can't work like this, give me a usable BattleTag for that Region!", + "searches_plan_to_watch": "Plan to watch", + "searches_platform": "Platform", + "searches_pokemon_ability_none": "That is just weird, what are you trying to make me find?", + "searches_pokemon_none": "What is a `tablemon` supposed to be? Give me something real.", + "searches_profile_link": "Profile Link:", + "searches_quality": "Quality:", + "searches_quick_playtime": "Quick Playtime", + "searches_quick_wins": "Quick Wins", + "searches_rating": "Rating", + "searches_score": "Score:", + "searches_search_for": "Search For:", + "searches_shorten_fail": "Well, I can't shorten it. Give me something useable next time.", + "searches_short_url": "Short Url", + "searches_something_went_wrong": "Well this didn't work like I wanted it to... Probably your fault.", + "searches_specify_search_params": "Don't you know I need to know what to search for to... search for it?", + "searches_status": "Status", + "searches_store_url": "Store Url", + "searches_streamer_offline": "Streamer {0} is offline, probably didn't want to be seen by you.", + "searches_streamer_online": "Oh? Streamer {0} is online with {1} viewers, kind of sad.", + "searches_streams_following": "I have to watfch {0} streams for you! Unbelievable!", + "searches_streams_none": "No Streams to watch out for, good.", + "searches_stream_no": "There is no such stream, stop bothering me.", + "searches_stream_not_exist": "This probably doesn't exist, what are you even doing?", + "searches_stream_removed": "Don't want to be bothered by {0}'s stream ({1}) anymore huh? I'll stop watching out then.", + "searches_stream_tracked": "Since your brain is unable to concentrate at all **I** shall tell you when the status changes.", + "searches_sunrise": "Sunrise", + "searches_sunset": "Sunset", + "searches_temperature": "Temperature", + "searches_title": "Title:", + "searches_top_3_fav_anime": "Top 3 favorite anime:", + "searches_translation": "Translation:", + "searches_types": "Types", + "searches_ud_error": "I can't define that to an idiot like you, ask me something else.", + "searches_url": "Url", + "searches_viewers": "Viewers", + "searches_watching": "Watching", + "searches_wikia_error": "I don't get this. Are you sure this is a thing or is your stupidity starting to reach me?", + "searches_wikia_input_error": "Give me a wikia and then something I should search for. Simple, right?", + "searches_wiki_page_not_found": "That doesn't exist.", + "searches_wind_speed": "Wind Speed", + "searches_x_most_banned_champs": "The {0} champions ~~you want to play~~ that are the most often banned", + "searches_yodify_error": "W-What are you trying to make me do? Impossible!", + "utiliity_joined": "Joined", + "utility_activity_line": "`{0}.` {1} [{2:F2}/s] - {3} total", + "utility_activity_page": "Activity Page #{0}", + "utility_activity_users_total": "{0} users total.", + "utility_author": "Author", + "utility_botid": "Bot ID", + "utility_calcops": "Here are the things I can work with if you use {0}calc. Yes, I am that amazing.", + "utility_channelid": "Nothing is safe from you, {0} of this channel is {1}.", + "utility_channel_topic": "Channel Topic", + "utility_commands_ran": "Commands Ran", + "utility_convert": "{0} {1} should be {2} {3}", + "utility_convertlist": "Here are the things I understand how to convert, hehe.", + "utility_convert_not_found": "I can't convert {0} to {1}: No idea what that is supposed to be.", + "utility_convert_type_error": "I can't convert {0} to {1}: This isn't how this works, as expected of you", + "utility_created_at": "Created At", + "utility_custom_emojis": "Custom Emojis", + "utility_error": "Error", + "utility_features": "Features", + "utility_id": "ID", + "utility_index_out_of_range": "Hahahahaha! **Useless**, that Index is out of range.", + "utility_inrole_list": "Here are all the people that you deemed worthy to be in the *Role* {0} :", + "utility_inrole_not_allowed": "Oi! What are you trying to do!? You think that **I** am going to say ALL of those Users names? Hmph. Who do you think you are?", + "utility_invalid_value": "Really? How did you even get that wrong? Invalid {0} value.", + "utility_joined_discord": "I am here discord, are you ready for this one?", + "utility_joined_server": "Woah! Another Server to be at!", + "utility_listservers": "ID: {0}\nMembers: {1}\nOwnerID: {2}", + "utility_listservers_none": "T-There are no servers on this page...", + "utility_list_of_repeaters": "List of Repeaters", + "utility_members": "Members", + "utility_memory": "Memory", + "utility_messages": "Messages", + "utility_message_repeater": "Message Repeater", + "utility_name": "Name", + "utility_nickname": "Nickname", + "utility_nobody_playing_game": "Hah, Nobody wants to play that game with you.", + "utility_no_active_repeaters": "No active repeaters here and that is fine, trust me.", + "utility_no_roles_on_page": "No roles to be found here, guess the creativity only reached so far?", + "utility_no_shards_on_page": "No shards to be found here.", + "utility_no_topic_set": "You can't even see yourself that there is nothing? **N**.**O**.**T**.**H**.**I**.**N**.**G**.", + "utility_owner": "Master", + "utility_owner_ids": "Master IDs", + "utility_presence": "Presence", + "utility_presence_txt": "{0} Servers\n{1} Text Channels\n{2} Voice Channels", + "utility_quotes_deleted": "Woah! Well, I deleted all mistakes with the {0} keyword.", + "utility_quotes_page": "Page {0} of quotes", + "utility_quotes_page_none": "Quotes not found on that page. Maybe in the future we will find what we need. Not what we want.", + "utility_quotes_remove_none": "There are no mistakes you could erase here, I am impressed.", + "utility_quote_added": "I added another ~~mistake~~ quote!", + "utility_quote_deleted": "I deleted one of your mistakes, not sure which one though, hehe.", + "utility_region": "Region", + "utility_registered_on": "Registered On", + "utility_remind": "Oh My. I'll remind the incompetent people of {0} to {1} in {2} `({3:d.M.yyyy.} at {4:HH:mm})`", + "utility_remind_invalid_format": "Not a valid time format. Check the commandlist.", + "utility_remind_template": "You want a style change huh? Looks awful, I saved it as remind template.", + "utility_repeater": "Why do I have to do this for you? I'll repeat {0} every {1} day(s), {2} hour(s) and {3} minute(s)...", + "utility_repeaters_list": "List Of Repeaters", + "utility_repeaters_none": "No repeaters here and that is fine.", + "utility_repeater_stopped": "#{0} is finally stopped!", + "utility_repeat_invoke_none": "Nothing to see here, you are probably to selfish to give others information.", + "utility_result": "Result", + "utility_roles": "Roles", + "utility_roles_all_page": "Page #{0} of all roles on this server:", + "utility_roles_page": "Page #{0} of roles for {1}", + "utility_rrc_no_colors": "Can you please give me something I can work with? Can you use `#00ff00` for example?", + "utility_rrc_start": "Gah, sounds annoying.. I'll rotate {0} role's color.", + "utility_rrc_stop": "Well, that was a waste of time. I'll stop rotating {0} role's color then.", + "utility_serverid": "Not even objects are save from you.. {0} of the server is {1}", + "utility_server_info": "Server Info", + "utility_shard": "Shard", + "utility_shard_stats": "Shard Stats", + "utility_shard_stats_txt": "Shard **#{0}** is in {1} state with {2} servers - {3} ago", + "utility_showemojis": "**Name:** {0} **Link:** {1}", + "utility_showemojis_none": "Nothing to see here~ You aren't talented enough for this, huh?", + "utility_stats_songs": "I'm playing {0} songs, {1} is in the list.", + "utility_text_channels": "Text Channels", + "utility_togtub_room_link": "Oho~ Here is your room link:", + "utility_uptime": "Uptime", + "utility_userid": "Woah!? {0} of {1} is {2}, creep.", + "utility_users": "Users", + "utility_voice_channels": "Voice Channels", + "gambling_animal_race_already_in": "You've already joined this race! ", + "games_current_poll_results": "Current poll results", + "games_no_votes_cast": "Nobody voted.. *giggles", + "games_poll_already_running": "There's already a poll up, close it furst ya dum dum..", + "games_poll_created": "📃 {0} made a poll..hmpf", + "games_poll_result": "`{0}.` {1} with {2} votes.", + "games_poll_voted": "{0} voted.", + "games_poll_vote_private": "Uhm, I guess you can Private Message me the number of your answer..", + "games_poll_vote_public": "Send the number that corresponds with the answer here!", + "games_thanks_for_voting": "Thanks alot for voting, {0}", + "games_x_votes_cast": "{0} total votes cast.", + "games_pick_pl": "You pick them up by literally typing `{0}pick` what the hell dude?", + "games_pick_sn": "Snatch it by typing `{0}pick`!!", + "gambling_no_users_found": "I don't see any of your friends haha.", + "gambling_page": "page {0}", + "administration_must_be_in_voice": "You have to be in a voice channel, dummy..", + "administration_no_vcroles": "There are no voice channel roles, the hell?", + "administration_user_muted_time": "I've **SILENCED** {0} from all chats for {1} minutes.. ", + "administration_vcrole_added": "Giving anyone who joins {0} voice channel {1} role, just because it's cool, and nothing else..", + "administration_vcrole_removed": "I won't give anyone who joins {0} voice channel a role anymore.", + "administration_vc_role_list": "Voice channel roles", + "customreactions_crad_disabled": "I won't clean up triggers of the custom reaction with id {0} anymore, I guess..", + "customreactions_crad_enabled": "I'll sweep up any triggers of the custom reaction with id {0}.. why do I have to clean up your mess?", + "customreactions_crdm_disabled": "I won't send the response from custom reaction with id {0} as a PM anymore. Phew.", + "customreactions_crdm_enabled": "I'll get in someone's face for the custom reaction with id {0}'s message..", + "utility_aliases_none": "No alias found", + "utility_alias_added": "I'll make {0} do {1} too.. b-but for everyone, not you!", + "utility_alias_list": "List of aliases", + "utility_alias_removed": "I removed the alias from trigger {0}.", + "utility_alias_remove_fail": "Trigger {0} didn't even have an alias, dummy..", + "searches_compet_playtime": "Time spent NEETing in ranked", + "administration_channel": "Channel", + "administration_command_text": "Command Text", + "administration_kicked_pl": "Dumped", + "administration_moderator": "Moderator", + "administration_page": "page {0}", + "administration_reason": "Why?", + "administration_scadd": "New startup command added.", + "administration_scrm": "Startup command successfully removed.", + "administration_scrm_fail": "Startup command not found.", + "administration_server": "Server", + "administration_startcmdlist_none": "No startup commands on this page.", + "administration_startcmds_cleared": "Dumped out all startup commands.", + "administration_unbanned_user": "De-hammered user {0}.", + "administration_user_not_found": "I can't find that guy.", + "administration_user_warned": "Successfully shouted at user {0}.", + "administration_user_warned_and_punished": "Warned user {0} and gave them the stabby stabby of a {1}.", + "administration_warned_on": "Warned on {0} server", + "administration_warned_on_by": "On {0} at {1} by {2}", + "administration_warnings_cleared": "Pulled the knife out of {0} and cleared all warnings.", + "administration_warnings_none": "No scolds here!", + "administration_warnlog_for": "Here's the warnlog for {0}, I guess...", + "administration_warnpl_none": "Punishments not set YET.", + "administration_warn_cleared_by": "Evidence hided by [0]", + "administration_warn_punish_list": "Crimes committed", + "administration_warn_punish_rem": "Having {0} warnings will no longer make me shank a dude.", + "administration_warn_punish_set": "I will stab users with {1} warnings with a {0}-tipped blade.", + "administration_slowmodewl_role_start": "I'll take anyone in {0} out of slowmode.", + "administration_slowmodewl_role_stop": "I won't let {0} role past slowmode anymore.", + "administration_slowmodewl_user_start": "I'll take user {0} out of slowmode, but just because they aren't mean..", + "administration_slowmodewl_user_stop": "I won't ignore user {0} for slowmode anymore.", + "utility_clpa_fail": "Looks like I can't give them to ya for one of these reasons:", + "utility_clpa_fail_already": "You might've already grabbed your reward for this month, and you can only get them once a month unless you increase your pledge..", + "utility_clpa_fail_already_title": "You already got it.. hmph.", + "utility_clpa_fail_conn": "Your discord account might not be connected to Patreon, and that's totally a big problem, to connect it, go to [Patreon account settings page](https://patreon.com/settings/account) and click the 'Connect to discord' button. ", + "utility_clpa_fail_conn_title": "Discord account's not connected.", + "utility_clpa_fail_sup": "Well, to get the reward you need to support the project on patreon, using {0}", + "utility_clpa_fail_sup_title": "Not gonna support this dude", + "utility_clpa_fail_wait": "Guess you gotta wait a few hours after pledging, if you haven't try again laters", + "utility_clpa_fail_wait_title": "Just wait a little more, ya impatient blubberhead", + "utility_clpa_success": "I've given you {0}, thanks for supporting the project <3", + "utility_clpa_too_early": "Uhh.. too early for that, you have to wait till the 5th of each month or later, dummy!", + "searches_time": "Time in {0} is {1} - {2}", + "administration_rh": "Set the display of guild role {0} to {1}.", + "gambling_name": "Name", + "gambling_shop": "The Shop, add items so people can spend their hard earned money on your crap.", + "gambling_shop_item_add": "You added your shitty item to the shop!", + "gambling_shop_none": "I couldn't find any shop items on this page ;-;", + "gambling_shop_role": "I will give you {0} role. Because i have to, not because i want to.", + "gambling_type": "Type, you need more explanation than that?", + "utility_clpa_next_update": "Updating in {0} ..who cares? That's what i thought.", + "administration_gvc_disabled": "Game Voice Channel feature has been disabled on this server.", + "administration_gvc_enabled": "{0} became a Gaming Voice Channel WOW.", + "administration_not_in_voice": "It seems your not in a voice channel in this server...", + "gambling_item": "Things and stuff.", + "gambling_out_of_stock": "All money is blown.", + "gambling_random_unique_item": "Some random item that's unique. Nothing special.", + "gambling_shop_buy_error": "Error DMing item. I'm giving back your money this time.", + "gambling_shop_item_not_found": "Couldn't find that item on that index.", + "gambling_shop_item_purchase": "You wasted the money successfully!", + "gambling_shop_item_rm": "Shop item stolen.", + "gambling_shop_item_wrong_type": "That shop ain't gonna work, it doesn't support item adding.", + "gambling_shop_list_item_added": "You got the item congrats.", + "gambling_shop_list_item_not_unique": "You already have that item.", + "gambling_shop_purchase": "Purchase on {0} server", + "gambling_shop_role_not_found": "That role you wanna buy, no longer exists.", + "gambling_shop_role_purchase": "You just bought with success {0} role! Why do you need another ego boost?", + "gambling_shop_role_purchase_error": "Error assigning role. I'll think about refunding you...fine. Here.", + "gambling_unique_items_left": "{0} unique items left.", + "permissions_blocked_commands": "Ignoring Commands, that's what i always do when you talk to me.", + "permissions_blocked_modules": "Ignoring Modules, like i ignore you.", + "permissions_gcmd_add": "Command {0} has been disabled on all servers. Trying to shut me down, huh...", + "permissions_gcmd_remove": "Command {0} has been enabled on all servers. I knew you wouldn't! Hah! You need me after all.", + "permissions_gmod_add": "Module {0} is disabled on all the servers! I'm sure this upsets some people. But i don't care.", + "permissions_gmod_remove": "Module {0} is enabled on all the servers! WHY. IT WAS FUNNY TO TEASE THEM WITH IT.", + "permissions_lgp_none": "I haven't blocked any of the modules...yet...heh..", + "gambling_animal_race_no_race": "This race is already full enough! Try a diet or something!", + "utility_cant_read_or_send": "You can't read those messages from that channel. Hah.", + "utility_quotes_notfound": "Didn't find any quotes matching the quote ID. And tbh i didn't really try looking.", + "administration_prefix_current": "The prefix is on the server is {0} How do you STILL not know that?", + "administration_prefix_new": "The server prefix is changed from {0} to {1} ...stop changing it, it's confusing.", + "administration_defprefix_current": "The bot default prefix is {0} , default just the way i like it. Let's keep it that way please.", + "administration_defprefix_new": "Default bot prefix is changed from {0} to {1} ...NOOO...whyyyyyy", + "administration_bot_nick": "Went back in time and changed my name to {0} ...ugh i hate you", + "administration_user_nick": "From now on i {0} will be called {1}! Heh.", + "administration_timezone_guild": "This guild is in a timezone called `{0}`", + "administration_timezone_not_found": "No timezone found. Maybe you should try \"timezones\" so you know the timezones we have in this world.", + "administration_timezones_available": "All the Timezones you can warp to", + "music_song_not_found": "Couldn't find that song. Probably cus it's just as bad at singing as you.", + "searches_define_unknown": "I can't seem to find out what the fluff the definition of that term is. But i don't care. Hmpf.", + "utility_repeater_initial": "I will repeat the initial messages in about {0}hours maybe and like {1}minute or smth. If i feel like it.", + "utility_verbose_errors_enabled": "If you screw up using commands again i will now point out what you screwed up exactly.", + "utility_verbose_errors_disabled": "Ok from now on if you use a command again i will not tell you what you screwed up okay. Still friends?", + "permissions_perms_reset": "And all the permissions are back how they were. It's better like this. You made it all a mess.", + "permissions_trigger": "It seems that permission number #{0} {1} is preventing you from that action you wanna do with me. And i'm not sorry for that.", + "administration_migration_error": "ERROR while migrating! Quickly check my console to get more information what has happend! ..or don't...i don't care. Tch.", + "searches_hex_invalid": "I can't figure out what color you want. Be more specific.", + "permissions_global_perms_reset": "And the permissions have been reset globally!", + "help_module": "Module: {0}", + "games_hangman_stopped": "Now free the dude that's getting hanged. Game has stopped.", + "music_autoplaying": "Auto-playing. For you, lazy baka.", + "music_queue_stopped": "The player is stopped. You could resume playing by using {0} command. But please don't. My ears hurt.", + "music_removed_song_error": "Seems that the song doesn't exists on that index. Oh you don't like that? Then LOOK YOURSELF", + "music_shuffling_playlist": "*table flips the songs*", + "music_songs_shuffle_enable": "*always flips the songs from now on*", + "music_songs_shuffle_disable": "Ok... I stop flipping the songs from now on...maybe.", + "music_song_skips_after": "We skip this track after we hit {0} okay. It's too boring.", + "administration_warnings_list": "The list of all the badboys on in this crib. Aka the trash you will make me bring out soon. Aka i'm gonna kick your butt, you can do that yourself.", + "customreactions_redacted_too_long": "Redacted because it's way too big for me.", + "nsfw_blacklisted_tag_list": "The list of blacklisted tags (words i don't like):", + "nsfw_blacklisted_tag": "One or more tags you used are blacklisted. Stop being stupid. Please. Oh, i forgot. You can't.", + "nsfw_blacklisted_tag_add": "Nsfw tag {0} is now blacklisted. WHO WOULD WANT TO LOOK AT THAT ANYWAYS--", + "nsfw_blacklisted_tag_remove": "Nsfw tag {0} is no longer blacklisted. I always knew it...you are one of those...", + "gambling_waifu_gift": "Threw {0} to {1} with success. It hit them on the head and they are in hospital now.", + "gambling_waifu_gift_shop": "Digital waifu pillow weebshop. You better buy me something too.", + "gambling_gifts": "Presents from Peasents. I'll throw them right back at you, if i dont like them.", + "games_connect4_created": "Made a Connect4 game. Someone better join or i'm going to scream over all the servers.", + "games_connect4_player_to_move": "It's your turn baka. WAKE UP: {0}", + "games_connect4_failed_to_start": "Connect 4 game failed to start because nobody joined. You know what's going to happen next right...", + "games_connect4_draw": "Connect4 game ended in a draw. This game was even more intense than big brother-", + "games_connect4_won": "Well {0} humiliated {1} in front of everyone watching by winning this game. It was a pleasure to watch.", + "games_nunchi_joined": "You joined the nunchi game. {0} other users want to play so far, all because of me. Thank me. Now.", + "games_nunchi_ended": "Nunchi game ended. {0} won, cus they are clearly better than you.", + "games_nunchi_ended_no_winner": "The game ended and none of you were good enough to win. What a surprise.", + "games_nunchi_started": "The nunchi game has started with {0} participants! We all know i'm going to win. Why even try?", + "games_nunchi_round_ended": "Nunchi round has ended! {0} is out of the game, now leave the server while you're at it, BAKA.", + "games_nunchi_round_ended_boot": "Nunchi round ended due to timeout of some lazy users. These active users are still in the game: {0}", + "games_nunchi_round_started": "The nunchi round has started with {0} users! Start counting from the number {1}. I suggest not being stupid but i know that's gonna be hard for you :D", + "games_nunchi_next_number": "Number registered. Last number was {0}. SIGH.", + "games_nunchi_failed_to_start": "Not enough people joined the nunchi game because they saw you enter it. Now the game failed to start. Good job BAKA.", + "games_nunchi_created": "I've created a Nunchi game...b-but DEFINITELY NOT for you BAKA! It's for the others that will join now!", + "music_sad_enabled": "Great! My ears hurt now! I'm deleting those songs when it's over.", + "music_sad_disabled": "That song was okay..i won't remove it afterwards. Just this time..tchhh..", + "utility_stream_role_enabled": "When a user from {0} role starts streaming, I'll give them {1} role too! But only because they aren't as annoying as you.", + "utility_stream_role_disabled": "Disabled stream role feature. Nobody needed that anyways.", + "utility_stream_role_kw_set": "Streams now require the keyword {0} in order to get the role. The one you will set. Probably. Hopefully!", + "utility_stream_role_kw_reset": "How many times did you forget the keyword already? This is the last time i'm resetting this for you BAKA!", + "utility_stream_role_bl_add": "User {0} will never receive the stream role. why? because i say so. baka.", + "utility_stream_role_bl_add_fail": "The user {0} is already blacklisted you baka.", + "utility_stream_role_bl_rem": "I unblacklisted that person called {0}. Why do you always have to blacklist the wrong people? Maybe we should blacklist you next!", + "utility_stream_role_bl_rem_fail": "User {0} is not (yet) blacklisted.", + "utility_stream_role_wl_add": "User {0} gets the stream role even if they don't have the keyword in the stream title. Because i'm nice. No other reason. Get down on your knees and thank me.", + "utility_stream_role_wl_add_fail": "User {0} is already whitelisted. Your memory sucks.", + "utility_stream_role_wl_rem": "User {0} is no longer whitelisted. Never liked them anyways.", + "utility_stream_role_wl_rem_fail": "User {0} is not whitelisted. They are a baka after all.", + "utility_bot_config_edit_fail": "I failed setting {0} to the value {1} , but it's all cus of you.", + "utility_bot_config_edit_success": "Made the value {0} to {1}. Now gimme cookies.", + "customreactions_crca_disabled": "Custom reaction with the id {0} will no longer get triggerd unless it's triggerd word is at the beggining of the sentence. Don't trigger it.", + "customreactions_crca_enabled": "Custom reactions with the id {0} now get triggerd if it's said anywhere in the sentence. #mastertriggerd", + "xp_server_level": "Server Level, what do you really need more explanation than that? BAKA.", + "xp_level": "Level, your cat types enough for you to have a decent level. More than decent. ", + "xp_club": "Club, the thing you wanna be in but nobody wants you.", + "xp_xp": "Experience, the thing you don't have", + "xp_excluded": "{0} user has bin expelled from the mighty XP system on this server. May he cry forever with his virtual waifu.", + "xp_not_excluded": "{0} user no long is expelled from the might XP system on this server. May he be a good slave to the system we have.", + "xp_exclusion_list": "The never ending list of the people that stalk me. Aka: Exclusion List", + "xp_server_is_excluded": "This server is not my problem anymore.", + "xp_server_is_not_excluded": "This server is my problem again. Sigh...", + "xp_excluded_roles": "Honestly not gonna care about these Roles", + "xp_excluded_channels": "Channels i don't give a single fuck about", + "xp_level_up_channel": "Oh wow {0}, You've reached level {1}!", + "xp_level_up_dm": "Congrats baka {0} , your cat types more interesting stuff than you. You've reached level {1} on {2} server!", + "xp_level_up_global": "Congrats, you have no life {0}, You've reached global level {1}!", + "xp_role_reward_cleared": "Level {0} will no longer reward a role. They didn't deserve a role anyways.", + "xp_role_reward_added": "Users who reach level {0} will receive {1} role. So i'm gonna give this no-life user a role for letting his cat type? Fine...for the cat. Hmpf.", + "xp_role_rewards": "Pet/Role Rewards", + "xp_level_x": "Level {0}", + "xp_no_role_rewards": "Nobody would want to give YOU role rewards anyways.", + "xp_server_leaderboard": "Server XP Leaderboard. Why don't you know this??", + "xp_global_leaderboard": "Global XP Leaderboard. Do i have to spell everything out for you now..?!", + "xp_modified": "Modified server XP of the user {0} by {1} CHEATER.", + "xp_club_create_error": "You failed. Typical. Are you even level 5? Or did you forget you are already in that loser club?", + "xp_club_created": "Club {0} successfully created! Congrats, you made it. I always knew Idiots need 3 or more tries.", + "xp_club_not_exists": "Yea..check your spelling idiot. That club isn't a thing.", + "xp_club_applied": "You've applied for membership in {0} club. HAH! You really believe they will accept you? XD", + "xp_club_apply_error": "Error applying. You are already a member of the club, or your not good enough to the minimal expectations we set. Or you're just banned from this club lol.", + "xp_club_accepted": "Accepted user {0} to the club. I don't like them. But i've accepted them. For you. Just this once. Hmpf.", + "xp_club_accept_error": "You made a mistake...AGAIN. This user doesn't exist.", + "xp_club_left": "You left them losers of the club you were in.", + "xp_club_not_in_club": "You're not in a club, or your trying to escape from the club... That you actually own...", + "xp_club_user_kick": "So i kicked this idiot here {0} from {1} club. They were really getting on my nerves.", + "xp_club_user_kick_fail": "So i tried kicking them but it didn't work which means you are stupid. As always. Did your memory forget to tell you that you have to be owner of the club? Also are they even in the club, BAKA?! HUH?!!! THOUGHT SO!!", + "xp_club_user_banned": "Banned user {0} from {1} club. That felt good.", + "xp_club_user_ban_fail": "Failed to ban. You're not the club owner, or that person isn't in your club. It might be possible that the person didn't even apply to it.", + "xp_club_user_unbanned": "Unbanned user {0} in {1} club .They are annoying but the others are worse.", + "xp_club_user_unban_fail": "Too stupid to unban. You left your brain at home. Are you even club owner. Or is the user not in the club..or...did they apply to it? N-nah, no way, the club sucks.", + "xp_club_level_req_changed": "Changed club's level requirement to {0} .It was about time. Too many bakas joined.", + "xp_club_level_req_change_error": "I couldn't change the level requirements. Probably because you annoy me.", + "xp_club_disbanded": "I successfully raided {0} club and it's now fully destroyed", + "xp_club_disband_error": "Error. So your not in a club or your not a owner of your own club?", + "xp_club_icon_error": "That image url is invalid or you're just lying about being the club owner.", + "xp_club_icon_set": "Uploaded your selfie to the club as an icon. I'm judging you silently.", + "xp_club_bans_for": "Le bans for {0} club", + "xp_club_apps_for": "Beggers for {0} club", + "xp_club_leaderboard": "Club leaderboard - page {0}", + "customreactions_edited_cust_react": "Custom Reaction Edited. It sounded better before.", + "administration_self_assign_are_exclusive": "You can only choose 1 role from each group. Don't be greedy.", + "administration_self_assign_are_not_exclusive": "You can choose any number of roles from any group. Hmpf, so greedy.", + "administration_self_assign_group": "Group {0}", + "gambling_reaction_desc": "Add {0} reaction to this message to get {1} ...if you want.", + "gambling_reaction_footer": "This event is active for up to {0} hours. Hurry up!", + "gambling_reaction_title": "Reaction event started! Don't be late again baka", + "administration_no_shards_on_page": "No shards to be found on this page. Look somewhere else.", + "administration_shard_stats": "Shard stats", + "administration_shard_stats_txt": "Shard **#{0}** is in {1} state with {2} servers - {3} ago", + "games_poll_closed": "This poll is now closed. You're too late, b-baka.", + "xp_club_not_exists_owner": "You don't own this club. You aren't admin either. Stop messing around now.", + "xp_club_admin_add": "{0} is now a club admin. Save us.", + "xp_club_admin_remove": "{0} is no longer club admin. Was about time.", + "xp_club_admin_error": "Error. Are you sure that you are owner of this club? Is that user even in your club?", + "nsfw_started": "I'm gonna start reposting this every {0}s.", + "nsfw_stopped": "Stopped reposting. Finally.", + "searches_feed_added": "Feed added. Yum.", + "searches_feed_not_valid": "", + "searches_feed_out_of_range": "Index out of range.", + "searches_feed_removed": "Feed removed. I didn't care much for it anyways...", + "searches_feed_no_feed": "", + "administration_restart_fail": "", + "administration_restarting": "Restarting, or as i call it..taking a break from you.", + "customreactions_edit_fail": "So..that reaction with that ID?? Yea that doesn't exist. Believe it or not.", + "searches_streaming": "Streaming", + "searches_followers": "Followers, the thing you lack.", + "gambling_rafflecur": "{0} Currency Raffle, more ways to lose your flowers.", + "gambling_rafflecur_joined": "User {0} joined the raffle, good luck!", + "gambling_rafflecur_already_joined": "Did you forget you already joined? Or did you try to join with an invalid value? I'm sure it's one of those! BAKA.", + "gambling_rafflecur_ended": "{0} raffle ended. {1} won {2}! Congrats you didn't waste flowers this time.", + "music_autodc_enable": "I'm gonna leave this voice channel when I'm done playing your songs. Hmpf.", + "music_autodc_disable": "", + "gambling_timely_none": "", + "gambling_timely_already_claimed": "", + "gambling_timely": "", + "gambling_timely_set": "", + "gambling_timely_set_none": "", + "gambling_timely_reset": "" +} \ No newline at end of file diff --git a/src/NadekoBot/_strings/ResponseStrings.zh-CN.json b/src/NadekoBot/_strings/ResponseStrings.zh-CN.json index 24303dc0..f1511224 100644 --- a/src/NadekoBot/_strings/ResponseStrings.zh-CN.json +++ b/src/NadekoBot/_strings/ResponseStrings.zh-CN.json @@ -1,145 +1,122 @@ { - "clashofclans_base_already_claimed": "此基地已被认领或毁坏。", - "clashofclans_base_already_destroyed": "此基地已被毁坏\n", - "clashofclans_base_already_unclaimed": "此基地还未被认领", - "clashofclans_base_destroyed": "在与{1} 对战时**毁坏**基地 #{0}", - "clashofclans_base_unclaimed": "{0} 在与 {2} 对战时 **取消认领** 基地 #{1}", - "clashofclans_claimed_base": "{0} 在与 {2} 对战时 **认领** 基地 #{1}", - "clashofclans_claimed_other": "@{0} 您已认领基地 #{1}。您不能认领一个新的。", - "clashofclans_claim_expired": "@{0} 在与 {1} 对战后认领的基地已过期。", - "clashofclans_enemy": "敌人", - "clashofclans_info_about_war": "与{0} 对战的信息", - "clashofclans_invalid_base_number": "此基地号码无效。", - "clashofclans_invalid_size": "此战争大小无效", - "clashofclans_list_active_wars": "现进行的战争列表", - "clashofclans_not_claimed": "未被认领", - "clashofclans_not_partic": "您并未参与此战争。", - "clashofclans_not_partic_or_destroyed": "@{0} 您并未参与此战争或此基地已被毁坏。", - "clashofclans_no_active_wars": "现无战争进行。", - "clashofclans_size": "大小", - "clashofclans_war_already_started": "与{0}的战争已开始。", - "clashofclans_war_created": "与{0}的战争已创建。", - "clashofclans_war_ended": "与{0}的战争已结束。", - "clashofclans_war_not_exist": "此战争不存在。", - "clashofclans_war_started": "与{0}的对战已开始!", - "customreactions_all_stats_cleared": "所有定制反应数据清除。", - "customreactions_deleted": "定制反应删除", - "customreactions_insuff_perms": "权限不足。通用定制反应需要机器人主人之权限而服务器定制反应需要管理员之权限。", + "customreactions_all_stats_cleared": "已清除所有定制反应统计数据。", + "customreactions_deleted": "定制反应已删除", + "customreactions_insuff_perms": "权限不足。全局定制反应要求用户拥有Bot主人权限,服务器定制反应要求用户拥有管理员权限。", "customreactions_list_all": "列出所有定制反应", "customreactions_name": "定制反应", "customreactions_new_cust_react": "新定制反应", "customreactions_no_found": "没有找到定制反应。", - "customreactions_no_found_id": "于此用户标识相联系的定制反应并未找到。", + "customreactions_no_found_id": "未找到与此ID有关的定制反应。", "customreactions_response": "回应", - "customreactions_stats": "定制反应数据", - "customreactions_stats_cleared": "{0} 定制反应数据清除。", + "customreactions_stats": "定制反应统计数据", + "customreactions_stats_cleared": "{0} 定制反应统计数据已清除。", "customreactions_stats_not_found": "此触发器并无数据, 因此无行动。", "customreactions_trigger": "触发器", - "nsfw_autohentai_stopped": "autohentai停止。", - "nsfw_not_found": "没有结果。", + "nsfw_autohentai_stopped": "autohentai已停止。", + "nsfw_not_found": "没有找到结果。", "pokemon_already_fainted": "{0} 已昏厥。", - "pokemon_already_full": "{0} 气血已满。", - "pokemon_already_that_type": "您的类型已是 {0}", + "pokemon_already_full": "{0} 的生命值已满。", + "pokemon_already_that_type": "你的类型已是 {0}", "pokemon_attack": "对 {2}{3} 使出{0}{1} 而造成 {4}伤害。", - "pokemon_cant_attack_again": "您不能在对方未反击之前再次攻击!", - "pokemon_cant_attack_yourself": "您不能攻击自己。", + "pokemon_cant_attack_again": "你无法在对方反击之前再次攻击!", + "pokemon_cant_attack_yourself": "你不能攻击自己。", "pokemon_fainted": "{0} 已昏厥!", - "pokemon_healed": "用 {1} 医好 {0}", + "pokemon_healed": "用1个 {1} 治疗了 {0}", "pokemon_hp_remaining": "{0} 还剩余 {1} 生命值。 ", - "pokemon_invalid_move": "您不能使用{0}. 输入`{1}ml` 观看您能用的招式。", + "pokemon_invalid_move": "你不能使用{0}. 输入`{1}ml` 查看你能使用的招式。", "pokemon_moves": "{0} 类型的招式列表", "pokemon_not_effective": "没有效果。", - "pokemon_no_currency": "你并没有足够的 {0}", + "pokemon_no_currency": "你没有足够的 {0}", "pokemon_revive_other": "使用 {1} 复活 {0}", - "pokemon_revive_yourself": "您使用 {0} 复活自己", - "pokemon_settype_success": "您的类型已从 {0} 改成了 {1}", - "pokemon_somewhat_effective": "效果不理想。", + "pokemon_revive_yourself": "你使用 {0} 复活自己", + "pokemon_settype_success": "你的类型已从{0}变成{1}", + "pokemon_somewhat_effective": "效果一般。", "pokemon_super_effective": "效果绝佳!", - "pokemon_too_many_moves": "您已一连使用太多招式,所以您不能行动!", - "pokemon_type_of_user": " {0} 的类型是 {1} ", + "pokemon_too_many_moves": "你连续使用了太多招式,所以你不能行动!", + "pokemon_type_of_user": "{0} 的类型是 {1}", "pokemon_user_not_found": "该用户不存在。", - "pokemon_you_fainted": "您已昏厥所以不能移动!", - "administration_aar_disabled": "**已解除**.为刚加入的用户 **自动指派身份** 的功能。", + "pokemon_you_fainted": "你已昏厥所以不能移动!", + "administration_aar_disabled": "**已禁用** 为刚加入的用户 **自动指派身份** 的功能。", "administration_aar_enabled": "**已启动**.为刚加入的用户 **自动指派身份** 的功能。", "administration_attachments": "附件", "administration_avatar_changed": "头像更换成功。", - "administration_bandm": "你已经被{0}服务器封号。\n原因: {1}", - "administration_banned_pl": "已被禁止了", - "administration_banned_user": "用户禁止", - "administration_bot_name": "机器人名改成{0}", - "administration_bot_status": "机器人状态换成{0}", - "administration_byedel_off": "自动删除告别消息关闭。", - "administration_byedel_on": "告别消息将在{0}秒钟内删除。", - "administration_byemsg_cur": "现在告别消息: {0}", + "administration_bandm": "你在{0}服务器已被屏蔽。\n原因: {1}", + "administration_banned_pl": "被屏蔽", + "administration_banned_user": "用户已被屏蔽", + "administration_bot_name": "Bot已改名为{0}", + "administration_bot_status": "Bot的状态已切换成{0}", + "administration_byedel_off": "自动删除告别消息已禁用。", + "administration_byedel_on": "告别消息将在{0}秒后被删除。", + "administration_byemsg_cur": "当前告别消息:{0}", "administration_byemsg_enable": "输入{0}以启用告别消息", - "administration_byemsg_new": "新告别消息设定。", - "administration_bye_off": "告别公告被关掉。", + "administration_byemsg_new": "新告别消息设置成功。", + "administration_bye_off": "告别公告已禁用。", "administration_bye_on": "此频道启用告别公告。", "administration_ch_name_change": "频道名字已改", "administration_ch_old_name": "旧名", "administration_ch_topic_change": "频道主题已改", "administration_cleaned_up": "清理完毕。", "administration_content": "内容", - "administration_cr": "身份 {0} 成功创立", + "administration_cr": "身份组 {0} 成功创立", "administration_createtextchan": "文字频道 {0} 成功创立", "administration_createvoich": "语音频道 {0} 成功创立", "administration_deafen": "静音成功", "administration_deleted_server": "服务器 {0} 已被删除", - "administration_delmsg_off": "自动删除已处理指令已被停止", - "administration_delmsg_on": "自动删除已处理指令已被启动", + "administration_delmsg_off": "自动删除已处理命令已被停止", + "administration_delmsg_on": "自动删除已处理命令已被启动", "administration_deltextchan": "文字频道 {0} 成功删除", "administration_delvoich": "语音频道 {0} 成功删除", - "administration_dm_from": "私人信息来自", + "administration_dm_from": "DM来自", "administration_donadd": "成功添加新的捐赠者. 此用户总共捐赠了: {0} 👑", - "administration_donators": "感谢下面列出的人们使这个项目发生!", + "administration_donators": "感谢以下帮助实现本项目的人!", "administration_fwall_start": "我会将DM转发给所有业主。", "administration_fwall_stop": "我会将DM转发给第一个业主。", - "administration_fwdm_start": "我将从现在起转发DMs。", + "administration_fwdm_start": "从现在开始我将转发DMs。", "administration_fwdm_stop": "从现在开始我将停止转发DMs。", - "administration_greetdel_off": "已关闭自动删除欢迎消息。", - "administration_greetdel_on": "欢迎消息将在{0}秒后删除。", - "administration_greetdmmsg_cur": "现DM欢迎消息:{0}", - "administration_greetdmmsg_enable": "输入{0}启用DM欢迎消息", - "administration_greetdmmsg_new": "新DM欢迎消息设定成功。", - "administration_greetdm_off": "DM欢迎公告关闭。", + "administration_greetdel_off": "自动删除欢迎消息已禁用。", + "administration_greetdel_on": "欢迎消息将在{0}秒后被删除。", + "administration_greetdmmsg_cur": "当前DM欢迎消息:{0}", + "administration_greetdmmsg_enable": "输入{0}以启用DM欢迎消息", + "administration_greetdmmsg_new": "新DM欢迎消息设置成功。", + "administration_greetdm_off": "DM欢迎公告已禁用。", "administration_greetdm_on": "DM欢迎公告启用。", - "administration_greetmsg_cur": "当前欢迎消息是:{0}", - "administration_greetmsg_enable": "输入{0}来启用欢迎消息", - "administration_greetmsg_new": "新欢迎消息设定成功。", - "administration_greet_off": "欢迎公告关闭。", - "administration_greet_on": "欢迎公告在此频道开启。", - "administration_hierarchy": "您不能对身份层次结构中身份高于或等于您的身份的用户使用此命令。", + "administration_greetmsg_cur": "当前欢迎消息:{0}", + "administration_greetmsg_enable": "输入{0}以启用欢迎消息", + "administration_greetmsg_new": "新欢迎消息设置成功。", + "administration_greet_off": "欢迎公告已禁用。", + "administration_greet_on": "此频道的欢迎公告已开启。", + "administration_hierarchy": "你不能对相同或更高身份组的用户使用此命令。", "administration_images_loaded": "{0}秒后加载图片!", "administration_invalid_format": "输入格式不正确。", "administration_invalid_params": "参数不正确。", "administration_joined": "{0} 加入了 {1}", - "administration_kickdm": "你被踢出{0}的服务器。\n理由:{1}", + "administration_kickdm": "你已被踢出{0}服务器。\n理由:{1}", "administration_kicked_user": "用户已被踢出", "administration_lang_list": "语言列表", - "administration_lang_set": "您的服务器的语言设置现在为{0} - {1}", - "administration_lang_set_bot": "机器人的默认语言环境现在是{0} - {1}", - "administration_lang_set_bot_show": "机器人的语言设置为{0} - {1}", - "administration_lang_set_fail": "设置语言设置失败。 重新访问此命令帮助。", - "administration_lang_set_show": "此服务器的语言设置为{0} - {1}", + "administration_lang_set": "服务器的默认语言环境已被修改为{0} - {1}", + "administration_lang_set_bot": "Bot的默认语言环境已被修改为{0} - {1}", + "administration_lang_set_bot_show": "Bot的语言已被设置为{0} - {1}", + "administration_lang_set_fail": "语言设置失败。 请重新访问此命令帮助。", + "administration_lang_set_show": "此服务器的语言已被设置为{0} - {1}", "administration_left": "{0}已离开{1}", "administration_left_server": "离开服务器{0}", "administration_log": "在此频道中记录{0}事件。", "administration_log_all": "记录频道中所有事件", - "administration_log_disabled": "记录功能取消", - "administration_log_events": "您可以设定的记录项目:", + "administration_log_disabled": "记录功能已禁用。", + "administration_log_events": "你可以设置的记录项目:", "administration_log_ignore": "记录会忽略{0}", "administration_log_not_ignore": "记录不会忽略{0}", "administration_log_stop": "已停止记录{0}事件。", - "administration_menrole": "{0}已经提到了以下身份", - "administration_message_from_bo": "来自{0}`[机器人主人]’的消息:", - "administration_message_sent": "消息已发.", - "administration_moved": "{0}被移动由{1}到{2}", - "administration_msg_del": "在#{0}中删除讯息", - "administration_msg_update": "讯息在#{0}中被更新", - "administration_muted_pl": "已静音", - "administration_muted_sn": "已静音", + "administration_menrole": "{0}已经提到了以下身份组", + "administration_message_from_bo": "来自{0}`[Bot Owner]’的消息:", + "administration_message_sent": "消息已发送。", + "administration_moved": "{0}被从{1}移动到{2}", + "administration_msg_del": "消息已在#{0}中被删除", + "administration_msg_update": "消息已在#{0}中被更新", + "administration_muted_pl": "已禁言", + "administration_muted_sn": "已禁言", "administration_mute_error": "权限不够执行此命令", - "administration_mute_role_set": "新的静音角色设定成功。", + "administration_mute_role_set": "新的禁言身份组设置成功。", "administration_need_admin": "我需要**管理**权限才能做那个。", "administration_new_msg": "新消息", "administration_new_nick": "新昵称", @@ -147,12 +124,12 @@ "administration_nick_change": "昵称成功更换", "administration_no_server": "找不到该服务器", "administration_no_shard_id": "找不到具有该ID的分片。", - "administration_old_msg": "旧信息", + "administration_old_msg": "旧消息", "administration_old_nick": "旧昵称", - "administration_old_topic": "旧题目", - "administration_perms": "失败。很可能我没有足够的权限。", + "administration_old_topic": "旧主题", + "administration_perms": "错误。我可能没有足够的权限。", "administration_prot_active": "主动保护", - "administration_prot_disable": "{0}已在此服务器禁用。", + "administration_prot_disable": "{0}已在此服务器被**禁用**。", "administration_prot_enable": "{0}已启用。", "administration_prot_error": "失败。 我需要 ManageRoles 权限", "administration_prot_none": "未启用保护项目。", @@ -161,204 +138,204 @@ "administration_raid_time": "时间必须在{0}和{1}秒之间。", "administration_rar": "已成功从用户{0}中移除所有身份", "administration_rar_err": "无法移除身份。 我没有足够的权限。", - "administration_rc": "{0}身份的颜色已更改。", + "administration_rc": "{0}身份组的颜色已更改。", "administration_rc_not_exist": "那个身份不存在。", "administration_rc_params": "指定的参数错误。", - "administration_rc_perms": "由于颜色无效或权限不足而发生错误。", - "administration_remrole": "已成功从用户{1}中删除身份{0}", + "administration_rc_perms": "错误。指定颜色无效或权限不足。", + "administration_remrole": "已成功将用户{1}的身份{0}移除", "administration_remrole_err": "无法移除身份。 我没有足够的权限。", - "administration_renrole": "身份名已改", - "administration_renrole_err": "身份重命名失败。我的权限不足。", - "administration_renrole_perms": "您不能编辑比你", + "administration_renrole": "已重命名身份组。", + "administration_renrole_err": "身份重命名失败。我没有足够的权限。", + "administration_renrole_perms": "无法编辑比你权限更高的身份组", "administration_reprm": "已移除游玩消息:{0}", "administration_role_added": "身份{0}已添加到列表中。", "administration_role_clean": "{0}未找到。已清理。", "administration_role_in_list": "身份{0}已在列表中。", - "administration_ropl_added": "添加成功.", + "administration_ropl_added": "添加成功。", "administration_ropl_disabled": "旋转游玩状态关闭。", "administration_ropl_enabled": "旋转游玩状态开启。", "administration_ropl_list": "以下是旋转状态列表:\n{0}", - "administration_ropl_not_set": "未设置旋转游戏状态。", - "administration_self_assign_already": "您已经拥有{0}身份。", - "administration_self_assign_already_excl": "您已拥有{0}独占的自行分配。", - "administration_self_assign_excl": "自行分配身份现在是独家!", - "administration_self_assign_list": "有{0}个可自行分配身份", - "administration_self_assign_not": "这个身份是不可自行分配的。", - "administration_self_assign_not_have": "您没有{0}身份。", - "administration_self_assign_no_excl": "自我分配的身份现在不是独家的!", - "administration_self_assign_perms": "我无法向您添加该身份。 ‘我不能向身份层次结构中我身份以外的所有者或其他身份添加身份。’", - "administration_self_assign_rem": "{0}已从可自我分配身份列表中删除。", - "administration_self_assign_remove": "您不再拥有{0}身份。", - "administration_self_assign_success": "您现在拥有{0}身份。", + "administration_ropl_not_set": "交替播放模式未设置。", + "administration_self_assign_already": "你已经拥有{0}身份。", + "administration_self_assign_already_excl": "用户现在只能拥有一个可自行添加的身份。你已拥有{0}身份。", + "administration_self_assign_excl": "用户现在只能拥有一个可自行添加的身份!", + "administration_self_assign_list": "有{0}个可自行添加的身份", + "administration_self_assign_not": "这个身份是不可自行添加的。", + "administration_self_assign_not_have": "你没有{0}身份。", + "administration_self_assign_no_excl": "用户现在可以拥有多个可自行添加的身份!", + "administration_self_assign_perms": "我无法向你添加该身份。 `我无法向主人添加身份,我也无法给拥有比我更高身份权限的用户添加身份。`", + "administration_self_assign_rem": "已从可自行添加身份组列表中删除{0}。", + "administration_self_assign_remove": "你不再拥有{0}身份。", + "administration_self_assign_success": "你现在拥有{0}身份。", "administration_setrole": "已成功将身份{0}添加到用户{1}", "administration_setrole_err": "无法添加身份。 我没有足够的权限。", - "administration_set_avatar": "新头像集!", - "administration_set_channel_name": "新频道名称设定。", - "administration_set_game": "新游戏设定!", - "administration_set_stream": "新直播设定!", - "administration_set_topic": "新频道主题集。", + "administration_set_avatar": "新头像设置成功!", + "administration_set_channel_name": "新频道名称设置成功。", + "administration_set_game": "新游戏设置成功!", + "administration_set_stream": "新直播设置成功!", + "administration_set_topic": "新频道话题设置成功。", "administration_shard_reconnected": "分段{0}已重新连接。", "administration_shard_reconnecting": "分段{0}重新连接中。", "administration_shutting_down": "关闭中", "administration_slowmode_desc": "用户不能在{1}秒内发送超过{0}条消息。", - "administration_slowmode_disabled": "慢速模式关闭。", + "administration_slowmode_disabled": "慢速模式已禁用。", "administration_slowmode_init": "慢速模式启动", - "administration_soft_banned_pl": "软禁(踢出)", + "administration_soft_banned_pl": "暂时屏蔽", "administration_spam_ignore": "{0}将忽略此通道。", - "administration_spam_not_ignore": "{0} 将不再忽略此頻道。", - "administration_spam_stats": "如果用户发布{0}个相同的消息,我会{1}他们。\n     __IgnoredChannels__:{2}", - "administration_text_chan_created": "新文字频道成立", - "administration_text_chan_destroyed": "文字频道已删除", + "administration_spam_not_ignore": "{0}将不再忽略此頻道。", + "administration_spam_stats": "如果用户发布{0}个相同的消息,我会{1}他们。\n     __忽略以下频道__:{2}", + "administration_text_chan_created": "已创建新文字频道。", + "administration_text_chan_destroyed": "文字频道已删除。", "administration_undeafen": "Undeafen成功。", - "administration_unmuted_sn": "已取消静音", + "administration_unmuted_sn": "已取消禁言", "administration_username": "用户名", "administration_username_changed": "用户名已更改", "administration_users": "用户", - "administration_user_banned": "用户被禁止", - "administration_user_chat_mute": "{0}已从聊天内被静音**。", - "administration_user_chat_unmute": "{0}已从聊天内**取消静音**。", + "administration_user_banned": "用户已被屏蔽", + "administration_user_chat_mute": "{0}已在文字频道中被**禁言**。", + "administration_user_chat_unmute": "{0}已在文字频道中被**取消禁言**。", "administration_user_joined": "用户已加入", "administration_user_left": "用户离开了", - "administration_user_muted": "{0} 已被文字与语音静音了", + "administration_user_muted": "{0}已在文字及语音频道中被**禁言**。", "administration_user_role_add": "用户身份添加成功", - "administration_user_role_rem": "用户身份移除了", + "administration_user_role_rem": "用户身份已被移除", "administration_user_status_change": "{0} 改成了 {1}", - "administration_user_unmuted": "{0}已从文字和语音频道中取消静音**。", + "administration_user_unmuted": "{0}已在文字和语音频道中被**取消禁言**。", "administration_user_vjoined": "{0}已加入{1}语音通道。", "administration_user_vleft": "{0}已离开{1}语音通道。", "administration_user_vmoved": "{0}已从{1}移至{2}语音通道。", - "administration_user_voice_mute": "{0}已被**静音**。", - "administration_user_voice_unmute": "{0}已被**取消静音**。", + "administration_user_voice_mute": "{0}已在语音频道中被**禁言**。", + "administration_user_voice_unmute": "{0}已在语音频道中被**取消禁言**。", "administration_voice_chan_created": "语音频道已创建", "administration_voice_chan_destroyed": "语音通道已被毁", - "administration_vt_disabled": "已停用语音+文字功能。", + "administration_vt_disabled": "语音+文字功能已禁用。", "administration_vt_enabled": "启用语音+文字功能。", "administration_vt_exit": "我没有**管理身份**和/或**管理频道**权限,所以我不能在{0}服务器上运行`语音+文字`。", - "administration_vt_no_admin": "您正在启用/禁用此功能,并且**我没有ADMINISTRATOR权限**。 这可能会导致一些问题,您必须自己清理文本频道。", - "administration_vt_perms": "我需要至少**管理身份**和**管理频道**权限,以启用此功能。 (优先管理权限)", + "administration_vt_no_admin": "你正在启用/禁用此功能,但**我没有ADMINISTRATOR权限**。 这可能会导致一些问题,你必须自己清理文本频道。", + "administration_vt_perms": "我至少需要**管理身份**和**管理频道**权限以启用此功能。 (有管理员权限更佳)", "administration_xmuted_text": "用户{0}来自文字频道", "administration_xmuted_text_and_voice": "用户{0}来自文字和语音频道", "administration_xmuted_voice": "用户{0}来自语音频道", - "administration_sbdm": "您已从{0}服务器软禁止。\n原因:{1}", - "administration_user_unbanned": "用户已取消禁止", + "administration_sbdm": "你在{0}服务器已被暂时屏蔽。\n原因:{1}", + "administration_user_unbanned": "已取消对用户的屏蔽", "administration_migration_done": "迁移完成!", "administration_presence_updates": "在线状态更新", - "administration_sb_user": "用户被软禁用", + "administration_sb_user": "用户被暂时屏蔽", "gambling_awarded": "已将{0}奖励给{1}", - "gambling_better_luck": "下一次好运^ _ ^", - "gambling_br_win": "恭喜! 您赢得{0}因为您滚{1}或以上", - "gambling_deck_reshuffled": "卡牌改组。", - "gambling_flipped": "抛了{0}。", - "gambling_flip_guess": "你猜到了! 您赢得了{0}", - "gambling_flip_invalid": "指定的数字无效。 你可以抛1到{0}钱币。", + "gambling_better_luck": "祝你下次好运^ _ ^", + "gambling_br_win": "恭喜! 你掷出了{1}或以上,所以你赢得了{0}", + "gambling_deck_reshuffled": "重新洗牌。", + "gambling_flipped": "抛出了{0}。", + "gambling_flip_guess": "你猜对了! 你赢得了{0}", + "gambling_flip_invalid": "指定的数字无效。 你可以同时抛1到{0}枚硬币。", "gambling_flowerreaction_desc": "将{0}反应添加到此消息以获取{1}", "gambling_flowerreaction_footer": "此活动在{0}小时内有效。", "gambling_flowerreaction_title": "花反应活动开始了!", "gambling_gifted": "给了{1}{0}", "gambling_has": "{0}拥有{1}", - "gambling_heads": "头", + "gambling_heads": "正面", "gambling_leaderboard": "排行榜", "gambling_mass_award": "从{2}身份授予{0}至{1}名用户。", - "gambling_max_bet_limit": "您赌注不能超过{0}", - "gambling_min_bet_limit": "您赌注不能低于{0}", - "gambling_not_enough": "您没有足够的{0}", + "gambling_max_bet_limit": "你的赌注不能超过{0}", + "gambling_min_bet_limit": "你的赌注不能低于{0}", + "gambling_not_enough": "你没有足够的{0}", "gambling_no_more_cards": "卡牌组中没有更多的牌。", "gambling_raffled_user": "抽奖用户", - "gambling_roll": "您抛了{0}。", + "gambling_roll": "你掷出了{0}。", "gambling_slot_bet": "赌注", "gambling_slot_jackpot": "哇啊啊啊啊啊啊! 恭喜! x {0}", "gambling_slot_single": "单个{0},x {1}", "gambling_slot_three": "哇!好运! 三个相同! x {0}", - "gambling_slot_two": "做得好! 两个{0} - 投注x {1}", + "gambling_slot_two": "赞! 两个{0} - 投注x {1}", "gambling_slot_won": "胜利", "gambling_sneakygamestatus_desc": "用户必须键入密码才能获取{0}。\n持续{1}秒。 嘘~别跟任何人说。 ", "gambling_sneakygamestatus_end": "SneakyGame事件结束。 {0}个用户收到了奖励。", "gambling_sneakygamestatus_title": "SneakyGameStatus事件已启动", - "gambling_tails": "尾", + "gambling_tails": "反面", "gambling_take": "已成功从{1}取得{0}", "gambling_take_fail": "无法从{1}取得{0},因为用户没有那么多{2}!", "help_back_to_toc": "返回ToC", "help_bot_owner_only": "仅限Bot Owner", "help_channel_permission": "需要{0}频道权限。", - "help_cmdlist_donate": "您可以在patreon上支持项目:<{0}>或paypal:<{1}>", + "help_cmdlist_donate": "你可以在patreon上支持本项目:<{0}>或paypal:<{1}>", "help_cmd_and_alias": "命令和别名", "help_commandlist_regen": "命令列表已重新生成。", - "help_commands_instr": "输入`{0} h CommandName`可查看该指定命令的帮助。 例如 `{0} h> 8ball`", + "help_commands_instr": "输入`{0}h CommandName`可查看该指定命令的帮助。 例如 `{0} h> 8ball`", "help_command_not_found": "我找不到该命令。 请再次尝试之前验证该命令是否存在。", "help_desc": "描述", - "help_donate": "您可以在:\nPatreon <{0}>或\nPaypal <{1}>\n上支持NadekoBot\n不要忘记在邮件中留下您的不和名字或ID。\n\n**谢谢**♥️", + "help_donate": "你可以在:\nPatreon <{0}>或\nPaypal <{1}>\n上支持NadekoBot项目\n不要忘记在邮件中留下你的discord名字或ID。\n\n**谢谢**♥️", "help_guide": "**命令列表**:<{0}>\n**主机指南和文档可以在这里找到**:<{1}>", "help_list_of_commands": "命令列表", "help_list_of_modules": "组件列表", - "help_modules_footer": "输入“{0} cmds ModuleName”以获取该组件中的命令列表。 例如`{0} cmds games`", + "help_modules_footer": "输入“{0}cmds ModuleName”以获取该组件中的命令列表。 例如`{0} cmds games`", "help_module_not_found": "该组件不存在。", "help_server_permission": "需要{0}服务器权限。", "help_table_of_contents": "目录", "help_usage": "用法", - "nsfw_autohentai_started": "自动hentai启动。 使用以下标记之一重新排列每个{0}:\n{1}", + "nsfw_autohentai_started": "Autohentai已启用。 使用以下标签之一重新排列每个{0}:\n{1}", "nsfw_tag": "标签", - "gambling_animal_race": "动物竞赛", + "gambling_animal_race": "动物赛跑", "gambling_animal_race_failed": "启动失败,因为没有足够的参与者。", "gambling_animal_race_full": "竞赛已满! 立即开始。", "gambling_animal_race_join": "{0}加入为{1}", "gambling_animal_race_join_bet": "{0}加入为{1},赌注{2}!", - "gambling_animal_race_join_instr": "输入{0} jr 以加入竞赛。", + "gambling_animal_race_join_instr": "输入{0}jr 以加入竞赛。", "gambling_animal_race_starting": "在20内秒或当房间满后开始。", "gambling_animal_race_starting_with_x": "{0}个参与者开始。", "gambling_animal_race_won": "{0}为{1}赢得竞赛!", "gambling_animal_race_won_money": "{0} 为{1}赢得竞赛,并赢得{2}!", - "gambling_dice_invalid_number": "指定的数字无效。 您可以一次滚动{0} - {1}骰子。", + "gambling_dice_invalid_number": "指定的数字无效。 你可以一次掷{0} - {1}个骰子。", "gambling_dice_rolled": "掷了{0}", - "gambling_dice_rolled_num": "掷骰子:{0}", + "gambling_dice_rolled_num": "骰子出了:{0}", "gambling_race_failed_starting": "竞赛启动失败。 另一个比赛可能正在运行。", "gambling_race_not_exist": "此服务器上不存在竞赛", "gambling_second_larger_than_first": "第二个数字必须大于第一个数字。", - "gambling_changes_of_heart": "爱被改变", + "gambling_changes_of_heart": "变心", "gambling_claimed_by": "声称", "gambling_divorces": "离婚", "gambling_likes": "喜欢", "gambling_price": "价钱", "gambling_waifus_none": "没有waifus被要求。", "gambling_waifus_top_waifus": "最佳Waifus", - "gambling_waifu_affinity_already": "您的兴趣已设置为该waifu,或者您尝试在没有兴趣的情况下删除您的兴趣。", + "gambling_waifu_affinity_already": "你的兴趣已设置为该waifu,或者你尝试在没有兴趣的情况下删除您的兴趣。", "gambling_waifu_affinity_changed": "将把兴趣从{0}更改为{1}。\n\n*这在道德上是有问题的*🤔 ", - "gambling_waifu_affinity_cooldown": "您必须等待{0}小时和{1}分钟才能再次更改您的兴趣。", - "gambling_waifu_affinity_reset": "您的兴趣已重置。 你不再有你喜欢的人。", + "gambling_waifu_affinity_cooldown": "你必须等待{0}小时{1}分钟才能再次更改你的兴趣。", + "gambling_waifu_affinity_reset": "你的兴趣已重置。 你不再有你喜欢的人。", "gambling_waifu_affinity_set": "想成为{0}的waifu。哇非常可爱<3", "gambling_waifu_claimed": "声明{0}为他的waifu,花了{1}!", "gambling_waifu_divorced_like": "你已经离婚了一个喜欢你的waifu。 你无情的怪物。\n{0}收到了{1}作为补偿。", "gambling_waifu_egomaniac": "你不能设置兴趣自己,你好自卑。", "gambling_waifu_fulfilled": "🎉他的爱实现! 🎉\n{0}的新值为{1}!", - "gambling_waifu_isnt_cheap": "没有waifu那么便宜。 您必须至少支付{0}才能获得waifu,即使他们的实际价值较低。", - "gambling_waifu_not_enough": "您必须支付{0}或更多才能认领那个waifu!", - "gambling_waifu_not_yours": "那waifu不是你的。", + "gambling_waifu_isnt_cheap": "没有waifu那么便宜。 你必须至少支付{0}才能获得waifu,即使他们的实际价值较低。", + "gambling_waifu_not_enough": "你必须支付{0}或更多才能认领那个waifu!", + "gambling_waifu_not_yours": "那位不是你的waifu。", "gambling_waifu_not_yourself": "你不能认领自己。", - "gambling_waifu_recent_divorce": "你最近离婚了。 您必须等待{0}小时和{1}分钟再次离婚。", + "gambling_waifu_recent_divorce": "你最近离婚了。你必须等待{0}小时和{1}分钟才能再次离婚。", "gambling_nobody": "没人", - "gambling_waifu_divorced_notlike": "你离婚了一个不喜欢你的waifu。 您收到了{0}。", + "gambling_waifu_divorced_notlike": "你离婚了一个不喜欢你的waifu。 你收到了{0}。", "games_8ball": "8ball", "games_acrophobia": "恐惧症游戏", "games_acro_ended_no_sub": "游戏结束,没人提交。", "games_acro_no_votes_cast": "没人投票。 游戏结束,没有赢家。", "games_acro_nym_was": "首字母缩写是{0}。", - "games_acro_running": "恐惧症游戏已经在这个频道中运行。", + "games_acro_running": "恐惧症游戏已经在本频道中运行。", "games_acro_started": "游戏开始。 创建具有以下首字母缩写的句子:{0}。", - "games_acro_started_footer": "您有{0}秒的时间提交。", + "games_acro_started_footer": "你有{0}秒的时间提交。", "games_acro_submit": "{0}提交了他的判决。 (总{1}个)", "games_acro_vote": "通过输入提交数字投票", "games_acro_vote_cast": "{0}投了票!", "games_acro_winner": "获胜者{0}获得{1}分。", "games_acro_winner_only": "{0}赢了因为是唯一的提交用户!", "games_question": "题", - "games_rps_draw": "平局! 两个都挑了{0}", + "games_rps_draw": "平局! 双方都挑了{0}", "games_rps_win": "{0}赢了! {1} 打赢了 {2}", "games_submissions_closed": "提交关闭", "gambling_animal_race_already_started": "动物竞赛已经运行。", "gambling_total_average": "总计:{0} 平均:{1}", "games_category": "类别", - "games_cleverbot_disabled": "在此服务器上禁用cleverbot。", + "games_cleverbot_disabled": "已在此服务器上禁用cleverbot。", "games_cleverbot_enabled": "在此服务器上启用cleverbot。", - "games_curgen_disabled": "在此频道上停用的货币生成功能。", + "games_curgen_disabled": "已在此频道上禁用货币生成功能。", "games_curgen_enabled": "在此频道上启用的货币生成功能。", "games_curgen_pl": "{0} 个 {1}出现了!", "games_curgen_sn": "一个{0}出现了!", @@ -369,7 +346,7 @@ "games_hangman_start_errored": "启动hangman错误。", "games_hangman_types": "“{0} hangman”字词类型列表:", "games_leaderboard": "排行榜", - "games_not_enough": "您没有足够的{0}", + "games_not_enough": "你没有足够的{0}", "games_no_results": "没有结果", "games_picked": "采了{0}", "games_planted": "{0}种了{1}", @@ -392,29 +369,29 @@ "games_ttt_users_move": "轮到{0}了", "games_vs": "{0}对{1}", "music_attempting_to_queue": "正在排{0}首歌...", - "music_autoplay_disabled": "已停用自动播放。", + "music_autoplay_disabled": "已禁用自动播放。", "music_autoplay_enabled": "已启用自动播放。", "music_defvol_set": "默认音量设置为{0}%", "music_dir_queue_complete": "目录队列完成。", - "music_fairplay": "公平播放", - "music_finished_song": "完成歌曲", - "music_fp_disabled": "停用公平播放。", - "music_fp_enabled": "启用公平播放。", + "music_fairplay": "公平播放模式", + "music_finished_song": "播放结束的歌曲", + "music_fp_disabled": "公平播放模式已禁用。", + "music_fp_enabled": "公平播放模式已启用。", "music_from_position": "从位置", "music_id": "ID", "music_invalid_input": "输入错误。", - "music_max_playtime_none": "最大播放时间没有限制移除。", + "music_max_playtime_none": "播放时长限制已移除。", "music_max_playtime_set": "最大播放时间设置为{0}秒。", "music_max_queue_unlimited": "最大音乐队列大小设置为无限。", "music_max_queue_x": "最大音乐队列大小设置为{0}首。", - "music_must_be_in_voice": "您需要在此服务器上加入语音频道。", + "music_must_be_in_voice": "你需要在此服务器上加入语音频道。", "music_name": "名", "music_now_playing": "现在播放", "music_no_player": "没有活动音乐播放器。\n", "music_no_search_results": "没有搜索结果。", "music_paused": "音乐播放暂停。", "music_player_queue": "播放器队列 - {0} / {1}页", - "music_playing_song": "正在播放", + "music_playing_song": "正在播放歌曲#{0}", "music_playlists": "`#{0}` - ** {1} ** by * {2} *({3}首歌)", "music_playlists_page": "有保存{0}页的播放列表", "music_playlist_deleted": "播放列表已删除。", @@ -433,9 +410,9 @@ "music_repeating_track": "重复曲目", "music_repeating_track_stopped": "当前曲目停止重复。", "music_resumed": "音乐播放已恢复。", - "music_rpl_disabled": "禁用重复播放列表", + "music_rpl_disabled": "已禁用重复列表播放。", "music_rpl_enabled": "重复播放列表已启用。", - "music_set_music_channel": "我现在将在此频道里输出播放,完成,暂停和删除歌曲。", + "music_set_music_channel": "我将在此频道里输出播放,完成,暂停和删除歌曲。", "music_skipped_to": "跳到‘{0}:{1}’", "music_song_moved": "歌曲被移动", "music_time_format": "{0}小时 {1}分钟 {2}秒", @@ -443,31 +420,31 @@ "music_unlimited": "无限", "music_volume_input_invalid": "音量必须介于0和100之间", "music_volume_set": "音量设置为{0}%", - "permissions_acm_disable": "在{0}频道上禁止所有组件的使用。", + "permissions_acm_disable": "已在{0}频道上禁用所有组件。", "permissions_acm_enable": "在{0}频道上允许启用所有组件。", "permissions_allowed": "允许", - "permissions_arm_disable": "{0}身份的所有组件被禁止使用。", + "permissions_arm_disable": "已禁用{0}身份的所有组件。", "permissions_arm_enable": "{0}身份的所有组件被允许使用。", - "permissions_asm_disable": "在此服务器上禁止所有组件的使用。", + "permissions_asm_disable": "已在此服务器上禁用所有组件。", "permissions_asm_enable": "在此服务器上允许所有组件的使用。", - "permissions_aum_disable": "{0}用户的所有模块被禁止使用。", + "permissions_aum_disable": "已禁用{0}用户的所有组件。", "permissions_aum_enable": "{0}用户的所有模块被允许使用。", "permissions_blacklisted": "ID为{1}被加入黑名单{0}", "permissions_cmdcd_add": "命令{0}冷却时间现有{1}秒。", "permissions_cmdcd_cleared": "命令{0}没有冷却时间了,现有所有的冷却时间已被清除。", "permissions_cmdcd_none": "没有设置命令冷却时间。", "permissions_command_costs": "命令成本", - "permissions_cx_disable": "{2}频道上已停用{0} {1}。", + "permissions_cx_disable": "已在{2}频道上禁用{0} {1}。", "permissions_cx_enable": "已在{2}频道上启用{0} {1}的使用。", "permissions_denied": "被拒绝", - "permissions_filter_word_add": "以巴{0}添加到已过滤字词列表中。", - "permissions_filter_word_list": "被过滤的词列表", - "permissions_filter_word_remove": "已从过滤字词列表中删除{0}。", + "permissions_filter_word_add": "以把{0}添加到文字过滤列表中。", + "permissions_filter_word_list": "文字过滤列表", + "permissions_filter_word_remove": "已从文字过滤列表中删除{0}。", "permissions_invalid_second_param_between": "第二个参数无效(必须是{0}和{1}之间的数字)", - "permissions_invite_filter_channel_off": "在此频道上停用邀请过滤功能。", - "permissions_invite_filter_channel_on": "在此频道上启用邀请过滤。", - "permissions_invite_filter_server_off": "在此服务器上停用邀请过滤功能。 ", - "permissions_invite_filter_server_on": "在此服务器上启用邀请过滤功能。 ", + "permissions_invite_filter_channel_off": "已在此频道上禁用邀请过滤功能。", + "permissions_invite_filter_channel_on": "在此频道上启用邀请过滤功能。", + "permissions_invite_filter_server_off": "在此服务器上停用邀请过滤功能。", + "permissions_invite_filter_server_on": "在此服务器上启用邀请过滤功能。", "permissions_moved_permission": "已将权限{0}从#{1}移至#{2}", "permissions_not_found": "在索引#{0}找不到权限", "permissions_no_costs": "未设置费用。", @@ -489,15 +466,15 @@ "permissions_ux_enable": "{2}用户的{0} {1}已允许使用。", "permissions_verbose_false": "我将不再显示权限警告。", "permissions_verbose_true": "我现在将显示权限警告。", - "permissions_word_filter_channel_off": "此频道上的字过滤已停用。", - "permissions_word_filter_channel_on": "此频道上的字过滤已启用。", - "permissions_word_filter_server_off": "此服务器上的字过滤已停用。", - "permissions_word_filter_server_on": "此服务器上的字过滤已启用。", + "permissions_word_filter_channel_off": "已在此频道上禁用文字过滤。", + "permissions_word_filter_channel_on": "已在此频道上启用文字过滤。", + "permissions_word_filter_server_off": "已在此服务器上禁用文字过滤。", + "permissions_word_filter_server_on": "已在此服务器上启用文字过滤。", "searches_abilities": "能力", "searches_anime_no_fav": "没有最喜爱的动漫", "searches_atl_ad_started": "开始自动翻译此频道上的消息。 用户消息将被自动删除。", - "searches_atl_removed": "您的自动翻译语言已删除。", - "searches_atl_set": "您的自动翻译语言已设置为{0}> {1}", + "searches_atl_removed": "你的自动翻译语言已删除。", + "searches_atl_set": "你的自动翻译语言已设置为{0}> {1}", "searches_atl_started": "开始自动翻译此频道上的消息。", "searches_atl_stopped": "停止自动翻译此频道上的消息。", "searches_bad_input_format": "错误格式或出现错误。", @@ -521,7 +498,7 @@ "searches_failed_finding_anime": "找不到那个动画。", "searches_failed_finding_manga": "找不到漫画。", "searches_genres": "类型", - "searches_hashtag_error": "未能找到该标记的定义。", + "searches_hashtag_error": "未能找到该标签的定义。", "searches_height_weight": "身高/体重", "searches_height_weight_val": "{0} m / {1} kg", "searches_humidity": "湿度", @@ -531,11 +508,11 @@ "searches_jokes_not_loaded": "笑话没加载。", "searches_latlong": "纬度/经度", "searches_level": "等级", - "searches_list_of_place_tags": "{0}地方标记列表", + "searches_list_of_place_tags": "{0}place 标签列表", "searches_location": "地点", "searches_magicitems_not_loaded": "未加载魔术项目。", "searches_mal_profile": "{0}的MAL个人资料", - "searches_mashape_api_missing": "机器人的业主没有指定MashapeApiKey。 您不能使用此功能。", + "searches_mashape_api_missing": "Bot的主人没有指定MashapeApiKey。 你不能使用此功能。", "searches_min_max": "最小/最大", "searches_no_channel_found": "找不到频道。", "searches_no_results": "没找到结果。", @@ -562,10 +539,10 @@ "searches_specify_search_params": "请指定搜索参数。", "searches_status": "状态", "searches_store_url": "储存链接", - "searches_streamer_offline": "直播台{0}已离线。", - "searches_streamer_online": "直播台{0}在线有{1}个观众。", - "searches_streams_following": "您在此服务器上关注{0}个直播台", - "searches_streams_none": "您未在此服务器上关注任何直播台。", + "searches_streamer_offline": "主播{0}已离线。", + "searches_streamer_online": "主播{0}在线,有{1}个观众。", + "searches_streams_following": "你在此服务器上关注{0}个直播台", + "searches_streams_none": "你未在此服务器上关注任何直播台。", "searches_stream_no": "没有这个直播台。", "searches_stream_not_exist": "直播台可能不存在。", "searches_stream_removed": "已从({1})的通知中移除{0}的直播台", @@ -585,14 +562,14 @@ "searches_wikia_input_error": "请输入目标维基,然后搜索查询。", "searches_wiki_page_not_found": "找不到该页面。", "searches_wind_speed": "风速", - "searches_x_most_banned_champs": "{0}个被封号最多的英雄", - "searches_yodify_error": "无法yodify您的句子。", + "searches_x_most_banned_champs": "{0}个被屏蔽最多的英雄", + "searches_yodify_error": "无法yodify你的句子。", "utiliity_joined": "加入", "utility_activity_line": "`{0}.` {1} [{2:F2}/秒] - {3} 总计", "utility_activity_page": "活动页面#{0}", "utility_activity_users_total": "{0}个用户。", "utility_author": "作者", - "utility_botid": "机器ID", + "utility_botid": "Bot ID", "utility_calcops": "{0} 计算器命令列表", "utility_channelid": "此频道的{0}是{1}", "utility_channel_topic": "频道主题", @@ -608,7 +585,7 @@ "utility_id": "ID", "utility_index_out_of_range": "索引超出范围。", "utility_inrole_list": "以下是 {0} 身份的用户列表:", - "utility_inrole_not_allowed": "为防止滥用,您不能对有过多用户的身份使用此命令。", + "utility_inrole_not_allowed": "为防止滥用,你不能对有过多用户的身份使用此命令。", "utility_invalid_value": "{0}值错误。", "utility_joined_discord": "加入Discord", "utility_joined_server": "加入服务器", @@ -617,7 +594,7 @@ "utility_list_of_repeaters": "重复列表", "utility_members": "会员", "utility_memory": "存储", - "utility_messages": "讯息", + "utility_messages": "消息", "utility_message_repeater": "消息重复功能", "utility_name": "名字", "utility_nickname": "昵称", @@ -633,19 +610,19 @@ "utility_quotes_deleted": "已删除所有使用{0}关键字的引用。", "utility_quotes_page": "引用的第{0}页", "utility_quotes_page_none": "此页面上没有引用。", - "utility_quotes_remove_none": "没有您可以删除的引用。", + "utility_quotes_remove_none": "没有你可以删除的引用。", "utility_quote_added": "引用被添加", "utility_quote_deleted": "引用#{0}删除。", "utility_region": "区域", "utility_registered_on": "注册日", "utility_remind": "我将在{2}`({3:d.M.yyyy。}的{4:HH:mm})提醒{0}关于{1}", "utility_remind_invalid_format": "无效时间格式。 检查命令列表。", - "utility_remind_template": "新的提醒模板被设定。", + "utility_remind_template": "新提醒模板设置成功。", "utility_repeater": "会每{1}天{2}小时{3}分钟重复{0}。", "utility_repeaters_list": "重复消息列表", "utility_repeaters_none": "此服务器上没有运行重复消息。", "utility_repeater_stopped": "#{0}已停止。", - "utility_repeat_invoke_none": "此服务器上没有找到被重复的消息。", + "utility_repeat_invoke_none": "在此服务器上未找到重复消息。", "utility_result": "结果", "utility_roles": "身份", "utility_roles_all_page": "此服务器上所有身份第{0}页:", @@ -667,31 +644,31 @@ "utility_userid": "用户 {1} 的{0} 是 {2}", "utility_users": "用户", "utility_voice_channels": "语音频道", - "gambling_animal_race_already_in": "你已经参加这场比赛!", + "gambling_animal_race_already_in": "你已经加入了本场比赛!", "games_current_poll_results": "当前投票结果", "games_no_votes_cast": "没有票投。", "games_poll_already_running": "此服务器上已运行投票。", - "games_poll_created": "📃{0}创建一个需要您注意的投票:", + "games_poll_created": "📃{0}创建一个需要你注意的投票:", "games_poll_result": "'{0}'。{1} 有 {2}票。", "games_poll_voted": "{0}投了票。", - "games_poll_vote_private": "私人消息我相应答案的数字。", - "games_poll_vote_public": "在这里发送消息相应答案的数字。", + "games_poll_vote_private": "将答案数字通过私密消息发给我。", + "games_poll_vote_public": "将答案数字发送到这里。", "games_thanks_for_voting": "谢谢投票,{0}", "games_x_votes_cast": "{0}投票总数。", "games_pick_pl": "用 `{0}pick` 命令來捡起。", "games_pick_sn": "用 `{0}pick` 命令來捡起。", "gambling_no_users_found": "此用户不存在。", - "gambling_page": "页面 {0} ", - "administration_must_be_in_voice": "您必须加入此服务器的语音频道。", + "gambling_page": "第{0}页", + "administration_must_be_in_voice": "你必须加入此服务器的语音频道。", "administration_no_vcroles": "没有可设置的语音频道身份。", - "administration_user_muted_time": "用户 {0} 被静音和禁言 {1} 分钟。", + "administration_user_muted_time": "用户{0}被禁言{1}分钟。", "administration_vcrole_added": "新加入{0}语音频道的用户会得到{1}身份。", "administration_vcrole_removed": "新加入{0}语音频道的用户不会再得到身份。", "administration_vc_role_list": "语音频道身份", - "customreactions_crad_disabled": "触发 ID{0} 定制反应的命令不会被自动删除。", - "customreactions_crad_enabled": "触发 ID{0} 定制反应的命令将会被被自动删除。", - "customreactions_crdm_disabled": "ID {0}定制反应的回复不会已私聊模式发送。", - "customreactions_crdm_enabled": "ID {0}定制反应的回复会以私聊模式发送。", + "customreactions_crad_disabled": "触发 ID{0} 定制反应的消息不会被自动删除。", + "customreactions_crad_enabled": "触发 ID{0} 定制反应的消息将会被被自动删除。", + "customreactions_crdm_disabled": "ID {0}定制反应的回复不会以DM发送。", + "customreactions_crdm_enabled": "ID {0}定制反应的回复会以DM发送。", "utility_aliases_none": "没有找到任何命令别名。", "utility_alias_added": "{1} 命令的新别名设置成为 {0}。", "utility_alias_list": "别名列表", @@ -699,7 +676,7 @@ "utility_alias_remove_fail": "{0} 命令没有已经设置的别名。", "searches_compet_playtime": "竞争比赛游戏时间。", "administration_channel": "频道", - "administration_command_text": "指令", + "administration_command_text": "命令", "administration_kicked_pl": "已被踢出", "administration_moderator": "群管", "administration_page": "第{0}页", @@ -710,7 +687,7 @@ "administration_server": "服务器", "administration_startcmdlist_none": "该页并无启动执行命令", "administration_startcmds_cleared": "清除所有启动执行命令", - "administration_unbanned_user": "用户 {0} 已被解禁", + "administration_unbanned_user": "用户 {0} 已被解除屏蔽。", "administration_user_not_found": "该用户未找到", "administration_user_warned": "用户{0}已被警告", "administration_user_warned_and_punished": "用户 {0} 已被警告,惩罚 {1} 已执行。", @@ -719,7 +696,7 @@ "administration_warnings_cleared": "{0} 的所有警告已清除。", "administration_warnings_none": "该页并无警告。", "administration_warnlog_for": "{0} 的警告记录。", - "administration_warnpl_none": "没有设定任何惩罚", + "administration_warnpl_none": "没有设置任何惩罚", "administration_warn_cleared_by": "被{0} 清除", "administration_warn_punish_list": "警告惩罚记录", "administration_warn_punish_rem": "拥有{0} 个警告已不会触动惩罚。", @@ -729,32 +706,32 @@ "administration_slowmodewl_user_start": "Slowmode 现在会无视用户 {0} 。", "administration_slowmodewl_user_stop": "Slowmode 现在不会无视用户 {0} 。", "utility_clpa_fail": "因下列原因无法领取奖励:", - "utility_clpa_fail_already": "你可能已领取这个月的奖励。除非你的赞助金额增加,你只能领取奖励一个月一次。", + "utility_clpa_fail_already": "你已领取本月奖励。除非你增加赞助金额,否则一个月只能领取一次奖励。", "utility_clpa_fail_already_title": "已被奖励", - "utility_clpa_fail_conn": "你的discord账户可能未与Patreon连接。如果你并不明白或不知如何连接 - 你需要去 [Patreon account settings page] (https://patreon.com/settings/account) 然后点击'Connect to discord' 的按钮。 ", + "utility_clpa_fail_conn": "你的discord账户可能未与Patreon连接。如果你不清楚该如何连接,请到 [Patreon account settings page] (https://patreon.com/settings/account) 然后点击'Connect to discord' 的按钮。 ", "utility_clpa_fail_conn_title": "Discord账号没有连接", "utility_clpa_fail_sup": "你必须要在patreon赞助该项目才有资格领取奖励。你可以使用命令 {0} 取得网址。", "utility_clpa_fail_sup_title": "无法支援", - "utility_clpa_fail_wait": "你需要在赞助了之后等几个小时。如果你没有,请稍后再试。", + "utility_clpa_fail_wait": "在赞助后你需要等待几个小时才能领取奖励。请稍后再试。", "utility_clpa_fail_wait_title": "稍等片刻", - "utility_clpa_success": "您已领取 {0} 。感谢您支持该项目!", + "utility_clpa_success": "你已领取 {0} 。感谢你支持该项目!", "utility_clpa_too_early": "奖励只能在每月五号或五号后才能领取。", "searches_time": "时间在 {0} 是 {1} - {2}", "administration_rh": "把公会身份 {0} 的表现变成 {1}", - "gambling_name": "名", + "gambling_name": "名字", "gambling_shop": "商店", - "gambling_shop_item_add": "加了物品", - "gambling_shop_none": "没有物品在这页面", - "gambling_shop_role": "你会得到 {0} 身份", + "gambling_shop_item_add": "商品已添加", + "gambling_shop_none": "本页面没有商品", + "gambling_shop_role": "你将得到 {0} 身份", "gambling_type": "类型", "utility_clpa_next_update": "{0} 內进行下个更新", - "administration_gvc_disabled": "这服务器的游戏语音频道功能已被禁用。", + "administration_gvc_disabled": "本服务器的游戏语音频道功能已被禁用。", "administration_gvc_enabled": "{0} 现在是个游戏语音频道。", - "administration_not_in_voice": "你不在这服务器的语音频道。", + "administration_not_in_voice": "你不在本服务器的语音频道。", "gambling_item": "商品", "gambling_out_of_stock": "商品无货。", "gambling_random_unique_item": "随机特殊物品。", - "gambling_shop_buy_error": "无法私信您所购买的商品。此次消费金额已退款。", + "gambling_shop_buy_error": "无法私信你所购买的商品。此次消费金额已退款。", "gambling_shop_item_not_found": "此索引指定的商品无效。", "gambling_shop_item_purchase": "购买成功。", "gambling_shop_item_rm": "商品成功下架。", @@ -762,47 +739,134 @@ "gambling_shop_list_item_added": "商品成功发布。", "gambling_shop_list_item_not_unique": "此商品已经被发布。", "gambling_shop_purchase": "{0}服务器的商品。", - "gambling_shop_role_not_found": "您购买的角色已经卖完。", - "gambling_shop_role_purchase": "您成功购买了 {0} 角色。", - "gambling_shop_role_purchase_error": "添加角色失败。 此次消费金额已退款。", + "gambling_shop_role_not_found": "你购买的身份已经卖完。", + "gambling_shop_role_purchase": "你成功购买了 {0} 身份。", + "gambling_shop_role_purchase_error": "添加身份失败。 此次消费金额已退款。", "gambling_unique_items_left": "还剩下 {0} 个特殊物品。", "permissions_blocked_commands": "已禁用命令。", - "permissions_blocked_modules": "已禁用模块。", - "permissions_gcmd_add": "{0} 命令已在所有服务器禁用。", + "permissions_blocked_modules": "已禁用组件。", + "permissions_gcmd_add": "已在所有服务器禁用{0} 命令。", "permissions_gcmd_remove": "{0} 命令已在所有服务器启用。", - "permissions_gmod_add": "模块 {0} 已在所有服务器禁用。", - "permissions_gmod_remove": "模块 {0} 已在所有服务器启用。", - "permissions_lgp_none": "没有被禁的命令或模块", + "permissions_gmod_add": "已在所有服务器禁用{0}组件 。", + "permissions_gmod_remove": "组件{0}已在所有服务器启用。", + "permissions_lgp_none": "没有被禁的命令或组件", "gambling_animal_race_no_race": "这动物竞赛已充满了!", - "utility_cant_read_or_send": "您不可以读或送短信在那通路", + "utility_cant_read_or_send": "你无法查看该频道或在该频道发送消息", "utility_quotes_notfound": "没找到引用像给的引用身份", - "administration_prefix_current": "", - "administration_prefix_new": "", - "administration_defprefix_current": "", - "administration_defprefix_new": "", - "administration_bot_nick": "", - "administration_user_nick": "", - "administration_timezone_guild": "", - "administration_timezone_not_found": "", - "administration_timezones_available": "", - "music_song_not_found": "", - "searches_define_unknown": "", - "utility_repeater_initial": "", - "utility_verbose_errors_enabled": "", - "utility_verbose_errors_disabled": "", - "permissions_perms_reset": "", - "permissions_trigger": "", - "administration_migration_error": "", - "searches_hex_invalid": "", - "permissions_global_perms_reset": "", - "help_module": "", - "games_hangman_stopped": "", - "music_autoplaying": "", - "music_queue_stopped": "", - "music_removed_song_error": "", - "music_shuffling_playlist": "", - "music_songs_shuffle_enable": "", - "music_songs_shuffle_disable": "", - "music_song_skips_after": "", - "administration_warnings_list": "" + "administration_prefix_current": "本服务器的命令前缀是{0}", + "administration_prefix_new": "本服务器的命令前缀已从{0}被改成{1}", + "administration_defprefix_current": "bot的默认前缀是{0}", + "administration_defprefix_new": "将bot的默认前缀从{0}改成{1}", + "administration_bot_nick": "Bot的昵称已被改成 {0}", + "administration_user_nick": "{0}的昵称已被改成 {1}", + "administration_timezone_guild": "此公会时区是{0}", + "administration_timezone_not_found": "时区未找到。请用“timezones”命令查看所有可用时区。", + "administration_timezones_available": "可用时区", + "music_song_not_found": "歌曲未发现。", + "searches_define_unknown": "找不到该术语的解释。", + "utility_repeater_initial": "{0}小时{1}分钟后将发送第一条重复消息。", + "utility_verbose_errors_enabled": "使用错误的命令将会有提示。", + "utility_verbose_errors_disabled": "使用错误的命令将不再会有提示。", + "permissions_perms_reset": "已重置此服务器的权限。", + "permissions_trigger": "此操作被权限#{0} {1}禁止。", + "administration_migration_error": "迁移失败,详情请参照bot的控制台。", + "searches_hex_invalid": "您的颜色选择无效。", + "permissions_global_perms_reset": "已重置全局权限。", + "help_module": "组件: {0}", + "games_hangman_stopped": "吊死鬼游戏结束", + "music_autoplaying": "自动播放", + "music_queue_stopped": "播放停止。请用 {0} 命令继续播放。", + "music_removed_song_error": "你所指定的编号没有歌曲", + "music_shuffling_playlist": "随机播放", + "music_songs_shuffle_enable": "从现在开始歌曲将随机播放。", + "music_songs_shuffle_disable": "随机播放已停止。", + "music_song_skips_after": "歌曲将在{0}后被跳过", + "administration_warnings_list": "被警告用户名单", + "customreactions_redacted_too_long": "过长,已被编辑。", + "nsfw_blacklisted_tag_list": "已被加入黑名单的标签:", + "nsfw_blacklisted_tag": "你曾用过的一个或多个标签已被加入黑名单。", + "nsfw_blacklisted_tag_add": "NSFW标签{0}已被加入黑名单。", + "nsfw_blacklisted_tag_remove": "NSFW标签{0}已被移出黑名单。", + "gambling_waifu_gift": "将{0}送给了{1}", + "gambling_waifu_gift_shop": "Waifu礼品商店", + "gambling_gifts": "礼物", + "games_connect4_created": "Connect4游戏已创建。等待其他玩家加入。", + "games_connect4_player_to_move": "轮到玩家:{0}", + "games_connect4_failed_to_start": "没有其他玩家加入,Connect4游戏无法开始。", + "games_connect4_draw": "Connect4游戏以平局结束。", + "games_connect4_won": "{0}在Connect4比赛中赢得了{1}", + "games_nunchi_joined": "加入了nunchi游戏。目前已有{0}名用户加入。", + "games_nunchi_ended": "nunchi游戏结束。{0}获胜。", + "games_nunchi_ended_no_winner": "nunchi游戏结束。无人获胜。", + "games_nunchi_started": "nunchi游戏开始。本局现有{0}位玩家。", + "games_nunchi_round_ended": "nunchi回合结束。{0}出局。", + "games_nunchi_round_ended_boot": "部分用户在规定时间内没有作答,nunchi回合结束。以下玩家仍在游戏中:{0}", + "games_nunchi_round_started": "nunchi回合开始。现有{0}位玩家。请从{1}开始往上数。", + "games_nunchi_next_number": "数字已被记录。最新的数字是{0}。", + "games_nunchi_failed_to_start": "参与人数不足,nunchi游戏无法开始。", + "games_nunchi_created": "nunchi游戏已创建。等待其他玩家加入。", + "music_sad_enabled": "播放列表中的歌曲在播放完毕后将会被删除。", + "music_sad_disabled": "播放列表中的歌曲在播放完毕后将不会被删除。", + "utility_stream_role_enabled": "当{0}身份组内的用户开始直播,我将会给该用户{1}身份。", + "utility_stream_role_disabled": "已禁用直播身份组。", + "utility_stream_role_kw_set": "主播需要{0}关键词才能得到该身份。", + "utility_stream_role_kw_reset": "直播身份组关键词已重置。", + "utility_stream_role_bl_add": "用户{0}将不会得到直播身份组。", + "utility_stream_role_bl_add_fail": "用户{0}已在黑名单中。", + "utility_stream_role_bl_rem": "用户{0}已被移出黑名单。", + "utility_stream_role_bl_rem_fail": "用户{0}不在黑名单中。", + "utility_stream_role_wl_add": "用户{0}将得到直播身份组,即便该用户的直播标题不含关键词。", + "utility_stream_role_wl_add_fail": "用户{0}已在白名单中。", + "utility_stream_role_wl_rem": "用户{0}已被移出白名单。", + "utility_stream_role_wl_rem_fail": "用户{0}不在白名单中。", + "utility_bot_config_edit_fail": "设置{0}值为{1}失败", + "utility_bot_config_edit_success": "{0}的值已被设置为{1}", + "customreactions_crca_disabled": "除非触发词在句子开头,否则ID {0}定制反应将不被触发。", + "customreactions_crca_enabled": "除非触发词在句子当中任意位置,否则ID {0}定制反应将不被触发。", + "xp_server_level": "服务器等级", + "xp_level": "等级", + "xp_club": "俱乐部", + "xp_xp": "经验值", + "xp_excluded": "{0}已不再参与本服务器的经验值系统。", + "xp_not_excluded": "{0}开始参与本服务器的经验值系统。", + "xp_exclusion_list": "不参与列表", + "xp_server_is_excluded": "本服务器不参与", + "xp_server_is_not_excluded": "本服务器参与", + "xp_excluded_roles": "不参与的身份组", + "xp_excluded_channels": "不参与的频道", + "xp_level_up_channel": "{0},恭喜你,你已升到{1}级!", + "xp_level_up_dm": "{0},恭喜你,你在{2}服务器已升到{1}级!", + "xp_level_up_global": "{0},恭喜你,你的全局等级已升到{1}级!", + "xp_role_reward_cleared": "升到{0}级的用户将不再得到{1}身份。", + "xp_role_reward_added": "升到{0}级的用户将会得到{1}身份。", + "xp_role_rewards": "身份奖励", + "xp_level_x": "{0}级", + "xp_no_role_rewards": "本页没有身份组奖励。", + "xp_server_leaderboard": "服务器经验值排行榜", + "xp_global_leaderboard": "全局经验值排行榜", + "xp_modified": "将用户{0}的服务器经验值改成{1}", + "xp_club_create_error": "俱乐部创建失败。请确认你已经达到5级,并且尚未加入其他俱乐部。", + "xp_club_created": "成功创建俱乐部{0}!", + "xp_club_not_exists": "该俱乐部不存在。", + "xp_club_applied": "你已提交加入俱乐部{0}的申请。", + "xp_club_apply_error": "应用失败。你不是本俱乐部的成员,你尚未达到等级要求,或你已被本俱乐部屏蔽。", + "xp_club_accepted": "用户{0}已被批准加入俱乐部。", + "xp_club_accept_error": "用户不存在", + "xp_club_left": "你离开了该俱乐部。", + "xp_club_not_in_club": "你不在任何俱乐部中,或你正在退出自己拥有的俱乐部。", + "xp_club_user_kick": "用户{0}被踢出俱乐部{1}。", + "xp_club_user_kick_fail": "踢出用户错误。你不是本俱乐部的主人,或该用户不是本俱乐部的成员。", + "xp_club_user_banned": "用户{0}已被俱乐部{1}屏蔽。", + "xp_club_user_ban_fail": "屏蔽失败。你不是本俱乐部的主人,该用户不是本俱乐部的成员,或该用户并未申请加入本俱乐部。", + "xp_club_user_unbanned": "已取消俱乐部{1}对用户{0}的屏蔽。", + "xp_club_user_unban_fail": "解除屏蔽失败。你不是本俱乐部的主人,该用户不是本俱乐部的成员,或该用户并未申请加入本俱乐部。", + "xp_club_level_req_changed": "俱乐部成员等级要求已更改为{0}", + "xp_club_level_req_change_error": "更改俱乐部成员等级要求失败。", + "xp_club_disbanded": "俱乐部{0}已被解除屏蔽", + "xp_club_disband_error": "错误。你尚未加入任何俱乐部,或你不是你所在俱乐部的主人。", + "xp_club_icon_error": "图片url无效或你不是本俱乐部的主人。", + "xp_club_icon_set": "新俱乐部头像设置成功。", + "xp_club_bans_for": "俱乐部{0}的屏蔽", + "xp_club_apps_for": "{0}俱乐部的申请人", + "xp_club_leaderboard": "俱乐部排行榜- 第{0}页" } \ No newline at end of file diff --git a/src/NadekoBot/data/command_strings.json b/src/NadekoBot/_strings/cmd/command_strings.json similarity index 93% rename from src/NadekoBot/data/command_strings.json rename to src/NadekoBot/_strings/cmd/command_strings.json index eda80535..250db1ee 100644 --- a/src/NadekoBot/data/command_strings.json +++ b/src/NadekoBot/_strings/cmd/command_strings.json @@ -204,9 +204,11 @@ }, "asar": { "Cmd": "asar", - "Desc": "Adds a role to the list of self-assignable roles.", + "Desc": "Adds a role to the list of self-assignable roles. You can also specify a group. If 'Exclusive self-assignable roles' feature is enabled, users will be able to pick one role per group.", "Usage": [ - "{0}asar Gamer" + "{0}asar Gamer", + "{0}asar 1 Alliance", + "{0}asar 1 Horde" ] }, "rsar": { @@ -225,7 +227,7 @@ }, "tesar": { "Cmd": "togglexclsar tesar", - "Desc": "Toggles whether the self-assigned roles are exclusive. (So that any person can have only one of the self assignable roles)", + "Desc": "Toggles whether the self-assigned roles are exclusive. While enabled, users can only have one self-assignable role per group.", "Usage": [ "{0}tesar" ] @@ -623,7 +625,7 @@ }, "roles": { "Cmd": "roles", - "Desc": "List roles on this server or a roles of a specific user if specified. Paginated, 20 roles per page.", + "Desc": "List roles on this server or roles of a user if specified. Paginated, 20 roles per page.", "Usage": [ "{0}roles 2", "{0}roles @Someone" @@ -938,12 +940,20 @@ }, "raffle": { "Cmd": "raffle", - "Desc": "Prints a name and ID of a random user from the online list from the (optional) role.", + "Desc": "Prints a name and ID of a random online user from the server, or from the online user in the specified role.", "Usage": [ "{0}raffle", "{0}raffle RoleName" ] }, + "raffleany": { + "Cmd": "raffleany", + "Desc": "Prints a name and ID of a random user from the server, or from the specified role.", + "Usage": [ + "{0}raffleany", + "{0}raffleany RoleName" + ] + }, "give": { "Cmd": "give", "Desc": "Give someone a certain amount of currency.", @@ -1311,9 +1321,9 @@ }, "deleteplaylist": { "Cmd": "deleteplaylist delpls", - "Desc": "Deletes a saved playlist. Works only if you made it or if you are the bot owner.", + "Desc": "Deletes a saved playlist using its id. Works only if you made it or if you are the bot owner.", "Usage": [ - "{0}delpls animu-5" + "{0}delpls 5" ] }, "goto": { @@ -1347,21 +1357,28 @@ }, "smashcast": { "Cmd": "smashcast hb", - "Desc": "Notifies this channel when a certain user starts streaming.", + "Desc": "Notifies this channel when the specified user starts streaming.", "Usage": [ "{0}smashcast SomeStreamer" ] }, "twitch": { "Cmd": "twitch tw", - "Desc": "Notifies this channel when a certain user starts streaming.", + "Desc": "Notifies this channel when the specified user starts streaming.", "Usage": [ "{0}twitch SomeStreamer" ] }, + "picarto": { + "Cmd": "picarto pa", + "Desc": "Notifies this channel when the specified user starts streaming.", + "Usage": [ + "{0}picarto SomeStreamer" + ] + }, "mixer": { "Cmd": "mixer bm", - "Desc": "Notifies this channel when a certain user starts streaming.", + "Desc": "Notifies this channel when the specified user starts streaming.", "Usage": [ "{0}mixer SomeStreamer" ] @@ -1836,7 +1853,7 @@ }, "antispam": { "Cmd": "antispam", - "Desc": "Stops people from repeating same message X times in a row. You can specify to either mute, kick or ban the offenders. Max message count is 10.", + "Desc": "Stops people from repeating same message X times in a row. You can specify to either mute, kick or ban the offenders. If you're using mute, you can add a number of seconds at the end to use a timed mute. Max message count is 10.", "Usage": [ "{0}antispam 3 Mute", "{0}antispam 4 Kick", @@ -1954,10 +1971,10 @@ }, "listquotes": { "Cmd": "listquotes liqu", - "Desc": "Lists all quotes on the server ordered alphabetically. 15 Per page.", + "Desc": "Lists all quotes on the server ordered alphabetically or by ID. 15 Per page.", "Usage": [ - "{0}liqu", - "{0}liqu 3" + "{0}liqu 3", + "{0}liqu 3 id" ] }, "typedel": { @@ -2312,6 +2329,13 @@ "{0}claim 50 @Himesama" ] }, + "waifutransfer": { + "cmd": "waifutransfer", + "desc": "Transfer the ownership of one of your waifus to another user. You must pay 10% of your waifu's value.", + "usage": [ + "{0}waifutransfer @ExWaifu @NewOwner" + ] + }, "waifugift": { "Cmd": "waifugift gift gifts", "Desc": "Gift an item to someone. This will increase their waifu value by 50% of the gifted item's value if they don't have affinity set towards you, or 100% if they do. Provide no arguments to see a list of items that you can gift.", @@ -2798,11 +2822,11 @@ "{0}xpn server channel" ] }, - "xprolerewards": { - "Cmd": "xprolerewards xprrs", - "Desc": "Shows currently set role rewards.", + "xpleveluprewards": { + "Cmd": "xplvluprewards xprews xpcrs xprrs xprolerewards xpcurrewards", + "Desc": "Shows currently set level up rewards.", "Usage": [ - "{0}xprrs" + "{0}xprews" ] }, "xprolereward": { @@ -2812,6 +2836,13 @@ "{0}xprr 3 Social" ] }, + "xpcurrencyreward": { + "Cmd": "xpcurreward xpcr", + "Desc": "Sets a currency reward on a specified level. Provide no amount in order to remove the reward.", + "Usage": [ + "{0}xpcr 3 50" + ] + }, "xpleaderboard": { "Cmd": "xpleaderboard xplb", "Desc": "Shows current server's xp leaderboard.", @@ -2840,6 +2871,13 @@ "{0}clubcreate b1nzy's friends" ] }, + "clubtransfer": { + "Cmd": "clubtransfer", + "Desc": "Transfers the ownership of the club to another member of the club.", + "Usage": [ + "{0}clubtransfer @b1nzy" + ] + }, "clubinformation": { "Cmd": "clubinfo", "Desc": "Shows information about the club.", @@ -2991,7 +3029,7 @@ }, "editcustreact": { "cmd": "editcustreact ecr", - "desc": "Edits the custom reaction's response given it's ID.", + "desc": "Edits the custom reaction's response given its ID.", "usage": [ "{0}ecr 123 I'm a magical girl" ] @@ -3002,5 +3040,106 @@ "usage": [ "{0}say hi" ] + }, + "execsql": { + "cmd": "execsql", + "desc": "Executes an sql command and returns the number of affected rows. Dangerous.", + "usage": [ + "{0}execsql UPDATE Currency SET Amount=Amount+1234" + ] + }, + "deletewaifus": { + "cmd": "deletewaifus", + "desc": "Deletes everything from WaifuUpdates and WaifuInfo tables.", + "usage": [ + "{0}deletewaifus" + ] + }, + "deletecurrency": { + "cmd": "deletecurrency", + "desc": "Deletes everything from Currency and CurrencyTransactions.", + "usage": [ + "{0}deletecurrency" + ] + }, + "deleteplaylists": { + "cmd": "deleteplaylists", + "desc": "Deletes everything from MusicPlaylists.", + "usage": [ + "{0}deleteplaylists" + ] + }, + "deletexp": { + "cmd": "deletexp", + "desc": "Deletes everything from UserXpStats, Clubs and sets users' TotalXP to 0.", + "usage": [ + "{0}execsql UPDATE Currency SET Amount=Amount+1234" + ] + }, + "rafflecur": { + "cmd": "rafflecur", + "desc": "Starts or joins a currency raffle with a specified amount. Users who join the raffle will lose the amount of currency specified and add it to the pot. After 30 seconds, random winner will be selected who will receive the whole pot. There is also a `mixed` mode in which the users will be able to join the game with any amount of currency, and have their chances be proportional to the amount they've bet.", + "usage": [ + "{0}rafflecur 20", + "{0}rafflecur mixed 15" + ] + }, + "autodisconnect": { + "cmd": "autodisconnect autodc", + "desc": "Toggles whether the bot should disconnect from the voice channel once it's done playing all of the songs.", + "usage": [ + "{0}autodc" + ] + }, + "timelyset": { + "cmd": "timelyset", + "desc": "Sets the 'timely' currency allowance amount for users. Second argument is period in hours, default is 24 hours.", + "usage": [ + "{0}timelyset 100", + "{0}timelyset 50 12" + ] + }, + "timely": { + "cmd": "timely", + "desc": "Use to claim your 'timely' currency. Bot owner has to specify the amount and the period on how often you can claim your currency.", + "usage": [ + "{0}timely" + ] + }, + "timelyreset": { + "cmd": "timelyreset", + "desc": "Resets all user timeouts on `{0}timely` command.", + "usage": [ + "{0}timelyreset" + ] + }, + "novel": { + "cmd": "novel", + "desc": "Searches for a novel on `http://novelupdates.com/`. You have to provide an exact name.", + "usage": [ + "{0}novel the nine cauldrons" + ] + }, + "crypto": { + "cmd": "crypto c", + "desc": "Shows basic stats about a cryptocurrency from coinmarketcap.com. You can use either a name or an abbreviation of the currency.", + "usage": [ + "{0}c btc", + "{0}c bitcoin" + ] + }, + "rolelevelreq": { + "cmd": "rolelevelreq rlr", + "desc": "Set a level requirement on a self-assignable role.", + "usage": [ + "{0}rlr 5 SomeRole" + ] + }, + "masskill": { + "cmd": "masskill", + "desc": "Specify a new-line separated list of `userid reason`. You can use Username#discrim instead of UserId. Specified users will be banned from the current server, blacklisted from the bot, and have all of their flowers taken away.", + "usage": [ + "{0}masskill BadPerson#1234 Toxic person" + ] } -} \ No newline at end of file +} diff --git a/src/NadekoBot/data/hangman3.json b/src/NadekoBot/data/hangman3.json index a671657f..93946250 100644 --- a/src/NadekoBot/data/hangman3.json +++ b/src/NadekoBot/data/hangman3.json @@ -2423,7 +2423,7 @@ "ImageUrl": "https://www.randomlists.com/img/things/bread.jpg" }, { - "Word": "brocolli", + "Word": "broccoli", "ImageUrl": "https://www.randomlists.com/img/things/brocolli.jpg" }, { @@ -2431,7 +2431,7 @@ "ImageUrl": "https://www.randomlists.com/img/things/hair_brush.jpg" }, { - "Word": "buckel", + "Word": "buckle", "ImageUrl": "https://www.randomlists.com/img/things/buckel.jpg" }, { @@ -3115,4 +3115,4 @@ "ImageUrl": "https://www.randomlists.com/img/things/zipper.jpg" } ] -} \ No newline at end of file +}